Post Thumbnail

В Zig 0.16 появился std.Io - кроссплатформенный интерфейс для ввода-вывода и конкурентности, но единственная встроенная реализация std.Io.Threaded использует потоки ОС, что не масштабируется. На std.Io.Threaded 10 000 задач с sleep выполняются ~20 секунд, а 50 000 упираются в лимиты системы.

Автор показывает свою библиотеку zio, которая реализует тот же std.Io, но поверх io_uring/kqueue/IOCP со стекфулл корутинами. И тут те же 10 000 задач отрабатывают за ~10 секунд без ограничения на количество потоков. При этом код приложения почти не меняется - достаточно инициализировать zio runtime и использовать его io() вместо std.Io.Threaded.

Хорошо, что в принципе двигаются к конкурентности

Похожее

Post Thumbnail

scripty

Scripty - это минимальный язык выражений без переменных, циклов и условий. Тольк...

Post Thumbnail

Bun в бан

Автор анализирует недавний перевод Bun с Zig на Rust, выполненный с помощью Clau...

Post Thumbnail

Zig против Rust

Автор сравнивает Zig и Rust. Конечно, Zig имеет элегантные фичи: интерфейс аллок...