Présentation
Ito est une bibliothèque Lua conçue pour générer des interfaces utilisateur directement dans le terminal. Le projet se décrit comme un "interactive workshop" où l'utilisateur écrit du code Lua, importe le module avec require("ito") et retourne une fonction qui construit une vue. La documentation indique que les brouillons précédents restent accessibles, ce qui facilite la réutilisation de prototypes.
Architecture et API
Le cœur d’Ito repose sur un modèle réactif : chaque valeur susceptible de changer doit être enveloppée dans ito.state(value). Cette fonction crée un objet qui notifie automatiquement la vue lorsqu’il est modifié, évitant ainsi des rafraîchissements manuels. La composition des éléments s’effectue à l’aide de conteneurs VStack (vertical) et HStack (horizontal), ainsi que de composants texte et de contrôles décrits dans le fichier ito.md. Les modificateurs de style sont chaînés par la syntaxe :spacing(1), :padding(2), :grow(), :bold() ou :dim(), chaque appel ajustant la disposition ou l’apparence du widget concerné.
local ito = require("ito")
return function()
return ito.VStack(
ito.Text("Hello, world!"):bold(),
ito.Input(ito.state(""))
):spacing(1)
endCe fragment montre la création d’une pile verticale contenant un texte en gras et un champ d’entrée lié à un état mutable. Le style est appliqué via :bold() et :spacing(1), illustrant la chaîne de modificateurs.
Flux de travail et mise à jour en temps réel
Le système de prévisualisation d’Ito se met à jour dès que le code est enregistré. En cas d’erreur de syntaxe ou d’exécution, la version précédente fonctionnelle reste affichée, ce qui empêche la perte de l’interface visible. Cette stratégie repose sur un mécanisme de « fallback » qui conserve le rendu valide tant que le nouveau code ne passe pas la phase de compilation Lua. Le guide ito.md propose également un flux d’entrée dédié à la navigation au clavier, à l’édition et à l’annulation, ainsi qu’une icône d’extension pour passer en plein écran.
Limitations et perspectives
Le communiqué ne fournit pas de version précise, de benchmark de performance ni de compatibilité avec des terminaux spécifiques (par exemple, xterm, Windows Console). L’absence de ces données empêche d’évaluer l’impact de la réactivité sur la charge CPU ou la latence d’affichage. De plus, la documentation ne mentionne pas de support natif pour les couleurs 24‑bits ou les caractères Unicode complexes, ce qui peut restreindre l’usage dans des environnements multilingues. Enfin, la dépendance à Lua implique que les développeurs doivent disposer d’un interpréteur compatible, sans indication sur les exigences de version (Lua 5.1, 5.3, etc.). Malgré ces zones d’ombre, Ito propose une approche modulaire et réactive qui simplifie la création d’interfaces terminales, notamment pour des prototypes rapides ou des outils en ligne de commande nécessitant une interaction riche.