GingerBill has said that Odin aims to have (near) zero UB in the past and people have criticized him for it. Whenever Odin comes up here or hackernews many people criticize him for this. Comments| Lobsters
5 years ago, @nikic wrote: I can’t say a 10% improvement is making LLVM fast again, we would need a 10x improvement for it to deserve that label. We recently open-sourced TPDE and our fast LLVM baseline back-end (TPDE-LLVM), which is 10-20x faster than the LLVM -O0 back-end with similar runtime performance and 10-30% larger code size. We support a typical subset of LLVM-IR and only target x86-64 and AArch64. Posting this here, as this might be interesting for the LLVM community – question...| LLVM Discussion Forums
In my last post, I explained a bit about how to retrofit| Max Bernstein
We write a fast bytecode VM for arithmetic in Haskell.| abhinavsarkar.net
Experiments¶| www.nmichaels.org
[ML'23] Modernizing Standard ML of New Jersey: A Status ReportDavid MacQueen, John ReppyThis paper describes our ongoing efforts to modernize the Standard ML...| YouTube
An important aspect of OCaml that newcomers might want to| kirancodes.me
Placing Arguments| blog.yoshuawuyts.com
Many software projects take a long time to compile. Sometimes that’s just due to the sheer amount of code, like in the LLVM project. But often a build is slower than it should be for dumb, fixable reasons. I’ve had the suspicion that most builds are doing dumb stuff, but I had no way to see it. So I’ve been working on a cross-platform tool to help speed up builds (you can try it, see below).| danielchasehooper.com
A linear scan through the history of… linear scan register allocation.| Max Bernstein
This book describes the compiler design of the next generation Numba compiler. This compiler and its components are extremely experimental and under rapid development. If you have questions, raise an issue on the GitHub repository.| numba.pydata.org
Writing an assembler turns out to be an interesting example: one needs to| blog.vmchale.com
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 insanity I was recently reviewing some code, and part of the functionality was about matching.| jpcamara.com
We write a bytecode VM for arithmetic in Haskell.| abhinavsarkar.net
This is the third in a series of posts about a virtual machine I’m developing as a hobby project called Bismuth. I’ve talked a lot about Bismuth, mostly on social media, but I don’t think I’ve done a good job at communicating how you go from some code to a program in this VM. In this post I aim to rectify that by walking you through the entire life cycle of a hello world Bismuth program, from the highest level to the lowest.let hello = data_utf8("Hello world!\n");func main() i32 { // ...| Eniko does bad things to code
A high-performance and high-level purely functional data-parallel array programming language that can execute on the GPU and CPU.| futhark-lang.org
Authors: Owen Anderson, Jessica Clarke, Alex Richardson, David Chisnall This RFC is a proposal to gain consensus on upstreaming target support for the CHERI-enabled architectures to the LLVM project. This is an “entire project” RFC, as CHERI support touches many parts of the toolchain: primarily LLVM, Clang, and LLD, with other components such as runtime libraries or LLDB potentially being touched as well. Upstreaming many of these sub-components of CHERI support will likely merit their o...| LLVM Discussion Forums
In my previous assembler posts, I've discussed improvements on expression resolving and relocation generation. Now, let's turn our attention to recent refinements within section fragments. Understandi| MaskRay
Parsing, performance, and low-level programming.| blog.reverberate.org
Nigel Tao| Nigel Tao
Making compilation pipelines fast, starting with the tokenizer| xnacly.me
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…| Jolly Interesting Stuff
angr| angr.io
Three approaches to integrating other languages with Elixir - generating code, embedding foreign code, and building instruction sets for cross-language orchestration| Lucas Sifoni
I am resurrecting my old “Wasm the Hard Way” series with a some fresh new content about a recent project I have been working on: porting the Chicory Wasm compiler to Android. If you are interested in Wasm and Java, you might have heard about Chicory, a pure-Java Wasm runtime. Ever since I started working at Dylibso, I have been contributing to the project. Extism is Dylibso’s family of open-source projects to develop and host WebAssembly (Wasm) plugins. Going forward, we believe the Chi...| blog.evacchi.dev
C3 is a programming language that builds on the syntax and semantics of the C language, with the goal of evolving it while still retaining familiarity for C programmers.| c3-lang.org
The following post will talk about the design of the first version of the Intermediate Representation of Kunai, the design decisions and how it was implemented.| Eduardo Blázquez’s Personal Webpage
Explanation of Static Single Assignment Algorithm for MLIR| Eduardo Blázquez’s Personal Webpage
The following post will talk about the design of the first version of the Intermediate Representation of Kunai, the design decisions and how it was implemented.| Eduardo Blázquez's Personal Webpage
I demonstrate how you can write a simple JIT (Just In Time) compiler for x86 in about 1000 lines of C code.| kuterdinel.com
wingolog: article: guile lab notebook: on the move!| wingolog.org
C3 is a programming language that builds on the syntax and semantics of the C language, with the goal of evolving it while still retaining familiarity for C programmers.| c3-lang.org
There has been a fair bit of progress since the last progress report! There have been 476 commits since the last progress report.| bjorn3
Bootstrapping Rust with GCC| fractalfir.github.io
My personal blog| Ken Jin
WebAssembly Troubles part 4: Microwasm | troubles.md
GCC 15 brings major Arm optimizations: enhanced vectorization, FP8 support, Neoverse tuning, and 3–5% performance gains on SPEC CPU 2017.| community.arm.com
Building a Lua interpreter in Go| www.zombiezen.com
So you want to serialize some DER?| alexgaynor.net
Homegrown closures for uxn| krzysckh.org
Dark Inc has officially run out of money. Dark Inc is the company we founded in 2017 to build Darklang, a statically-typed functional programming language built to strip all of the bullshit from backend coding. To ensure continuity for users and fans, as well as to continue building what we| Darklang
I have a lot of thoughts about the design of compiler intermediate representations (IRs). In this post I’m going to try and communicate some of those ideas and why I think they are important.| Max Bernstein
Igalia is an open source consultancy specialised in the development of innovative projects and solutions. Our engineers have expertise in a wide range of technological areas, including browsers and client-side web technologies, graphics pipeline, compilers and virtual machines. We have the most WPE, WebKit, Chromium/Blink and Firefox expertise found in the consulting business, including many reviewers and committers. Igalia designs, develops, customises and optimises GNU/Linux-based solutions...| Igalia
How we handle 92 million compilations a year without everything catching fire| xania.org
Fast machine code generation is especially important for fast start-up just-in-time compilation, where the compilation time is part of the end-to-end latency. However, widely used compiler frameworks like LLVM do not prioritize fast compilation and require an extra IR translation step increasing latency even further; and rolling a custom code generator is a substantial engineering effort, especially when targeting multiple architectures. Therefore, in this paper, we present TPDE, a compiler b...| arXiv.org
Many Ruby applications allocate objects. What if we could make allocating objects six times faster? We can! Read on to learn more!| Rails at Scale
Blog about programming stuff.| Kobzol’s blog
How to test for leap years (until year 102499) in the proleptic Gregorian calendar with just three 32-bit instructions, with detailed explanation of the bit-level tricks.| hueffner.de
ZJIT has been merged into upstream Ruby. Learn about its architecture!| Rails at Scale
NP-Incompleteness:| www.kuniga.me
Post about compiling clojure to a web assembly module using GraalVM native image.| Shagun Agrawal
jank is the first Lisp to be able to seamlessly reach into C++. Check it out!| jank-lang.org
This post is composed of infographics on the basics of compilation assembly and compiler optimizations. We're going to be learning about compilation, assembly code and folds in C# and C++.| LevelUp++
NP-Incompleteness:| www.kuniga.me
Cross-compiling is taking a computer program and compiling it for a machine that isn’t the one hosting the compilation. Although historically compilers would only compile for the host machine, this is considered an anachronism: all serious native compilers are now cross-compilers.| mcyoung.xyz
At last, here’s the final installment of the JIT calculator saga! In previous blog posts, I presented the JIT calculator challenge and followed up with my own solution. Today we’ll get to look back on the submissions sent by some readers who were nerd-sniped into cracking the puzzle. As you can imagine, people are creative and came up with things I didn’t expect, like using Cranelift to generate code… That was a pleasant surprise!| Adolfo Ochagavía
Learn the basics of code generation, which is one of the secrets behind CedarDB's performance. CedarDB creates custom machine code for every query. This keeps data in CPU registers as long as possible and minimizes unnecessary data transfers.| CedarDB - The All-In-One-Database
When I saw the the prospero challenge by @mattkeeter.com, it looked right up my alley. If you haven't read that yet, go read it before proceeding. You can find the finished source code for this here. I've been working on a Cranelift frontend for a toy programming language as part of an honors proje...| whtwnd.com
Compiler, uArch, and a little bit of...jigsaw puzzle?| Min Hsu's Homepage
Why V8 decided to move away from Sea of Nodes and go back to CFG instead| v8.dev
Evaluate a 7866-clause math expression for fame and glory| www.mattkeeter.com
There is a growing industry-wide push away from writing code in unsafe languages like C/C++ in favor of modern, safer languages like Rust. This, of course, is a big opportunity for Rust – and one it took part in creating.| HackMD
A deep dive into the performance of Python 3.14's tail-call interpreter: How the performance results were confounded by an LLVM regression, the surprising complexity of compiling interpreter loops, and some reflections on performance work, software engineering, and optimizing compilers.| Made of Bugs
Package and distribute apps built in Ruby to Windows, macOS, and Linux| terminalwire.com
Why do frame pointers matter for OCaml?| lambdafoo.com
by Justin Squirek – Feb 23, 2025. Developing a game engine often requires a robust linear algebra library for tasks like physics, camera movement, and AI. While many languages already have mature options, Ada’s ecosystem lacks such solutions. To fill this gap, the I created Neo.SIMD as part of the…| The AdaCore Blog
It’s time to present the solution to the JIT calculator challenge! If you missed it, here’s the original post in which I introduced it. It was a nice excuse to finally learn more about JIT compilation! I wasn’t alone in this, many people were nerd-sniped into implementing their own solutions and sent me their submissions. Thanks for participating! I’ll discuss them in a third blog post, to keep this one from becoming too long.| Adolfo Ochagavía
How I implement SSA form. GitHub Gist: instantly share code, notes, and snippets.| Gist
The inevitability of the borrow checker| yorickpeterse.com
While Trail of Bits is known for developing security tools like Slither, Medusa, and Fickling, our engineering efforts extend far beyond our own projects. Throughout 2024, our team has been deeply …| Trail of Bits Blog
Most programming languages, including C and C++, provide language runtime libraries that implement parts of the language itself. These libraries must be linked in the final program or shared library. Today we are going to see how an unfortunate default in the way shared libraries work in Linux can make our lives a bit more complicated than they have to if the language runtimes are in static libraries.| Think In Geek
Some time ago, I wrote a blog post about how there’s more to a pointer than meets the eye. One key point I was trying to make is that just because two pointers point to the same address...| www.ralfj.de
The mess that is handling structure arguments and returns in LLVM| yorickpeterse.com
A web log. Mostly about computer science-y stuff.| blog.jeffsmits.net
It’s 2025, and this year again, the YJIT team brings you a new version of YJIT that is even faster, more stable, and more memory-efficient.| Rails at Scale
How can the compiler help our code to run faster, and how can it generate some warnings in a single cross-compilers way?| C++ Senioreas
Communicate with GCC compiler using GCC specific compiler pragmas.| C++ Senioreas
Advent of code has come and passed, what should I do now with so much free time? Fear not! The JIT calculator challenge is here. 1. The challenge Back when Rust was in its infancy, the official website featured an example program to showcase the language’s syntax. It was a toy calculator, implemented as an interpreter in 20 lines of code. Why talk about website archaeology, though? We are not here for nostalgia’s sake, are we?| Adolfo Ochagavía
A few years ago, on a whim, I wrote YAIOUOM. YAOIOUM was a static analyzer for Rust that checked that the code was using units of measures correctly, e.g. a distance in meters is not a distance in centimeters, dividing meters by seconds gave you a value in m / s (aka m * s^-1). YAIOUOM was an example of a refinement type system, i.e. a type system that does its work after another type system has already done its work. It was purely static, users could add new units in about one line of code, ...| Il y a du thé renversé au bord de la table !
This article describes how to transpile Objective-C to C++, and use that approach to gain understanding of the Objective-C runtime| Juan Cruz Viotti
Sometimes I pick a crate in the Rust compiler and read through its code to learn about it and find things that I can improve. Often the improvements are small, but sometimes they snowball.| Nicholas Nethercote
A curated list of misconceptions about mainstream compilers.| sbaziotis.com
[Originally from a Twitter Thread] Original Twitter Post I don’t know if I have “ranted” about this here before but: I absolutely HATE comparing programming languages with “benchmarks”. Language benchmarks rarely ever actually test for anything useful when comparing one language against another. This goes for ANY language. Even in the best case scenario: you are comparing different compilers for the same language (and the same input). This means that you are just comparing how well ...| www.gingerbill.org
It's been a while since our pure-Java WebAssembly runtime released version 0.0.12,| chicory.dev
Exploration of C++ complexity with first-hand experience of compiler bugs| azeemba.com
Thoughts on how compiler and database optimizers should evolve in the future, focusing on predictability and guarantees instead of smarts and heroics| typesanitizer.com
This is a continuation of my “fast JS on Wasm” series; the first post covered PBL, a portable interpreter that supports inline caches, this post adds ahead-of-time compilation, and the final post will discuss the details of that ahead-of-time compilation. Please read the first post first for useful context!| Chris Fallin
Today I’m going to be writing about ISLE, or the “instruction selection/lowering expressions” domain-specific language (DSL), which over the past year we have designed, improved, and fully adopted in the Cranelift compiler project. ISLE is now used to express both our instruction-lowering patterns for each of four target architectures, and also machine-independent optimizing rewrites. It allows us to develop these parts of the compiler in an extremely productive way: we can write the ke...| Chris Fallin
This post is the first in a three-part series about my recent work on Cranelift as part of my day job at Mozilla. In this first post, I will set some context and describe the instruction selection problem. In particular, I’ll talk about a revamp to the instruction selector and backend framework in general that we’ve been working on for the last nine months or so. This work has been co-developed with my brilliant colleagues Julian Seward and Benjamin Bouvier, with significant early input f...| Chris Fallin
Compiler front-end foundation technology. Contribute to Eliah-Lakhin/lady-deirdre development by creating an account on GitHub.| GitHub
I’ve blogged about surprising bits of the C++ object model before, and I’m back with more. Executive summary: Don’t use mozilla::PodZero or mozilla::PodArrayZero. Modern C++ provides better alternatives that don’t presume that writing all zeroes will always correctly initialize the given type. Use constructors, in-class member initializers, and functions like std::fill to zero member fields. […]| Where's Walden?
While doing a couple recent reviews, I’ve read lots of code trying to solve the same general problem. Some code wants to store an object of some type (more rarely, an object from among several types), but it can’t do so yet. Some series of operations must occur first: a data structure needing to be […]| Where's Walden?
The cr.yp.to blog| blog.cr.yp.to
CF Bolz-Tereick wrote some excellent posts in which they introduce a small IR and optimizer and extend it with allocation removal. We also did a live stream together in which we did some more heap optimizations.| Max Bernstein
continuing with the DNA theme… In Catalyst, a WebAssembly implementation of the OpenSmalltalk virtual machine, there are three linguistic levels in play: Smalltalk, JavaScript (JS), and WebAs…| thisContext
Ramkumar Ramachandra's personal website| artagnon.com
I’m delighted that Luke Geeson’s work on “mix testing” (a collaboration with James Brotherston, Wilco Dijkstra, Alastair Donaldson, Lee Smith, Tyler Sorensen, and myself) will app…| Wickopedia
This post builds upon the previous one where I built the smallest OOP language I could based only on message dispatch. Everything is as late bound as possible, even the language semantics, the core on| Mariano Guerra's Log