By its very nature, this forum's discussion tends to be focused on people having problems, asking questions, or wanting to advertise some ongoing work. I thought it would be nice to also have a thread for sharing random bursts of gratitude for a change.
To get it started, two recent examples for me would be...
- The new search in the std docs. It looks better, it finds more methods (at the price of some false-positives), and it can search by method input and output. I love it.
- Rust 1.24. This was one helluva release. The parallel and incremental compilation optimizations alone make my daily development iterations much more pleasant, and it has tons of good "smaller" improvements (catching panics at FFI boundaries, faster string searches, atomic::spin_loop_hint, new const fns...).
Brilliant Thread Hadrien
The Domain Working Groups is a great initiative
Ive been actively learning Rust on a daily basis by reading my book and writing small examples. I've found the search tool in the std docs very helpful in getting the big picture of how everything is organized as well as answering my own questions. Its still hard for me to look at an implementation of some method and apply it but I'm sure as time goes on I'll become more accustomed to the semantics.
I wanna say thanks to @eholk for the cool investigative work and for writing the tutorial on UEFI apps in Rust. It has helped me greatly in my current work (I'd have had to use C otherwise *shudder*)
You may want to check out @gabrielm's uefi-rs repo. I found it to be the best documented, most up to date and easiest to use Rust UEFI example on GitHub when I looked that topic up some weeks ago (and am considering contributing to it later if I find some time to allocate to that).
Thanks @HadrienG. That repo looks really useful.
Macros are awesome!!
Once you learn how to best use it, Rust's macro system is probably one of its strongest features for factoring out the writing of boilerplate code. For example, I'm trying to interface with a C library where you can get/set various properties on an object. They've written a massive enum which has a key for each property, then functions like
PropGetBool(HANDLE obj, int property) and
PropPutStr(HANDLE obj, int property, char* value).
Using macros I "wrote" about 34 getters and 33 setters, complete with some minimal docs explaining what they do, and it all still fits within a single screen (~35 lines)... This would be literally thousands of lines if written manually.
(macro invocation/rendered docs)
I recently picked up rust on embedded devices after not having worked with that for half a year or so. It's amazing how much the ecosystem around that has improved lately and a lot of the work seems to have been done by @japaric. Thanks!
There is a domain working group for embedded devices and @japaric is heading it. So you can expect it to pick up even more.
Today, I spent 2 hours debugging a Linux-specific heap thrash, caused by an uninitalized memory read & write, arising from a race condition in a pool of threads, managed by a static singleton.
I'd like to thank the people working to make that situation obsolete.
Just finished Blandy & Orendorff's Programming Rust. That was a great read, would strongly recommend it as an in-depth Rust course for experienced programmers!
Going through "Programming Rust" myself! Loving it so far. No offence to "The Book", but I find "Programming Rust"'s chapters on ownership and references a lot more thorough
I will probably be the only one understanding this reference, but I found the difference between TRPLv1 (I have yet to seriously read the v2) and Programming Rust to be similar to that between Ben Ari's "Ada for Software Engineers" and Barnes' Ada 2005/2012 books. The former has a more practical "getting familiar with the language quickly" focus, while the latter goes deeper into theoretical concepts and explores each language feature in depth. It will teach you more slowly, but when you get there, you will have a firmer understanding of what you are dealing with.
As with Ben Ari and Barnes, I'm glad I read the two books in that order Books with an exhaustive style can be overwhelming as a beginner, and are most useful after one has already gotten some experience with the language.
I'd like to thank @onur for creating and maintaining doc.rs! Today, it's a part of the out-of-the box experience for Rust, and you rarely consciously notice it, except when you need docs for stdlib, and realize "oh, std is on that other site".
However, there were times when everyone hosted (or not hosted) their own version of docs for their crates... What a horrible dark age that was!
Thanks @onur for bringing us the light
Philipp Oppermann is being awesome again by taking his OSdeving tutorial to the next level
Looks like Rust 1.26 is on its way to joining 1.24 in my personal release hall of fame.
As someone who's new to Rust I've been very impressed by the standard of discourse on the forums and GitHub. I definitely don't understand a lot of what's being talked about yet but it's great to see the discussions being constructive and not degenerating into flame wars.
To add a corollary to this: I love that people can meaningfully contribute to a discussion about deep, important, hard-to-understand issues, even if they only started learning about those issues very recently. I don't think I would've ever dared write a post like Start of an effects system RFC (for async etc) - is there any interest in this? - #8 by Ixrec - Rust Internals in any other language community.