I will begin with a "Doh!". I had not realized my VS Code Markdown → Substack's terrible editor was dropping links that I decorated with <code>
blocks (I'll go back and add URLs to all the previous links that were dropped later this week).
Zig
I wanted to mention "Bun" today (it's in the next section), and it's based on Zig [GH], so I felt compelled to talk about Zig first.
Zig is "a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software." It is presently so niche that it doesn't show up on the TIBOE Index. (TIOBE's company name stands for "The Importance Of Being Earnest", and their regularly maintained index is an indicator of the popularity of programming languages.)
This is the quintessential "Hello, World" in Zig:
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, {s}!\n", .{"World"});
}
And, the above is somewhat of a fib as Zig can compile C/C++ programs just fine. In fact, zig cc -o hello-zig hello.c
(hello.c
being the quintessential "Hello, World" in C) generates a 3,864 byte binary (doing that on Linux for now as Zig doesn't seem to like my combination of a beta macOS and arm64 chip), whereas the clang
version, with many command line options set for super optimal compilation, gets it down to only 14,360 bytes (I'm sure some readers can do better than that). Zig can do this magic as it ships with LLVM, so the Zig herders also know more about tweaking command line optimization parameters per-architecture than I do.
Zig has built-in compilation caching, so you don't need icky Makefiles or resort to adding a ccache dependency to your projects just to save some time. Note that if you still use Makefiles, make CC="zig cc" CXX="zig c++"
will get you free optimizations out of the box.
Zig has no hidden control flow, no hidden memory allocations, no preprocessor, and no macros. That essentially means what you see is what's being executed. Programming languages like Rust have macros and operator overloading. Other languages have exceptions which may prevent subsequent code lines from executing.
Zig also has (optional) runtime safety checks. These slow things down a bit, but give your code some safety guarantees.
I'll stop there, for now, since this isn't "The Zig Newsletter" and y'all are more than capable of learning more about Zig independently.
R folks can also check out the legendary Dirk Schumacher's (@dirk_sch) Zig + R experiment to see how Zig and C/C++ code work together.
Bun
With the Zig intro out of the way, meet Bun [GH], a "fast all-in-one JavaScript runtime". The Bun bakers did a fine job introducing it, so here that is in their own words:
Bun is a modern JavaScript runtime like Node or Deno. It was built from scratch to focus on three main things:
Start fast (it has the edge in mind).
New levels of performance (extending JavaScriptCore, the engine).
Being a great and complete tool (bundler, transpiler, package manager).
Bun is designed as a drop-in replacement for your current JavaScript & TypeScript apps or scripts — on your local computer, server or on the edge. Bun natively implements hundreds of Node.js and Web APIs, including ~90% of Node-API functions (native modules), fs, path, Buffer and more.
The goal of Bun is to run most of the worlds JavaScript outside of browsers, bringing performance and complexity enhancements to your future infrastructure, as well as developer productivity through better, simpler tooling.
Bun is based on JavaScriptCore (JSC) engine, which is used by Apple's WebKit framework (which powers Safari) vs V8 (which powers Chrome & Node.js). Using JSC saves ~160ms every time the interpreter is launched, and leaves Node's package manager (npm) in the dust.
Bun:
does some very clever things to speedup executions (like a binary hashtable dependency database)
comes with its own bundler (
bun bun
)serves 2.5x as many web requests-per-second (via
Bun.serve()
than Node 16'srequire("http").createServer()
)ships with built-in support for SQLite
has a lower-overhead (and, IMO, easier to use) foreign function interface for calling code from other languages
and much, much more.
I intend to switch out all my Node/npm projects to Bun over the summer and encourage others to do so as well. Monoliths kinda suck, and the JavaScript ecosystem needs all the shake-up it can get.
Carbonated Dust

You may not remember the Chelyabinsk meteor explosion over Chelyabinsk Oblast back in 2013. I mean, that was, like, a century ago in the "before times".
That ~20 meter, ~12K ton superbolide hit the Earth's atmosphere at 42,690 mph. The explosion was brighter than Sol and made headlines. It also left quite a bit of space rock/dust debris on the ground. You can read more about the event at EarthSky, where Deborah Byrd (the ES editor) commemorated the 9-year anniversary of the event back in February of this year.
Researchers have been poking at said debris since the event, and TU Darmstadt researcher Oliver Gutfleisch and colleagues recently found micrometer-sized, never-seen-before carbon microcrystals in the Chelyabinsk dust. They were able to study said dust thanks to snowfall capturing it in the atmosphere and gently dropping it down to land.
The link in the previous ❡ is a great read, so I’ll, again, save you from more blatherings by me. The team also has a paper on the find, and you can read yet-another article on the discovery over at Live Science.
FIN
Make sure to patch all your projects that depend on OpenSSL! ☮
I wasn’t At the Creation of JavaScript when I ran my first web server on the first release of Netscape’s commercial line. I saw that its purpose was to offload CGI calls and two-way traffic from the server to the client. It’s amazing how it survived over a quarter century of Moore’s law and three orders of magnitude change in connectivity rates.