если собираешься писать мини игры для джемов, очевидно
Но почему джемеры предпочитают зиг расту?
- Zig выдает намного меньшие бинарники чем Rust, причем без кастомных аллокаторов вроде wee_alloc / buddy_alloc (https://github.com/aduros/wasm4/blob/main/cli/assets/templates/rust/src/alloc.rs). - C Zig как я понял намного проще прототипировать и лучше продуктивность, так как ты занимаеться исключительно творчеством а не боданием с borrow-чекеров, в время у джемеров ограничено. И как я понял много кто взял Раст в первом джеме попросту не успели закончить все вовремя. По'тому была проведена работа над ошибками и часть Rust джемеров в этот раз взяли C, AS или Zig но это лишь мое предположение на основе статистики
> - Zig выдает намного меньшие бинарники чем Rust, причем без кастомных аллокаторов Зеро кост - говорили они
Дело не в абстракциях, дело в том, что Zig очень упарывается по поводу оптимизации рантайма, собственно как и AssemblyScript. Rust же в этом плане не сильно напрягаается, взять тот же жирный jemalloc аллокатор по-умолчанию
Справедливости ради, zero cost они говорили про перформанс, а не про размер. 😊
По умолчанию уже давно системный аллокатор используется.
vector из С++
Я же сразу написал, что перформанс. 🤷♀
А, это я слепой
Потому что не компиляется по миллион часов
Ну так оно и зеро кост, прост в твой бинарь ещё чисто по фану половина стандартной либы прилинковывается чтобы стактрейс красиво писать в консоль
Зерокост это все же про абстракции над механизмами, а не столько про перфоманс. Сложно назвать какую-нибудь phantom data ускорителем /замедлителем чего-либо
Интересно, одинаковая програма на расте и на зиге сильно отличаются по размеру после strip-а
Видел такие бенчамарки свежие Zig vs Rust, детали наверное можно прочитать и посмотреть. В целом примерно на одном уровне, где-то Зиг опережает, где-то Раст. Рант-тайм поменьше у Зиг-а. https://programming-language-benchmarks.vercel.app/rust-vs-zig
Любопытно, что даже обмазанный unsafe-ом Rust все равно медленее в некоторых тестах чем Zig
Unsafe Rust против Unsafe Zig-а ?? Я не понял по исходнику, почему раст код назван как unsafe, может из-за .unwrap_or(1000); ?? явного использования unsafe не наблюдаю, может какое-то неявное есть ??
> Ну тут еще можно поспорить у кого unsafe более безопасный 😉 https://andrewkelley.me/post/unsafe-zig-safer-than-unsafe-rust.html
Обсуждают сегодня