5 ms·
Learn Rust the Dangerous Way
- Rerarom 7y agoHN death grip
- brobinson 7y agoDeath Grips is Online
- pgt 7y agoWayback Machine link from 23 Dec 2019: http://web.archive.org/web/20191223074202/http://cliffle.com/p/dangerust/ http://web.archive.org/web/20191223074202/http://cliffle.com...
- adriantam 7y agoThanks. But more deep down, I wonder why and how some links nowadays will be dead on slashdot effect or not.
- iudqnolq 7y agoDoes anyone have copies of the next articles in the series? Wayback doesn't.
- masklinn 7y agoDo you mean the hypothetical part 6? It doesn't exist. Part 5 was published on December 14th but the author hasn't released anything since (I wouldn't be surprised if they were busy given it's the end-of-year).
- iudqnolq 7y agoNo, I mean parts 2-5
- masklinn 7y agoAll of them work for me right now.
- iudqnolq 7y agoOn Wayback or directly? It times out for me directly and isn't indexed by Wayback afaict
- masklinn 7y agoDirect. Tried again, works fine. It probably got a bit under the weather when it finally reached the front page, especially given it's also at the top of /r/programming right now.
- mijoharas 7y agoReally? I get a similar error for part 2, a link from the way back machine links here: http://web.archive.org/web/20191223074202/http://cliffle.com/p/dangerust/2/ http://web.archive.org/web/20191223074202/http://cliffle.com... How were you able to see it?
- deleted 7y ago[deleted]
- derefr 7y agoI’ve had an idea for a while now, of writing a tutorial that works similar to this one, but backwards. I have no time to write the tutorial, but here’s the idea: Behind the scenes, write a short C program, and compile it into LLVM IR through Clang. Present the code first as its LLVM IR representation, then work through how you’d manually decompile it back into C, hopefully giving a result that will compile back to the same LLVM IR. (You’d be teaching some of the fundamentals of compiler theory here, in “reverse order”, but IMHO that’s exactly what you need if you’re to understand where C and Rust really diverge.) Then, walk through the decompilation process again, except this time with Rust semantics, to end up with unsafe Rust that compiles to identical LLVM IR as the C code does. And then, finally, treating the unsafe Rust as the new IR, walk through how you’d decompile that unsafe Rust into safe Rust, introducing each static-analysis compiler pass that Rust does in reverse, adding one feature at a time, until the code is all safe Rust, but can be theoretically partial-compiled into the earlier unsafe-Rust code†, and from there into the same LLVM IR as the other two examples. The idea here is that this tutorial would be a way of “reading history backwards” (ala https://slatestarcodex.com/2013/04/11/read-history-of-philosophy-backwards/ https://slatestarcodex.com/2013/04/11/read-history-of-philos...). I.e., rather than coming into a world with a fully-formed Rust and a fully-formed C, you’d start with a world that only has ASM; and then introduce C into it; and then introduce Rust into it, seeing how each introduction changes what you can do. † It’d be helpful if rustc had a mode where it could emit some sort of “core Rust” IR, that was all unsafe{} and had only the barest types, in the vein of early C++ compilers that emit C, or how the Erlang compiler works. Sadly, I don’t think rustc is architected in a way that’d allow this. (Though, paging steveklabnik to correct me.)
- xtagon 7y agoLove the idea! If/when you end up writing this, I'd love to be notified (or if you have a blog I'll just subscribe now) :-)
- gdxhyrd 7y agoCompiling is a destructive process. While you can definitely learn a lot by reading IR and figuring a program out, and while it is easy to show why programming in ASM is time consuming, I don't think it makes sense to teach compiler theory and compiler passes that way. In general, moving from one language to a "higher level" or "stricter one" (such as unsafe Rust to safe Rust) requires a redesign to properly do it (if at all possible).
- whoevercares 7y agoNowadays it seems quite rare to find someone using C for low level without solid CS background. In fact I bet a good percent of CS major undergraduate or even graduate can’t write good C code.
- jeffdavis 7y agoI'm confused about how the two sentences are related. Can you elaborate?
- whoevercares 7y agoIt might make more sense during the ages when programming is still considered a speciality, then CS as a major has some virtue and it’s largely a pre-req. Of course nowadays the bar is low enough
- jswizzy 7y agoElectrical engineers write plenty of C and assembly where I work.
- atoav 7y agoMy girlfriend who doesn't really programm worked with C on a Arduino. I don't have any CS backgound at all and use it constantly on embedded systems (be it Arduino, Teensy, or some MCU).
- ArmandGrillet 7y agoThe notes of the tutorial are well included and answer all the questions I ask myself while reading, it's making the tutorial much more enjoyable than the ones I usually read. A great read if you're interested in Rust but haven't played with it yet IMO.
- sedatk 7y agoThis is probably the best Rust tutorial that I’ve ever seen. Feels curated for me.