SWC v1.15.26 : le compilateur JavaScript propulsé par Rust continue d'avancer

SWC v1.15.26 : le compilateur JavaScript propulsé par Rust continue d'avancer

lschvn4 min de lecture

swc-project/swc v1.15.26 est sorti le 14 avril 2026, marquant une nouvelle release de maintenance dans le cycle régulier du compilateur JavaScript et TypeScript basé sur Rust. Le projet, renforcé en production à travers son intégration dans Next.js, Parcel et Deno, continue de livrer des corrections de compatibilité et des optimisations sans nouvelles fonctionnalités majeures dans ce cycle.

Qu'est-ce que SWC ?

SWC (speedy web compiler) a commencé comme un remplacement direct de Babel, écrit en Rust pour profiter des caractéristiques de performance du langage. Où Babel s'exécute en tant que processus JavaScript interprétant une chaîne de transforms, SWC compile ces mêmes transforms en code machine natif à l'avance. Le résultat est un compilateur qui traite le code JavaScript et TypeScript 20 à 70 fois plus rapidement que Babel, selon la charge de travail.

Le projet est organisé autour d'une crate compilateur core qui gère le parsing, la transformation et la sérialisation du code JavaScript et TypeScript. Un système de crates séparé expose ces transforms comme des opérations isolées, qui peuvent être composées — similaire aux plugins Babel — mais exécutées dans un runtime Rust.

Changements dans v1.15.26

La release v1.15.26 inclut des correctifs à travers la surface API commune et les passes de transform de SWC. Bien que ce soit une release de niveau patch, elle reflète le travail de maintenance continu qui garde SWC compatible avec les dernières propositions ECMAScript et la syntaxe TypeScript. La release stable précédente, v1.15.24, est sortie le 4 avril, et v1.15.25 a suivi peu après — le projet maintient un rythme de patch roughly hebdomadaire.

Les domaines clés du travail en cours incluent :

  • Compatibilité du transform TypeScript — assurer que le transform SWC pour TypeScript reste aligné avec le comportement du compilateur TypeScript pour les fonctionnalités de syntaxe TypeScript plus récentes
  • Support des proposals ES2026/ES2027 — SWC suit le processus de stage des proposals ECMAScript et met à jour son parser et ses transforms en conséquence
  • Corrections de bugs dans le minifier — le minifier SWC compete avec Terser pour l'optimisation de la taille de l'output JavaScript

L'écosystème d'outils basé sur Rust

SWC existe dans un espace partiel mais sain du paysage des outils JavaScript. Les trois projets majeurs d'outils JavaScript basés sur Rust occupent chacun une niche différente :

  • esbuild (par Evan Wallace) — le plus ancien, concentré sur la vitesse brute de compilation
  • SWC — le plus compatible avec Babel, l'intégration la plus profonde avec les frameworks existants
  • OXC (Oxidation Compiler) — le plus récent, soutenu par l'équipe Vercel/Nx, ciblant la couverture complète du vérificateur de types TypeScript et le bundling compatible Rollup

L'avantage de SWC sur les nouveaux entrants est son bilan. Il fonctionne en production à grande échelle dans les applications Next.js depuis des années, ce qui signifie que les cas limites ont été trouvés et corrigés. OXC rattrape rapidement — ses dernières releases (v0.125 et v0.126) ont ajouté des transforms spécifiques TypeScript qui nécessitaient auparavant SWC ou le compilateur TypeScript lui-même.

La concurrence saine entre ces trois projets a relevé le niveau de tout l'écosystème d'outils JavaScript. Ce qui aurait nécessité une chaîne de plugins Babel s'exécutant dans un processus JavaScript lent il y a cinq ans est maintenant géré par du code natif en millisecondes.

Utiliser SWC

Pour la plupart des développeurs, SWC est rencontré indirectement via Next.js ou Parcel. Cependant, la crate SWC peut être utilisée directement comme outil de build ou intégrée dans des outils personnalisés :

use swc_common::{sync::Lrc, FileName, SourceMap};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, TsSyntax};
use swc_ecma_ast::*;
use swc_ecma_codegen::Emitter;

fn main() {
    let cm: Lrc<SourceMap> = Default::default();
    let fm = cm.new_source_file(
        FileName::Custom("example.ts".into()).into(),
        "const x: number = 1;".into(),
    );
    let lexer = Lexer::new(
        TsSyntax::default(),
        Default::default(),
        StringInput::from(&*fm),
        None,
    );
    let mut parser = Parser::new_from(lexer);
    let module = parser.parse_module().unwrap();
    // ... transforms et codegen
}

L'API Rust donne un contrôle fin sur le pipeline de compilation. Pour les outils basés sur JavaScript, les packages npm @swc-node et @swc/core exposent les mêmes transforms.

Le projet maintient un canal de release nightly qui suit les dernières proposals ECMAScript et les fonctionnalités TypeScript. Les releases stables sont découpées assez fréquemment pour que la plupart des utilisateurs puissent mettre à jour sans souci — les changements cassants dans swc sont rares en dehors des montées de version majeures.

Questions fréquentes

Articles connexes

Plus de couverture avec des sujets et tags en commun.

Oxc v0.126.0 : Magic Comments Turbopack dans le Parser, Breaking Changes sur l'Allocator
Rust

Oxc v0.126.0 : Magic Comments Turbopack dans le Parser, Breaking Changes sur l'Allocator

Oxc v0.126.0 apporte le support des Turbopack Magic Comments dans le parser, un rename breaking des méthodes Box et Vec de l'allocator, de nouvelles options NAPI transform pour l'optimisation des enums, et des gains de performance sur le lexer.
Next.js v16.3.0-Canary : Prefetch, Dedup et Nouveau Overlay de Dév
Next.js

Next.js v16.3.0-Canary : Prefetch, Dedup et Nouveau Overlay de Dév

Next.js 16.3.0-canary introduit des contrôles de prefetch plus fins, un meilleur dédoublonnage pour la directive 'use cache', et un overlay de dev redesigné pour les erreurs de routes bloquantes.
QuickBEAM : un runtime JavaScript pour la VM BEAM — JavaScript rencontre OTP d'Erlang
JavaScript

QuickBEAM : un runtime JavaScript pour la VM BEAM — JavaScript rencontre OTP d'Erlang

QuickBEAM est un runtime JavaScript qui s'exécute à l'intérieur de la VM BEAM — la même machine virtuelle qui alimente Erlang et Elixir. Il intègre JavaScript dans les arbres de supervision OTP, permet à JS d'appeler des fonctions Elixir et des bibliothèques OTP, et inclut un outil TypeScript intégré.

Commentaires

Connexion Connectez-vous pour participer à la conversation.

Pas encore de commentaires. Soyez le premier à partager vos pensées.