🔥

Тред (Дмитрий Свиридкин)


Сегодня про 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…