New
The latest blog posts to take off on Hacker News. 384 posts.
My First Fifteen Compilers
We sometimes think of the number of passes in a compiler as a measure of the compiler’s complexity. But what if we could make compiler development more approachable by fully embracing the ide…
Catching use-after-move C++ bugs with Clang's consumed annotations
This post describes a compile-time technique for catching use-after-move bugs in modern C++. It’s currently used to prevent some mistakes in the Serenity Operating System.
Rust async-await status report 2
I wanted to give an update on the status of the “async-await foundations” working group. This post aims to cover three things:
Racket Is an Acceptable Python
A little over a decade ago, there were some popular blogposts about whether Ruby was an acceptable Lisp or whether even Lisp was an acceptable Lisp . Peter Norvig was also writing at the time introducing Python to Lisp programmers . Lisp, those in the know knew, was the right thing to strive for, and yet seemed…
Ten Years of Erlang
For my ten years in the Erlang community, I decided to cover a few topics such as hype phases and how this related to Erlang, the ladder of ideas within the language and how that can impact adoption, what changed in my decade there, and what I think Erlang still has to bring to the programming community at large.
Why Lisp Failed (2010)
Why Lisp Failed.
“Essentials of Garbage Collectors” full course is now available
Course overview Memory leaks and dangling pointers are the main issues of the manual memory management. You delete a parent node in a linked list, forgetting to delete all its children first -- and your
Pony 0.29
We are proud to announce the release of Pony version 0.29.0. This release includes several improvements to the standard library's TCP support. This version contains breaking API changes. We recomme...
Clojure and Deps.edn: A basic guide
After a rather long break from programming and Clojure I decided give them another go. When it comes to managing Clojure projects, Leiningen is de-facto standard tool. Recently, Clojure CLI tools are becoming more and more popular, though. Switching to yet-another-build-tool doesn't have any pragmatic value, but it's…
Go compiler internals: Adding a new statement to Go
Updated (2023-05-08): the Go compiler keeps evolving and it takes time to keep up with changes. While the general gist of this post remains true and it's worth reading to understand how the compiler works on a high level, the details of the modifications are slightly different now.
An Open Letter to the Go Team About Try
An Open Letter To The Go Team About Try. “Once a language gets complex enough, programming in it is more like carving out a subset from an infinite sea of …
One Program Written in Python, Go, and Rust
Image differentiation in three languages
D as a C Replacement
Sircmpwn (the main developer behind the Sway Wayland compositor ) recently wrote a blog post about how he thinks Rust is not a good C replacement . I don’t know if he’d like the D programming language either, but it’s become a C replacement for me.
Using Pointers in SPARK
In this blog post, I will present one of the most interesting additions to the community 2019 version of SPARK: pointer support. One of the core…
Go Slices Are Fat Pointers
One of the frequent challenges in C is that pointers are nothing but a memory address. A callee who is passed a pointer doesn’t truly know anything other than the type of object being pointed at, which says some things about alignment and how that pointer can be used… maybe. If it’s a pointer to void ( void * ) then…
Let's Build a Simple Interpreter. Part 14: Nested Scopes (2017)
Only dead fish go with the flow. As I promised in the last article, today we’re finally going to do a deep dive into the topic of scopes. This is what we’re going to learn today: We’re going to learn about scopes, why they are useful, and …
Next steps toward Go 2
What Go 2 language changes should we include in Go 1.14?
Elixir 1.9
Elixir v1.9 is out with releases support, improved configuration and more.
Why I think Haskell is the best general purpose language as of June 22 2019
Me and my close friends have been interested in starting a project together and I suggested we use Haskell. I do not think the suggestion was received well or perhaps in seriousness. I have a tendency to joke about almost everything and have put forward that we use many interesting but not practical languages in the…
Compiler basics (5): LLVM system calls
Writing a lisp compiler from scratch in JavaScript: 6. LLVM system calls