Hyprland перевёл конфиги на Lua — тред вместо этого спорил про dwm

В релизе 0.55 Hyprland заменил свой самодельный синтаксис hyprlang на полноценный Lua — циклы, функции, переменные, всё как есть, — а старый формат ещё поработает пару релизов. Тред на Hacker News почти не обсуждал сам факт: комментаторы весь день переспоривали, нужен ли оконному менеджеру настоящий язык программирования только ради привязки клавиши.

Вкратце

Конфиги на hyprlang пока работают: готовый конвертер сообщества и плагин для neovim уже переводят их в Lua построчно, а комментаторы говорят, что и LLM справляются с миграцией без особых проблем.

Самая острая критика вообще не про синтаксис Lua: пакетировщик NixOS рассказал, что год стабильной кросс-компиляции испарился за одну ночь, когда проект тихо форкнул весь свой стек зависимостей, сломав нижестоящие пакеты на целый месяц.

Lua заменяет hyprlang, и сегодня ничего не ломается

Hyprland — тайловый Wayland-композитор с преданной, быстро развивающейся аудиторией на Linux-десктопе, и в релизе 0.55 проект наконец заменил свой самодельный язык конфигурации, hyprlang, на настоящий Lua: переменные, циклы, функции, всё по-взрослому. Старые конфиги продолжают работать «ещё пару релизов», пока вики не догонит документацию под Lua, а готовый конвертер сообщества и как минимум один плагин для neovim уже переводят существующие настройки построчно; комментаторы говорили, что LLM тоже справляются с конвертацией без особых проблем.

В этот же релиз вошёл Layout API, позволяющий писать собственные раскладки тайлинга, которые ведут себя точно как встроенные в Hyprland: глобально, для отдельного рабочего стола или для отдельного монитора, а также поддержка ICC цветовых профилей по выходам, рендеринг FP16 для более точной цветопередачи, новый эффект свечения окон и нативные жесты трекпада. По пути убрали или перенесли четыре старых опции конфига: обычная цена, которую платят пользователи 0.x-софта за подобные ломающие изменения.

К моменту, когда тред набрал обороты, Hyprland уже выпустил 0.56, и значительная часть ранних комментариев просто это констатировала. Один давний пользователь поставил поправку в контекст: переход на Lua «неважно, что случился пару недель назад» — тайминг в чейнджлоге был шумом; спор, который последовал дальше, касался вещи, вообще не упомянутой в релиз-ноутах.

Зачем превращать конфиг оконного менеджера в настоящий язык программирования

Спор начался с прямой жалобы на всю категорию софта, где конфиг становится кодом: в качестве предостережения кто-то вспомнил «groovy-абоминацию Gradle». Ответ, набравший больше всего голосов, развернул жалобу на саму себя:

«То есть вам не нравится использовать языки программирования как языки конфигурации, поэтому вы: 1. используете декларативный формат для конфига, ладно, пусть так; 2. ...и когда он неизбежно перестаёт хватать, вы... переходите на язык программирования? Некоторые люди... предпочитают сразу пропустить первый шаг и перейти ко второму варианту». — создатель masteringemacs.org и inspiredpython.com

От этой реплики разошлась дюжина веток: схемы CUE, пуристы TOML, школа крошечных DSL в духе OpenBSD, но практический довод именно за Lua сводился к интроспекции: конфиг на Lua даёт настоящий языковой сервер, автодополнение и документированные поля вместо угадывания недокументированного DSL.

Счёт за пакетирование, который никто не вписал в релиз-ноуты

Самая резкая критика была вообще не про синтаксис. Она пришла от человека, который весь последний год держал Hyprland собираемым за пределами его собственной экосистемы:

«Я вложил немало сил, чтобы весь стек sway кросс-компилировался корректно в nixpkgs/NixOS, и держал это стабильным целый год, чтобы люди могли на этом собирать, а потом hyprland вдруг форкнул каждый пакет в стеке со свежим набором nix-выражений в духе ‘работает у меня на машине’... это отдаёт духом ‘перепишем на Rust’: бросаются переделывать всё заново, не разбираясь, почему всё было устроено именно так». — пакетировщик Nix, год державший стек sway/Hyprland кросс-компилируемым в nixpkgs

По его словам, поддержка пакетов Hyprland в основном nixpkgs была сломана целый год; в итоге он просто убрал эти пакеты из личного конфига. Переписывание языка конфигурации не остаётся внутри парсера конфигов: каждый нижестоящий пакетировщик и автор плагина для статус-бара наследует эту турбулентность.

Ответ dwm: не настраивай программу, а пересобери её

Один ответ вообще пропустил спор Lua-против-DSL и обратился к противоположной философии:

«По-моему, у dwm лучший подход к конфигурации: меняешь программу и пересобираешь. Это работает для dwm, потому что она компилируется за две секунды и почти не имеет зависимостей. Про hyprland не знаю». — автор *Practical Julia* и *Einstein's Tutor*

Никто всерьёз не предлагал, чтобы Hyprland, C++-композитор с гораздо более крупным графом зависимостей, чем инструменты suckless на C, перенял модель dwm «правь исходник и пересобирай». Но контраст и есть суть: dwm считает «поправь исходник» проще любого языка конфигурации, тьюринг-полного или нет.

Один ответ отступил назад и назвал закономерность, вокруг которой кружил весь тред:

«Простой конфиг -> (нужно делать вещи посложнее) -> добавляем уровни переопределения -> ... добавляем тьюринг-полный язык -> (всё становится абсурдным, куча спагетти-кода вне контроля версий, пора сбрасывать) -> goto ‘простой конфиг’... думайте об этом как о спирали. Следующий ‘простой конфиг’ — чуть лучшая версия первого». — инженер распределённых систем с картой больше 45 000 с 2009 года

Hyprland просто выбрал момент, чтобы качнуться в сторону языкового конца этой спирали. Качнётся ли он обратно, пока не может ответить ни один тред.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 23 из 27 Читать дальше
🚀Tech

Mac-приложение Nativ обещает нативный ИИ, а везёт полный Python внутри

Nativ обещает «топовые» открытые модели, которые работают локально на Apple Silicon — без аккаунтов, подписок и облака. Приложение написал Принс Канума, мейнтейнер библиотеки MLX-VLM, на которую уже опирается значительная часть локальной ИИ-экосистемы Mac ради инференса быстрее, чем у llama.cpp. Несмотря на название, Nativ везёт с собой полноценный встроенный Python — это заметили в первые же часы.

★ 184 · 💬 71 · blaizzy.github.io · 4 мин