Latest Tech News

Stay updated with the latest in technology, AI, cybersecurity, and more

Filtered by: compile Clear Filter

How Ruby executes JIT code

Ever since YJIT’s introduction, I’ve felt simultaneously close to and distant from Ruby’s JIT compiler. I know how to enable it in my Ruby programs. I know it makes my Ruby programs run faster by compiling some of them into machine code. But my understanding around YJIT, or JIT compilers in Ruby in general, seems to end here. A few months ago, my colleague Max Bernstein wrote ZJIT has been merged into Ruby to explain how ZJIT compiles Ruby’s bytecode to HIR, LIR, and then to native code. It she

AI Coding

In my old age I’ve mostly given up trying to convince anyone of anything. Most people do not care to find the truth, they care about what pumps their bags. Some people go as far as to believe that perception is reality and that truth is a construction. I hope there’s a special place in hell for those people. It’s why the world wasted $10B+ on self driving car companies that obviously made no sense. There’s a much bigger market for truths that pump bags vs truths that don’t. So here’s your new

Kefir: Solo-developed full C17/C23 compiler with extensive validation

To whom it may concern, Today I release Kefir — an independent C17/C23 compiler. Solo-built. Extensively validated, for x86_64 & System-V ABI. With SSA-based optimization pipeline, DWARF-5 support and position-independent code generation. What? Implements the C17/C23 standard. Plus certain GNU C extensions. For Linux (glibc & musl), FreeBSD, OpenBSD, NetBSD. Extensive and transparent validation suite. Compiles and runs well-known open source projects — GNU core- and binutils, Curl, Git, Ngi

Automate compile_flags for C/C++ projects on the Zig build system

When using Zig’s build system for C/C++ projects, editors struggle to find include paths and provide proper code intelligence. compile_flagz solves this by automatically generating compile_flags.txt from your build.zig configuration. The Problem Recently I’ve been working on ROLLER, a decompilation project for the 1995 game, Fatal Racing (or Whiplash in NA). The game (known internally as Roller), is an early 3D game written in C with a bespoke engine. It also happens to be one of my favourite

Compiling Dinner

Compiling Dinner When you read a recipe, you’re already programming. Ingredients are inputs. Actions—chop, stir, simmer—are instructions. The kitchen is your runtime environment, and you, the cook, are the processor. If you follow the recipe to the letter, you get the expected output: a finished dish. Miss a step, and you’ve introduced a bug. Burn the onions, and you’ve hit a runtime error. Seen this way, recipes are languages, and cooking is compilation. ⸻ Recipes as Grammar A recipe might

Undefined Behavior in C and C++ (2024)

Undefined behavior in C and C++ Photo by Jonathan Kemper on Unsplash What is undefined behavior? February 3, 2024Working in C or C++ requires some awareness of: what it is, what its effects are, and how to avoid tripping over it. For simplicity, I will just talk about C, but everything in this article also applies to C++ except where otherwise noted.It is, generally speaking, more difficult to program in C than in the likes of Python. In some ways, that's because C is a lower-level language,

Undefined Behavior in C and C++

Undefined behavior in C and C++ Photo by Jonathan Kemper on Unsplash What is undefined behavior? February 3, 2024Working in C or C++ requires some awareness of: what it is, what its effects are, and how to avoid tripping over it. For simplicity, I will just talk about C, but everything in this article also applies to C++ except where otherwise noted.It is, generally speaking, more difficult to program in C than in the likes of Python. In some ways, that's because C is a lower-level language,

My Ideal Array Language

2025-07-20 What do I think the ideal array language should look like? The fundamental units of computation available to users today are not the same as they were 20 years ago. When users had at most a few cores on a single CPU, it made complete sense that every program was written with the assumption that it would only run on a single core. Even in a high-performance computing (HPC) context, the default mode of parallelism was (for a long time) the Message Passing Interface (MPI), which is a

C++: "model of the hardware" vs. "model of the compiler" (2018)

Author: “No Bugs” Hare Follow: Job Title: Sarcastic Architect Hobbies: Thinking Aloud, Arguing with Managers, Annoying HRs, Calling a Spade a Spade, Keeping Tongue in Cheek Recently, I have run into [P1063R0], and was literally stunned with a way those guys (mis)interpret certain fundamental aspects of C++ philosophy. By today, I found what I don’t like about their position – and am able to articulate it, so here it goes. Disclaimer: THIS POST IS SPECIFICALLY ABOUT C++; other programming la

Seed7 – The Extensible Programming Language

Welcome to the Seed7 Homepage Seed7 is a general purpose programming language designed by Thomas Mertes. It is a higher level language compared to Ada, C/C++ and Java. The Seed7 interpreter and the example programs are open-source software. There is also an open-source Seed7 compiler. The compiler translates Seed7 programs to C programs which are subsequently compiled to machine code. In Seed7 new statements and operators can be declared easily. Functions with type results and type parameters

New Aarch64 Back End

This page contains a curated list of recent changes to main branch Zig. Also available as an RSS feed. This page contains entries for the year 2025. Other years are available in the Devlog archive page. July 23, 2025 New Aarch64 Backend Author: Andrew Kelley & Jacob Young Jacob upstreamed his new backend yesterday. 275 src/codegen/aarch64/Mir.zig 138 src/codegen/aarch64/abi.zig 11799 src/codegen/aarch64/encoding.zig 10981 src/codegen/aarch64/Select.zig 905 src/codegen/aarch64/Disassemble.zig

Working through 'Writing A C Compiler'

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 Compiler | No Starch Press I decided to work my way through it. I plan to do blog posts as I progress through it, probably chapter by chapter. I have emailed the author a couple of times and have got helpful timely replies! – thank you What makes the book so good? Step by step By the end of chapter

Berry Script: lightweight embedded scripting language for microcontrollers

What is it ? Berry is a ultra-lightweight dynamically typed embedded scripting language. It is designed for lower-performance embedded devices. The Berry interpreter-core's code size is less than 40KiB and can run on less than 4KiB heap (on ARM Cortex M4 CPU, Thumb ISA and ARMCC compiler). The interpreter of Berry include a one-pass compiler and register-based VM, all the code is written in ANSI C99. In Berry not every type is a class object. Some simple value types, such as int, real, boolean

Building the Rust Compiler with GCC

Bootstrapping Rust with GCC 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. This summer, I am taking on quite a large task: bootstrapping the Rust compiler using `cg_gcc` What does that mean? "bootstrapping" is simply a name given to the Rust compiler build process. So, what I am really trying to do is build a Rust compiler, without using LLVM - and using GCC

The messy reality of SIMD (vector) functions

We’ve discussed SIMD and vectorization extensively on this blog, and it was only a matter of time before SIMD (or vector) functions came up. In this post, we explore what SIMD functions are, when they are useful, and how to declare and use them effectively. A SIMD function is a function that processes more than one piece of data. Take for example a mathematical sin function: double sin(double angle); This function takes one double and returns one double. The vector version that processes four

LLMs as Compilers

LLMs as compilers 7/2/2025 by Kadhir So far, I've only used LLMs as an assistant, where I'm doing something, and an LLM helps me along the way. Code autocomplete feels like a great example of how useful it can be when it gets it right. I don't doubt that over time this will improve, but I'm excited to see a more significant transition from this assistant mode to a compiler mode, at least for coding. It will be exciting when we focus solely on the context we fed the LLM, then test the features

WebAssembly Troubles part 4: Microwasm (2019)

WebAssembly Troubles part 4: Microwasm Preamble This is the final part of a 4-part miniseries on issues with WebAssembly and proposals to fix them. Part 1 here, part 2 here, part 3 here. This article assumes some familiarity with virtual machines, compilers and WebAssembly, but I’ll try to link to relevant information where necessary so even if you’re not you can follow along. Also, this series is going to come off as if I dislike WebAssembly. I love WebAssembly! I wrote a whole article about h

Whitesmiths C compiler: One of the earliest commercial C compilers available

Whitesmiths, Ltd. C Compiler Background The original Whitesmiths compiler was released in 1978 and compiled a version of C similar to that accepted by Version 6 Unix. It was an entirely new implementation, borrowing no code from Unix. When Whitesmiths released version 3.0 of its C compiler in 1985 it supported the emerging ANSI C standard. The Whitesmiths compiler had code generators for DEC PDP-11, Intel 8080/Zilog Z80, Intel 8086, Motorola MC68000, DEC VAX-11, IBM System/370 and IBM System

Compiler for the B Programming Language

B Programming Language Warning Compiler is not fully implemented yet. Logo by Strawberry 🍓 Compiler for the B Programming Language implemented in Crust Dependencies Rust - the compiler is written in it; fasm - used as the compiler backend; Quick Start $ make $ ./build/b -run ./examples/hello_world.b Also check out more examples at ./examples/. Testing The project comes with btest utility which tests the B compiler. It is built automatically along with the B compiler when you do make .

Literate programming tool for any language

Literate What is Literate programming? Literate programming is a style of programming invented by Donald Knuth, where the main idea is that a program's source code is made primarily to be read and understood by other people, and secondarily to be executed by the computer. This frees the programmer from the structure of a program imposed by the computer and means that the programmer can develop programs in the order of the flow of their thoughts. A Literate program generally consists of expla

I Wrote a Compiler

I have a Computer Science degree. I attended a whole course of lectures on compilers (and have a certain fondness for “the red dragon book” as a result). However, I had never actually written a compiler from start to finish until a rainy day last weekend. Yes, this is what I do for fun. I wanted to make a compiler for a real language, but a simple one so I could complete the project in a few hours. I’ve always had a bit of a soft spot for BASIC - it’s the first progamming language I learned as

Using `make` to compile C programs

I have never been a C programmer but every so often I need to compile a C/C++ program from source. This has been kind of a struggle for me: for a long time, my approach was basically “install the dependencies, run make , if it doesn’t work, either try to find a binary someone has compiled or give up”. “Hope someone else has compiled it” worked pretty well when I was running Linux but since I’ve been using a Mac for the last couple of years I’ve been running into more situations where I have to

Rust compiler performance

Perhaps the most often repeated complaint about Rust is its slow feedback loop and long compilation times. I hear about it all the time; in Rust podcasts, blog posts, surveys, conference talks or offline discussions. I also regularly complain about it, being a Rust user myself! Recently, in addition to the usual compile times complaints, I also started noticing the following sentiments being expressed by frustrated Rust developers: “Why doesn’t the Rust Project care more about this pressing and

TinyCompiler: A compiler in a week-end

TinyCompiler: a compiler in a week-end Introduction Have you ever wondered how a compiler works, but you never found courage to find out? Then this series of articles is for you. I have never had the chance to look under the hood either, but one week-end I have decided to to write a translator from the esoteric programming language wend (short for week-end), which I just invented myself, into regular GNU assembly. The goal is to keep the code as tiny as possible, 500-ish lines of python sounds