Сервис развивается: тестируем формат, собираем идеи, улучшаем сервис. Есть идеи? Написать
Дайджесты новостей
Символьная сетка нативной IDE Rune с GPU-ускорением и отдельными модулями расширений, соединёнными с ядром.

Rune: легковесная нативная IDE на Go с GPU-ускорением и расширениями через gRPC

Современные редакторы кода и среды разработки (IDE) практически полностью перешли на платформу Electron и веб-технологии. При всех достоинствах расширяемости этот подход обходится пользователям дорого: запуск каждого окна редактора тянет за собой полноценный экземпляр браузера Chromium и среду Node.js. В результате рабочая станция разработчика теряет гигабайты оперативной памяти, а ввод текста страдает от микрозадержек (input latency), особенно заметных на мониторах с высокой частотой обновления.

Компания Unstable Build сделала важный шаг в сторону производительных нативных инструментов: исходный код проекта Rune — клавиатурно-ориентированной среды разработки, создававшейся с 2017 года — был полностью открыт под свободной лицензией GNU General Public License v3 (GPLv3).

Аппаратный рендеринг символьной сетки

Вместо сложной и тяжелой отрисовки HTML-разметки через браузерный движок Rune использует концепцию дискретной символьной матрицы (Character Grid). Графический интерфейс программы рисуется напрямую видеокартой:

  • В операционных системах семейства Linux задействован графический API OpenGL.
  • В macOS используется нативный низкоуровневый бэкенд Metal.

Отрисовка текста видеокартой синхронизируется с частотой развертки монитора (вплоть до 144 и 240 Гц). Это дает мгновенный отклик: курсор перемещается без малейшего шлейфа, а символы появляются на экране в момент нажатия клавиши. По ощущениям от работы Rune приближается к терминальным эмуляторам Alacritty и Ghostty, сохраняя при этом все удобства полноценной графической IDE.

Изоляция расширений через протокол gRPC

Одной из главных архитектурных проблем традиционных сред разработки остается стабильность: если расширение линтера или подсветки синтаксиса дает сбой, оно может подвесить весь редактор. В Rune взаимодействие с внешним миром построено по модульному принципу:

  • Ядро среды написано на Go и отвечает исключительно за редактирование текста, работу буферов и аппаратную отрисовку.
  • Поддержка языков программирования, форматирование, интеграция с языковыми серверами (LSP) и автодополнение вынесены в отдельные изолированные процессы.
  • Общение между ядром и плагинами происходит по высокопроизводительному бинарному протоколу gRPC.

Если языковой плагин начнет интенсивно индексировать крупный проект или аварийно завершится из-за нехватки памяти, окно редактора не зависнет ни на миллисекунду: разработчик сможет продолжить комфортно набирать текст и сохранять файлы.

Встроенные инструменты и модель развития сообщества

Rune проектировался для инженеров, ценящих работу без отрыва рук от клавиатуры. В дистрибутив «из коробки» входят:

  • Полнофункциональный встроенный терминал с поддержкой мультиплексирования вкладок.
  • Интерактивная среда выполнения кода (REPL).
  • Глубокая поддержка языков Go, Rust и Zig с быстрой навигацией по символам и переходом к определениям типов.

Вместе с открытием исходного кода команда Unstable Build отказалась от требования подписывать лицензионное соглашение об отчуждении прав (CLA). Контрибьюторы сохраняют авторские права на свой код. Более того, проект развивает прозрачную модель распределения коммерческих доходов (Revenue Sharing), перечисляя фиксированный процент поступлений авторам принятых улучшений на основе публичного реестра вкладов.

Rune доказывает, что современная среда разработки может оставаться компактным бинарным файлом, стартовать за доли секунды и потреблять минимум аппаратных ресурсов без потери функциональности.