A programming language in the open

Scientific-first. General-purpose. Native by design.

Ostrin checks units, state and intent before a program runs, and compiles the same code to native C and WebAssembly. Every result on this page is computed by the real compiler.

Release status is loading…

.ostrinnative C + WASIMIT licensed

          
✓ Recorded output:

Scientific Lab

Change a parameter. Ostrin recomputes it.

Twelve programs from the repository, running on the compiler built for WebAssembly. Each shows its source, a Run button, where the result comes from and what is not supported yet. Copy a link to share the selected demo and its parameters.

The Lab needs JavaScript to run the compiler. Recorded outputs are also in the Cookbook.

Visualization

Figures drawn by the language, not by a plugin.

std.viz is written in Ostrin: axes, legends, contours, 3D projection and shading run in the same interpreter, native binary or browser compiler as your analysis, and produce the same SVG bytes in all three.

Shaded 3D surface of peaks(x, y) rendered by std.viz
examples/viz_surface.ostrin
Heatmap with contour lines rendered by std.viz
examples/viz_heatmap.ostrin
Lorenz attractor trajectory rendered by std.viz
examples/viz_lorenz.ostrin

Scientific artifacts

Explore, inspect and export the result.

The browser is part of the workflow: open a shareable figure, scrub an animation, inspect a table or export a reproducible artifact. Each tile opens the real Ostrin program behind it.

Playground

Write your own program.

Edit a program, check it and run it in your browser with the same compiler-backed WebAssembly playground used by the full tool.

main.ostrin
output
Loading the compiler…

Real Ostrin compiler · runs locally in your browser · open the full playground →

design specifications
source programs in the repository
+ integration + differential tests
.ostrinsource file extension

What exists today

Every claim links to its evidence.

These capabilities are in the current compiler. Each card points to the programs and tests that exercise them.

arrays + quantities

Numbers that keep their meaning

Array<T> with broadcasting, masks, @, statistics and linear algebra, next to Quantity<D> values whose dimensions are checked before execution.

scientific packages · experimental

Packages written in Ostrin

A minimal DataFrame (tables), SVG charts (plot) and forward-mode derivatives (autodiff), consumed as local path dependencies with lockfiles.

editor

VS Code, LSP and DAP

A persistent language server (--lsp) for diagnostics, hover, completion, references and rename, and a debug adapter (--dap) for breakpoints and stepping. The extension ships as a local VSIX.

not yet

Planned, not shipped

GPU execution, reverse-mode autodiff, networking, a public package registry and package-manager installers are not part of the current release. They stay on the roadmap until they exist.

Source → HIR → IR → C

See what the compiler does with one function.

The real output of each stage for examples/lab_pipeline.ostrin, recorded when the site was built. The program prints .

The premise

A type system should remember what a value means.

Ostrin is for software where a wrong value can be more dangerous than a wrong number. The language makes the domain visible before the program runs.

01

Dimensions are types

Lengths, times and derived quantities are checked before execution. A meter is not just a number with a comment beside it.

5 m + 2 s → error
02

Mutation is visible

Values are immutable by default. When state changes, the binding says so. Sharing and concurrency start from an explicit baseline.

mut counter = 0
03

Errors have a shape

Option, Result and exhaustive match keep failure states in the model instead of hiding them in control flow.

try parse(input)

Where to go next

Learn it, look it up, build with it.

Ostrin logo

Follow the work

Read the decisions.
Run the examples.