The GHC developers are very pleased to announce the availability of the release candidate of GHC 9.14.1. Binary distributions, source distributions, and documentation are available at downloads.haskell.org. GHC 9.14 will bring a number of new features and improvements, including: Significant improvements in specialisation: The SPECIALISE pragma now allows use of type application syntax The SPECIALISE pragma can be used to specialise for expression arguments as well as type arguments. Speci...| Haskell Community
wingolog: article: wastrel, a profligate implementation of webassembly| wingolog.org
First foray into the Zig programming language| asibahi.github.io
Exploring a new layout algorithm for control flow graphs.| SpiderMonkey JavaScript/WebAssembly Engine
InvisiCaps By Example| fil-c.org
Clang optimizations. Machine code models. Relocations!| Transactional
If you can ctrl-c and ctrl-v, you can build a JIT.| Transactional
We write a fast bytecode VM for arithmetic in Haskell.| abhinavsarkar.net
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), Swift1, and MSVC2, and just-in-time compilers such as HotSpot C23, V84, SpiderMonkey5, LuaJIT, and the Android Runtime6.| mcyoung.xyz
Learn about recent improvements made to the Clang bytecode interpreter, including performance optimizations, libc++ testing, and the #embed benchmark| Red Hat Developer
Join Red Hat Developer for the software and tutorials to develop cloud applications using Kubernetes, microservices, serverless and Linux| Red Hat Developer
Discover the gains and costs of GCC’s enhanced runtime buffer overflow protection. Level 3 _FORTIFY_SOURCE preprocessor macro may detect more buffer overflows, but there’s a cost| Red Hat Developer
Clang optimizations. Machine code models. Relocations!| transactional.blog
Polyhedral optimization is a tool used in compilers for optimizing loop nests. While the major compilers that use this implement polyhedral optimizations from scratch,1 there is a generally-applicable open source C library called the Integer Set Library (ISL) that implements the core algorithms used in polyhedral optimization. This article gives an overview of a subset of ISL, mainly focusing on the representation of sets and relations and basic manipulations on them.| Math ∩ Programming
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
A good VM is a constantly changing VM| Cats with power tools
Notes on virtualization obfuscation of JavaScript.| Cats with power tools
Garbage Collection for Rust: The Finalizer Frontier| soft-dev.org
If you can ctrl-c and ctrl-v, you can build a JIT.| transactional.blog
Hi| Pinaraf's website
Doing Things Worst People always seem to want to do things well, and when they fail, they tend to blame their tools. So it should come as no surprise that programmers, being somewhat similar to people (and being generally bad at what they do), have a long tradition of growing near-religious zeal for editors, paradigms, code styles, and, of course, programming languages. The bickering never ends, and whatever one person preaches, another considers harmful.| iacgm
Companies often try to make software non-free, and some would write| gcc.gnu.org
At 14, I thought writing a compiler would be a quick side quest in building a game engine. Four years later, I finally built one that works. And it was one hell of a journey.| daymare.net
Support for BPF in the kernel has been tied to the LLVM toolchain since the advent of extended [...]| LWN.net
Clojure, LLVM, and C++ walk into a bar. jank is born. Don't think about it too much.| jank-lang.org
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
It is surprisingly easy to add a new instruction in LLVM.| prose.sh
I recently worked with GraalVM's Truffle language implementation framework. I wanted to write a tutorial about it, as I've found the existing explanations of how it works difficult to follow (I had to piece a lot of information from different sources to get the whole picture). Since it's a very large topic, I'm breaking it up into multiple parts. In the first installment, I want to explain exactly what Truffle and Graal is, and how they work together to help you easily create a high-performan...| www.endoflineblog.com
A compiler deep-dive tracing Rust’s AtomicU64::fetch_max from macro expansion and rustc intrinsics through LLVM’s atomicrmw umax and AtomicExpandPass to the final x86-64 CAS loop| QuestDB Blog
For the past five years, Igalia has joined with browser vendors to work on the annual Interop project. Together, we’ve helped to promote greater browser interoperability by working to jointly prioritize an achievable set of goals. Each year, the process begins with a call for proposals, asking the larger web development community what features they want to see included in the next year’s Interop project. For 2026, that call begins today and lasts through September 24, 2025. The submission...| Igalia
Over the past couple of months, Björn and I have been working on improving state machine code generation in the rust compiler, a rust project goal for 2025H1. In late June, PR 138780 was merged, which adds #![feature(loop_match)].| trifectatech.org
[RFC] Ripple: A Compiler-Interpreted API for Efficient SIMD Programming TL;DR We have been working on Ripple, a lean addition to LLVM to support Single-Program, Multiple-Data (SPMD) and loop-annotation-based parallel programming for SIMD hardware. We propose a parallel programming API to support these two models, which departs from GPU-style SPMD programming, in that block computations of different dimensions (including 0) can coexist in the same function. This makes it easier to explicitly e...| LLVM Discussion Forums
Recently I thought it would be good to start compiling the small functional| danieljharvey.github.io
Rich Harris, creator of Svelte and software engineer at Vercel, joins Ryan on the show to dive into the evolution and future of web frameworks. They discuss the birth and growth of Svelte during the rise of mobile, the challenges of building robust and efficient web applications, how companies can back more open-source community projects, and the dirty little secret about asynchronous operations and component frameworks.| Stack Overflow Blog
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
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
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
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
Making compilation pipelines fast, starting with the tokenizer| xnacly.me
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
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
wingolog: article: guile lab notebook: on the move!| wingolog.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
My personal blog| Ken Jin
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
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
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
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