Introduction
Rail est un langage de programmation système auto-hébergé qui parle TLS seul, sans dépendances C. Le compilateur, écrit en 4 687 lignes de Rail, produit un binaire ARM64 de 729 Ko qui compile le compilateur lui-même et atteint un point fixe byte-identique.
Contexte Technique
Rail est conçu pour être léger et efficace, avec un garbage collector écrit en assembleur ARM64 et un support de runtime minimal. Le langage prend en charge les fonctions, le pattern matching, les ADT, les floats natifs et les effect handlers. Il est possible de compiler du code Rail pour plusieurs backends, notamment macOS ARM64, Linux ARM64, Linux x86_64 et WASM.
Le compilateur Rail est également utilisé comme fonction de fitness pour les boucles d'entraînement, permettant de générer du code Rail qui peut être compilé et exécuté directement. Le langage est livré avec un ensemble de bibliothèques standard, notamment une implémentation de TLS 1.3 et une bibliothèque de cryptographie.
Analyse et Implications
Rail présente plusieurs avantages, notamment sa légèreté, son efficacité et sa simplicité. Le langage est également très sécurisé, grâce à son implémentation de TLS 1.3 et à son support de cryptographie. Cependant, Rail n'est pas sans limites, notamment en termes de performances et de compatibilité avec les serveurs legacy.
Le langage est sous licence Business Source License 1.1, ce qui signifie qu'il est gratuit pour les utilisations non commerciales, mais nécessite une licence pour les utilisations commerciales. La licence sera convertie en Apache 2.0 en 2030.
Perspective
Rail est un langage de programmation système innovant qui offre une alternative aux langages traditionnels. Son implémentation de TLS 1.3 et sa bibliothèque de cryptographie en font un choix intéressant pour les applications sécurisées. Cependant, il est important de noter que Rail est encore un langage en développement et qu'il peut présenter des limitations et des bugs.
Il est important de suivre les prochaines étapes de développement de Rail, notamment la mise en œuvre de la prise en charge de la résumption de session TLS et de la résistance aux attaques par canaux auxiliaires. De plus, il est important de noter que Rail n'est pas encore reconnu comme un langage officiel par GitHub, mais un pull request est en cours pour corriger cela.