А между тем, тихо и незаметно вышла новая версия убийцы С++ от мозиллы.
Что нового:
- Реализация точного сборщика мусора.
- Причесали и стабилизировали синтаксис. В частности - для идентификаторов типов теперь обязательно использование Camel case (мой опыт показывает что такие правила в языке хороши на практике).
- Выкинули классы. Теперь вместо них структуры. Это упростило синтаксис и семантику. При этом ничего (из функциональности) не потеряли. Скажем деструкторы никуда не делись.
- Выкинули интерфейсы (interface) теперь там "характерыне черты", в общем traits там теперь. Насколько я понимаю, эта штука столь же крута (если не круче) чем интерфейсы в Go. Вот что про них пишут в Rust-доке:
they can be mixed in any order, can be declared independent from the type they affect, and are compiled independently for each type that implements them (indeed, will inline and specialize exactly as any other function will
- Поскольку изменяемость - это уязвимость, а Rust позиционируется как язык безопасный, ключевое слово mut (mutable) теперь является квалификатром типа памяти (аналог всяких там static в сях) и применяется к конкретной переменной. Например:
let mut a = 42; // это изменяемая штука
let b = 42; // а это нет, хотя тип у них один и тот же (int)
При этом этот самый mut рекурсивно распространяется на все что внутри переменной находится. Если бы 'a' была структурой, то и все её поля стали бы mut. Естественно в функцию ожидающую не mut-переменную передать таковую нельзя. - Также там расширили и углубили систему многозадачности и взаимодействие задач.
Кроме того, с февраля этого года силами Мозиллы развивается новый асинхронно-параллельний движок для браузера -
Servo который пишется, естественно, полностью на Rust'e.
Ссылки по теме: