Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

agnos.is Forums

  1. Home
  2. Programmer Humor
  3. race conditions

race conditions

Scheduled Pinned Locked Moved Programmer Humor
programmerhumor
88 Posts 54 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R [email protected]

    But how does the Rust compiler do that? What does it actually check? Could I write a compiler in C that does this check on a piece of Rust code?

    C is so simplictic, that if I can write a piece of functionality in C, I must understand its inner workings fully. Not just how to use the feature, but how the feature works under the hood.

    It is often pointless to actually implement the feature in C, since the feature already has a good implementation (see the Rust compiler for the memory safety). But understanding these features, and being able to mentally think about what it takes in C to implement them, is still helpfull for gaining an understanding of the feature.

    J This user is from outside of this forum
    J This user is from outside of this forum
    [email protected]
    wrote on last edited by
    #48

    Could I write a compiler in C that does this check on a piece of Rust code?

    Well yes, but that code has to be written in Rust. The human has to follow rules to give the compiler a chance to check things.

    C is so simplictic, that if I can write a piece of functionality in C, I must understand its inner workings fully. Not just how to use the feature, but how the feature works under the hood.

    I don't think that's particularly more true of C than Rust or even Golang. In C you are frequently making function calls anyway for the real fun stuff. If you ever compile a "simplistic" chunk of C code that you think is obvious how it would compile to assembly and you open up the assembly output, you are likely to be very surprised with what the compiler chose to do. I've seen some professional C developers that never actually had a reason to fully understand how the stack works, since C abstracts that away and the implications of the stack don't matter until you exceed some limitations.

    1 Reply Last reply
    2
    • G [email protected]

      This implies that Javascript will get moving in the correct direction once it finishes installing dependencies, but it's just going to get fucked with incorrect behavior that doesn't even have the courtesy to throw an actual error.

      J This user is from outside of this forum
      J This user is from outside of this forum
      [email protected]
      wrote on last edited by
      #49

      incorrect behavior that doesn’t even have the courtesy to throw an actual error.

      To be fair, this can be said of C. A C executable only really forces a crash out when you royally screw up beyond the bounds of your memory. Otherwise functions just return a negative value and calling code that never bothers to check just keep on going.

      Golang is similar, slightly mitigated that if you are assigning any return value from a function, you must also explicitly receive an error and you know full well that you are being lazy if you don't handle it. Well unless you use a panic/recover scheme but golang community will skewer you alive for casually suggesting that and certainly third party libraries aren't going to do it that way.

      1 Reply Last reply
      0
      • lime@feddit.nuL [email protected]

        only true if your language compiles to c. fortran peeps are safe.

        R This user is from outside of this forum
        R This user is from outside of this forum
        [email protected]
        wrote on last edited by
        #50

        I thought it compiles to LLVM intermediate representation and then to the machine code of the requested platform arch. Am I missing something?

        lime@feddit.nuL jackbydev@programming.devJ 2 Replies Last reply
        1
        • R [email protected]

          I thought it compiles to LLVM intermediate representation and then to the machine code of the requested platform arch. Am I missing something?

          lime@feddit.nuL This user is from outside of this forum
          lime@feddit.nuL This user is from outside of this forum
          [email protected]
          wrote on last edited by
          #51

          only if you design it using llvm. llvm is pretty new.

          R 1 Reply Last reply
          1
          • lime@feddit.nuL [email protected]

            only if you design it using llvm. llvm is pretty new.

            R This user is from outside of this forum
            R This user is from outside of this forum
            [email protected]
            wrote on last edited by
            #52

            Ah ok I was referring to Rust specifically. Thanks!

            lime@feddit.nuL 1 Reply Last reply
            0
            • R [email protected]

              Ah ok I was referring to Rust specifically. Thanks!

              lime@feddit.nuL This user is from outside of this forum
              lime@feddit.nuL This user is from outside of this forum
              [email protected]
              wrote on last edited by
              #53

              yeah but rednax wasn't.

              1 Reply Last reply
              0
              • J [email protected]

                Technically any language runtime can end in a segmentation fault.

                For some languages, in principle this shouldn't be possible, but the runtimes can have bugs and/or you are calling libraries that do some native code at some point.

                gagootron@feddit.orgG This user is from outside of this forum
                gagootron@feddit.orgG This user is from outside of this forum
                [email protected]
                wrote on last edited by
                #54

                Even safe rust can do it, if we allow compiler bugs

                1 Reply Last reply
                4
                • 0 [email protected]
                  This post did not contain any content.
                  J This user is from outside of this forum
                  J This user is from outside of this forum
                  [email protected]
                  wrote on last edited by
                  #55

                  Rust isn't shown because it's already completed the course

                  1 Reply Last reply
                  6
                  • jumping_redditor@sh.itjust.worksJ [email protected]

                    you can still segfault in rust iirc

                    J This user is from outside of this forum
                    J This user is from outside of this forum
                    [email protected]
                    wrote on last edited by
                    #56

                    Not in safe Rust. Only if you explicitly tell the compiler "I got this, don't worry" but then fuck up.

                    jumping_redditor@sh.itjust.worksJ 2 Replies Last reply
                    0
                    • vitabytesdev@feddit.nlV [email protected]

                      I have seen a Java program I wrote terminate with SIGSEGV. I think a library was causing it.

                      B This user is from outside of this forum
                      B This user is from outside of this forum
                      [email protected]
                      wrote on last edited by
                      #57

                      Yup, can confirm. We had a wrapper to a C++ library using JNI, so whenever this library crashed so did the entire JVM.

                      1 Reply Last reply
                      0
                      • M [email protected]

                        Apple is for ADA

                        Ball is for BASH

                        Crab is for C

                        Dog is for D

                        Elephant is for Ecsmascript

                        Fox is for F#

                        Goat is for Go

                        House is for Haskell

                        Igloo is for

                        ...okay I got stuck there.

                        L This user is from outside of this forum
                        L This user is from outside of this forum
                        [email protected]
                        wrote on last edited by
                        #58

                        Igloo is for Idris

                        M 1 Reply Last reply
                        1
                        • J [email protected]

                          Not in safe Rust. Only if you explicitly tell the compiler "I got this, don't worry" but then fuck up.

                          jumping_redditor@sh.itjust.worksJ This user is from outside of this forum
                          jumping_redditor@sh.itjust.worksJ This user is from outside of this forum
                          [email protected]
                          wrote on last edited by
                          #59

                          I guess they fixed the weirdness involving calling main later in the program

                          E 1 Reply Last reply
                          0
                          • J [email protected]

                            Not in safe Rust. Only if you explicitly tell the compiler "I got this, don't worry" but then fuck up.

                            jumping_redditor@sh.itjust.worksJ This user is from outside of this forum
                            jumping_redditor@sh.itjust.worksJ This user is from outside of this forum
                            [email protected]
                            wrote on last edited by
                            #60

                            https://github.com/Speykious/cve-rs

                            1 Reply Last reply
                            0
                            • M [email protected]

                              Apple is for ADA

                              Ball is for BASH

                              Crab is for C

                              Dog is for D

                              Elephant is for Ecsmascript

                              Fox is for F#

                              Goat is for Go

                              House is for Haskell

                              Igloo is for

                              ...okay I got stuck there.

                              jackbydev@programming.devJ This user is from outside of this forum
                              jackbydev@programming.devJ This user is from outside of this forum
                              [email protected]
                              wrote on last edited by [email protected]
                              #61

                              Java has Duke

                              Duke, Java's mascot. A triangular shaped character with a red nose.

                              Ugh, I accidentally got a fake transparent background. Oh well.

                              F 1 Reply Last reply
                              3
                              • U [email protected]

                                Or, rather, most compiled languages are just syntactic sugar on top of assembly, and that's especially true with C. (Oh, you can use curly brances and stuff for blocks? That's sure easier to read than the label mess you get with assembly.)

                                jackbydev@programming.devJ This user is from outside of this forum
                                jackbydev@programming.devJ This user is from outside of this forum
                                [email protected]
                                wrote on last edited by
                                #62

                                Assembly is a little too high level for me. I prefer to directly write machine code.

                                L 1 Reply Last reply
                                2
                                • jackbydev@programming.devJ [email protected]

                                  Java has Duke

                                  Duke, Java's mascot. A triangular shaped character with a red nose.

                                  Ugh, I accidentally got a fake transparent background. Oh well.

                                  F This user is from outside of this forum
                                  F This user is from outside of this forum
                                  [email protected]
                                  wrote on last edited by [email protected]
                                  #63

                                  Branding fail so bad that everyone forgets that Java even has a mascot.

                                  jackbydev@programming.devJ A 2 Replies Last reply
                                  4
                                  • R [email protected]

                                    I thought it compiles to LLVM intermediate representation and then to the machine code of the requested platform arch. Am I missing something?

                                    jackbydev@programming.devJ This user is from outside of this forum
                                    jackbydev@programming.devJ This user is from outside of this forum
                                    [email protected]
                                    wrote on last edited by
                                    #64

                                    Fortran is from 1957, LLVM is from 2003. It's probably like C where there is a compiler tool chain that goes through LLVM like you describe and others that go directly to executables.

                                    1 Reply Last reply
                                    0
                                    • N [email protected]

                                      It's not what you can use that language to do - all general purpose languages are Turing Complete, so what you can do with them is exactly equal. It is about what the language will do for you. Rust compiler will stop you from writing memory unsafe code, C compiler cannot do that.

                                      jackbydev@programming.devJ This user is from outside of this forum
                                      jackbydev@programming.devJ This user is from outside of this forum
                                      [email protected]
                                      wrote on last edited by
                                      #65

                                      Fun fact, some languages are not turing complete and I believe people would still consider them programming languages. They're typically targeted at making mathematical proofs.

                                      N 1 Reply Last reply
                                      0
                                      • 0 [email protected]
                                        This post did not contain any content.
                                        m33@lemmy.sdf.orgM This user is from outside of this forum
                                        m33@lemmy.sdf.orgM This user is from outside of this forum
                                        [email protected]
                                        wrote on last edited by
                                        #66

                                        The puffer fish is Bash

                                        M 1 Reply Last reply
                                        15
                                        • S [email protected]

                                          C++ is home sick, currently the doctor (compiler) is not sure whether it's got the flu or a terminal cancer.

                                          E This user is from outside of this forum
                                          E This user is from outside of this forum
                                          [email protected]
                                          wrote on last edited by
                                          #67

                                          terminal cancer

                                          "I'm sorry, you've been diagnosed with :(){:|:&};:"

                                          "You have a couple seconds to live."

                                          1 Reply Last reply
                                          12
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups