bytecodealliance / bytecodealliance/wit-bindgen

rust: trivial changes to wit definition alters the API of the generated code in an incompatible way

Offen
#775 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

gen-rust
Vorherrschende Sprache
Rust
Sterne
1.5k
Forks
288
Ø Merge
6 Std. 32 Min.
Gemergte PRs (30 T.)
19

Beschreibung

for example,
```
package foo:bar;

interface hoge {
variant v1 {
a(u32),
}
set1: func(v: v1);
get1: func() -> v1;

variant v2 {
a(u32),
b(string),
}
set2: func(v: v2);
get2: func() -> v2;
}

world useless {
import hoge;
}
```

given the above wit definition, `wit-bindgen rust a.wit` generates functions like:
```rust
pub fn set1(v: V1,){
```
```rust
pub fn set2(v: &V2,){
```

it's a bit surprising to me they are incompatible.
IMO, it's better to keep the same API for trivial changes like this.
i suspect it's simpler for users to use the generated code if you always use borrowed parameters for compound types like variant/record/etc for example.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem bereitgestellten a.wit-Beispiel und führe `wit-bindgen rust a.wit` aus, um die generierten Signaturen für V1 und V2 zu vergleichen. Verfolge den Einstiegspunkt der Rust-Binding-Generierung, der für die Besitzverhältnisse von Parametern zusammengesetzter Typen verantwortlich ist; abgeschlossen ist die Aufgabe, wenn triviale WIT-Änderungen keine inkompatiblen Signaturen mehr erzeugen, mit Abdeckung für beide Beispiele.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust, wasm
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.