Topics /
Programming Languages
The most popular blog posts about programming languages on Hacker News. 5,634 posts.
Maybe adding generics to Go is about syntax after all
This is a short response to the recently announced Go 2 generics draft proposals
Using enums to represent state in Rust
Many Rust beginners with a background in systems programming tend to use bool (or even u8 – an 8-bit unsigned integer type) to represent “state”. For example, how about a bool to indicate whether a user is active or not? struct User { // ... …
Garbage collection without unsafe code
Many people, including myself, have implemented garbage collection (GC)libraries for Rust. Manish Goregaokar wrote up a fantastic survey of thisspace a few y...
Understanding Clojure's Persistent Vectors, pt. 1 (2013)
Ever wondered how Clojure's persistent vector actually works? This is part 1 of a blog series which aims to explain them.
Generic Containers in C: Safe Division Using Maybe
Martin Uecker, 2025-08-10 I discuss the implementation of type and bounds safe generic containers in C. Previously, I discussed a span type , bounds checking using arrays . and a a vector type . This time, I will discuss maybe inspired by Haskell. This type can used to return a value that may not exist, e.g. because…
A Tour of Safe Tracing GC Designs in Rust
I’ve been thinking about garbage collection in Rust for a long time, ever since I started working on Servo’s JS layer. I’ve designed a GC library, …
Coming Soon in HHVM
The next HHVM release, 3.6, is on the horizon. We expect it to be released at the very end of February or in early March. It’s going to be a big release. Not...
10 Years of Betting on Rust
I wrote my first line of Rust in June 2015, a month after Rust 1.0 landed. Coming from C, Python, and JavaScript, I never looked back. Two Rust-based startups and 500k lines of Rust later, here are some reflections on the milestone.
My encounter with Medley Interlisp
Imagine someone let you into an alien spaceship they landed in your backyard, sat you at the controls, and encouraged you to fly the ship...
AdaCore Announces Gnat Pro for Rust
For the first time, AdaCore’s GNAT Pro subscribers will be able to develop safety- and security-certifiable embedded applications using Rust while…
Let's write a macro in Rust
Macros are required to do some very helpful things in Rust, but this isn't an article about any of those things.
Async Cancellation
Sometimes we start things but decide midway through that we would prefer to rather not be doing them. That process is sometimes referred to as cancellation. Say we accidentally clicked "download" on a large file in the browser. We should have a way to tell the computer to stop downloading it.
Don't Panic! Better, Fewer, Syntax Errors for LR Parsers
Abstract Syntax errors are generally easy to fix for humans, but not for parsers in general nor LR parsers in particular. Traditional ‘panic mode’ error recovery, though easy to implement and applicable to any grammar, often leads to a cascading chain of errors that drown out the original. More advanced error recovery…
My Experience at JuliaCon
Introduction Link to heading I just got home from JuliaCon, the first conference dedicated entirely to Julia. It was a great pleasure to spend two full days listening to talks about a language that I started advocating for just a little more than two years ago. What follows is a very brief review of the talks that…
Crystal 1.2.2 Is Released
We are releasing the second patch release of the 1.2 series.
Compiling a Lisp (2020)
Overture to our small Lisp to x86-64 compiler
Clojure 2011 Year in Review
A new year is upon us. Before the world ends, let’s take a look back at what 2011 meant for everybody’s favorite programming language:
C++26: The New Debugging Header
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…
Which Interpreters Are Faster, AST or Bytecode?
A brief overview of our study of abstract-syntax-tree and bytecode interpreters on top of RPython and the GraalVM metacompilation systems.
Haskell's Missing Concurrency Basics (2016)
Michael Snoyman's personal homepage and blog, featuring writing about programming, open source, health, finance, religion, and whatever else catches his interest.
Pointers in Python
In this step-by-step tutorial, you'll get a clearer understanding of Python's object model and learn why pointers don't really exist in Python. You'll also cover ways to simulate pointers in Python without the memory-management nightmare.
Clojure from the Ground Up, Part 2: Basic Types
We’ve learned the basics of Clojure’s syntax and evaluation model . Now we’ll take a tour of the basic nouns in the language.
Racket v8.2
_posted by John Clements_ Racket version 8.2 is now available from https://download.racket-lang.org. Racket CS improved the performance of large-integer arithmetic. Racket has improved support for layered and tethered installation. Racket ...