Первый выпуск Neovim, модернизированного варианта редактора Vim
Состоялся первый релиз проекта Neovim, в рамках которого развивается ответвление от редактора Vim, разработка которого сфокусирована на повышении расширяемости и гибкости. В рамках проекта Neovim уже около двух лет проводится агрессивная переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов.
Из проблем Vim отмечается раздутая монолитная кодовая база, состоящая более чем из 300 тысяч строк кода на языке Си (C89). Во всех нюансах кодовой базы Vim разбирается всего несколько человек, а все изменения контролирует один мэйнтейнер, что затрудняет сопровождение и работу над усовершенствованием редактора. Вместо встроенного в ядро Vim кода для поддержки GUI в Neovim предлагается использовать универсальную прослойку, позволяющую создавать интерфейсы с использованием различных тулкитов.
В первом выпуске уже готовы механизмы для автоматического объединения истории работы между несколькими экземплярами редактора, система конфигурации переработана для соответствия требованиям стандарта XDG, встроен эмулятор терминала, добавлены средства выполнения работ в асинхронном режиме (можно запустить команду и не дожидаясь её завершения вернуться к редактированию), добавлен API MessagePack для взаимодействия с плагинами и подготовлены средства отслеживания изменения состояния. Из выполняемых в настоящее время работ отмечается портирование кода ввода/вывода на библиотеку libuv, замена тестового набора на тесты Lua и использование вместо языка VimL транслятора Lua.
Плагины к Neovim запускаются как отдельные процессы, для взаимодействия с которыми используется формат MessagePack. Взаимодействие с плагинами производится в асинхронном режиме, без блокирования базовых компонентов редактора. Для обращения к плагину может использоваться TCP-сокет, т.е. плагин может запускаться на внешней системе. При этом Neovim остаётся обратно совместимым с Vim, продолжает поддерживать Vimscript (Lua предлагается в качестве альтернативы) и поддерживает подключения большинства штатных плагинов Vim. Расширенные возможности Neovim могут быть использованы в плагинах, построенных с использованием специфичного для Neovim API.
В настоящее время уже подготовлено около 20 специфичных плагинов, доступны биндинги для создания плагинов и реализаций интерфейсов с использованием различных языков программирования (C++, Clojure, Perl, Python, Go, Java, Lisp,Lua, Ruby) и фреймворков (Qt5, ncurses, Node.js, Electron, GTK+). Развивается несколько вариантов пользовательского интерфейса. GUI-надстройки во многом напоминают плагины, но в отличие от плагинов они инициируют вызов функций Neovim, в то время как плагины вызываются из Neovim.
Главная ссылка к новости (https://news.ycombinator.com/i...)
http://www.opennet.ru/opennews/art.shtml?num=43250
|