Comments 20
Пользовался всеми тремя за последнее время, а ещё немного потыкался в odin, v и nim. Zig может быть очень хорош, но его главная проблема - это его команда разработчиков и их фанатичное упрямство в некоторых вопросах.
Собственно такая же проблема как и у go где нам не могут сделать try или ? и кучу других нужных вещей и у раста где нам не могут сделать явное управление памятью и кучу других нужных вещей.
Учитывая существование bun и tigerbeetle думаю что будущее у языка точно есть, но иногда будет сложно и я не уверен что язык сможет как-то освоится в корп. среде.
у раста где нам не могут сделать явное управление памятью и кучу других нужных вещей
Делают же. Всякие try_reserve есть уже давно, а в nightly есть аллокаторы и они уже довольно стабильны.
Ну это очень мало соответствует "явному управлению памятью". Явное это malloc, free там. И происходящее там где нужно мне а не там где язык решил вызвать деструктор потому что ему показалось так правильно
Так это же сломает фишку языка нет?
Да и всегда есть dlang
Так никто же не говорит делать так по умолчанию. Я имею в виду именно возможность такую для узких кейсов.
Вон тут в соседней статье человек придумал ECS на секторах, говорит так быстрее. А пойди сделай на расте такой ECS.
Так указатели никто не отбирал. `let ptr = unsafe { libc::malloc(100500) };`
Явное это malloc, free там.
А чем std::alloc не годится? Как-то же стандартный вектор всё-таки должен же быть реализован.
На расте Пин вам вряд ли понадобиться если а) вы не пишете асинхронщину б) не пишете самореференсные вещи в) вы не смешарик.
К сожалению, Zig не сможет никого освободить. Он получился слишком многословным.
Да и других проблем хватает.
Собирал на днях на зиге утилиту для удобной и универсальной конвертации путей файлов. Давно не видел конечных бирарников с минимальными системными зависимостями в 20кб.
Есть пример кода когда го гарантировано положит массив слайса в стек, а не в кучу?
https://www.youtube.com/watch?v=7ij3u-0YsJI
Секреты внутреннего устройства аллокатора Go
У него на канале найдете много всего интересного
Да
Почему про Vlang не упоминают до сих пор?
В Go и Rust выделить объект в куче проще простого: достаточно вернуть из функции указатель на структуру.
Зачем врать? Чтобы в расте выделить объект в куче надо ЯВНО выделить объект на КУЧЕ. РАСТ не делает ничего сам. Все решает программист
Идея, кажется, в том, что вы можете достаточно хорошо прогнать свою программу в режимах с проверками, чтобы убедиться, что в сборке без проверок недопустимого поведения не будет.
а потом у cloudfare база данные начинает возвращать 2 значения по ключу по запросу по id. и пока раст лежит зиг с отключенными проверками становиться не лучше С или С++
Почему Go, Rust и Zig такие разные: ценности, компромиссы и назначение языков