SCUA

News

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, economies, live-ops tooling.

money is a first-class value type that carries its currency. You write a literal as an amount and an ISO code, 19.99 USD or 500 JPY, and the amount is exact: it rides the decimal engine, never a float, so a ledger cannot drift by a fraction of a cent. The arithmetic is dimensional. Adding money to money requires the same currency, multiplying money by a number is a quantity or a rate, and dividing money by money gives you a plain ratio. Adding a bare number to money or multiplying two amounts is a compile-time error with a clear message.

frame is a small columnar data table you query with method chains:

let sales = frame({
  region = ["EU", "US", "EU"],
  net    = [10.50d, 20.00d, 5.25d],
})
print(sales.filter(region == "EU").total("net"))   -- 15.75, exactly

Decimal columns total exactly, so the number a tool prints is the number the books show. Think of it as a spreadsheet that lives in the language, which is what most live-ops questions turn out to need.