Пишешь на Zig? Отлично. Теперь перепиши всё. Async возвращается, и ему плевать на твой старый код

Reader мёртв. Writer — тоже. Что же делать теперь?


dniztj9pefccc3qbzalywfsx3j1lchmd.jpg


Язык программирования Zig переживает самую глубокую трансформацию за всё время существования. Его автор и главный разработчик, Эндрю Келли, внедрил изменения, полностью перерабатывающие ключевые компоненты стандартной библиотеки — std.io.Reader и std.io.Writer. Эти шаги прокладывают путь к возвращению в язык асинхронности — через ключевые слова async и await, которые ранее были удалены.

Новая архитектура представлена в пулл-реквесте с ироничным названием Writergate. Она делает устаревшими все текущие реализации чтения и записи и вводит новые структуры без дженериков. Reader и Writer становятся ядром свежей системы ввода-вывода: более гибкой, переиспользуемой и пригодной для масштабирования.

Келли не скрывает: изменения радикальные. Любой проект, работающий со старыми потоками I/O, нужно будет переписать. Но он подчёркивает — решение обдуманное, а направление развития продиктовано архитектурной логикой .

Несмотря на статус pre-release (последняя версия Zig — 0.14.1), язык уже применяют в продакшене. Самый заметный пример — рантайм Bun, в основе которого работает Zig. Поэтому Writergate и вызвал бурную реакцию в сообществе.

И это — только начало. Следом команда перепишет модули TLS, HTTP, JSON и библиотеки сжатия. Все они перейдут на новую модель ввода-вывода и откажутся от устаревших API. Чтобы облегчить переход, каждый этап будет оформлен отдельным пулл-реквестом.

Возврат async, await, suspend и resume стал главной целью изменений. Раньше они уже появлялись в компиляторе , но Келли решил их удалить из-за сырой реализации. Сейчас, благодаря новой I/O-архитектуре, он считает, что время вернулось.

В недавнем выступлении Келли признался: первый заход в асинхронность его не устроил. Но теперь подход изменился — интерфейсы I/O создают нужный фундамент, на котором можно строить поддержку современных сценариев.

Среди преимуществ новой системы — чёткий контроль за ресурсами, лёгкость тестирования и независимость от конкретных ОС. Разработчик сможет создавать пакеты, которые будут работать в любой среде, где реализован нужный интерфейс. Даже для самописной ОС.

Самая болезненная часть — миграция. Всё, что взаимодействует с Reader и Writer, придётся переписать вручную. Келли честно говорит: «Это тяжело. Мне жаль. Но иначе — никак».

Сообщество отреагировало по-разному. Кто-то считает, что Zig наконец получает полноценный переиспользуемый I/O-интерфейс. Другие выражают тревогу: язык уже используется в продакшене, и такие перемены бьют по стабильности. Один из комментаторов прямо спросил: «Zig будто застрял в вечной бете. Где 1.0?»

Келли в ответе на Hacker News упомянул опыт языка Hare. Особенно — инструмент hare-update, который помогает адаптировать код под несовместимые изменения. По его мнению, Zig тоже стоит пойти по этому пути.

Всё это ясно говорит: язык вступает в новую эру. Разработчики сознательно отказываются от старых компромиссов и закладывают архитектурный фундамент , способный выдерживать нагрузки будущего. Цена — полная переработка кода. Но большой босс уверен: без этого Zig не станет тем, чем должен быть. Это — часть большой задачи по обеспечению безопасности кода и качественной разработке в современном мире.