bytecodealliance / bytecodealliance/wit-bindgen
rust: trivial changes to wit definition alters the API of the generated code in an incompatible way
Dieses Issue hat noch niemand übernommen.
- 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
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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