В рамках проекта Neovim предпринята попытка модернизации Vim

24 февраля 2014 года

Анонсирован проект Neovim, в рамках которого планируется провести работу по рефакторингу и модернизации кодовой базы текстового редактора Vim. В текущем виде код Vim развивается более 20 лет и состоит из более чем 300 тысяч строк на языке Си (C89), а во всех нюансах кодовой базы Vim разбирается всего несколько человек, что затрудняет сопровождение и работу над усовершенствованием редактора.

Проблему также представляет метод сопровождения кодовой базы Vim. У проекта сейчас один мэйнтейнер, который достаточно скрупулезно подходит к процессу проверки и принятия патчей, что затрудняет продвижение изменений в Vim. В итоге, ядро Vim заметно отстаёт по темпу разработки от потребностей экосистемы разработчиков плагинов. Среди целей проекта Neovim называется упрощение процесса сопровождения кодовой базы, разделение полномочий между несколькими мэйнтейнерами и ускорение продвижения исправлений и новых возможностей. При этом проект Neovim не предусматривает переработку Vim с нуля, изменение модели редактирования Vim. Также будет сохранена поддержка vimscript и большинство плагинов на vimscript продолжат работу без изменений.

Для финансирования разработки была запущена кроудфандинг-кампания (Архивная копия от 14 марта 2014 на Wayback Machine), в рамках которой за первый день было собрано 12 тысяч долларов (всего планировалось собрать 10 тысяч). Из практических изменений намечен перевод Vim на новую архитектуру плагинов, позволяющую разрабатывать расширения на любых языках программирования. Плагины будут выполняться в форме отдельных процессов, взаимодействующих с ядром vim при помощи механизма RPC.

Кроме того, планируется создание нового современного пользовательского интерфейса, разработка которого будет вестись в качестве надстройки, не требующей изменения базовой части Vim, что избавляет от необходимости продвигать патчи в ядро Vim. Базовый код для поддержки GUI предлагается удалить из ядра Vim и использовать более универсальную прослойку, позволяющую создавать интерфейсы с использованием различных тулкитов. GUI-надстройки во многом напоминают плагины, а отличие от плагинов состоит в том, что плагины вызываются из Neovim, а GUI-надстройки выступают первичным процессом и вызывают функции Neovim.

Для ведения разработки предлагается использовать GitHub. На первом этапе работа сосредоточена на переводе кодовой базы на систему сборки cmake и проведения чистки кода от привязки к устаревшим системам и компиляторам. Вместо специфичного для платформ кода для организации ввода/вывода планируется задействовать библиотеку libuv.

Bram Moolenaar, текущий мэйнтейнер проекта Vim, скептически отнёсся к проекту Neovim, выразив опасение, что в результате переработки будет потеряна поддержка некоторых платформ и будут внесены новые ошибки. По его мнению, полный рефакторинг не является выходом. Вместо этого лучше потратить силы на улучшение того, что уже есть или на проведение небольших переработок, нацеленных на улучшение работы Vim для пользователей.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «В рамках проекта Neovim предпринята попытка модернизации Vim», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.