14.08.2022

Релиз текстового редактора Vim 9.0

После двух с половиной лет разработки состоялся релиз текстового редактора Vim 9.0. Код Vim распространяется под собственной копилефт лицензией, совместимой с GPL и позволяющей без ограничений использовать, распространять и перерабатывать код. Основная особенность лицензии Vim связана с возвратом изменений — реализованные в сторонних продуктах улучшения должны быть переданы в исходный проект, если мэйнтейнер Vim посчитает эти улучшения заслуживающими внимания и отправит соответствующий запрос. По типу распространения Vim относится к Сharityware, т.е. вместо продажи программы или сбора пожертвований на нужды проекта авторы Vim просят перечислить любую сумму на благотворительность, если программа понравится пользователю.

В Vim 9 предложен новый язык разработки скриптов и плагинов — Vim9 Script, предоставляющий синтаксис, близкий к JavaScript, TypeScript и Java. Новый синтаксис проще для освоения новичками, но обратно не совместим со старым языком сценариев. При этом поддержка ранее используемого языка и совместимость с существующими плагинами и скриптами полностью сохранена — старый и новый языки поддерживаются параллельно. Прекращение поддержки старого языка не планируется.

Кроме переработки синтаксиса в Vim9 Script реализована поддержка компилируемых функций, позволяющих существенно увеличить производительность. В проведённых тестах компилируемые в байткод функции позволили увеличить скорость выполнения скриптов в 10-100 раз. Кроме того, в Vim9 Script прекращена обработка аргументов функций в виде ассоциированных массивов, приводившая к большим накладным расходам. Функции теперь определяются при помощи выражения «def» и требуют явного указания перечня аргументов и возвращаемых типов. Переменные определяются при помощи выражения «var» с явным указание типа.

Разделение выражений на несколько строк теперь не требует использования обратного слэша. Полностью переделан механизм обработки ошибок. Для запуска функций не требуется указание ключевого слова «call», а для присвоений значений «let». Упрощено создание модулей — добавлена возможность экспортировать отдельные функции и переменные для использования в других файлах. Комментарии отделяются символом «#» вместо двойных кавычек. В будущих выпусках намечена реализация поддержки классов.

Среди других изменений:

  • В состав включён набор цветовых схем.
  • Улучшена поддержка проверки правописания и автодополнения ввода.
  • Добавлены новые настройки: ‘autoshelldir’, ‘cdhome’, ‘cinscopedecls’, ‘guiligatures’, ‘mousemoveevent’, ‘quickfixtextfunc’, ‘spelloptions’, ‘thesaurusfunc’, ‘xtermcodes’.
  • Добавлены новые команды: argdedupe, balt, def, defcompile, disassemble, echoconsole, enddef, eval, export, final, import, var и vim9script.
  • Предоставлена возможность открытия терминала во всплывающем окне (popup-terminal) и выбора цветового оформления терминала.
  • Добавлен канальный режим взаимодействия с сервером LSP (Language Server Protocol).
  • Добавлена поддержка операционной системы Haiku.

Источник.