Osy#betaa language · its runtime Osyrin · a hosted platform
Why Osy#Built for agentsAgents as declarationsWorkflows that waitRuns exactly onceSecure by defaultNothing to mockThe editor is the compilerUI in the languageDocuments are dataOne program

Reference

Types

19 pages.

Every type, in one list

The complete vocabulary of built-in types — the scalars you can store, the collections, the two callable spellings (`Action` and `Func`), and the…

Types

The values your app computes with, and the declarations that name and scope them. Most scalar types are exactly C#'s — int, long, double, string…

Bitwise operators

`&`, `|`, `^`, `~`, `<<` and `>>` work on `int`, with C#'s meanings and C#'s precedence. Unlike `+`, `-`, `*` and `/`, they do not raise on overflow…

Constant expressions

Some places take a value that must be known at compile time — an attribute argument, a config setting, a workflow message. Adjacent string literals…

DateOnly and TimeOnly

`DateOnly` is a calendar date (no time); `TimeOnly` is a time of day (no date) — the C# types. Build them with `new DateOnly(y, m, d)` / `new…

DateTime

A date and time. It is a wall-clock value, not an instant on a timeline, so it is never shifted by anybody's timezone. Reading its parts and doing…

Json

A member that holds a JSON document — an object, an array, or any value. It is stored as real jsonb, and written and read through JsonSerializer, so…

Markdown

A member that holds a markdown document. You read and write it as ordinary text, but it is stored as a list of sections split on its headings, so a…

Optional and required members

A member is required or optional by how you spell its type. A bare value type with a natural zero reads that zero; a bare value-shaped type with no…

TimeSpan (durations)

`TimeSpan` is the duration type — a length of time, as in C#. Build one with the `TimeSpan.FromX` factories or `new TimeSpan(…)`, read…

TimeSpan, DateOnly, TimeOnly

A duration, a bare date, and a bare time of day. Subtracting two DateTimes gives a TimeSpan; adding one back gives a DateTime. All three are exact…

When your name is already the platform's

The platform puts 82 ordinary English words in scope in every app with no `using` — `Slot`, `Group`, `Match`, `Point`, `Month`, `Now`, `Uri`…

char

A single character, written in single quotes. It is what you get from `s[0]` and from iterating a string, and it is the argument the `char.*`…

decimal

Exact base-10 arithmetic, for money and anything else where a fraction of a cent matters. It behaves identically whether your code runs on the server…

long

A 64-bit whole number, exact to its full range — ids, sequence numbers, row versions, byte offsets. It holds the same value whether your code runs on…

namespace

Declares the namespace a file's types belong to, written once at the top of the file. It is optional — a file without one puts its types in the…

string literals — ordinary, verbatim and raw

Three ways to write a string, all of them C#'s. The ordinary form processes escapes. The verbatim form (`@"…"`) processes none and may span lines…

type visibility (public / internal)

A top-level type carries a public or internal visibility that decides whether code outside its namespace can name it. The default depends on what you…

use

Declares a capability your app depends on, written inside the `app { }` manifest block. It provisions the capability (its tables and types become…