À propos du projet
Slate est un langage à typage dynamique utilisant l'indentation pour sa structure, doté d'un vérificateur de type progressif. Il prend en charge async/await sur une boucle d'événements réelle, les générateurs, les modules, le pattern matching, les classes plutôt que les prototypes, et les types de données algébriques. Conçu pour les serveurs API, il gère le HTTP (via llhttp), le HTTP/2 (via nghttp2), TCP, TLS, les opérations sur le système de fichiers, les processus, les regex et le JSON.
Le langage compile vers JavaScript, permettant au même programme de s'exécuter sous son propre interpréteur, Node.js, QuickJS, ou dans des navigateurs via le framework Lath. La commande `slate js` génère un fichier JavaScript unique et autonome incluant le runtime et le framework, éliminant ainsi le besoin de bundlers et de node_modules.
Le typage progressif permet des annotations optionnelles ; les déclarations de type servent à la fois pour le pattern matching et pour les vérifications au runtime. Les fonctionnalités incluent les expressions `match` postfixes, les types génériques et les fonctions async retournant des promesses. Les serveurs API utilisent des systèmes de routeur et de gestionnaire intégrés. Les scripts supportent l'exécution via shebang.
L'implémentation utilise une machine à pile et un ramasse-miettes par traçage (en raison des cycles de fermeture), avec une boucle d'événements basée sur libuv. Disponible pour macOS Apple silicon via Homebrew ; les autres plateformes nécessitent une compilation depuis les sources. La documentation comprend des références sur le langage et la bibliothèque.
Les omissions notables incluent le support de la programmation littéraire et certains modules de la bibliothèque standard pour le backend JavaScript. L'instruction `defer` est délibérément exclue en raison du ramasse-miettes.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.