Eurydice: a Rust to C compiler
Perhaps the greatest surprise of the last two years was, for me, the realization that people not only care about compiling C to Rust (for obvious reasons, such as, ahem, memory safety) – they also care about compiling Rust to C! Wait, what?
Cheating the Reaper in Go
Even though I am a C++ programmer at heart, Go fascinates me for none of the reasons you think. Go has made several interesting design decisions:
The /o in Ruby regex stands for "oh the humanity "
Your code using the /o modifier Source: wikipedia Hi there! Do you like Regex? Do you like performance? Do you like creating confounding bugs for yourself rooted in the mechanics of the Ruby VM itself? If you said yes to all of the above, have I got a feature for you! But first, let’s start with a story. The cliffs of…
In Defense of C++
Why C++ remains a powerful and relevant programming language in today's tech landscape.
What’s new in Swift 6.2
Raw identifiers, backtraces, task naming, and more.
Safe C++ proposal is not being continued
One year ago, the Safe C++ proposal was made. The goal was to add a safe subset/context into C++ that would give strong guarantees (memory safety, type safety, …
Designing a Language (2017)
Of course you want to design (and implement!) your own programming language! It’s fun. It’s creative. It’s empowering.
Softmax forever, or why I like softmax
[UPDATE: Feb 8 2025] my amazing colleague Max Shen noticed a sign mistake in my derivation of the partial derivative of the log-harmonic function below.
Elliptical Python Programming
One thing I love about Python is how it comes with its very own built-in zen. In moments of tribulations, when I am wrestling with crooked code and tangled thoughts, I often find solace in its timeless wisdom. Here's a glimpse of the clarity it provides:
Easel Turns One One year of building my own IDE in Clojure
Easel is an IDE written in Clojure that I've been working on for the last year. See it in action https://youtu.be/sceGtaNHxcM .
I coded a Pascal compiler for transputer as a teen in 1993
History of the development of my Pascal compiler for transputer when I was age 13.
Working through 'Writing A C Compiler'
Some time ago I decided I wanted to create a c compiler for the Hack processor in the nand2tetris book. After several dead end attempts that I might describe later I found this book : Writing a C C…
Today I learned that bash has hashmaps (2024)
Xe Iaso's personal website.
C: Simple Defer, Ready to Use
With this post I will concentrate on the here and now: how to use C’s future lifesaving defer feature with existing tools and compilers.
Getting silly with C, part (void*)2
They won't be able to find bugs in your code if they can't figure out how it works.
Rust Any part 3: we have upcasts
Some good news is coming in Rust 1.86
Go Cryptography State of the Union
I delivered my traditional Go Cryptography State of the Union talk at GopherCon US 2025 in New York. It goes into everything that happened at the intersection of Go and cryptography over the last year.
The lost cause of the Lisp machines
I am just really bored by Lisp Machine romantics at this point: they should go away. I expect they never will....
The Core of Rust
within Rust is a smaller language struggling to get out
Haskelling My Python
Reimplementing Haskell lazy infinite lists using Python generators
Linear algebra explains why some words are effectively untranslatable
A modest mathematical framing of language
What's New in C# 14: Null-Conditional Assignments
C# 14 adds null-conditional assignment, a feature that safely assigns values to properties or indexers without long chains of if statements.
Four Years of Jai (2024)
I’ve been programming for long enough to be righteously cantankerous about a lot of things. The list of languages, frameworks and libraries I’ve worked with professionally or on personal projects is too long to list – but it includes everything from C and assembly languages through C++, Pascal and Delphi, through Java…
How does Ada's memory safety compare against Rust?
A comparison of how well Rust and Ada prevent the most common memory-related software errors.
Carbon is not a programming language (sort of)
Within C++, there is a much smaller and cleaner language struggling to get out.
JVM exceptions are weird: a decompiler perspective
Some time ago, I played around with decompiling Java class files in a more efficient manner than traditional solutions like Vineflower allow. Eventually, I wrote an article on my approach to decompiling control flow, which was a great performance boost for my prototype. At the time, I believed that this method can be…