🚧 Attention, peinture fraîche !

Cette page a été traduite par une seule personne et n'a pas été relue et vérifiée par quelqu'un d'autre ! Les informations peuvent par exemple être erronées, être formulées maladroitement, ou contenir d'autres types de fautes.

Pourquoi Rust et le WebAssembly ?

Ils offrent un contrôle de bas-niveau, mais avec une ergonomie de haut-niveau

Les applications web en Javascript ont du mal à atteindre et conserver des performances satisfaisantes. Le système de type dynamique du Javascript et les interruptions pour le ramasse-miette n'aident pas non plus. Des petits changements en apparance mineurs peuvent impliquer de grosses régressions de performances si vous écartez de la trajectoire prédit par le système Just-In-Time.

Rust offre aux développeurs un contrôle du bas-niveau et des performances efficaces. Il n'est pas soumis aux interruptions du ramasse-miettes qui accable le Javascript. Les développeurs ont le contrôle sur l'indirection, la monomorphisation, et l'utilisation de la mémoire.

Ils produisent des .wasm légers

La taille du code est très importante car le .wasm doit être téléchargé à partir du réseau. Rust n'a pas d'environnement d'exécution, ce qui permet d'obtenir des .wasm légers car il n'a pas de charge supplémentaire comme par exemple un ramasse-miettes. Vous ne payez (en terme de taille de code) que pour les fonctions que vous utilisez vraiment.

Il n'est pas nécessaire de tout ré-écrire

La base de code existante n'a pas besoin d'être jetée. Vous pouvez commencer par porter en Rust vos fonctions Javascript les plus critiques pour les performances pour obtenir immédiatement des gains de performances. Et vous pouvez vous y arrêter là si vous le souhaitez.

Ils s'accommodent bien avec les autres

Rust et WebAssembly s'intègrent dans les outils existants en Javascript. Ils supportent les modules ECMAScript et vous pouvez continuer à utiliser vos outils préférés, comme par exemple npm ou Webpack.

Ils offrent des commodités dont vous avez besoin

Rust offre des services que les développeurs attendent implicitement, comme :

  • une gestion de packets efficiente avec cargo,
  • des abstractions explicites (et sans coût),
  • et une communauté chaleureuse ! 😊