Two studies in compiler optimisations
A deep dive into the intricacies of the LLVM optimisation pipeline.
Topics /
The most popular blog posts about programming languages on Hacker News. 233 posts.
A deep dive into the intricacies of the LLVM optimisation pipeline.
Converting Org to HTML with (ice-9 peg) in Guile: OrgWebAlchemy
Who does things like that?!? Apparently: me. I have my own project, written in Rust. Not a big one, mind you, maybe approx. 30k lines of code in total. Rust is verbose so it’s not really that impressive. I’ve put it aside for some time and was toying with local inference, LLMs, writing agents and my attention was…
Applying Alexis King's parse-don't-validate principle in TypeScript, where the type system fights back just enough to be annoying.
After the ACE BASIC posts of the last months, this one is about a different project I have been working on for the last half year: CL-Amiga , or Clamiga for short. It is a Common Lisp implementation built for the Amiga family -- classic AmigaOS 3 on 68k and MorphOS as a fully native PPC build, AROS and AmigaOS 4 maybe…
Let’s talk about nil pointer checks in Go. You want to prevent panics in production, but that doesn’t start with a deferred recover. It starts with defensive programming. Check your inputs, check your bounds, and check pointers for nil before dereferencing them. I’ve started to see more nil checks in Go code. In the…
This chapter is a culmination of many macro techniques we have looked at so far in this book. Using macro abstractions we have developed, we create an implementation of one of my favourite programming languages: forth . Although this implementation embodies most of the important ideas of forth, it is very different…
Ante has taken the first step towards something we all thought was impossible: blending reference counting and borrow checking without run-time crashes. 0
C++26 brings us a small but meaningful cleanup to the language: deprecating ellipsis parameters without a preceding comma. This change, proposed in P3176R1, aims to improve C compatibility, reduce confusion, and pave the way for future language features. The proposal’s name is a playful reference to the Oxford comma …
a pungent monad odor that attracts mathochists
A 2026 sequel to C Constructs That Don't Work in C++: what still breaks, what C++20 changed, and what C23 changed.
C3 is the ergonomic, safe evolution of C. Familiar syntax, full ABI compatibility, optionals, slices, contracts and zero-cost abstractions.
In Rust, one of the most common ways to implement core traits (like Debug , Display , and Clone ) is to #[derive(...)] them, e.g.:
A beginner's exploration of the many layers of Common Lisp development environments.
Learn what it means to conform to the Python typing spec, why it matters, and the conformance status of each type checker including Pyrefly, Ty, Pyright and Mypy.
I built a tiny programming language where programs are candy grids, complete with a renderer, photo decoder, AST tree, and execution trace.
Meet G#: expressive data types, explicit nullability, and structured concurrency on .NET. Explore real examples and run your first project.
Curried functions are probably one of the first new things you come across if you go from an imperative language to a functional language. In purely functional languages, the convention is to define an n-parameter function inductively by staggering the parameters: applying the function to argument #1 returns a…
A signals-and-noise course left me writing Monte Carlo math on paper and wishing the notation itself would run. Nine years later, with an AI agent doing the heavy lifting, NoiseLang became a real Monte Carlo language that runs the same fused kernel on the GPU, on every CPU core, and on WebAssembly.
We’re truly excited to share that Scala has received an investment from the Sovereign Tech Fund to strengthen Scala’s long-term security, maintenance, and developer experience.
My new book guides you through the start-to-finish build of a real world web application in Go — covering topics like how to structure your code, manage dependencies, create dynamic database-driven pages, and how to authenticate and authorize users securely .
The Pascal language was named after Blaise Pascal (see picture), a French mathematician who was a pioneer in computer development history. In 1641, at the age of eighteen, Pascal constructed the first arithmetical machine, arguably the first computer. He would improve upon the instrument eight years later. In 1650…
New with expressions, type-safe error checking, and faster everything.
Many people, including myself, have implemented garbage collection (GC)libraries for Rust. Manish Goregaokar wrote up a fantastic survey of thisspace a few y...
Ever wondered how Clojure's persistent vector actually works? This is part 1 of a blog series which aims to explain them.
If you’ve ever needed to hit a breakpoint programmatically in C++, you’ve probably written something like this: 1 2 3 4 5 6 7 8 9 #if defined(_MSC_VER) __debugbreak(); #elif defined(__clang__) __builtin_debugtrap(); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) __asm__ volatile("int3"); #else…
Word sizes, strange machines, and why <strong>int</strong> was never meant to mean 32 bits. C's flexible integer types were how the language achieved portability in a world of 12, 18, 36, and 60-bit computers.
Java classes become CLOS classes, seven JVM languages share one Lisp expression, and a saved Spring Boot application launches in 84 milliseconds.