13. Rust на пути к стабилизации never-типа ('!')
Тип !, обозначающий никогда не возвращающие функции, долгое время был нестабильным внутри компилятора. 24 августа начался процесс стабилизации. Подробности доступны за paywall LWN.
Тип !, обозначающий никогда не возвращающие функции, долгое время был нестабильным внутри компилятора. 24 августа начался процесс стабилизации. Подробности доступны за paywall LWN.
Rust Project совместно с Rust-C++ Interop Initiative запускает ночной эксперимент по перегрузке функций для FFI. Используется атрибут #[rustc_splat], позволяющий вызывать перегруженные функции без двойных скобок. Эксперимент на стадии, когда можно пробовать, но RFC нет, и всё может быть удалено.
Modular выкатил Mojo 1.0 после первого релиза в 2023 году и обещает теперь более стабильную основу для долгих проектов. В релизе свели variables к var, объединили closures, оставили один Pointer и добавили Python-style lambda, а LSP-сервер, по словам команды, стал заметно стабильнее.
В nightly Rust появился для тестирования RFC 3323: impl_restriction ограничивает область реализации трейта (например, impl(crate)), а mut_restriction — область мутации поля (pub mut(crate)). Это более прямой вариант sealed trait и геттеров, с понятными ошибками компилятора; работает и для enum-вариантов, и для union.
В devlog за 25 июня команда Zig пишет про новые semantics для bitCast и пачку улучшений в LLVM backend. Для языка это не косметика: такие вещи обычно всплывают в местах, где компилятор раньше делал что-то слишком «магическое», а теперь пытаются сделать это менее хрупким.
В blog.racket-lang.org вышел релиз Rhombus v1.0 — языка в экосистеме Racket, который делает отдельную ставку на свой синтаксис. Тут уже не просто «еще один диалект Lisp», а попытка собрать более удобную поверхность для тех, кому в Racket хочется меньше скобок и больше структуры.
На сайте ciao-lang.org опубликован раздел про Assertions and their Use в Ciao. Это не новость уровня «все пропало», а полезная техдокументация для тех, кто копает в language tooling и хочет понять, как в Ciao устроены assertions и зачем они вообще там нужны.
Команда Racket выпустила v9.2 — без пресс-релизного пафоса, но с очередным набором изменений для самого языка и стандартной библиотеки. В таких релизах интересно не «что изменилось вообще», а какие мелкие несовместимости и улучшения теперь придётся разбирать тем, кто на Racket реально живёт.