> Но Zig это же делает лучше C.Нельзя ли примеры с конкретными асмовыми листингами?
> Все просто поверили в мантру чёрного ящика "оптимизирующего компилятора". Однако современные
> компиляторы достаточно слабы.
Вообще-то с LTO он довольно крут. Иногда например умудряется выпилить довольно навернутое вычисление и проверки, заменив солидный кусок парой регистровых операций.
> Ну умеют даже SIMD использовать, нужно ручками.
А он не у всех таргетов есть, увеличивает в разы контекст, использование стэка и времена переключений, так что в системном программировании, где зачастую надо работать с минимальными допущениями это скорее дурной тон. Или premature optimization, который root of all evil. К тому же там все не так просто и у simd обычно есть специфичные требования (например выравнивание). Их выполнения и подготовка окружения к соответствю им не бесплатны: больше RAM жрется и если то что есть сразу в требования не лезло надо дополнительный код, жирнее и медленнее оригинала. Сетап этого может иногда отыграть взад. А настоящие гуру - те кто без всякого SIMD может в скорость железа упереться, как LZ4 например.
Есть вещи на которые это не распостраняется. Но их немного. Типа memcpy в стандартной либе. Но даже там переросточный glibc в сях например - да, быстрый, но если размер кода интересовал, эта быстрота дорого обходится: большая платформозависимая функция. Много кода разом. А если было много мелких операций оно еще и проиграть более простым может.
> Обещали "Rust быстрее С", но не случилось.
В идеале си может код который даже на голом асме не обставишь из-за глобальных оптимизаций. Реально компилятор иногда глупит, очевидно имея свои взгляды на косты операций. Поэтому вот тут мы вам критичный кусок испортим в разы, зато вон там (куда менее критичный) код гораздо лучше из-за этого. В этом случае если это было важно кодер может выругаться и написать кусок на асме. Втопив в разы.
> Это факт, который глупо отрицать.
А они что, волшебники?
> Насчёт проверок - я хочу сказать что система типов очень ограниченна.
> Это круто, это лучше чем ничего, это значительно лучше чем было "до".
Тут можно поспорить. Хруст пытается рыбку съесть и на ... сесть ценой заставления кодера все нудно аннотировать. Это не имеет костов в ран тайм но не дает кодеру забить на явный баг.
> Zig пошёл другим путём - он делает максимальное количество проверок в runtime.
К сожалению в отличие от того что делает Rust это отливается в более жирный и медленный код. А без этого - отпадают гарантии.
> Система типов значительно проще (но всё равно очень продвинутая по сравнению
> с С и С++). Код читать и понимать значительно легче.
> И как на системе типов Rust ты докажешь что нет утечек памяти?
> Или что вектор содержит ровно N элементов? Или ...
Они решая одни проблемы изобрели много новых. А си хорош тем что проблем относительно немного и они хорошо известны.