fastly-compute-rust-edition2024-fix

Par divinevideo · divine-mobile

Corriger les échecs de build Fastly Compute Rust causés par des dépendances edition2024. À utiliser quand : (1) `cargo build` échoue avec « feature `edition2024` is required », (2) les crates `wit-bindgen` ou `wasip2` ne parviennent pas à être téléchargées/analysées, (3) le SDK Fastly introduit des dépendances transitives incompatibles, (4) le build fonctionnait avant mais échoue après une mise à jour des dépendances. Résout le problème en épinglant `wit-bindgen`, `wasip2` et les crates associées à des versions antérieures à edition2024.

npx skills add https://github.com/divinevideo/divine-mobile --skill fastly-compute-rust-edition2024-fix

Fastly Compute Rust Edition2024 Dependency Fix

Problem

Les projets Fastly Compute Rust échouent à la compilation avec des erreurs indiquant que edition2024 est requise, même en utilisant une version stable de Rust. L'erreur apparaît quand les dépendances transitives (notamment wit-bindgen 0.51+ et wasip2 1.0.2+) nécessitent Rust 1.87+ qui n'est pas encore stable.

Context / Trigger Conditions

  • Error: feature 'edition2024' is required
  • Error: failed to parse manifest at .../wit-bindgen-0.51.0/Cargo.toml
  • Error mentions "requires Rust 1.87.0" for wit-bindgen ou wasip2
  • La compilation fonctionnait auparavant mais échoue après cargo update
  • Utilisation de Fastly SDK (crate fastly) version 0.11.x

Solution

Épinglez les dépendances transitives problématiques dans votre Cargo.toml :

[dependencies]
# Fastly Compute SDK - épinglez à une version spécifique
fastly = "=0.11.12"

# Épinglez ces versions pour éviter la exigence edition2024
wit-bindgen = "=0.46.0"
wasip2 = "=1.0.1"

# Épinglez aussi ces versions si vous utilisez k256 ou crypto
k256 = { version = "=0.13.3", features = ["schnorr"] }
base64ct = "=1.6.0"

Mettez aussi à jour rust-toolchain.toml pour inclure les deux targets WASM :

[toolchain]
channel = "1.83.0"
targets = ["wasm32-wasi", "wasm32-wasip1"]

Puis :

rm Cargo.lock
rustup target add wasm32-wasip1
cargo build --target wasm32-wasi

Verification

La compilation devrait se terminer sans erreurs edition2024 :

cargo build --target wasm32-wasi 2>&1 | grep -i "edition2024"
# Ne devrait rien retourner (aucune correspondance)

Example

Avant correction (Cargo.toml) :

[dependencies]
fastly = "0.11"  # Autorise 0.11.x ce qui récupère wit-bindgen 0.51+

Après correction (Cargo.toml) :

[dependencies]
fastly = "=0.11.12"
wit-bindgen = "=0.46.0"
wasip2 = "=1.0.1"

Notes

  • Le préfixe = dans les chaînes de version signifie « exactement cette version »
  • Fastly CLI 13.x a changé de target wasm32-wasi à wasm32-wasip1
  • C'est un correctif temporaire jusqu'à ce que Rust 1.87 devienne stable
  • L'avertissement à propos de wasm32-wasi renommé en wasm32-wasip1 est attendu
  • Quand Rust 1.87 sera stable, ces épingles pourront être supprimées

References

Skills similaires