Laurence Tratt
@ltratt.bsky.social
1.5K followers 84 following 360 posts
Shopify / Royal Academy of Engineering Research Chair in Language Engineering. https://tratt.net/laurie/
Posts Media Videos Starter Packs
ltratt.bsky.social
Here's a visualisation of the evolution of our "Garbage Collection for Rust: The Finalizer Frontier" paper. The animation renders each git commit in the paper's history as a frame, with the time of the commit shown in the bottom right. The full hi-res version can be found at youtu.be/zC866HybCp8
ltratt.bsky.social
For those of you in Singapore, Jake is at SPLASH and presenting the paper on Saturday. He's friendly, and on the job market -- please find him and say hello!
ltratt.bsky.social
Good news -- not only can a nice design be found, but some of Rust's properties mean we can solve classical GC finalization problems! soft-dev.org/pubs/html/hu...
ltratt.bsky.social
New paper with @jakehughes.uk : Garbage Collection for Rust: The Finalizer Frontier. There are lots of GCs for Rust: we tried pushing as far as we could in a new direction, particularly looking at what can be done about the headache that is finalizers.
ltratt.bsky.social
Stourhead's Pantheon looked rather fine yesterday.
ltratt.bsky.social
One surprising thing about writing a compiler is the variance in day-to-day productivity. Some days I write fewer than 10LoC. Some days, like today, 1500LoC is possible. Even more surprisingly, the former days are much more taxing than the latter!
ltratt.bsky.social
Train announcements continue to surprise: "we're running late because a train ahead hit a swan".
ltratt.bsky.social
Indeed, that's probably even more common in web/email than `null`, at least in my experience!
ltratt.bsky.social
I sometimes wonder to myself: what do normal folk think when they see the result of a (classic) software bug like the below?
ltratt.bsky.social
There was a referendum on changing the voting system in 2011, so the precedent has been established that any similar change will need to take the same route. That changes the calculus somewhat.
ltratt.bsky.social
Another person has left a negative review for our local graveyard.
ltratt.bsky.social
That book is partly what made me think this way! I knew the high-level story, or thought I did, but I came to understand I only knew part of the story. Alas I can't remember who/where I saw it recommended to thank them!
ltratt.bsky.social
The idea that static types mean you don't need tests has done our field a great disservice IMHO. I test the life out of systems I write that use all sorts of type system features to make it hard/impossible to represent many unwanted states, because so many unwanted states are still possible.
ltratt.bsky.social
There's a reason I only partly agree with the article! But that doesn't mean it's not useful for making me wonder if we've over-emphasised one solution to the problem (in the same way that the article might over-emphasise another solution). [As often in life, I suspect the middle is nearer optimal.]
ltratt.bsky.social
I tried studying that book intensely early in my career, and I learnt a lot from it, thought not always in the ways I expected. Looking back, maybe the first 40% or so is quite profound and changed how I think about OO; the remainder was so far over my head that I could not form a judgment on it!
ltratt.bsky.social
Personally, for expert programmers, I would like access to rigorous type systems *and* different architectures of software systems. There are some obvious contenders, but they've rarely been tried at scale IMHO.
ltratt.bsky.social
I like articles which challenge our assumptions, even when I only partly agree with them. This article posits that type systems in programming languages are a poor substitute for different architectures of software systems. programmingsimplicity.substack.com/p/type-check...
ltratt.bsky.social
It's muddy as there are many `vi`s (or, at least, many forks). On OpenBSD the base `vi` is basic and not extendable. OK for quickly editing a config file, but not much else IMHO. `vim` (or `neovim` as I now use) is a huge, customisable beast in comparison, that can be turned into an IDE if you wish.
ltratt.bsky.social
Related to that is the challenge of scale: some language features only turn out to be a good or bad idea when you try them on big (big!) problems. And then we're in a combination of chicken-and-egg-land and lotteries whilst we wait for people brave enough to take the risk and report back.
ltratt.bsky.social
When I upgraded my OpenSSH a couple of weeks back, I started getting some surprising (to me) warnings when using GitHub. I'm not sure I'd enjoy being the person who has to upgrade the fleet of servers that are now being fingered as culprits!
ltratt.bsky.social
Perhaps due to narrowness of thinking on my part I think any plausible CPU will have to have a fixed, and fairly small, amount of "quick access slots" whether those are registers, a stack, or something else (e.g. the Mill's belt).
ltratt.bsky.social
Register allocation is one of those things that seems like it should take 2 days to implement. Everyone I've ever spoken to about it has found all sorts of surprises that cause those 2 days to balloon. This great post will save future folk much time! bernsteinbear.com/blog/linear-...
ltratt.bsky.social
Not quite: it's `void` in disguise as it consumes arbitrary number of arguments and doesn't return them!
ltratt.bsky.social
I have been a Unix user for a... long time... yet only today did I accidentally discover that `:` is a built-in shell no-opt.