Osy#betaRun it on Osyrin: osyrin.com

Reference

Project

21 pages.

Compiler bug reports (what is asked, what is sent, and what Osyrin keeps)

When the Osy# compiler hits a bug of its own — a crash, or a rule it broke about itself, never an error in your code — `osy validate`, `compile`…

Deploying while workflows are running

A workflow run can outlive the deploy that started it. Deploying with --new-version freezes the code and data shape the running app has, so runs…

Hosting an Osy# app

You never set up a database. You never started a web server. That wasn't a step we skipped — it's the product. Your app is two things and you only…

How an Osy# app works (the execution model)

Read this before you write anything. An Osy# app is ONE model — you do not build an API for it, and you do not write the layers you are probably…

Moving an entity onto a base, with its rows

When an entity you already have becomes a subtype of a base — your own, or a kit's — its rows become the base's rows with the same ids, so everything…

Moving runs onto the version you just deployed

Deploying a new version does not move the runs already in flight — they keep executing the version they started under. migrate moves them forward…

Osyrin, the runtime

Osy# is the language. Osyrin is the runtime it executes on, and it is the half of your app you did not write. This is what it holds itself to — six…

Renaming and removing things that hold data

Renaming an entity or property, and removing one, are changes to something that already holds rows. Say what you meant in a migration and the rename…

Running a function when a version deploys

A migration can run a function of the version it deploys, once, inside the deploy, after the schema change — the data change no schema verb can say…

Stopping runs after a bad deploy

A workflow run keeps executing the version it started under, which is exactly what you want until that version is the problem. cancel-runs stops…

Usage statistics (what is sent, and the three random ids — one per installation, project and session)

The toolchain sends usage counts — command names and their flag names, versions, OS, error codes, durations, the size of an answer and whether a…

Where your app may connect — the .egress file

An application's own outbound allow-list and deny-list, kept in the project's .egress file. The osy egress verbs edit it; a local compile applies it…

Bridges — a package that arrives when an app uses the two it completes

A bridge is a package whose manifest says `completes A@0, B@0;`. An app that uses every package it completes gets it without writing a `use` line:…

Contracts between kits — an interface in a package, and its version

A kit that needs something done declares an ordinary public interface; another kit implements it; the app picks one in a setting. A member added with…

Retired forms — deprecated from a version, and how a deployed app keeps rebuilding

When the platform or a kit retires a spelling, new source that writes it is refused, naming what replaced it. An app that is already deployed keeps…

app.osy

The manifest at the root of every project. It names the app, says which files are model, seed, migrations and tests, and declares the capabilities…

internal — a member only its own package may call

A function, a class member or a contract member declared internal is callable only from the package that declares it. Any package may implement a…

minPlatform — the oldest platform an app runs on

The oldest platform release your app may be built and run on, as the first line of app.osy. osy init writes it, osy compile and osy deploy say when…

package.osy

The manifest that makes a git repository a publishable Osy# package. It names the package, says which of the repository's files actually ship…

project layout

The shape of an Osy# project — a manifest at the root, and folders for model, seed, migrations and tests. What you put where decides what gets…

where a secret may be sent — secretIn

A secret may end only at a sink: a request header, the key of a signing call, the mTLS certificate — or a URL query parameter or request-body field…