September 2026
SCUA 0.30.0 is out (September 28, 2026)
With --io=async, network calls in SCUA 0.30.0 now wait at the same time, so four queries on four pooled connections come back in the time of one. Scripts…
Read more →
New ways to write Results and records (September 28, 2026)
SCUA 0.30.0 adds r matches Ok and r matches Error, which answer true or false for whether a Result succeeded. It also makes as(value, Record) the way to…
Read more →
SCUA 0.29.0 is out (September 25, 2026)
A partition now works through several messages in a turn, so one partition collecting from twenty others handles a million messages in about 0.4 seconds.…
Read more →
SCUA 0.28.0 is out (September 23, 2026)
A running actor can now be saved to bytes from a script and brought back later, with its state intact and the same identity it had before. This release…
Read more →
Non-blocking I/O with no async, no await (September 20, 2026)
Overlapping I/O usually costs you the colour of every function that touches it. One call goes async, so its caller must await, so that caller goes async…
Read more →
SCUA moves a live player between machines (September 20, 2026)
A player's session is a live thing: their inventory, where they are, the half-finished trade, the request they are waiting on. Moving that to another…
Read more →
Data tables you can do real work with (September 17, 2026)
SCUA has had a frame since 0.12.0: named columns, exact decimal money, and a query pipeline you write as method chains. What it could do was total a…
Read more →
SCUA 0.27.0 is out (September 17, 2026)
A frame can now answer the questions you ask a spreadsheet. describe() summarises every numeric column, value_counts() counts a text one, and group_by()…
Read more →
SCUA 0.26.0 is out (September 15, 2026)
A library written in SCUA now keeps its own names. An enum declared in a module is that module's type, two libraries can each declare a record Item with a…
Read more →
SCUA scripts can now call native libraries directly (September 13, 2026)
A SCUA script can open a compiled library on the machine, describe one of its functions, and call it. Nobody writes a wrapper per function, in C or in…
Read more →
The JIT is on by default in SCUA 0.25.0 (September 13, 2026)
Running scua app.scua now compiles hot loops and functions to native code as they warm up. You no longer pass --jit=on. A program that spends its time in…
Read more →
SCUA 0.24.0 is out (September 8, 2026)
A SCUA tool's output is now safe for another program to parse. A log line can no longer land in the middle of a result and break whatever is reading it…
Read more →
Huge gains in JIT performance this week (September 6, 2026)
Recursive code, of the ordinary kinds people write, now runs as fast under the JIT as the same thing written as a loop. That covers a function that calls…
Read more →
SCUA can now read a file of any size (September 2, 2026)
SCUA reads a file of any size in a fixed amount of memory. Counting the lines in a 124 MB log takes about 11 MB, and that figure stays flat as the file…
Read more →
SCUA 0.21.0 is out (September 2, 2026)
SCUA can now read and write a file of any size. fs.open gives you a handle you pull a file through a line or a block at a time, so the memory you need is…
Read more →
August 2026
Thirteen languages for dates, weekdays and money (August 31, 2026)
t.format("D MMM YYYY") gives 3 Jun 2024. Under fr_FR it gives 3 juin 2024, and under de_DE, 3 Juni 2024. Month and weekday names shipped in 0.20.0, in…
Read more →
SCUA can now exec (August 31, 2026)
An agent that can read files, call an API and write a report still cannot run the build it just fixed. As of 0.20.0 it can. exec starts other programs…
Read more →
SCUA 0.20.0 is out (August 31, 2026)
SCUA can now exec. exec starts git, a build, a test suite, or whatever an agent just decided to run, streams the output as it arrives, and takes the whole…
Read more →
SCUA 0.19.1 is out (August 29, 2026)
A fix for one bug in 0.19.0, found within hours of release by someone building a compression library on it.
Read more →
SCUA 0.19.0 is out (August 29, 2026)
Six packages got built on SCUA this month, and the authors sent back a list of everything that got in their way. Most of this release is that list.
Read more →
SCUA 0.18.0 is out (August 26, 2026)
The biggest release since the JIT. You can run low-trust code in a sandbox, enum values say what they are instead of printing as numbers, and a saved…
Read more →
Reading a .env file (August 21, 2026)
--env-file=.env loads one and grants env for exactly the names in it.
Read more →
Permissions in a file (August 21, 2026)
A sandboxed run can be described by a row of flags:
Read more →
All of TOML (August 21, 2026)
toml.parse reads TOML 1.0 in full, and toml.encode writes it. Arrays, floats, inline tables, dotted keys, arrays of tables and the four date and time…
Read more →
Sixteen packages, and what they let you build (August 21, 2026)
A language is worth using when the ordinary things are already there. SCUA's standard library stops at a deliberate boundary: capabilities, data, text…
Read more →
SCUA 0.17.0 is out (August 21, 2026)
Two days after 0.16.0, and a bigger release than that gap suggests. You can talk to the person at the keyboard, the type checker now reaches into the…
Read more →
How the package manager actually works (August 20, 2026)
There is a deck for this now, and a longer one specifically about the package manager: The SCUA package manager. This post is the written version of the…
Read more →
Asking the user a question (August 20, 2026)
SCUA can prompt someone and read what they type back. That is what an installer needs, or a CLI tool, or anything that asks before it deletes.
Read more →
SCUA 0.16.0 is out (August 19, 2026)
This release is about making clusters something you can rely on under real conditions, and it comes out of running one properly rather than reasoning…
Read more →
SCUA 0.15.0 is out (August 18, 2026)
Two things got most of the work in this release: the HTTP client, and running a project that has dependencies.
Read more →
Where the package manager stands (August 12, 2026)
Three weeks after we announced it, an update on scua-pkg, because it crossed a real line this week: every verb in the spec's table is now implemented…
Read more →
SCUA 0.14.0 is out (August 12, 2026)
A month of work in one release, and the widest one yet. Signed and notarized builds for macOS and both Linux architectures are up, with checksums.
Read more →
Your own modules can park (August 11, 2026)
Yesterday's hibernation post showed a session frozen mid-call on a slow request. Today the other shoe: that call can be your own.
Read more →
Sessions hibernate now, even mid-call (August 11, 2026)
An agent conversation spends almost all of its life waiting: for the next message, or for a model to finish thinking. Keeping a warm process alive per…
Read more →
Entity code now runs at full JIT speed (August 10, 2026)
The natural way to write game entities is a list of records: es[i].x = es[i].x + 1 over an array of { x, y, vx, vy } things. Until this week that natural…
Read more →
Arrays went unboxed, automatically (August 10, 2026)
Plain arrays of numbers now store their elements unboxed. An array that has only ever held integers, or only floats, keeps them in a packed 8-byte layout…
Read more →
A week spent chasing LuaJIT (August 9, 2026)
Most of this week went into the JIT, and the short version is that the chase got close enough to describe without ratios doing the heavy lifting.
Read more →
The interpreter caught Lua (August 7, 2026)
A milestone we have been chasing quietly for weeks: on our benchmark suite, the plain SCUA interpreter now beats the Lua 5.4 interpreter on the overall…
Read more →
July 2026
scua init, and a debugger that follows imports (July 30, 2026)
Starting a project now takes one command. scua init myproject writes a runnable starter: a main.scua that reads sys.args(), a module it imports, a test…
Read more →
Config that syncs across a cluster (July 22, 2026)
First, the problem, because it shapes half of what SCUA is for. A live game runs on config: drop rates, feature flags, event schedules, graphics tiers…
Read more →
One-shot tools for AI agents (July 20, 2026)
A growing amount of SCUA's design attention goes to a specific shape of program: the one-shot tool an AI agent calls. Read arguments, do one job, print…
Read more →
We are building a package manager (July 18, 2026)
SCUA is getting a package manager, and this week the decisions got made and the first working core got built. The design has strong opinions, so it…
Read more →
The JIT now speaks x86-64 (July 17, 2026)
The 0.12.0 JIT compiled hot loops on ARM64. As of 0.13.0 it does the same on x86-64, on macOS and Linux, which between them covers Apple silicon, the…
Read more →
A regex engine that cannot blow up (July 16, 2026)
0.13.0 added a regex module, and we wrote the engine ourselves. That is normally a bad idea, so here is the reasoning.
Read more →
The serve loop learned to overlap connections (July 15, 2026)
We put http.serve on the bench this week and found it serving one connection at a time. Every connection got a correct answer, and every connection waited…
Read more →
SCUA can be the server (July 14, 2026)
Until now SCUA made requests. As of 0.13.0 it can answer them:
Read more →
SCUA 0.13.0 is out (July 13, 2026)
One week after 0.12.0, this release is about talking to the world. The features have their own posts coming; the short list:
Read more →
UDP datagrams, as their own capability (July 12, 2026)
SCUA can now send and receive datagrams. udp.connect(host, port) opens a socket locked to one peer; send and receive are ordinary calls on it.
Read more →
Non-blocking I/O without async or await (July 10, 2026)
By default, SCUA I/O blocks. That is the right default for scripts and tools: simple, predictable, done. But a server or a host with its own event loop…
Read more →
Six geometry shapes, built in (July 9, 2026)
0.12.0 added rect, aabox, sphere, capsule, ray, and plane as proper value types, joining the vectors, matrices, and quaternions that were already in the…
Read more →
Exact money, and a data table you can query (July 8, 2026)
Two features from 0.12.0 deserve a closer look, because together they make SCUA a good language for the unglamorous work around a game: reports…
Read more →
SCUA 0.12.0 ships an optional JIT (July 6, 2026)
The headline of 0.12.0 is a just-in-time compiler. Run any script with --jit=on and hot loops compile to native ARM64 machine code while the rest of the…
Read more →