Crafting Interpreters: Closures
As the man said, for every complex problem there’s a simple solution, and it’s wrong.
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 662 posts.
As the man said, for every complex problem there’s a simple solution, and it’s wrong.
Julia 1.0 came out well over 2 years ago. Since then a lot has changed and a lot hasn’t. Julia 1.0 was a commitment to no breaking changes, but that is not to say no new features have been added to the language.
I wrote a self-hosting C compiler which I named 8cc in 40 days. This is a log when I was writing it from scratch by myself in 2012. The code and its history are available at GitHub .
It’s That Blog Post. The release one, where we round up all the last of the features approved since the last time I blogged. If you’re
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
It’s been nearly two and half years since I was an active contributor to the Rust project. There are some releases that I’ve been very excited about since then, and I’m heartened by Niko’s recent blog post emphasizing stability and polish over grand new projects. But I’ve also felt a certain apprehension at a lot of…
Random thoughts
Over on GitHub, David Yu has an interesting performance benchmark for function calls of various Foreign Function Interfaces ( FFI ):
ps aux | more
Correctness in the face of cancellations: a written version of my talk at RustConf 2025.
It's a bit of a silly post, because syntax is the least interesting detail about the language, but, still, I can't stop thinking how Zig gets this detail just right for the class of curly-braced languages, and, well, now you'll have to think about that too.
I have recently become quite an enthusiast for the language Clojure . But why? Why would someone who has spent the last 30 years programmi...
Arthur’s thoughts on coding, software engineering, and other interesting things.
Writing and Stuff from Isaac Z. Schlueter
Although academic computer scientists have generally dismissed Objectivist-C, it has a zealous following among self-taught programmers and college sophomores.
It has been over 20 years since I wrote " Lisping at JPL ", half memoir and half geeky screed (and all of it half-baked) about how an obscur...
This document comes with a companion example program, available as one file or as multiple files (zipped) .
One day before Rust 1.0 was released, I published a blog post covering the fundamentals of error handling . A particularly important but small section buried in the middle of the article is named “ unwrapping isn’t evil ”. That section briefly described that, broadly speaking, using unwrap() is okay if it’s in…
In September, 2004, I posted a query to the Types list asking people to name the five most important papers ever written in the area of programming languages. This page collects the responses I received. (A few are missing because I am still tracking down bibliographic information.)
Lack of ABI stability, slow compile times, poor Xcode support, and more hold Swift back
Many beginning Python users are wondering with which version of Python they should start. My answer to this question is usually something along the lines…
k is a family of concise, fast vector-oriented languages designed by Arthur Whitney . Calling k a “family” is deliberate; there is no single definitive k, but instead a sequence of slightly incompatible versions. If you decide to stick with k, you’ll see mentions of k4 , k5 etc. Exactly what those numbers mean aren’t…
If you skim this blog entry too quickly or just read the title, you might think I am someone who does not like F#. Nothing could be further from the truth. Over the last several months, I have become a big F# fan. It has become my preferred language for personal projects.
This post lays out a 4-part roadmap for the borrow checker that I call “the borrow checker within”. These changes are meant to help Rust become a better version of itself, enabling patterns of code which feel like they fit within Rust’s spirit , but run afoul of the letter of its law . I feel fairly comfortable with…
There is no clear, widely-accepted definition of Functional Programming. It is a collection of related featues which cohere well into a very useful style of programming.
Ah, Zig . I have a love-hate relationship with this one. A “new” (reading: appeared a couple years ago , already — yes, already ), language with high ambitions. Zig was made to run at low-level, with a simple design to solve many problems C has (macros, allocators, error handling, more powerful types like baked-in…