, и она потрясающая, но я несколько выбился из сил, поэтому, как говорится, простите за неровный почерк 🙂 Напоминаю контекст: f4 — эксперимент по переписыванию Far на go, чтобы сразу и кроссплатформенно и асинхронно. И красиво.
С красоты и начнём. На днях во фреймворк консольных интерфейсов vtui, который пишется под f4, добавлена поддержка Auto layout. Можно делать диалоги как у Apple! А чтобы это смотрелось красиво, предусмотрены две стратегии хинтинга: байткод, по аналогии с тем, как это сделано для рендеринга шрифтов у TrueType, и эвристики, как у FreeType. Для этого потребовалось портировать на go быструю считалку cassowary (пользуйтесь! там и wasm есть), а потом изобрести дискретный cossowary специально под консоль — задаем стандарты интерфейсов, люблю такое! И заодно — новая, уже полностью своя цветовая тема, не пытающаяся повторять что-то из Far, Turbo Vision или Monokai.

Показываю на китайском, чтобы заодно похвастаться — попилили под капотом поддержку Юникода, больше никаких проблем с символами двойной ширины. И нулевой. И даже с BiDi. А ещё иероглифы сверху панелей — это, оказывается, очень красиво!
И это одна из причин, за которые я люблю консоль. Она задаёт строгие рамки. Здесь при всём желании очень трудно сделать плохой интерфейс. А вот графика требует от программиста быть дизайнером (а это не наша канцелярия — конец довольно предсказуем, запустите почти что угодно опенсорсное).
Однако вернёмся к фичам. Мы (в данном случае это были я и модель, окей 🙂 сделали переводы на все международные языки и на языки всех стран, где популярны двухпанельники (смотрели по доступной статистике скачиваний). Бенгальский — это красиво.

Да, я тоже заметил не переведенные строчки — обычно не отвлекаюсь на перевод на все языки каждой новой фичи, а перевожу время от времени накопившееся пачками, на экране как раз накопившееся. Есть инструмент, который мониторит такое, чтобы я видел объемы.
Кстати об инструментах. В процессе работы над переводами выяснилось, что нейронки на этой задаче делают очень типовые ошибки. В итоге написал линтер нейропереводов, он же детектор слопа. Если модель случайно перепутала языки, или решила вставить в перевод свой Очень Важный Комментарий, упадёт CI.
Этот релиз наполнен как новыми фичами (например, вы можете примонтировать любую VFS из f4 как папку через FUSE), так и стабилизацией старых (например, дошлифована поддержка разных кодировок в редакторе, или вот переводы допилили с минимальным хелпом). Все новые в статью не поместятся (или это будет статья целиком из-под нейронки, которую никто не дочитает даже до середины), так что рассказываю в случайном порядке самое интересное 🙂 Например, из того, что мне давно хотелось попробовать — вкладки, как в ConEmu. И да, это очень удобная штука оказалась.
Кстати, о ConEmu. Его разработчик в команде и шлёт нам патчи! Например, «движок» для вкладок, т.н. воркспейсы, я сдеал в vtui уже довольно давно, а он сделал поверх него собственно UI/UX.
Кстати о движках. У нас появилась поддержка ещё одного графческого бекенда. Попробуйте с —gui=ebiten, слышал отзывы что отзывчивость на Винде приятней, чем у дефолтного, пробуйте и пишите в комментариях, какой лучше работает у вас! Да, в голой консоли Винды запускаемся через —tty, но там не будет полноцвета и не будет просмотра картинок (а вот в Windows Terminal это всё уже будет работать).
О терминалах. f4, в общем-то, сами себе терминал — f4 может нарисовать себя и в консоль и на холст кучей способов. Причём у нас ещё и свой терминал внутри — в отличие от mc или Far, где по Ctrl+O вы попадаете в исходную консоль, f4 выбрал путь far2l, где по Ctrl+O работает свой отдельный встроенный терминал. Недавно перед самым выходом беты я починил в нём несколько багов, из-за которых он не запускался на некоторых BSD и Солярисах — теперь всё у всех работает. Если у вас какой-нибудь такой юникс-лайк — попробуйте f4 обязательно, я стараюсь очень хорошо их поддерживать.
Мы добавили «палитру действий», где можно искать, если забыли, как называется нужная команда на текущем языке. Или менять все хоткеи. Никакого хардкода сочетаний клавишь больше нет, есть только семантические названия действий.

Да, кстати, f4 уже умеет макросы на Lua, как в Far3. Но и простые клавишные продолжает уметь тоже. В настройках можно выбрать, в каком формате писать при записи.
Появилась очень подробная инфо панель, даже с инфой о железе.

Появилась панель быстрового просмотра, и он действительно быстрый, у f4 же piecetable под капотом и читает он с диска только то, что вы смотрите прямо сейчас. И по сети это работает тоже, если подключаться по FISH+, о нём ниже.
Да, если уж мы коснулись скорости. Космичски ускорена работа colorer из Far3 (так, стоп! для начала: мы портировали colorer из Far3! через wasm и wazero). Тут большое спасибо коллегам из команды far2l, они его раз в 10 по скорости оптимизировали, на этом фоне замедление 1.2~1.5x из-за оверхеда на wasm jit вообще не имеет значения. colorer у меня был задачей, за которую я долго не мог взяться, потому что кода там огого, переписывать задолбаешься даже с моделями, а хочется сделать красиво. В итоге компромисс: небольшая обёртка над автономной wasm сборкой. И оно работает более чем отлично! Сборка, кстати, устроена так, что исходники colorer там вообще нетронутые, обновляются элементарно.
Да, раз уж мы коснулись FISH+. Это такое ноу-хау f4, как FISH/SHELL в mc, только на стероидах. Например, на сервер выносится поиск файла. Или поиск по файлу. Или копирование или перемещение внутри сервера без загрузки себе на комп. Даже между разными серверами можно! Если хотя бы один будет в состоянии достучаться до второго напрямую и авторизоваться там, передача данных пойдёт вообще без загрузки себе. Поднимать упавший сервер, сидя с девушкой на берегу озера на едва живом GPRS, теперь будет несколько проще.
Раз уж зашла речь про сеть. Сделал сковзную поддержку прокси, в том числе в автоматических обновлениях. Ах да, я же сделал давно запрашиваемое автообновление. Отдельно релизов и найтли. И плагинов тоже! Для плагинов, кстати, уже и магазин приложений написан, что-то между PlugRing и Аппстором. И ещё у нас теперь поддерживаются облака Гугла, Яндекса и Амазона. И WebDAV.

И Андроиды с Айфонами мы тоже научились монтировать!

Немного о разработческом. Давно скучал по hiew, в итоге взял и сделал прямо в f4 — да, с дизассемблером!

А ещё добавилась ИИ-панелька. Давно хотел возможность отправлять нашим электронным друзьям файлы прямо по F5, и теперь наконец могу это делать!

В разработке — возможность модели делать для вас какие-то штуки, а не просто генерировать текст. Скопировать или перенести какие-то файлы, внести в них какие-то изменения, выполнить ещё какие-то операции от вашего имени.
На уровне MVP это уже работает:
1. вы набираете в командной строке ai:ap
2. f4 вытягивает скилл к модели
3. модель генерит инструкции «что нужно сделать» в определенном формате
4. специальный скрит на стороне пользователя выполняет действия (см. «Apply patch?» ниже)

Сделать такое было не очень сложно, потому что формат инструкций и скрипт их применения (отшлифованный до совершенства в области обхода типичных глюков моделей) у меня давно уже придуман. Но вам понадобится скачать ap.py и положить куда-то в path. В будущем сделаем такое без внешних зависимостей и добавим возможность операций с какими-то сущностями самого f4, а не только модификации файловой системы.
И напоследок — загадочная улыбка великолепной Lena в плагине просмотра картинок!

На этом, пожалуй, прервемся. Фич мого, точно стоит попробовать. f4 собирается подо всё, включая DragonflyBSD и Illumos, ссылки на ночные бинарники прямо в README на Гитхабе.
И последнее. Четверть миллиона строк изменений за две недели, силами 10 контрибьюторов! Люди активно несут хороший, качественный код, добавляют фичи, которых не хватает им самим. И в этом особенный кайф делать инструмент для айтишников. Попробуйте f4, у него с каждым днём всё больше шансов стать первой программой, появляющейся на вашем новом компе! И добавляйтесь в чат, там и разработчики сидят тоже.
ссылка на оригинал статьи https://habr.com/ru/articles/1070962/