Présentation du système
Ce site web est servi par un binaire natif de 200KB, sans libc, VM ou runtime. Les nombres affichés sont lus directement à partir du processus qui répond à la requête, et non à partir d'un modèle écrit à la main.
Le serveur a servi 20 000 requêtes avec une empreinte mémoire plate, grâce à un collecteur de garbage non-moving qui recycle la mémoire en dessous d'une certaine limite.
Fonctionnement du langage
Le langage utilisé est un langage AOT (Ahead-Of-Time) qui compile directement en x86-64. Les défaillances du monde sont considérées comme des données, et les invariants cassés tuent le programme sur le spot.
Le langage a été conçu pour être sécurisé et fiable, avec des mécanismes de détection d'erreurs robustes.
Implémentation et analyse
L'implémentation du langage a nécessité un travail important sur le collecteur de garbage, les références d'opérateurs, la portée des modules, l'interpolation de chaînes et le stack HTTP.
Les bugs ont été découverts et corrigés grâce à une approche structurale et méthodique, en utilisant des outils de débogage et en analysant les erreurs.
read_bytesetwrite_bytesont été corrigés, ainsi que d'autres problèmes liés à la gestion de la mémoire.
Implications et limites
Le langage a démontré sa capacité à détecter et à corriger les erreurs de manière efficace, mais il est encore en développement et présente certaines limites, telles que l'absence d'échappement de chaînes et de possibilité d'apparition de chaînes multilignes au milieu d'une expression.
Le philosophe du langage est de considérer les défaillances du monde comme des données, et les bugs comme des erreurs fatales, et de ne pas laisser les erreurs se propager.