Présentation de Teal
Teal est un dialecte de Lua qui ajoute le typage statique grâce à des annotations de type. Le langage supporte les tableaux, les tables associatives (maps), les enregistrements, ainsi que les interfaces, les types d’union et les génériques. Cette approche vise à occuper le même créneau que TypeScript pour JavaScript, tout en conservant la philosophie de Lua : minimalisme, portabilité et capacité d’être embarqué dans d’autres systèmes.
Mécanisme de typage et compilation
Le compilateur tl transforme les fichiers .tl en code Lua standard (.lua). Cette étape supprime les annotations de type, ce qui permet d’exécuter le résultat sur n’importe quel interpréteur Lua sans modification. Le processus repose sur une analyse de flux de types qui vérifie la cohérence des appels de fonction et des accès aux champs de structures. Par exemple :
local function add(a: number, b: number): number
return a + b
end
local s = add(1, 2)
print(s)Le compilateur détecte immédiatement les incompatibilités, comme le passage d’une chaîne à add, et empêche la génération du code Lua correspondant.
Écosystème et outils d’intégration
Teal se distribue via luarocks install tl et propose des binaires pré‑compilés pour Linux et Windows. Pour les projets de taille importante, l’outil de construction Cyan orchestre la compilation de multiples modules, évitant l’invocation manuelle de tl sur chaque fichier. Des extensions existent pour Visual Studio Code (vscode-teal) et NeoVim (teal-language-server), offrant autocomplétion et diagnostics en temps réel. La documentation officielle, les enregistrements de conférences et le forum GitHub complètent le support communautaire, accessible également via Matrix.
Limites et perspectives
Bien que le typage statique améliore la sûreté du code, il ne modifie pas les performances d’exécution, car les vérifications sont éliminées lors de la génération du Lua natif. De plus, la compatibilité avec des bibliothèques Lua non typées repose sur des déclarations de type manuelles, ce qui peut introduire des incohérences si les signatures sont mal décrites. Le projet, initié par Hisham Muhammad et développé en Teal même, reste sous licence MIT, assurant une adoption libre mais dépendante de la maturité de l’écosystème autour du compilateur et des outils associés.