@rustconf@jckarter "Stay curious. Openness is not about winning, it's about changing minds and allowing others to change yours. When you have a shared inspiration and move in sync, building something together becomes much easier." — @tmandry
@rustconf@jckarter@tmandry It's ability to bring together seasoned and novice system programmers, both imperative and hardcore functional programmers, and enabling them to build things with a level of safety that wasn't possible before. Inclusion lies at the heart of that.
@rustconf@mycoliza Julia Wang in the break out chat talking about trains is fascinating. Letting us know that trains are mandated to have three lights, and not two so they can be distinguished from cars from afar. So all trains have their two eyes and their third eye wide open.
@rustconf@sgrif showing off in the break out chat, letting us know that they've seen all the talks already (because that's how RustConf operates), and that Julia's closing talk is amazing. So make sure you don't miss it!
@rustconf Seriously, there are Software Engineers and Software *Engineers* 🚂
@rustconf@nick_r_cameron talking about async/await past present and future, who apparently doesn't have a single fun fact about himself, which I guess is a fun fact
@rustconf Nick, paraphrased: "to make async/await from scratch, you first must invent IntoIterator"
@rustconf "The problem with poll", and other daytime comedies, coming soon 😅
@rustconf async/await's nemesis: borrowck and lifetimes.
Dropping a Future (or worse! mem::forget) gets us in trouble.
Cancellation has to be async too. async Drop is... tricky. But even if we had it, drop isn't guaranteed to run. We can't rely on destructor for soundness.
@rustconf Now, talking about rustc bootstrapping @joshuayn514, showing how every rustc version uses nightly features from the previous rustc version, which means that to build any given version you need to build version - 1 first. Carl Sagan apple pie, yet again.
@rustconf@joshuayn514 > will panic!("{:?}", return 42); panic or return?
If a tree falls in the woods, but there's no one to hear it, does it make a noise?
@rustconf Why do we allow rustc to use nightly features? Well, we have full control of the codebase (which means we can be careful about reliance on nightly features) *and* we can dogfood them, to make them better before stabilization.
@rustconf "Compilers can be buggy"
No! That's not true! That's impossible!
@rustconf "The code compiles, but the binary does the wrong thing. That's called a miscompilation."
@rustconf@joshuayn514 wrapping up talking about his *huge* effort to excise the need for python (x[dot]py is the entry point) for building rustc
@rustconf Honestly, it's amazing how consistently *good* RustConf is. And the discord channel is always so much fun.
@rustconf@Gankra_ is directly responsible for one of std's CVE
"What if we pretended unsafe code was nice, and then it was?"
@rustconf Of course, Aria's best known of the Rustonomicon and Learning Rust with Too Many Lists, but hasn't worked on Rust for a while. But *then* got annoyed with strict provenance.
@rustconf This tree house is memory. It is (Hellraiser's) Pinhead's. This tree house is bad, but it could be worse. Oh, it is worse, it's taller so we take longer to climb it. Well, it could be worse. Oh, it's worse, it's on terrible clip art fire.
@rustconf I have *no* idea what this part of the thread looks like without context. This is wild, y'all! Analogies on analogies on analogies! Super technical concepts! Advanced knowledge on memory models! Cache locality! (Take a drink 🥂)
@rustconf >> Wait, so who is Pinhead? I've never heard of Pinhead before. Is this some media I'm not familiar with?
> hellraiser / the hellbound heart
> its an old horror movie character
> The *one true* original pointer
*me, turns to dust at hellraiser being old*
@rustconf There's Miri, which runs your program in a fully sandboxed environment and keeps track of everything, which catches incorrect memory accesses. And we have CHERI which takes this concept to the hardware.
@rustconf Philosophical issues:
- use-after-free-via-trascendence
- CHERI really cares about all the bits in the pointer, so ptr -> int -> ptr can't work
@rustconf CHERI has a solution: use an existing ptr to use its provenance for an int that you're turning into a new ptr. Pretend that we have to do this. Because it cleans up the ptr -> int -> ptr hole when tracking pointers. Everything stays the same, but now we're being clear.
@rustconf So the final result is the same, but now Miri and CHERI can make sense of things, and help you check your code.
@rustconf I'd put the whole talk here, but seriously, go watch it when available.
All these APIs are unstable in std, but they are also available from crates.io/crates/sptr which polyfills all of them (the code is a few lines, nothing more), so you can use them today.
@rustconf > are we seriously sponsored by a company named "hrt"?
> this fits our community so well
@sgrif: "when is postfix unsafe coming, haha" @josh_triplett: "We've talked a lot about postfix operators. We're seriously considering it for a lot of existing keywords, but likely not for unsafe."
@sgrif@josh_triplett@josh_triplett: "@Gankra_ has proposed postfix dereference operator, which would help a lot with pointers." @sgrif: "that was a very detailed and thoughtful answer to my joke question"
Now, @AliceICecile to convince you that your open source project needs a project manager
Get other people to do your job for you. Make yourself not the single point of failure.
I'm gonna have to stop the live tweeting sadly, due to timezones. I can't wait to see the rest.
The slides for @Gankra_'s talk are available at gankra.github.io/talks/strict-p…
I hope this was useful/enjoyable to you all!
🚍
BTW, shout out to goose.rs for knowing it's audience
So after I went to bed, I got pinged on discord because I got quoted by @_lrlna 😅
I have to say, I love the aesthetic of the slides. If the stream still exists tomorrow I'll watch it delayed, otherwise I'll be eagerly waiting to the uploads.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
A licensed roadway engineer stated the following in response to the recent shocking crash in La Brea. I fundamentally disagree. usa.streetsblog.org/2018/12/13/why…
The entire thread is incredibly pro-stroad, which is incredibly depressing from someone who is responsible of shaping our built environment. strongtowns.org/journal/2018/3…
"You can't prevent vehicles from speeding through design" is such a lack of imagination or even *experience*.
If you can race on a street, the street is bad!
Narrow the damn roads! You know what happens? People slow down regardless of the number on a sign. strongtowns.org/journal/2022/7…
If you write unsafe const functions in Rust, be aware that the stability guarantees for them are... less flexible than what you might expect given experience with writing regular unsafe functions.
Regular unsafe functions might contain latent UB, but as long as LLVM doesn't exploit it, you might be fine for now, so crate authors operate under a "my code might have UB, but it might be fine for a while as long as I test it" attitude.
unsafe const functions have to go through MIRI, and that tool improves over time, which means that new rustc releases will detect UB that it used not to, as the interpreter improves. This means that we might break backwards compat for unsafe const functinos with UB.
The ideal language gets out of the way and lets you quickly prototype while letting you turn your pile o'hacks into production quality code. The language needs to scale up and down.
The disagreement between specific languages is where to start: dynamic languages and Go start on the quickly prototype things, Rust starts on the "let's make this as rock solid as possible" end. Langs like Scala and Kotlin kind of start in the middle.
Personally I am of the opinion that even though starting on the "cater to prod services" end puts a limit on how "easy to prototype" the language can be, it is easier to move in that direction than starting in "easy to prototype" and move towards "make it easy to be rock solid".