Retour au blog

Rune : un IDE open source écrit en Go

Rune est un IDE et multiplexeur de terminal rendu par le GPU, écrit presque entièrement en Go et open source sous GPLv3 depuis septembre 2026. Ce qu'il fait, comment il est construit et où il montre ses limites.

Rune : un IDE open source écrit en Go

Rune est un IDE piloté au clavier et un multiplexeur de terminal développé par Unstable Build, et environ 97,6 % de son code est en Go (API languages de GitHub, 2026). Il dessine lui-même sa fenêtre sur le GPU, avec OpenGL sous Linux et Metal sous macOS, sans Electron ni moteur de navigateur. Le code source est public sous GPLv3 depuis le 12 septembre 2026 (blog Rune, 2026). Rune fonctionne sous macOS et Linux, et le téléchargement est gratuit. Un développeur Go peut l'aborder de deux façons. C'est un éditeur à essayer, et c'est aussi une grosse base de code Go lisible qui gère le rendu GPU, l'émulation de terminal et les plugins sans sortir de Go.

En bref

  • Rune est un IDE dont l'interface fonctionne comme un multiplexeur de terminal. Vous disposez de neuf emplacements d'espace de travail, de terminaux, d'onglets et de fenêtres en nombre illimité, et d'une seule invite de commande avec recherche floue qui pilote tout.
  • L'auteur a choisi Go pour la vitesse d'itération. Le profilage a ensuite permis au terminal, qui avait près de deux ordres de grandeur de retard sur Alacritty, Ghostty et Kitty, de devenir compétitif sans passer par cgo pour le chemin critique (blog Rune, 2026).
  • Le rendu passe par Ebitengine, l'analyse syntaxique par tree-sitter, la communication avec les extensions par gRPC sur un socket Unix, la configuration est écrite en Starlark et la gestion de versions repose sur go-git.
  • Rune s'adresse aux développeurs Go et Python sous macOS ou Linux qui vivent déjà dans Vim, Emacs, Helix ou tmux. Il n'existe pas de build Windows.
  • L'arborescence internal/ contient des patterns réutilisables dans votre propre code, comme des plugins qui tournent dans des processus séparés et peuvent planter sans entraîner l'éditeur avec eux.

Qu'est-ce que Rune ?

Rune se décrit comme « un IDE et multiplexeur de terminal rapide, accéléré par le GPU et complet » (README de Rune, 2026). C'est la partie multiplexeur de terminal qu'il faut retenir, car l'interface ressemble davantage à tmux qu'à VS Code, dans son aspect comme dans son comportement. Vous découpez l'écran en fenêtres, chaque fenêtre contient un buffer d'éditeur ou un terminal, et vous passez d'un des neuf emplacements d'espace de travail à l'autre au clavier.

Au premier lancement, vous choisissez l'un des quatre jeux de raccourcis intégrés : standard, vim, emacs ou helix (documentation Rune, 2026). Ce choix s'applique partout, y compris dans les terminaux, les champs de saisie et l'explorateur de fichiers. Les utilisateurs de vim bénéficient donc aussi de l'édition modale dans leurs shells.

Le reste de la liste de fonctionnalités est celui d'un IDE complet :

  • Go et Python sont pris en charge en priorité (Tier 1), avec LSP, un indexeur de symboles et les workflows de leur écosystème. Rust et Zig sont en bêta, et TypeScript figure sur la feuille de route (langages pris en charge par Rune, 2026). Plus de 300 autres langages bénéficient de la coloration syntaxique et de la recherche structurelle grâce aux paquets de grammaires tree-sitter.
  • Un débogueur. Rune parle le Debug Adapter Protocol via google/go-dap, et vous le pilotez depuis la console.
  • Une console, c'est-à-dire un REPL persistant dans lequel vous installez des paquets, configurez des modèles et gérez les extensions et les processus.
  • Rune Agent, un agent de code intégré qui interroge l'espace de travail via LSP et tree-sitter au lieu de chercher les symboles avec grep.
  • Rune Network. Chaque instance de Rune rejoint un réseau pair à pair chiffré, ce qui vous permet d'ouvrir depuis votre portable un espace de travail situé sur votre poste fixe avec une URL rune://.

Il existe aussi un mode rune --tui qui s'exécute dans un terminal existant, et un mode rune --headless pour les machines sans écran.

Pourquoi Rune est-il écrit en Go ?

En résumé, pour la vitesse d'itération. Dans l'annonce du passage en open source, le fondateur Ernest Romero Climent explique que les IDE sont « soit écrits dans des langages lents à écrire et à compiler, comme Rust et C/C++, soit construits sur des runtimes difficiles à plier aux charges de travail critiques en performance », comme Electron (blog Rune, 2026). Go compile vite et se lit facilement, tout en offrant assez de contrôle sur la mémoire et l'ordonnancement pour optimiser les performances quand il le faut.

L'émulateur de terminal de Rune est écrit en Go, et l'article indique qu'il « était au départ près de deux ordres de grandeur plus lent » qu'Alacritty, Ghostty et Kitty en débit PTY. Combler cet écart a demandé quatre changements, et aucun n'a consisté à réécrire le code dans un autre langage :

  1. De meilleurs algorithmes.
  2. Une répartition plus efficace du travail entre les goroutines.
  3. Un meilleur équilibrage des réveils de goroutines, pour que l'ordonnanceur de Go ne fasse pas de travail inutile.
  4. Le passage de la boucle à fréquence d'images fixe du moteur de jeu à un modèle événementiel, ce qui a réduit la latence.

L'équipe reste prudente sur ce que cela prouve. Selon elle, les graphiques vtebench « ne montrent pas que Go est aussi rapide que Rust ou Zig ». Ils montrent que le profilage et une ingénierie soignée en Go ont suffi pour rendre le terminal compétitif sur ces charges de travail. C'est le déroulement habituel d'un travail de performance en Go. Vous profilez d'abord, et les corrections portent généralement sur l'algorithme et sur la façon dont les goroutines se passent le travail.

Le projet est aussi bien plus ancien que son dépôt public. Dans un long article retraçant son histoire, l'auteur fait remonter le premier prototype de vi à un commit du 3 août 2017 (blog Rune, 2026). Il s'agissait au départ de remplacer Vim pour son propre travail en Go. Le projet s'appelait Six en 2019, est devenu Ox en 2024 (en passant à Ebitengine pour obtenir une fenêtre GPU), puis a été renommé Rune fin 2025. Toutes les versions ont été écrites en Go.

Comment Rune est-il construit ?

Schéma d'architecture de Rune : un processus central en Go avec un moteur de rendu GPU Ebitengine, des buffers en grille de cellules et des clients tree-sitter et LSP, qui communique en gRPC sur un socket Unix avec des processus d'extension séparés comme le support de Go, le support de Python et Rune Agent

Le fichier go.mod donne une bonne vue d'ensemble de l'architecture. Il déclare Go 1.26.6, et les dépendances se regroupent en quelques grandes fonctions :

FonctionDépendance
Fenêtre et rendu GPUgithub.com/hajimehoshi/ebiten/v2 (Ebitengine), go-text/typesetting
Terminal et TUIun fork de tcell/v3, unstablebuild/pty
Arbres syntaxiquesgithub.com/tree-sitter/go-tree-sitter
Extensionsgoogle.golang.org/grpc, unstablebuild/rune-go-sdk
Configurationgo.starlark.net, gopkg.in/yaml.v3
Gestion de versionsgithub.com/go-git/go-git/v6
Débogagegithub.com/google/go-dap
Réseaugithub.com/gliderlabs/ssh, pion/webrtc/v4
Modèles d'IAanthropic-sdk-go, openai-go/v2, SDK AWS Bedrock

Ebitengine est un moteur de jeu 2D, et Rune s'en sert comme couche GPU. Le Makefile compile l'éditeur avec CGO_ENABLED=1, car le pipeline graphique natif se lie à OpenGL et Metal. La configuration par défaut est un script Starlark (rune.star). Starlark est un petit langage proche de Python, conçu pour la configuration. Vous pouvez écrire des instructions if et des boucles dans votre configuration, et le résultat est transmis au chargeur sous forme de simples données.

Un clone superficiel réalisé le 27 septembre 2026 comptait environ 316 000 lignes de Go hors tests (comptées avec wc -l, code généré inclus). Go représente 97,6 % des octets. Le deuxième langage, Starlark, pèse 0,5 %.

Diagramme en barres de la répartition des langages du dépôt Rune : Go 97,6 %, Starlark 0,5 %, Shell 0,5 %, Makefile 0,4 %, tout le reste 1,0 %

Les extensions sont des processus séparés

Rune garde un noyau réduit et déporte les fonctionnalités dans des extensions. Le support de Go, le support de Python, la recherche floue et Rune Agent sont tous des extensions, et « il n'existe pas de catégorie distincte d'extensions intégrées » (documentation des extensions Rune, 2026).

Chaque extension est un exécutable à part. Rune la lance comme processus enfant, lui transmet des identifiants via les entrées/sorties standard, puis communique avec elle en gRPC sur un socket de domaine Unix. On le voit dans internal/extension/extensionv2/runner.go, qui crée le listener Unix et un grpc.NewServer. Chaque espace de travail dispose de son propre ensemble de processus d'extension, et chaque capacité (éditeur, système de fichiers, stockage, commandes) est protégée par une permission que l'extension doit demander.

Le principal bénéfice est l'isolation des plantages. Un panic dans une extension tue uniquement son processus, et la documentation promet qu'un plantage d'extension « n'entraîne jamais l'éditeur avec lui ». Comme le contrat repose sur gRPC, les extensions peuvent être écrites dans n'importe quel langage disposant d'un SDK Rune. Le SDK Go est complet et un SDK Python est en cours. Les extensions Go ont un avantage de plus : chacune se compile en un seul binaire statique que pkg install place dans votre répertoire de données.

Le point d'entrée du SDK tient en un seul appel. Une extension Go déclare ses métadonnées et ses permissions, puis passe une fonction à extensionapi.ServeWorkspaceExtension, qui gère la durée de vie du processus (documentation du SDK Go de Rune, 2026). On retrouve la forme de http.ListenAndServe : vous fournissez un handler et la bibliothèque fait tourner la boucle. Le protocole a été réécrit une fois. L'auteur avait d'abord construit les plugins sur go-plugin de HashiCorp, puis l'a remplacé par une poignée de main plus simple, car chaque SDK non Go aurait dû réimplémenter le protocole de go-plugin (blog Rune, 2026).

Si l'idée de goroutines qui s'alimentent les unes les autres via des channels et des sockets vous est nouvelle, le guide du mot-clé chan couvre la moitié de ce pattern qui se déroule au sein d'un même processus.

Rune vs VS Code, Zed et Neovim + tmux

Les concurrents de Rune ont fait des paris très différents en matière de langage, de rendu et de plugins :

RuneVS CodeZedNeovim + tmux
Langage principalGoTypeScriptRustC et Lua
RenduGrille de cellules sur GPU (OpenGL ou Metal)Electron (Chromium)GPU (GPUI)Votre émulateur de terminal
Modèle d'extensionsProcessus séparés via gRPCHôte d'extensions Node.jsWebAssemblyLua dans le processus, plus des plugins RPC
Multiplexeur de terminal intégréOuiPanneau de terminalPanneau de terminalAssuré par tmux
LicenceGPLv3MIT (Code - OSS)GPLv3 (éditeur)Apache 2.0 et ISC
PlateformesmacOS, LinuxWindows, macOS, LinuxWindows, macOS, LinuxPartout

La comparaison la plus pertinente est Neovim avec tmux, le setup que l'auteur de Rune cherchait à remplacer. Rune réunit les deux dans un seul programme doté d'une vraie fenêtre GPU, si bien que les polices s'affichent de la même manière quel que soit votre émulateur de terminal. Zed est le plus proche dans l'esprit côté performances, mais il est écrit en Rust et dessine une interface graphique classique plutôt qu'une grille de caractères. VS Code possède de loin le plus grand écosystème d'extensions, et Rune ne cherche pas à rivaliser avec lui sur ce terrain.

Comment installer Rune ?

Le script d'installation officiel fonctionne sous macOS et Linux :

example.bashbash
curl -fsSL https://rune.build/install.sh | sh

Vous pouvez aussi télécharger un build depuis la page des releases GitHub. La version v1.2.1 du 11 septembre 2026 fournit des fichiers .dmg pour les Mac Apple Silicon et Intel, ainsi que des archives .tar.gz pour Linux en amd64 et arm64.

Pour l'exécuter depuis les sources, clonez le dépôt et utilisez la toolchain Go :

example.bashbash
git clone https://github.com/unstablebuild/rune.git
cd rune
go run ./cmd/rune

Sous Linux, il vous faut glibc 2.28 ou plus récent ainsi que les bibliothèques système OpenGL et X11. Wayland fonctionne via XWayland (documentation Rune, 2026). make test lance la suite de tests avec le race detector, ce qui permet de voir comment un gros projet Go organise ses tests.

Rune est gratuit à télécharger et à utiliser. Rune Pro coûte 10 $ par mois et fait passer la limite de Rune Network de 2 à 10 machines connectées (tarifs Rune, 2026). L'éditeur, le support des langages et l'agent n'en ont pas besoin.

Quelles sont les limites de Rune ?

Rune est jeune en tant que projet public, et quelques limites méritent d'être connues avant de l'adopter :

  • Il n'existe pas de build Windows. Les releases couvrent uniquement macOS 13.3 ou plus récent et Linux.
  • Sous Linux, l'éditeur fenêtré nécessite glibc, donc Alpine et les autres distributions basées sur musl ne sont pas prises en charge. Il a aussi besoin des bibliothèques X11 ou de XWayland. Ce n'est pas le cas des modes TUI et headless.
  • Seuls Go et Python bénéficient aujourd'hui d'une prise en charge complète. Rust et Zig sont en bêta, et TypeScript n'est pas encore en Tier 1. Rune n'est donc pas envisageable comme éditeur principal pour beaucoup de développeurs frontend et JVM.
  • Le modèle invite de commande et console est rapide une fois maîtrisé, mais y arriver prend plus de temps que d'ouvrir VS Code et de cliquer un peu partout. Un tutoriel guidé se lance dans l'IDE au premier démarrage pour vous aider.
  • Le dépôt public est récent. Il a été créé sur GitHub le 10 septembre 2026 et comptait 1 184 étoiles et 87 forks le 27 septembre (API GitHub, 2026). Le code est utilisé au quotidien depuis 2022 environ, mais la communauté de contributeurs n'a que quelques semaines.

Le lancement open source a recueilli 224 points et 70 commentaires sur Hacker News, et la version 1.1 avait obtenu 100 points auparavant (Hacker News, 2026). C'est beaucoup d'attention pour un dépôt aussi récent, mais l'écosystème d'extensions et la communauté de contributeurs n'existent que depuis quelques semaines.

La place de LevelUpGo

La plupart des gens connaissent Go pour l'infrastructure cloud, les CLI et les services backend, comme le montre l'article où Go est-il utilisé. Rune montre qu'il peut aussi faire tourner une application desktop rendue par le GPU. Si l'argument de Go à la place d'Electron vous a convaincu dans notre article sur Wails, Rune va plus loin en se passant aussi de la webview.

Lire une base de code comme celle de Rune devient plus facile une fois les bases acquises. Le cours Go Basics sur LevelUpGo couvre les fonctions, les structs, les slices et la gestion des erreurs que vous croiserez dans chaque fichier. Concurrency Fundamentals couvre les goroutines et les channels sur lesquels repose le travail d'optimisation du débit du terminal de Rune. Si le workflow centré sur le clavier de Rune vous attire, Command Line Basics vous donne les habitudes du shell qu'il suppose acquises. La feuille de route Go situe chaque cours.

Questions fréquentes

Rune est-il gratuit ?

Oui. Rune est téléchargeable gratuitement pour macOS et Linux, et l'intégralité du code source est disponible sous GPLv3. Rune Pro coûte 10 $ par mois et fait passer de 2 à 10 le nombre de machines que vous pouvez connecter via Rune Network. Il existe aussi une offre entreprise pour les équipes.

Rune est-il open source ?

Oui. Unstable Build a publié le code source sur GitHub sous GNU GPLv3 le 12 septembre 2026. Les contributeurs conservent les droits d'auteur sur leur travail et ne signent pas de CLA. L'entreprise prévoit aussi un programme qui reverse une partie des revenus de Rune aux contributeurs.

Rune fonctionne-t-il sous Windows ?

Non. Rune prend en charge macOS 13.3 ou plus récent sur Apple Silicon et Intel, et Linux en x86_64 et arm64 avec glibc 2.28 ou plus récent. Il n'existe pas de version Windows, et la documentation n'annonce aucune date.

Quels langages Rune prend-il en charge ?

Go et Python sont pris en charge en priorité, avec LSP, un indexeur de symboles et les workflows de leur écosystème. Le support de Rust et de Zig est en bêta, et TypeScript figure sur la feuille de route. Plus de 300 autres langages bénéficient de la coloration syntaxique et de la recherche structurelle grâce aux paquets de grammaires tree-sitter.

Rune est-il écrit en Rust ?

Non. Environ 97,6 % du code de Rune est en Go. L'éditeur est compilé avec cgo activé pour se lier au pipeline graphique natif OpenGL et Metal, mais l'éditeur lui-même, l'émulateur de terminal et les extensions officielles sont en Go. Le projet s'est appelé Six, puis Ox, avant de devenir Rune.

Sources

Écrivez du Go comme un ingénieur senior

Des leçons interactives dans votre navigateur. Les premières sont gratuites.

Essayer une leçon gratuiteOu créer un compte gratuit