metaclass (metaclass) wrote,
metaclass
metaclass

Rust

Кажется, сабжу до продакшена еще очень долго.
Очевидные фичи вроде "показать тип переменной в IDE" https://github.com/RustDT/RustDT/issues/45 - зарепорчены только месяц назад.
С учетом того, что там нет REPL, язык компилируемый и почти все полезные фичи реализованы в виде системы типов - анализатор времен жизни, трейты, input/output типы, мутабельность и прочее, а либы представляют собой трэш из очень генерик кода на трейтах - без типовыводилки и ссылок из IDE на документацию и исходники типов пользоваться языком достаточно сложно.

Вот, например: https://github.com/hyperium/hyper/blob/master/src/net.rs#L67
Чтобы понять, что здесь написано - надо почитать трейт Into, структуру Box, найти что такое NetworkStream (чуть выше) увидеть что он наследуется от Read + Write + Any + Send + Typeable, осилить еще и эти трейты, перечитать реализации всех трейтов дальше по коду, разобраться, какой из них из std, какой локальный и прочая, прочая и прочая.

Меня смущает вот эта "нелокальность" языков, когда для того, чтобы понять происходящее, надо идти не в базовую либу, документацию и класс-предок, а облазить пол-интернета, кэши пакетных менеджеров, исходники либ на гитхабе и половину stackoverflow и гуглогрупп разработчиков языка

Кроме того, вот в этой либе для http совершенно неработоспособен выход из программы под виндой. Если сделать серверу close - оно с равной вероятностью секунд 15 выкидывает в каждом рабочем потоке по os error (без объяснений, что за ошибка, где и зачем) либо просто молча виснет и начинает жрать все (иногда одно) ядра процессора в цикле.

И да, поддержки отладочных PDB символов пока нет, т.к. сборка делается llvm и mingw - т.е. windbg на продакшене не используешь. mingw gdb же умирает с ошибкой, если запустить под ним тестовую софтину http-сервер.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 20 comments