The Set-Up Johnny Hooker: Sometime after 2:00, a guy’s gonna call on that phone there and give you the name of a horse. Imagine yourself, perhaps a typically-well-paid, tech-savvy professional, on the job hunt. You’ve been looking for a while with no luck; the market just sucks right now. A recruiter reaches out on LinkedIn, and it seems to be a perfect opportunity, tailored exactly to your best…
This is a post I’ve been meaning to write and publish for years, and only recently got around to doing it. I’m hoping to get back into writing more! For the past few years, as a part of my work on ICU4X , I’ve been working on Diplomat , a multi-language unidirectional FFI tool for wrapping Rust libraries. I originally designed Diplomat in 2021 as a response to the question “What is the best way to…
This is part 3 of a three-part series on interesting abstractions for zero-copy deserialization I’ve been working on over the last year. This part is about eliminating the deserialization step entirely. Part 1 is about making it more pleasant to work with and can be found here ; while Part 2 is about making it work for more types and can be found here . The posts can be read in any order, though…
This is part 2 of a three-part series on interesting abstractions for zero-copy deserialization I’ve been working on over the last year. This part is about making zero-copy deserialization work for more types. Part 1 is about making it more pleasant to work with and can be found here ; while Part 3 is about eliminating the deserialization step entirely and can be found here . The posts can be read…
This is part 1 of a three-part series on interesting abstractions for zero-copy deserialization I’ve been working on over the last year. This part is about making zero-copy deserialization more pleasant to work with. Part 2 is about making it work for more types and can be found here ; while Part 3 is about eliminating the deserialization step entirely and can be found here . The posts can be read…
I’ve added a couple new styling elements to my blog and I make use of them extensively in upcoming posts, I thought I’d talk a bit about them because I expect people will have questions. The main thing is that I have nice aside styling. Asides are things that look like this . The actual color scheme comes from the asides used in bikeshed , the tool used to generate Web specifications and C++ spec…
I’ve been thinking about garbage collection in Rust for a long time, ever since I started working on Servo ’s JS layer. I’ve designed a GC library , worked on GC integration ideas for Rust itself , worked on Servo’s JS GC integration, and helped out with a couple other GC projects in Rust. As a result, I tend to get pulled into GC discussions fairly often. I enjoy talking about GCs – don’t get me…
There’s been some discussion about arenas in Rust recently, and I thought I’d write about them. Arenas aren’t something you would typically reach for in Rust so fewer people know about them; you only really see them in applications for various niche use cases. Usually you can use an arena by pulling in a crate and not using additional unsafe , so there’s no need to be particularly skittish around…
This post was originally drafted in August 2018, but I never got around to finishing it. As such, parts of its framing (e.g. the focus on bindgen) are outdated, given the relative infancy of the interop space at the time. I was recently told that the post is still useful in this form so I decided to finish and publish it anyway, while attempting to mark outdated things as such when I notice them.…
Election season is starting up again, and as with many other topics I’m seeing a lot of overconfident takes from people in tech wanting to “solve” how voting works with naïve techy solutions. Hell, even a presidential candidate seems to have proposed an extremely uninformed plan for “fixing” voting using blockchain technology . Last year I wrote a thread on Twitter covering some of the essential…
There’s been a lot of talk about improving Rust’s governance model lately. As we decompress from last year’s hectic edition work, we’re slowly starting to look at all the bits of debt we accumulated, and organizational debt is high on that list. I’ve been talking in private with people about a bunch of these things for quite a while now, and I felt it worthwhile to write down as much of my…
See also: Alex’s version of this blog post I started this blog three years ago, moving from my older blog , hoping to written about programming, math, physics, books, and miscellenia. I’ve not quite written about everything I wanted to, but I’ve been very very happy with the experience of blogging. wc says I’ve written almost 75k words, which is mind-boggling to me! I often get asked by others —…
We’ve recently been making lots of progress on future plans for clippy and I thought I’d post an update. For some background, Clippy is the linter for Rust. We have more than 250 lints, and are steadily growing. Clippy and Nightly Sadly, Clippy has been nightly-only for a very long time. The reason behind this is that to perform its analyses it hooks into the compiler so that it doesn’t have to…
Last week I fell down a rather interesting rabbit hole in Rust, which was basically me discovering a series of quirks of the Rust compiler/language, each one leading to the next when I asked “why?”. It started when someone asked why autogenerated Debug impls use argument names like __arg_0 which start with a double underscore. This happened to be my fault . The reason we used a double underscore…
So there’s yet another iOS text crash , where just looking at a particular string crashes iOS. Basically, if you put this string in any system text box (and other places), it crashes that process. I’ve been testing it by copy-pasting characters into Spotlight so I don’t end up crashing my browser. The original sequence is U+0C1C U+0C4D U+0C1E U+200C U+0C3E, which is a sequence of Telugu…
Sum types are pretty cool. Just like how a struct is basically “This contains one of these and one of these”, a sum type is “This contains one of these or one of these”. So for example, the following sum type in Rust: enum Foo { Stringy ( String ), Numerical ( u32 ) } or Swift: enum Foo { case stringy ( String ), case numerical ( Int ) } would be one where it’s either Foo::Stringy ( Foo::stringy…
The Rust community lately has been focusing a lot on “async I/O” through the tokio project. This is pretty great! But for many in the community who haven’t worked with web servers and related things it’s pretty confusing as to what we’re trying to achieve there. When this stuff was being discussed around 1.0, I was pretty lost as well, having never worked with this stuff before. What’s all this…
A week ago we put out a call for blog posts for what folks think Rust should do in 2018 . This is mine. Overall focus I think 2017 was a great year for Rust. Near the beginning of the year, after custom derive and a bunch of things stabilized, I had a strong feeling that Rust was “complete”. Not really “finished”, there’s still tons of stuff to improve, but this was the first time stable Rust was…
Recently Julia Evans wrote an excellent post about debugging a segfault in Rust. (Go read it, it’s good) One thing it mentioned was I think “undefined” and “unsafe” are considered to be synonyms. This is … incorrect. However, we in the Rust community have never really explicitly outlined the distinction, so that confusion is on us! This blog post is an attempt to clarify the difference of…