the smorgasbord

Archive

Swanson: Branches in linear continuations

I’m going to follow the lead of several other folks I follow, and use this newsletter for rougher drafts of posts that will eventually end up on my Web and Gemini sites.

One of the defining features of , my programming language framework, is that it uses for control flow.

#5
March 9, 2021
Read more

Gemini

#4
December 29, 2020
Read more

Swanson programming language framework

Hello friends!

There are a couple of new posts on my blog about , a programming language framework I've been noodling around on for a number of years. Over time I've become enamored with a couple of ideas in particular — and — that I think can form the simple basis for a large number of "real" PL features. Compile-time execution is something that , and there's an interesting claim / hypothesis that you can — including, among others, type-parameterized generics and conditional compilation. While others are looking at compile-time execution, I haven't seen much attention given to linear continuations. This would combine linear typing with a continuating-passing style intermediate language. We already know that linear types give you a nice way of modeling resource management — for instance, a memory allocation function might return the new memory region as well as a deallocation callback. If the type of the deallocation callback is linear, you are obligated to call it , ensuring both that the memory is eventually freed, and that it can't be double-freed. By extending that linearity to the continuations themselves, we get similar guarantees about particular regions of code being executed exactly once, while still giving the programming control over they're executed. Together, I think these two building blocks can bring us to a world where our compilers aren't wizards performing magic on our behalf, but instead clerks who keep track of the books and otherwise get out of our way — while still having the same kinds of safety guarantees and language ergonomics that a good compiler gives you. Anyway, who knows if this approach, or language, will ever take off. Even if it doesn't, I've had fun playing around with it, and thought it would be fun to share the ideas with others! Take a look at the first few posts and let me know what you think.
cheers –doug
#3
December 11, 2020
Read more

Recent talks and papers: FOSDEM and NSDI

Hello everyone!  Just a quick update on some recent presentations about work that I'm involved with.

On the program analysis front, my team at GitHub launched Code Navigation back in November, providing and for all public and private Python, Go, and Ruby repositories.  I was invited to speak about our Code Navigation implementation at the at this year.  The video has been posted, so if you're interested, check out the for details!  (And click through to my if you want to see other talks I've given!) On the network performance front, I co-authored a about Network Error Logging that will be in a couple of weeks at .  The paper goes into a good bit of detail about why the protocol is the way that it is — for instance, the privacy and security concerns that we had to take into account, and how those affected the design.  It also mentions a couple of interesting outages that we were able to detect while developing the protocol at Google. Hope you enjoy, and thanks for subscribing!
#2
February 8, 2020
Read more

Welcome to the smorgasbord!

Hello everyone!

It's been basically a year since I last posted to my blog, and for the...fourth?...time I've decided to try to ramp it back up.  A New Year's resolution four months into the year. As part of that, I'm also starting this newsletter!  It won't just be a boring table of contents — I'll try to include commentary about why I'm thinking about what I'm thinking about, and of course, I'd love to hear from you if you have any interesting comments or questions. Welcome!
#1
April 10, 2019
Read more
Brought to you by Buttondown, the easiest way to start and grow your newsletter.