Aller au contenu
Linux

Paneflow 0.8.0 : libghostty-vt remplace Alacritty sous Linux

Paneflow 0.8.0 utilise désormais libghostty-vt pour chaque nouvelle session de terminal dans les builds Linux standard. Avec terminal.backend sur auto, les builds Linux x86_64 et ARM64 sélectionnent Ghostty par défaut.

Cette migration change le moteur qui interprète les données VT et maintient l'état du terminal, pas l'espace de travail autour. Paneflow reste responsable du PTY, du cycle de vie des processus, du moteur de rendu GPUI, des panneaux, des sessions, de l'état des agents, des diffs et de la persistance. macOS et Windows continuent d'utiliser Alacritty.

Icônes de Ghostty et Paneflow côte à côte dans un paysage bleu et lavande

Ghostty rejoint Paneflow au niveau du moteur VT

Jusqu'à Paneflow 0.7.x, les sessions de terminal reposaient sur le crate Rust alacritty_terminal 0.26. Ce moteur gérait les séquences d'échappement, la grille, le scrollback, les modes d'entrée, la recherche et une partie du modèle de rendu.

Le nouveau chemin Linux utilise libghostty-vt, le moteur de terminal embarquable de Ghostty. Il analyse les séquences VT, suit l'état du curseur et de l'écran, gère les graphèmes, le retour à la ligne et le reflow, encode les entrées clavier et souris, puis expose un état de rendu incrémental à l'application hôte.

Paneflow n'embarque ni l'application Ghostty, ni son interface GTK, ni son moteur de rendu. Ghostty fournit le cœur du terminal. Paneflow transforme cet état en snapshots Rust possédés et les peint avec son moteur de rendu GPUI existant. L'interface du produit et le workflow multi-agent restent donc sous le contrôle de Paneflow.

Une frontière Paneflow sépare maintenant le moteur du produit

Remplacer le parser ne représentait qu'une partie du travail. Les types Alacritty avaient atteint la boucle PTY, le rendu, la recherche, la sélection, les liens, la restauration du scrollback et le cycle de vie des sessions. Changer de dépendance sans retirer d'abord ce couplage aurait simplement déplacé le même problème vers un nouveau moteur.

Paneflow expose maintenant sa propre frontière de session terminal. Alacritty et Ghostty produisent les mêmes commandes, événements, modes, résultats de recherche et snapshots de rendu Paneflow. Le moteur de rendu n'a plus besoin de savoir quel moteur de terminal a créé une cellule.

C'est la partie durable de la migration. Linux peut avancer en premier sans modifier macOS ou Windows, et une future mise à jour du moteur n'oblige plus le reste de l'application à adopter ses types internes.

L'API C instable reste confinée dans un petit wrapper Rust

Ghostty présente libghostty-vt comme fonctionnellement mature, mais ses signatures d'API changent encore. Paneflow épingle donc le commit Ghostty exact ae52f97d, son header C, les bindings générés, la version de Zig, la configuration du build et la somme de contrôle de l'archive.

L'ABI C brute est isolée dans un crate -sys. Un second wrapper sûr possède chaque handle natif, valide la version de l'API et les layouts C avant de créer un terminal, contient les panics des callbacks et libère les allocations Ghostty avec le bon allocateur.

La règle d'ownership compte surtout pendant le rendu. libghostty-vt expose des lignes et cellules empruntées qu'une mutation ultérieure du terminal peut invalider. Paneflow copie les données nécessaires pendant que le terminal est verrouillé, puis transmet à GPUI un snapshot Rust possédé. Aucun pointeur C ni slice emprunté ne franchit la durée du verrou ou la frontière d'une frame.

Cette stratégie coûte plus de maintenance que suivre une dépendance non épinglée. Chaque mise à jour de Ghostty impose de régénérer et relire le header, les bindings, les archives statiques, les sommes de contrôle, les symboles et les licences pour les deux architectures Linux. Ce coût reste explicite et contenu au lieu de devenir une incertitude à l'exécution.

Alacritty reste la référence différentielle et le rollback

Le résultat visible recherché est la continuité. Les shells, agents de code, TUI plein écran, recherches, sélections, opérations de presse-papiers, scrollback, événements OSC, redimensionnements, reflow et arrêts de processus doivent continuer à se comporter comme avant le changement de moteur.

Paneflow envoie les mêmes flux VT déterministes à Alacritty et Ghostty avec plusieurs tailles de fragments, puis compare leurs snapshots normalisés et leurs événements ordonnés. Des cibles de fuzzing séparées couvrent les séquences malformées ou tronquées, l'encodage des entrées, le redimensionnement, le reflow et les frontières où une séquence arrive sur plusieurs lectures du PTY. Les contrôles de paquet refusent aussi un artefact Linux qui dépend d'une libghostty.so à l'exécution, porte une mauvaise identité de build ou omet les notices natives relues.

Alacritty n'a pas été supprimé. Pour l'utiliser dans les nouvelles sessions Linux, configure le backend dans paneflow.json :

{
  "terminal": {
    "backend": "alacritty"
  }
}

Une session active ne change jamais de moteur en mémoire. Ferme-la et ouvre un nouveau panneau après avoir modifié ce réglage. auto sélectionne Ghostty dans les builds Linux standard et Alacritty sur macOS, Windows ou les builds Linux compilés avec --no-default-features.

Une liaison statique, sans installation de Ghostty

Les paquets Linux officiels contiennent une archive statique libghostty-vt épinglée pour x86_64 ou ARM64. Tu n'as besoin d'installer ni Ghostty, ni Zig, ni une bibliothèque partagée sur ta machine. Un cargo build normal depuis un checkout Paneflow propre utilise aussi l'archive vérifiée incluse dans le dépôt et ne télécharge aucune source native depuis build.rs.

Linux est la première plateforme à recevoir ce backend. Son extension à Windows ou macOS, puis le retrait éventuel d'Alacritty, feront l'objet de décisions séparées. Paneflow 0.8.0 limite le périmètre : un nouveau défaut, deux moteurs pris en charge et un rollback immédiat pour les nouvelles sessions.

Mets Paneflow à jour vers la version 0.8.0, ouvre un nouveau panneau et lance le shell, la TUI ou l'agent de code que tu utilises habituellement. Si un comportement du terminal régresse, repasse les nouvelles sessions sur Alacritty et indique la commande, ta distribution Linux et si la session tournait sous Wayland ou X11.

Actualités récentes

Tous les articles