anonymous@RULINUX.NET~# Last login: 2024-11-23 00:58:33
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать] Фильтры
  • торсионщина
  • порно
Скрыть

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

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

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

Из практических изменений намечен перевод Vim на новую архитектуру плагинов, позволяющую разрабатывать расширения на любых языках программирования. Плагины будут выполняться в форме отдельных процессов, взаимодействующих с ядром vim при помощи механизма RPC. При этом проект не предусматривает переработку Vim с нуля, изменение модели редактирования Vim. Также будет сохранена поддержка vimscript и большинство плагинов на vimscript продолжат работу без изменений.

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

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

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

Цельнотянуто с opennet.ru

>>> Подробнее

Dr.uid(*) (2014-02-25 00:12:11)
Отредактировано Dr.uid по причине "не указана"
Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0

Подтверждено: SystemV(*) (2014-02-25 00:13:29)

[Ответить на это сообщение]

avatar
Скрыть

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

Не уже ли мы когда-нибудь получим vim с нормальным TUI и GUI?

Ax-Xa-Xa(*)(2014-02-25 00:31:19)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
avatar
Скрыть

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

Да... если он перестанет пищать и всё портить - это будет прорыв!

anonymous(*)(2014-02-26 10:23:01)

Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!