Wyzer — это статически типизированный компилируемый язык, ориентированный на ресурсы. Он соединяет две идеи: choreographic programming и модель памяти Perceus. Авторы считают, что Rust гарантирует безопасность внутри одного процесса, но не спасает от распределённых дедлоков, несовпадения протоколов и ошибок межсервисного взаимодействия. Wyzer пытается решить это через choreographic programming.
Переменные в Wyzer по умолчанию неизменяемые. let — неизменяемое значение, var — изменяемое, const — константа времени компиляции. Можно объявлять struct с прямым доступом к полям, использовать if/else, while и for без скобок вокруг условий. Ошибки не прячутся: функции, которые могут упасть, возвращают Result<T, E>, а обрабатывают их через match. При этом match — это выражение, и если он стоит как отдельный оператор, нужна точка с запятой.
Зачем вообще делать новый язык? Rust доказал, что можно безопасно управлять памятью без сборщика мусора, но его трудно учить, а правила мешают писать некоторые привычные структуры кода. Go, Java, C# и Python с GC проще, но медленнее и менее предсказуемы. Сетевой код до сих пор пишут вручную: два приложения просто ожидают, что договорятся между собой. Wyzer хочет взять безопасность Rust, убрать сложность и тем же правилом сделать безопасными сети.
По-настоящему нового в Wyzer мало: Perceus reference counting заимствован из Koka и Lean 4, choreographic programming — из академических исследований. Новое — применение choreography не только к сетям, но и к потокам и прерываниям. Одно и то же правило владения доказывает безопасность памяти, прерываний и сети. Дизайн языка держится на принципах: один способ писать одно и то же, без скрытой магии, компилятор делает работу там, где это не запутывает, а нерешённые проблемы честно помечаются.
Внутри Wyzer работает так: вы пишете функциональный код, который не меняет данные, а если у данных один владелец, компилятор меняет их прямо в памяти. Это даёт скорость как у C без GC и без правил времени жизни. Главное правило: раз использовал ресурс — больше не используй. Оно работает для памяти, сетевых сообщений и аппаратных прерываний. Нет async/await и скрытого контроля потока, ошибки — обычные типы.
Авторы честно отвечают на вопросы: это не «Rust с лишними шагами», у Wyzer другой механизм памяти и нет аналога сетевых возможностей в Rust. Choreographic programming математически уже решена, но в реальных языках почти не применяется. Проект пока раннее исследование, большие проблемы ещё не решены. Лифт-питч: одно правило владения для памяти, потоков и сетей; без GC, сложного borrow checker и сетевых ошибок.
В разработке использовался AI: для commit messages, исследований и дизайна логотипа. В репозитории лежит donut.wyz — знаменитый тор, переписанный на Wyzer.