1. Куча / Говнокод #26810

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    // Это означает что, например, поведение следующего кода не определено:
    
    fn cast(x: f32) -> u8 {
        x as u8
    }
    
    fn main() {
        let f = 300.0;
    
        let x = cast(f);
    
        println!("x: {}", x);
    }

    https://habr.com/ru/post/511546/
    > Это мы называем ошибкой «корректности» (ведь unsafe кода тут нет) — то есть ошибка, когда компилятор делает неправильные вещи. Мы отмечаем их в нашем трекере как I-unsound, и относимся к ним очень серьёзно.

    Запостил: gost, 18 Июля 2020

    Комментарии (10) RSS

    • Так, падажжите, но ведь пuтухи в каждом углу кuкарекают, что у них ма-те-ма-ти-чес-ки доказанная корректность языка! Что это, получается, пuтухи пuздят?
      Ответить
      • Возможно, они имеют в виду говяжий язык.
        Ответить
      • > ма-те-ма-ти-чес-ки доказанная корректность языка!

        Пусть хотя бы математически докажут корректность центрального процессора, а то постоянно какие-то очередные мелтдауны и спектры всплывают.
        Ответить
    • Эм, прям не определено?
      Ответить
      • Главные пuтухи пишут, что да: https://blog.rust-lang.org/2020/07/16/Rust-1.45.0.html
        >>> On Rust 1.44.0, this happens to print "x: 0" on my machine. But it could print anything, or do anything: this is undefined behavior.

        Какой багор )))
        Ответить
        • >this is undefined behavior

          >Изначально Issue 10184 была открыта в октябре 2013 года, за полтора года до выпуска Rust 1.0. Так как rustc использует LLVM в качестве backend-компилятора

          То есть анскильная растомразь своровала чужое, обосралась ещё до релиза, но с неё так никто за это и не спросил.
          Ответить
    • Азаза. Пuтушатня опять обосралась.

      Ну а чего они хотели построить на ворованной инфраструктуре.
      Ответить
    • Это именно то, о чём твердил лалкам Царь

      https://tsar1997.blogspot.com/2019/11/blog-post_16.html?showComment=1574636735401#c 5507874678266117068

      Нет, ты обделался. Я уже объяснял вам, клоунам, про то - что такое первично. C++ относительно llvm первичен. Т.е. ллвм ДОЛЖЕН обеспечивать семантику С++ и С++ диктует семантику ллвм.
      
      Что такое недоязычок типа говнораста? Это просто обёртка над llvm-ir. Она вторична - она просто ворует всю семантику из llvm. Это говно ничего не может создать само. И по причине, что авторы этому мусора - биомусор. И по причине того, что оно находится у параши по праву рождения.
      
      Поэтому так и происходит. Есть в С++ корутины/исключения/конкретная модель памяти/базовые механизмы обеспечивающие много другой семантики. Те же сишные стуктуры, нейминг и прочее. Всё это было создано С++ и создано для С++.
      
      А потом прибегают ублюдки, берут ir и прикручивают поверх него примитивный транслятор. Берут крестовый нейминг и перегрузку - пытаются сваять на её базе говнотрейты. Всё это работает через жопу.
      
      Берут ворованные исключения и всю ту семантику крестовую, что генерирует llvm и называют это паниками. Очевидно, что всё это работает через жопу и при вылете исключения можно только упасть. Ну или попытаться её память, что, опять же, llvm позволяет делать. Но всё в говне. Берут аллоку и используют её как гц.
      
      [...]
      Особенно меня веселит то, как обезьяны кукарекают "вот запилим свой ллвм и уйдём". Клоун - ты сможешь этого сделать. Ты вторичен по отношению к ллвм. Это проблема всех идиотов. Это как С++ возьмёт и скажет "я уйду от си", хотя С++ в контексте именно своей семантики первичен.
      
      По-сути твой недоязычок находится в стадии си с классами. Есть llvm-ir поверх этого натянут сахар, которым и является твой недоязычок. именно llvm-ir и является языком. Ты не можешь от него уйти. Тебе придётся полностью реимплементировать llvm.
      Ответить
      • А мы недавно смеялись над компилятором языка «Zephir», который тупо всё переводит в сишку, не проверяя границы диапазонов, из-за чего наследует все UB сишки.

        Ладно, «Zephir» — узкоспециализированный ЯП, который придумали, чтобы быстро разрабатывать нативные расширения для «PHP». Но «Rust» вроде позиционировали как серьёзный ЯП. На него даже «Фуррифокс» попытались перевести.
        Ответить
    • Пошёл в статью про «Julia». И сразу Ctrl+F «LLVM»

      Извольте.
      Julia's core is implemented in Julia and C, together with C++ for the LLVM dependency. 
      
      The parsing and code-lowering are implemented in FemtoLisp, a Scheme dialect.
      
      The LLVM compiler infrastructure project is used as the back end for generation of 64-bit or 32-bit optimized machine code depending on the platform Julia runs on.
      Скоро в «Julia» UB найдут?
      Ответить

    Добавить комментарий