Сегодня про C++, Rust и вообще почему я продолжаю кушать кактус Тред первый.
Тред второй.
Первый был про кресты. Теперь про ржавчину. twitter.com/itunderhood/st…
Если вы думали, что @Nekrolm шутил на счет Rust - нет, он действительно переписал (пока не всё) и сделал MR pic.twitter.com/d7h6UEctgn
Сегодня я мог бы стать настоящим Rust девелопером, но пулреквест пока еще не влили
twitter.com/0xfe0d/status/…
С ржавым плотно знаком пару лет. Слышал о нем и раньше, но относился скептически. Аля плюсовый auto_ptr безопасный положили в основу и радуются.
(auto_ptr перемещался при копировании, если что, и тем всем доставлял боли)
Сейчас отношусь к нему как нормальной такой альтернативе для C. Но не для C++. Плюсы им полностью заменить пока не получается, да и не надо.
Сношение с ручным контролем лайфтаймов заменены на сношения с компилятором (на самом деле, ничего там сложного нет). Это замечательно. Подолбавшись пару недель, стал лучше писать на плюсах — с меньшим количеством мин — рекомендую.
Такой хорошей жизни захотелось не только в стильном модном молодежном языке, но и в проклятых крестах, так что я начал исследовать возможности шаблонных безумий
gist.github.com/Nekrolm/27ef2c…
По всевозможному перекладыванию забот программиста на плечи компилятора начал упарываться в магистратуре. Глянув однажды запись лекции @_bravit про Idris
youtu.be/o-7zhrUP3ds
Да, я не знал, что так можно. Ибо ПМИ, а не ФИИТ.
После глубоких изысканий с плюсовыми шаблонами, от Rust хотелось того же. Но, увы, то const generic еще unstable, то higher kinded types еще только в планах.
А в плюсах есть первое и жалкая, но вполне достаточная имитация второго (template template)
Тем не менее, год назад я все-таки зарядил свой первый продакшон-компонент на Rust. Он совершенно дурной и простой, потому все согласились на авантюру.
Тогда же выяснил, что поднять приватное корпоративное хранилище пакетов — вообще не тривиально. Готовых решений не было. Девопсов напрягать ради непоймичего — дорого.
Сегодня решения есть. Rust усилился
jfrog.com/confluence/dis…
github.com/sonatype-nexus…
Вот интересно, умеют ли компиляторы оптимизировать вот такую фигню? struct Wrapper { float val; explicit Wrapper(float v) : val(v) {} }; struct VecWrapper { std::vector<Wrapper> vec; explicit VecWrapper(std::vector<float> v) { // transform v into vec } } ?
Я читал всякие "разгромные" разборы на тему, что rustc генерит код хуже, чем плюсовые компиляторы.
Но вот эту фичу разборщики осторожно обходят стороной
twitter.com/Nekrolm/status…