IntroThis is the start of an ongoing mini-series where I document contributions I make to open source projects. These aren't tutorials; I won't be teaching background theory. Instead, I want to walk through the process: how I identified the issue, designed a fix, and went through code review....
IntroI won't sugarcoat it: getting a job in compilers was kinda rough. SWE jobs have already been getting more and more competitive with the advent of AI, but compiler engineering specifically has always been a bit elusive, especially for junior folks. Most of the already-few postings for such...
BackgroundAt work, I've been deep in CI refactors for the past few weeks. Simplifying control flow, better utilizing our runners, reducing the number of build steps, speeding up coverage, parallelizing jobs, etc. Doing all of this, one thing became pretty clear: CI pipelines are deceptively hard...
IntroOne of the cooler benefits offered by Efficient is a budget for buying your work machine, as opposed to everyone getting the same one. Not sure how long we'll keep doing this, but it does have pros and cons: Pros: You can choose the form factor (laptop or desktop) You can choose the specs...
BackgroundIf you've done any game or graphics programming, you're most likely familiar with the concept of shaders. Shaders are small programs that run on the GPU, responsible for determining how geometry and pixels get drawn to the screen. A vertex shader runs once per vertex and determines where...
BackgroundFor the past month, I've been working on a toy programming language called umbral. The goal is for it to be part of a larger suite of tools called lunar, designed for making interactive graphical applications (read: games). Other planned tools include a debugger, text editor, DAW, who...
In April, I had left my role as a compiler, VM, and game engine, engineer at Roblox. I had decided to not actively seek other jobs; instead I’ve been focusing a few new projects of my own: a C compiler, a break-through CPU emulator, and an IDE. A C compiler, a CPU emulator, an IDE… …are you...
While building Theta, a functional programming language that compiles to WebAssembly, I encountered an interesting challenge. In functional languages like Theta, first-class functions and closures are fundamental. They allow functions to be passed as arguments, enabling core abstractions such as...
February has been a bit of a slow month, but we’ve managed to add a few interesting features. Added support for default parameters: #import "LibC"; func test(a: int32 = 10, b: float = 1, c = "hello") { printf("a: %d\n", a); printf("b: %f\n", b); printf("c: %.*s\n", c.length,...
Progress has been a bit slow for the last few weeks because I’ve personally lost a large amount of time to playing Stardew Valley, but we’ve managed to still fit in a number of important features for this month’s update. There is now support for harnessing LLVM’s JIT engine in user code...
Progress has been going pretty strong this past monthly-ish period. There is now a #clang_import directive. This allows importing declarations from C header files directly into Jiyu scopes. Example: #clang_import "#include <stdio.h>"; func main() { printf("Hello,...
It has been a awhile seen I’ve written one of these. I had taken some time off from working on the compiler to focus my free time on learning some traditional arts. That being said, there’s a number of changes to talk about so let’s get into it. There is now a psuedo-test-suite program located...
Neal Gafter writes:I just fixed a bug in the implementation of constant folding in the C# and VB.Net compilers. They used to require O(n^2) space. Now they require O(n) space.The naive approach to implementing string concatenation for an expression such as "S1" + "S2" + "S3" is to recursively...
It has been about a month since I last wrote about my new programming-language project, Jiyu, so I’m going to briefly talk about the changes that have happened since. Libraries Libraries and macOS frameworks can now be specified using the declarators library and framework, respectively. #if...
Every so often, I am introduced to a new programming language or compiler project that, at the surface level, seems interesting, but leaves a lot, for me, to be desired. Several of these include relatively new, currently-used-in-production languages, such as Swift, where ideological constraints on...