Where’s rust?
Compilation: top row, runtime: button row.
Rust required you to fix all the errors before running the code.
Runtime errors are still a thing.
Compared to that trio, they are a rarity that make people excited just to spot one.
Runtime errors are rare? Interesting. I guess it depends on how much error handling the dev additionally wants to do.
I have a graphical application that crashes regularly when I switch between displays with Ctrl+alt+number. Something in the winit stack does not like it.
Rust: this garbage code is beneath me, come back when you have your shit together.
https://www.youtube.com/@TsodingDaily
If you’re a programmer, or think you might want to be one, I highly recommend this channel. He’s a savant at all sorts of low level things, quite funny and entertaining, and does a fantastic job of explaining what’s going on.
tsoding’s channel is one I look forward to watching every single day, never a dull moment in his streams/videos.
If you’re someone who likes to watch things live, his Twitch channel is available here.
Good gods, a long-form content creator! Will be checking this out later
he’s russian tho
The guy is testing the result of malloc and you are complaining about how?
Rust developer: I’d like to compile some code
Rust compiler: the fuck you are
The rust compiler holds your hand, wraps you in blankets, makes you hot chocolate, kisses you on the forehead before it gently and politely points out what you did wrong and how you can solve it step-by-step. It would never think of something as heinous as swearing at you, shame on you for insulting my wife’s honour like this.
Damn right. And once it compiles… it works.
Meet my friend: .unwrap()
Fair.
I need a rust compiler in my life 😍
I don’t know from where this legend comes from but lifetimes/concurrency/macros errors are brain-hurting.
Most of the time I find myself dropping project because I wrote my program in a correct way but Rust just does not like how it is designed lol. I can’t get shit done with this language
Rust compiler is passive agressive, like:
“There’s an error at line 286 because you still don’t know how to use the borrow checker after all this time ♥️”
its a compiler. That is at best projection, especially considering how the compiler’s error feedback is designed to be firm yet gentle.
except when it gives errors about lifetimes of some object.
boy, that makes my brain hurt
The rust compiler produces a flawless understanding of your code, and then quits out because understanding that code is a Nightly-only feature and you’re using the stable build.
My favorite compile error happened while I was taking a Haskell class.
ghc: panic! (the ‘impossible’ happened)
The issue is plainly stated, and it provides clear next steps to the developer.
I had a similar error, though not from the compiler
Error message just readthis should never happen
Ah, good old PlarformIO
Joke on you until the python program segfaults
If it does it’s because of C/C++ code
puts me in mind of the old guru meditation error messages that popped up in the stone knives and bearskins era of computing.
Nevermind that the C++ program is two orders of magnitude faster when completed.
I would love to learn and use Rust but I’m a embedded systems guy. Everything of consequence is C and C++.
If the embedded system is old or poorly-maintained enough, there might be more Rust than you’d think.
Rust seems pretty performant
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust-gpp.html
I meant faster than Python, not faster than Rust. Rust is fast.
Ah. OK. Makes more sense.
There’s embedded rust for a few platforms. Using it on ESPs is fun
No bounds checking, only fast.
There is bounds checking, but it’s opt-in. I often enable it on debug builds.
This right here - C++ iirc is used mostly for microprocessor code in an industry setting, where EXTENSIVE testing is done so that bloated code doesn’t need to constantly check for programmer errors every single time, i.e. where execution speed is prioritized over programmer development time. And whenever that is not the case, well, as OP pointed out, other higher-level languages also exist (implication: to choose from).
deleted by creator
Lots of those in C# now, especially with Unity coming along like it did.
I also currently use it for a new project since all needed 3rd party libraries are from a very specific domain and the project has a deadline, so writing and testing wrappers for Rust that would provide me with any meaningful advantages down the road are too costly to budget for before the deadline.
That could become part of a future refactoring, though.
C++ iirc is used mostly for microprocessor code
lol no, it’s used almost everywhere where performance is important and people want(ed) OOP, from tiny projects to web browsers (Chrome, Firefox) to game engines (Unreal, CryEngine). Many of these are hugely complex and do encounter segfaults on a somewhat frequent basis.
Saying C++ is mostly used for embedded applications is like saying C# is mostly used for scripting games, i.e. it doesn’t nearly cover all the use cases.
higher-level languages also exist
This depends on your definition of “higher-level”, but many people would argue that C++ is on a similar level to Java or C# in terms of abstraction. The latter two do, however, have a garbage collector, which vastly simplifies memory management for the programmer(generally anyway).
This C++ message has an urgency vibes to it:
“Segmentation fault!! Drop the Nuclear Reactor quick!!”
Average C++ error
I know this is supposed to be humorous, but there’s a reason why these languages can, and are doing what they’re doing.
Core dumps are also worth learning about, they’re really helpful if you understand them.
gdb: Am I a joke to you?
Yes. It’s a surprisingly bad debugger the more you think about it. I use it largely in assembly and it loves to spit out random errors about memory it tried to access based on the current register state. The shortcuts are kind of dumb.
It certainly works but I wouldn’t call it a pleasure to use.
Ex: try
disp x/1i $eip
often just doesn’t work.I use gdb with great success for x64, rv64, and c:
info registers rip
or just setup tui:# ~/.config/gdb/gdbinit: tui new-layout default regs 1 {-horizontal src 1 asm 1} 2 status 0 cmd 1 tui layout default tui enable
I honestly vastly prefer using IDA and Windows specific tools (x64dbg) over gdb. IDA can interface with gdb so it can act as a frontend which can be handy for visualization.
Embedded C entered the chat
// I am responsible for every byte of this code and still don't know why this line breaks everything.
Your loop had a race condition, so we let the smoke out for you.
Can’t believe that my code is racist smh
Ho hoo, that isn’t smoke, it’s steam, from the steamed rams we’re having! Mmm, steamed rams.
C#: Time for a treasure hunt! Find the Null Reference Exception. Here’s a map. X marks the spot.
C# tells you the call site/method name and line number right at the top. It’s only really annoying when you have aggregate exceptions, which sometimes occur because someone async’d wrong
Actually getting there is the other part. It’s not like java where you can go down the chain if the problem isn’t where it says it is.
At least you are getting a dump, count your blessings. Could be worse!
Just hook your app to a debugger and load the dump.