What can we learn from how compilers are designed?
A case study on how compilers decouple components from each other using data.
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,708 posts.
A case study on how compilers decouple components from each other using data.
This is part 1 in a series of blog posts that follow my work in creating a programming language.
Incomplete data structures challenge our notion of mutability
If you know one thing about me, it is that I love working on the Rust compiler. Some people kayak, travel or play guitar - and I stare at assembly, trying to figure out what I broke.
Project Everest is a large, collaborative research effort that aims to verify and deploy a new, secure HTTPS stack. All of our code is verified using the F* programming language. Using KreMLin, a dedicated compiler, the verified F* code is compiled to readable C, meaning existing systems projects can readily integrate…
Today I’m releasing the “record” library, which is an API of just two quasi-quoters, providing a full-scale solution to the notorious records problem of Haskell!
Attempting to speed up a library without changing the code using mypyc
Okay, but apart from generics and fuzzing, what has Go 1.18 ever done for us?
A while ago, I bought the book “ The Go Programming Language ” written by Alan Donovan and Brian Kernighan. I have always been a fan of Brian Kernighan’s writings. I should admit that I bought the book mainly for his great examples and writings than for the Go language itself, but since then have got interested in the…
I read a good post by one of the authors of the Isabelle theorem prover, that got me thinking. The author, Lawrence Paulson, observed that most math proofs are trivial, but writing them (preferably with a proof assistant) is a worthwhile activity, for reasons similar to safety checklists - “Not every obvious statement…
A blog by sunfishcode
Caring too much for objects can destroy you. Only — if you care for a thing enough, it takes on a life of its own, doesn’t it? And isn’t the whole point of things — beautiful things — that they connect you to some larger beauty?
I’ve seen people be genuinely puzzled about why functional programming is not more popular. For example I’m currently reading “Out of the Tar Pit” where after arguing for fu…
I have recently become quite an enthusiast for the language Clojure . But why? Why would someone who has spent the last 30 years programmi...
<p> <i>Python</i> haters always say, that one of reasons they don't want to use it, is that it's <i>slow</i>. Well, whether specific program - regardle...
Why you should consider using F# for your next project
Asynchronous programming is a popular programming paradigm that allows a large number of lightweight tasks to run concurrently with very little memory overhead, compared to threads.
tldr: we stick to C89 for now. The curl project builds on foundations that started in late 1996 with the tool named httpget. ANSI C became known as C89 In 1996 there were not too many good alternatives for making a small and efficient command line tool for doing Internet transfers. I am not saying … Continue reading…
Why does this matter? As Steve Yegge said , "If you don't know how compilers work, then you don't know how computers work." Yegge describes 8 problems that can be solved with compilers (or equally well with interpreters, or with Yegge's typical heavy dosage of cynicism).
What was the first thing you saw in Go that surprised you?
One day, you’re browsing through your code, and you notice two big blocks that look almost exactly the same. In fact, they’re exactly the same, except that one block refers to “Sp…
There are a lot of places you’ll see * and ** used in Python. These two operators can be a bit mysterious at times, both for brand new programmers...
If you’ve read anything about compilers in the last two decades or so, you have almost certainly heard of SSA compilers , a popular architecture featured in many optimizing compilers, including ahead-of-time compilers such as LLVM, GCC, Go, CUDA (and various shader compilers), Swift 1 , and MSVC 2 , and just-in-time…
In my last blog entry LLand LR Parsing Demystified, we explored LL and LR parsers from ablack-box perspective. We arrived at a model for these parsers whereb...
Rust's error handling is a pleasure to use thanks to the Result type . It ensures Rust's error handling is always correct , visible , and performant . And with the addition of the ? operator in Rust 1.13 , and the addition of return types from main in Rust 1.26 Rust's error handling has only kept improving.