"Что нового" - для людей
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Исторически сложилось так, что человеко-ориентированный список изменений не ведётся с момента выхода фара в Open Source.
Благодаря техническому прогрессу это можно исправить (при желании за все 20 лет), и даже автоматизировать его ведение.
Я сделал первую попытку, проанализировав последнюю сотню билдов.
Поскольку changelog у нас непозволительно лаконичный, сырая информация для анализа извлекается из коммитов, а в случае отсылки к предыдущим билдам делается попытка добавить информацию и о них.
Рассчитываю улучшить опираясь с на конструктивную критику всех заинтересованных.
Благодаря техническому прогрессу это можно исправить (при желании за все 20 лет), и даже автоматизировать его ведение.
Я сделал первую попытку, проанализировав последнюю сотню билдов.
Поскольку changelog у нас непозволительно лаконичный, сырая информация для анализа извлекается из коммитов, а в случае отсылки к предыдущим билдам делается попытка добавить информацию и о них.
Рассчитываю улучшить опираясь с на конструктивную критику всех заинтересованных.
Last edited by John Doe on Tue 24 Mar, 2026 01:30, edited 1 time in total.
https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Что нового (Билды 6569 - 6668)
🚀 Новые функции и улучшения
- [Редактор / поиск по размеру]: В фильтрах файлов и результатах поиска теперь можно использовать десятичные суффиксы размеров (k, m, g и т.д.) в дополнение к бинарным (K, M, G и т.п.), с явным пояснением разницы между ними в справке. {6666}
- [SQLite / инфраструктура]: Встроенная SQLite обновлена до версии 3.51.0, что даёт более современный движок БД для внутренних нужд Far Manager. {6586}
- [Редактор / режим dump]: В режиме дампа просмотрщика исправлена некорректная отрисовка выделения, чтобы оно соответствовало фактическому диапазону байт. {6571}
- [Редактор / переменные окружения]: Экспериментальная поддержка переменной окружения CD позволяет запускать Far в уже подготовленном рабочем каталоге без дополнительных команд. {6626}
- [Диалоговые окна / интерфейс]: Улучшено редактирование целых чисел в far:config — все представления (десятичное, шестнадцатеричное, двоичное) теперь доступны в одном диалоге, без раздробленных окон. {6615}
- [Командная строка / мышь]: Поведение мыши в командной строке Far скорректировано, чтобы операции выделения и позиционирования курсора работали предсказуемо и без «рывков». {6663}
- [Индикаторы режимов]: Исправлены индикаторы режимов (например, вставка / замена), чтобы их состояние точно отражало текущий режим работы редактора / панели. {6663}
- [Редактор / строка состояния]: В диалоге настройки отображения номеров строк (MEditConfigLineNumbers) добавлены подсветки, облегчая понимание включённых опций. {6626}
- [Переменная окружения CD / обработка исключений]: Улучшена обработка исключений в ядре Far, снижая риск аварийных завершений при неожиданных ситуациях, в том числе вокруг новой поддержки переменной CD. {6626}
- [Диалоговый API / справка (LuaFAR)]: Документация по far.SendDlgMessage переработана: команды DM_ENABLE, DM_ENABLEREDRAW и другие диалоговые сообщения вынесены в отдельные подразделы с примерами, что упрощает написание сложных диалоговых макросов. {6620, 6667}
- [LuaFAR / диалоговые сообщения]: Уточнено поведение DM_ENABLE и DM_ENABLEREDRAW в LuaFAR: параметр может быть числом или логическим значением, значения по умолчанию изменены, а в мануал добавлено явное описание этих режимов. {6620}
- [LuaFAR / дескрипторы плагинов]: В документации LuaFAR описан метод plugin_handle:rawhandle(), возвращающий оригинальное значение хэндла для использования через LuaJIT FFI и в качестве ключа таблицы. {6615}
- [LuaFAR / работа с диалогами]: В мануале LuaFAR появились отдельные статьи с примерами для сообщений DM_LISTINSERT, DM_LISTSET, DM_LISTSETCURPOS, DM_LISTSETDATA, DM_LISTSETTITLES, DM_LISTSORT, DM_LISTUPDATE и DM_MOVEDIALOG, упрощающие создание сложных списков и динамически перемещаемых диалогов. {6667}
- [Плагины / API C]: В структуре регулярных выражений API плагинов добавлены команды RECTL_GETSTATUS и структура RegExpStatus (с полем StructSize и деталями ошибки / позиции), что позволяет плагинам получать подробный статус ошибок разбора шаблона. {6584, 6585}
- [Плагины / API C — версии]: Обновлены заголовки farcolor.hpp и plugin.hpp, номер сборки и версии API повышены до 6585, что фиксирует новую версию интерфейса для сторонних плагинов. {6585}
- [LuaFAR / far.MkLink]: Реализация Lua-функции far.MkLink приведена в соответствие документации, чтобы фактические параметры и поведение совпадали с описанными в мануале. {6587}
- [LuaFAR / DM_ENABLE, DM_ENABLEREDRAW]: В документации по far.SendDlgMessage уточнено поведение DM_ENABLE и DM_ENABLEREDRAW: указаны типы параметров, значения по умолчанию и возвращаемые значения, что снижает риск неправильного использования при динамическом включении элементов и управлении перерисовкой. {6620}
- [LuaFAR / структура мануала]: Структура luafar_manual.tsi серьёзно переработана, сообщения диалогового API разнесены по отдельным узлам, добавлены перекрёстные ссылки на HTML-документацию, что делает навигацию по справке более логичной. {6667}
- [Интеграция SQLite]: Добавлена проверка версии sqlite3.dll при запуске, позволяющая обнаружить неподдерживаемые или слишком старые версии внешней библиотеки. {6667}
- [Сохранение результатов поиска из модальных редакторов]: По задаче gh-1019 добавлена возможность сохранять результаты «Find all» даже из модальных редакторов (контекст из overlap, но само поведение закреплено в текущем диапазоне). (?) {6569}
- [Состояние редактора / ECSTATE_SAVED, ECSTATE_MODIFIED]: По задаче gh-939 восстановлен исходный (более ожидаемый) смысл флагов состояния ECSTATE_SAVED и ECSTATE_MODIFIED, чтобы сторонние плагины могли снова корректно определять «грязное» состояние документа. {6570}
- [Просмотрщик помощи HlfViewer]: Плагин HlfViewer адаптирован к изменённому поведению ECSTATE_* (gh-939), с откатом предыдущего варианта адаптации, чтобы правильно отслеживать изменённость при просмотре help-файлов. {6570}
- [Регулярные выражения / новый контрольный код]: В RegExpControl добавлена команда RECTL_GETSTATUS, позволяющая получить подробную информацию об ошибке разбора регулярного выражения (код ошибки, позиция в шаблоне). {6584}
- [Регулярные выражения / структура статуса]: Для передачи статуса ошибок регулярных выражений введена структура RegExpStatus с полем StructSize, что делает её расширяемой для будущих дополнений, включая локализованные диагностические сообщения. {6585}
- [Поиск / граничный случай regex]: Устранён граничный случай в поиске по регулярным выражениям, когда некоторые конструкции обрабатывались некорректно. {6620}
- [Панель / макросы Panel.Select]: В русскоязычной документации для Panel.Select уточнена формулировка «содержатся в буфере обмена», чтобы описание соответствовало реальному поведению — выделяются элементы, имена которых действительно находятся в буфере. {6626}
- [Файлы помощи / автоформатирование текста]: В справке по *.hlf уточнены описания управляющих последовательностей @- и @+, включая корректные формулировки об отключении/включении автоформатирования и требованиях к расположению в отдельной строке. {6626}
- [Lua-макросы / документация MacroAPI]: В англо- и польскоязычных вариантах macroapi_manual устранены неточности (регистр имён ссылок, пробелы, формулировки ограничений на функции в макросах), улучшая читаемость и согласованность примеров кода. {6569}
- [Lua-макросы / ограничения на функции]: Документация по ограничениям на использование некоторых функций в макросах (exit, mf.acall и прочие) переработана без лишних пробелов и неоднозначных формулировок, делая список ограничений более однозначным. {6569}
- [Lua-макросы / пример с FolderShortcutsId]: В примере макросов для «Folder shortcuts popup» устранены лишние пробелы и неточности форматирования, чтобы код можно было копировать и использовать без ручной правки. {6569}
- [Редактор конфигурации / номер CD]: В справке по Dialog API (русская документация) уточнены формулировки для FarList, DN_DRAWDLGITEM и других структур: исправлены глагольные формы и пояснения, что делает описание поведения диалогов более точным для разработчиков плагинов. {6626}
- [Панель процессов ProcList]: Для плагина ProcList включена поддержка precompiled headers (PCH), что уменьшает время сборки и потенциально ускоряет развитие плагина. {6569}
- [Тесты / ASAN]: Добавлены дополнительные ASAN-тесты, расширяющие покрытие и упрощающие поиск проблем с памятью на ранней стадии разработки. {6569}
- [Refactoring / внутренние улучшения]: Выполнен крупный рефакторинг кода (в том числе по сборкам 6621, 6622, 6665), нацеленный на упрощение сопровождения и улучшение читаемости без изменения внешнего поведения. {6621, 6622, 6665}
🐞 Исправления ошибок
- [Сборка / debug]: Исправлена debug-сборка Far Manager (а также порядок сборки на AppVeyor), чтобы отладочный конфиг снова успешно собирался и падения сборки диагностировались раньше. {6583}
- [Редактор / far:regex — подстановка]: Исправлена подстановка в far:regex, из-за которой результаты замены могли быть некорректными для некоторых выражений. {6583}
- [Редактор / откат блока]: Устранена ошибка отката (undo) блоковых операций в редакторе, когда возврат изменений после работы с блоком мог приводить к повреждению текста или неверному восстановлению. {6619}
- [Редактор / замена пустой строкой]: Исправлена экспериментальная логика замены на пустую строку в редакторе (Mantis M2467), чтобы операции поиска/замены с пустым заменителем работали корректно. {6619, 6620}
- [Редактор / regex: граничный случай]: Исправлен граничный случай в поиске по регулярным выражениям, когда некоторые шаблоны приводили к неверным результатам или отказу поиска. {6620}
- [Редактор / блоки и командная строка]: Исправлена обработка мыши в командной строке, устраняя некорректное позиционирование курсора или выделения при кликах и перетаскивании. {6663}
- [UI / индикаторы режима]: Исправлены индикаторы режимов (в том числе вставка / замена), которые ранее могли не совпадать с фактическим состоянием режима ввода. {6663}
- [Диалоги / Backspace только для чтения]: Исправлена обработка клавиши Backspace в редакторских элементах управления, помеченных «только для чтения», чтобы нажатие не изменяло содержимое и не приводило к неожиданным эффектам. {6622}
- [Редактор / состояние ECSTATE_*]: Исправлена регрессия в трактовке флагов ECSTATE_SAVED и ECSTATE_MODIFIED по задаче gh-939: теперь они снова корректно отражают сохранённость/изменённость текста. {6570}
- [Help viewer / адаптация к ECSTATE]: Плагин HlfViewer дополнительно адаптирован к обновлённой трактовке ECSTATE_* (gh-939), устраняя возможные ошибки или некорректные реакции на изменение состояния. {6570}
- [Редактор / режим dump — выделение]: В просмотрщике в режиме dump устранено неверное рисование выделения, когда выбираемый диапазон байт ранее подсвечивался некорректно. {6571}
- [Редактор / блоковый undo]: Восстановлена корректность блокового undo в редакторе, чтобы сложные многострочные правки можно было надёжно откатывать без артефактов. {6619}
- [Обработка исключений]: Улучшена обработка исключений в ключевых местах, что уменьшает вероятность падений Far при неожиданных ситуациях во время выполнения. {6626}
- [Сборка / старые ОС]: Внесена корректировка для исправления 6549 (BSOD на NFS) на старых версиях Windows, чтобы защитный код корректно отрабатывал и там. (?) {6569}
- [Коррекция 6483 / gh-957]: Добавлена явная «Correction of 6483» для доработки изменений по задаче gh-957 («Cleaning up the stables»); детали корректировки неочевидны из diff, поэтому суть остаётся уточнённой пометкой. (?) {6662}
- [Коррекция 6659]: Внесена коррекция к изменениям из билда 6659, устраняющая последствия предыдущего исправления (точная суть не раскрыта в диффах). (?) {6663}
- [Продолжение 6662]: «Continue 6662» дополняет и завершает исправления, начатые в билде 6662; из текста коммитов неочевидно, какой именно аспект поведения доработан. (?) {6663}
- [Коррекция 6663.2]: Введено отдельное исправление «Correction of 6663.2», уточняющее одну из правок из билда 6663 (скорее всего, связанную с продолжением 6662 или мышью / индикаторами), но без явных деталей в diff. (?) {6664}
⚙️ Изменения в API макросов и плагинов
- [Plugin API / RegExpControl]: В enum FAR_REGEXP_CONTROL_COMMANDS добавлен флаг RECTL_GETSTATUS, а в API введена структура RegExpStatus с полем StructSize, текстом ошибки, позицией в шаблоне и кодом статуса, что позволяет плагинам получать детальную информацию о сбоях разбора regex. {6584, 6585}
- [Plugin API / версия заголовков]: В plugin.hpp обновлён номер сборки FARMANAGERVERSION_BUILD до 6584/6585 и версия API, а также синхронизирована строка «Plugin API for Far Manager 3.0.xxxx.0», фиксируя новую ревизию интерфейса для разработчиков плагинов. {6584, 6585}
- [Plugin API / farcolor.hpp]: В farcolor.hpp обновлена версия индекса цветов (Colors Index for FAR Manager 3.0.6584.0 / 3.0.6585.0), чтобы плагины могли ссылаться на актуальные цветовые схемы и значения. {6584, 6585}
- [LuaFAR API / ручки плагинов]: В документацию по far.FindPlugin, far.ForcedLoadPlugin и far.LoadPlugin добавлено описание метода plugin_handle:rawhandle(), возвращающего исходный хэндл плагина для использования в LuaJIT FFI и в качестве ключа таблицы. {6615}
- [LuaFAR API / DM_ENABLE и DM_ENABLEREDRAW]: В документации по far.SendDlgMessage уточнено, что DM_ENABLE принимает логическое значение или целое (по умолчанию -1), а DM_ENABLEREDRAW управляет перерисовкой с аналогичными параметрами, что влияет на то, как макросы могут временно отключать элементы и останавливать обновление диалогов. {6620}
- [LuaFAR API / DM_* сообщения]: В luafar_manual.tsi выделены отдельные разделы для DM_ADDHISTORY, DM_CLOSE, DM_EDITUNCHANGEDFLAG, DM_LISTINFO, DM_LISTINSERT, DM_LISTSET, DM_LISTSETCURPOS, DM_LISTSETDATA, DM_LISTSETTITLES, DM_LISTSORT, DM_LISTUPDATE, DM_MOVEDIALOG и DM_REDRAW, каждый со ссылкой на соответствующий HTML в enc_rus, что систематизирует взаимодействие Lua-макросов с диалоговым API. {6667}
- [Macro API / ссылки и формат]: В англо- и польскоязычных версиях macroapi_manual скорректированы имена якорей (например, getitemextendeddata вместо GetItemExtendedData) и убраны лишние пробелы, чтобы ссылки из Lua-макросов на документацию работали корректно и были регистрозависимо согласованы. {6569}
⚙️ Внутренние улучшения
- [Сборка / AppVeyor]: Конфигурация AppVeyor изменена так, чтобы сначала собиралась debug-сборка с режимом «fast fail», позволяя быстрее обнаруживать проблемы в отладочном конфиге. {6583}
- [Сборка / GCC на AppVeyor]: Добавлен обходной путь для сломанной версии GCC в среде AppVeyor, предотвращающий падение сборки из-за внешнего инструмента. {6586}
- [Сборка / исключение неподдерживаемых конфигураций]: Часть неподдерживаемых конфигураций сборки исключена из CI/проекта, чтобы не тратить ресурсы на заведомо неработающие варианты. {6664}
- [Грамматика / help и enc_rus]: В русской документации (enc/enc_rus) массово исправлены грамматические огрехи («находится/выводиться», формулировки возвратных глаголов, описания кодов возврата функций и директив в .hlf-файлах), не влияя на поведение программы, но повышая качество официальной документации. {6621, 6626}
- [Документация FarEng.hlf]: В FarEng.hlf.m4 исправлены неточности в описании ссылок на скобочные группы и специальные символы в регулярных выражениях, а также устранены опечатки вроде «character can be» → «characters can be». {6615}
- [Документация / LuaFAR manual refactor]: Структура luafar_manual.tsi существенно переработана: добавлены новые узлы, разбивка по сообщениям и перекрёстные ссылки, при этом функциональное поведение LuaFAR не меняется — это только улучшение структуры документации. {6667}
- [Refactoring / предупреждения компилятора]: В ряде сборок (6621, 6622, 6665) устранены предупреждения компилятора и выполнен рефакторинг кода, уменьшающий технический долг и улучшая читаемость без изменения внешнего поведения. {6621, 6622, 6665}
- [ProcList / PCH]: Для плагина ProcList включена поддержка precompiled headers (PCH), что ускоряет сборку проекта и не влияет напрямую на функциональное поведение. {6569}
- [Тесты / Refactoring, tests]: В сборке 6665 подчёркнута концентрация на рефакторинге и тестах, усиливающих надёжность без добавления пользовательских возможностей. {6665}
https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Выше - результат первого пробного прогона. Просьба убедиться что не упущено ничего важного.
https://t.me/FarManager — Telegram чат
-
Yegor
- Posts: 1508
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 52 times
- Been thanked: 94 times
"Что нового" - для людей
Опечатка в слове FMVT_DIALOG, но там больше новых значений - не знаю насколько важно.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- HaRT
- Moderator
- Posts: 11467
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 272 times
- Been thanked: 417 times
"Что нового" - для людей
Спасибо за начинание! Хотелось бы поподробнее узнать о методике. В частности, такую же можно было бы применить и к популярным плагинам.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Если они все появились в одно время, то не хотелось бы их упускать.
https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Вкратце изложена в первом сообщении.John Doe wrote: Tue 24 Mar, 2026 07:53 Хотелось бы поподробнее узнать о методике. В частности, такую же можно было бы применить и к популярным плагинам.
Скрипт готовит сырые данные, результирующий файл я подсовываю llm. Пока вручную, в перспективе можно и через АПИ.
О каких популярных плагинах речь? Мне казалось что только фар нуждается в подобным.
https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
В оригинале так:
Code: Select all
w17 2025-11-10 00:59:47+03:00 - build 6590
1. RegExp: (?<name>... added, (?{name}... still works. Name starts with LETTER.https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Отредактировать пост с changelog не получается, форум поломался:
Вот очередной прогон, на этот раз последние 50 билдов, иначе исходник превышает допустимый размер контекста (первая проба на 100 билдов тоже его превышала, что очевидно сказалось на результате).
Большую часть занимают diff'ы коммитов, для сравнения (первым) приведён результат без использования диффов вообще.
Сравнивать оба варианта можно лишь условно, поскольку даже при идентичных входных условиях вывод модели может сильно отличаться.
И пока мне не удалось добиться от gemini-3.1-pro точного следования инструкциям, надо попробовать с другой моделью.
Code: Select all
Общая ошибка
SQL ERROR [ mysqli ]
Incorrect string value: '\xF0\x9F\x9A\x80 \xD0...' for column 'old_text' at row 1 [1366]
Произошла ошибка SQL при выборке на этой странице. Пожалуйста, сообщите администратору, если ошибка будет повторяться.Большую часть занимают diff'ы коммитов, для сравнения (первым) приведён результат без использования диффов вообще.
Сравнивать оба варианта можно лишь условно, поскольку даже при идентичных входных условиях вывод модели может сильно отличаться.
И пока мне не удалось добиться от gemini-3.1-pro точного следования инструкциям, надо попробовать с другой моделью.
https://t.me/FarManager — Telegram чат
"Что нового" - для людей
тоже выглядит коряво, сравнимо как "это делает меня взволнованным, чтобы хотеть это!".
Напоминает американку "Смотря какой фэбрик, сколько дитэилс".
Last edited by Ultrabyte on Thu 26 Mar, 2026 05:06, edited 4 times in total.
"Что нового" - для людей
Не всё что есть в changelog осталось.
Что-то пришлось убрать из-за конфликтов с другими фичами, что-то из дублей убрал DrKnS.
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Мда, становится сложно уследить.
В справке сейчас так:
В справке сейчас так:
Code: Select all
#(?{name}pattern)# - именованная группа.
В качестве имени "name" может использоваться последовательность из знаков слова (#\w#) и пробелов (#\s#).
...
#\p{name}# - ^<wrap>ссылка на ранее совпавшую группу с именем #name#.
...
$ #Регулярные выражения для замены#
...
${name} Подставить группу с именем #name#.https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14586
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 515 times
- Contact:
"Что нового" - для людей
Согласен, и не только это. Надо добавить в инструкцию словарик. Предлагайте менее корявые альтернативы.
https://t.me/FarManager — Telegram чат