11 points par dlwocks31 5 일 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Publication de la bêta de TypeScript 7.0 - TS environ 10 fois plus rapide grâce à un portage natif en Go

  • Nouvelle implémentation native obtenue en portant le compilateur TypeScript existant en Go
  • Bien qu’il s’agisse d’une « bêta », l’équipe souligne qu’elle est déjà suffisamment stable pour être essayée immédiatement dans le travail quotidien et en CI
  • La nouvelle base de code n’est pas une réécriture (rewrite), mais un portage méthodique de l’implémentation existante
  • La logique de vérification de types est structurellement identique à celle de TypeScript 6.0
  • Des performances parfois environ 10 fois supérieures à TypeScript 6.0
  • Basé sur les performances du code natif et sur le parallélisme via mémoire partagée
  • Déjà utilisé sur des bases de code totalisant des millions de LOC, en interne comme en externe chez Microsoft
  • Tests préalables menés avec Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel, etc.
  • En plus de la CLI, l’expérience dans l’éditeur devient elle aussi plus légère et plus rapide

Utilisation

  • Pour l’instant, installation via un package séparé
    • npm install -D @typescript/native-preview@beta
  • Exécuter tsgo à la place du tsc existant
    • npx tsgo --version
  • À terme, la version stable sera de nouveau distribuée via le package typescript et le point d’entrée tsc

Utilisation en parallèle avec TypeScript 6.0

  • La bêta 7.0 est fournie sous la forme de @typescript/native-preview + tsgo
  • Il est possible d’exécuter tsc et tsgo côte à côte pour les comparer
  • Dans la version stable, TS7 réutilisera le nom tsc
  • Le package @typescript/typescript6, compatible TS6, est également proposé
  • Les outils existants qui dépendent de l’API TypeScript peuvent, pour l’instant, continuer à utiliser l’API TS6

Limitations importantes

  • La bêta 7.0 est proche d’un état prêt pour la production, mais il n’existe pas encore d’API programmatique stable
  • L’objectif pour une API stable est au plus tôt après TypeScript 7.1, dans quelques mois
  • Les outils/plugins qui dépendent directement de l’API TypeScript doivent faire la transition avec prudence

Parallélisation

  • Plusieurs étapes sont parallélisées, notamment le parsing, la vérification de types et l’emit
  • Ajout de l’option --checkers pour ajuster le nombre de workers de vérification de types
  • Ajout de l’option --builders pour paralléliser les builds avec project reference
  • Ajout de l’option --singleThreaded pour une exécution en mono-thread
  • L’effet est important sur les grandes bases de code et les monorepos, mais augmenter le parallélisme peut aussi accroître la consommation mémoire

Compatibilité par rapport à TypeScript 6.0

  • TypeScript 7.0 vise à être compatible avec le comportement de vérification de types et de CLI de TypeScript 6.0
  • L’objectif est qu’un code qui compile proprement avec TS6 compile de la même manière avec TS7
  • Cependant, les nouveaux comportements par défaut de TS6 et le nettoyage des fonctionnalités obsolètes s’appliquent aussi
  • Les changements de valeurs par défaut pour strict, module, rootDir, types, etc. peuvent se faire sentir dans les projets existants
  • Les changements concernant rootDir et types, en particulier, doivent être vérifiés lors d’une migration
  • Pour les projets qui utilisent d’anciennes cibles/configurations de module ou des options obsolètes, il est recommandé de passer d’abord par la transition vers TS6

Changements JavaScript/JSDoc

  • La prise en charge de JS a été réorganisée pour être plus cohérente avec la manière dont les fichiers TypeScript sont analysés
  • Certains traitements spéciaux liés à la syntaxe de style JSDoc/Closure et à d’anciens patterns JS ont été supprimés
  • Les bases de code fondées sur JS + JSDoc doivent être vérifiées séparément

Support éditeur

  • Extension TypeScript Native Preview disponible pour VS Code
  • Comme elle repose sur la même base que la CLI, les mêmes gains de performance s’appliquent dans l’éditeur
  • Prise en charge de l’auto-import, du hover, des inlay hints, du code lens, du JSX linked editing, etc.
  • Comme cela repose sur LSP, l’intégration est aussi facile dans d’autres éditeurs/outils modernes

Feuille de route

  • Une implémentation plus efficace de --watch est prévue
  • Des travaux sont prévus pour atteindre la parité sur le declaration emit des fichiers JS
  • Les écarts de fonctionnalités dans l’éditeur doivent être comblés
  • L’API programmatique stable arrivera après TypeScript 7.1
  • La version stable de TypeScript 7.0 est visée d’ici environ 2 mois
  • La RC est prévue quelques semaines auparavant

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.