Crafting Interpreters: Closures
As the man said, for every complex problem there’s a simple solution, and it’s wrong.
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 82 posts.
As the man said, for every complex problem there’s a simple solution, and it’s wrong.
Link time optimization (LTO) is LLVM's way of implementing whole-program optimization. Cross-language LTO is a new feature in the Rust compiler that enables LLVM's link time optimization to be performed across a mixed C/C++/Rust codebase.
I wrote a self-hosting C compiler which I named 8cc in 40 days. This is a log when I was writing it from scratch by myself in 2012. The code and its history are available at GitHub .
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
This iteration of the RedMonk Programming Language Rankings is brought to you by IBM. From Java to Node.js, IBM remains at the forefront of open source innovation. Try our code patterns to help build the future of open source. With the second quarter looming, it’s time for us to drop our first quarter bi-annual…
Ruby apps can use a lot of memory. But why? Various people in the community attribute it to memory fragmentation, and provide two “hacky” solutions. Dissatisfied by the current explanations and provided solutions, I set out on a journey to discover the deeper truth and to find better solutions.
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.
A pragmatic new design for high-level abstractions Monads (and, more generally, constructs known as “higher kinded types”) are a tool for high-level abstraction in programming languages1. Historically, there has been a lot of debate inside (and outside) the Rust community about whether monads would be a useful…
I was recently reminded of why I think it’s a bad idea to teach beginners C++. It’s a bad idea because it is an objective mess—albeit a beautiful, twisted, tragic, wondrous mess. Despite the current state of the community, this post is not a polemic against modern C++. This post is partly a follow-up on Simon Brand’s…
There is a misconception that Lisp is a dynamically typed language and doesn’t offer compile-time type checking. Lisp being the…
## IntroductionThis is a small Ruby tutorial that should take no more than 20 minutesto complete. It makes the assumption that you already have Ruby installe...
A collection of examples of how to use Common Lisp
Crystal 0.31.0 has been released!
I had originally shared a version of this post with a small, private mailing list, but then I figured there'd be no harm in sharing it with a larger audience so here it is.
Solving Logic Puzzles with Prolog
This is a self-contained computer with its own display and keyboard, based on an ATmega1284, that you can program in the high-level language Lisp:
The Swift 5 release enables runtime checking of “Exclusive Access to Memory” by default in Release builds, further enhancing Swift’s capabilities as a safe language. In Swift 4, these runtime checks were only enabled in Debug builds. In this post, I’ll first explain what this change means for Swift developers before…
Diagnostics play a very important role in a programming language experience. It’s vital for developer productivity that the compiler can produce proper guidance in any situation, especially incomplete or invalid code.