Wyzer, язык программирования с одним правилом владения для памяти, потоков и сети

Wyzer, язык программирования с одним правилом владения для памяти, потоков и сети

На Hacker News опубликован Wyzer, статически типизированный компилируемый язык программирования, ориентированный на ресурсы (resource-oriented). Ключевая идея проекта: вместо трёх разных инструментов для безопасности памяти, многопоточности и сети использовать одно правило владения ресурсом, если ресурс уже использован, использовать его повторно нельзя, и это правило применяется одинаково к памяти, сетевым сообщениям и аппаратным прерываниям.

Автор объясняет мотивацию так: Rust гарантирует безопасность памяти внутри одного процесса, но ничего не даёт против распределённых взаимоблокировок, несовпадения протоколов между сервисами и ошибок межсервисного взаимодействия. Языки со сборщиком мусора, Go, Java, C#, Python, проще в использовании, но медленнее и менее предсказуемы, что плохо подходит для систем реального времени и низкоуровневого кода. Сетевое взаимодействие сегодня по-прежнему пишут вручную, полагаясь на то, что два независимых сервиса правильно поймут друг друга.

Для управления памятью Wyzer использует модель Perceus (счётчик ссылок), заимствованную из языков Koka и Lean 4: код пишется в функциональном стиле, где данные не изменяются напрямую, но если у данных остаётся единственный владелец, компилятор незаметно меняет память на месте, без сборщика мусора и без borrow checker, как в Rust, с производительностью на уровне C. Для сети используется хореографическое программирование, подход, заимствованный из академических исследований: разработчик пишет одно сетевое правило, а компилятор порождает из него код для каждой участвующей машины. По словам автора, именно это в Wyzer ново: та же идея хореографии распространена не только на сеть, но и на потоки и прерывания, и одно и то же правило доказывает безопасность памяти, прерываний и сети одновременно. Компилятор выводит сетевые правила из типов, которыми помечено владение данными, и проверяет их, находя взаимоблокировки и потерянные сообщения ещё до запуска программы. В синтаксисе Wyzer переменные неизменяемы по умолчанию (let), для изменяемых используется var, для констант времени компиляции, const; ошибки возвращаются как Result<T, E> и разбираются выражением match; скрытого управления потоком вроде async/await в языке нет.

Автор прямо называет Wyzer ранним исследовательским проектом с нерешёнными крупными проблемами и не даёт ответа на вопрос, дойдёт ли язык до продакшн-готовности. В источнике не указаны ни номер версии или статус релиза, ни лицензия, ни график развития, ни сравнительные замеры производительности с Rust или другими языками; имя и место работы автора в тексте тоже не названы, упоминается лишь ник отправителя на Hacker News. Отдельно раскрыто использование ИИ в работе над проектом: ИИ применялся для генерации сообщений коммитов, для изучения хореографического программирования и модели Perceus, а также для дизайна бренда и логотипа Wyzer.

Ключевые факты

  • Wyzer, статически типизированный компилируемый язык с одним правилом владения ресурсом сразу для памяти, потоков и сети
  • Память управляется моделью Perceus (счётчик ссылок, заимствован из Koka и Lean 4), без сборщика мусора и без borrow checker, как в Rust
  • Хореографическое программирование, до этого применявшееся к сети, в Wyzer впервые (по словам автора) распространено также на потоки и прерывания
  • Компилятор выводит сетевые правила из типов владения и ловит взаимоблокировки и потерянные сообщения до запуска программы
  • Автор называет проект ранним исследованием с нерешёнными проблемами; версия, статус релиза и лицензия не указаны, часть работы (коммит-сообщения, изучение теории, дизайн логотипа) выполнена с помощью ИИ

Почему это важно

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

Кому это важно

Разработчикам систем, которым сейчас приходится вручную совмещать Rust или C для безопасности памяти, отдельные инструменты для многопоточности и ручную синхронизацию сетевых протоколов между сервисами. А также тем, кто следит за хореографическим программированием и моделями памяти на основе счётчика ссылок (Koka, Lean 4), Wyzer проверяет, работают ли эти академические идеи за пределами исследовательской среды.

Как это применить

Исходный код и документация Wyzer опубликованы на GitHub в репозитории Wyzer-Lang/wyzer, там же, файл RESEARCH.md с формальными правилами языка для тех, кто хочет разобраться в деталях или внести вклад в разработку, и ссылка на Discord-сервер проекта. Синтаксис близок к Rust: переменные неизменяемы по умолчанию (let), для изменяемых нужен var, для констант времени компиляции, const; ошибки возвращаются как Result<T, E> и разбираются через match; условия в if/while/for пишутся без скобок.

Можно ли доверять

Сам автор прямо называет Wyzer ранним исследовательским проектом с несколькими нерешёнными крупными проблемами и оставляет открытым вопрос, дойдёт ли язык до продакшн-готовности. В источнике не указаны ни номер версии или статус релиза, ни лицензия, ни сроки развития, ни сравнительные замеры производительности с Rust или другими языками; имя и место работы автора не названы. Отдельно раскрыто, что часть работы над проектом, сообщения коммитов, изучение хореографического программирования и модели Perceus, дизайн логотипа, сделана с помощью ИИ.

Риски и подводные камни

Идея объединить безопасность памяти, потоков и сети одним правилом владения ресурсом амбициозна, но хореографическое программирование до сих пор существовало почти исключительно в исследовательских работах, а не в языках общего назначения, и сам автор признаёт наличие нерешённых проблем. Без указанной версии, лицензии и независимых замеров производительности судить о зрелости и практической применимости Wyzer по одному только источнику нельзя.

«Простота, это не отсутствие силы. Это сила без притворства.»

— Атикш Шарма, цитата в README проекта Wyzer