Introducing Sounio
We’re excited to announce Sounio, a new programming language designed from the ground up for epistemic computing—programs that know what they don’t know.
Why Sounio?
Modern scientific computing faces a fundamental problem: our tools treat all values as exact, when in reality, measurement uncertainty is pervasive. A temperature reading of 23.5°C from a sensor isn’t exact—it might be 23.5 ± 0.2°C with 95% confidence.
Sounio makes uncertainty a first-class concept:
let temp: Knowledge<°C> = measure(
value: 23.5,
uncertainty: 0.2,
source: "sensor_001"
)
// Uncertainty propagates automatically through calculations
let temp_f = temp * 1.8 + 32.0 // Still tracks uncertainty!
Key Features
Epistemic Types
The Knowledge<T> type wraps any value with its uncertainty, provenance, and confidence level. When you combine knowledge values, uncertainty propagates according to GUM (Guide to the Expression of Uncertainty in Measurement) standards.
Algebraic Effects
Side effects are tracked in the type system. Every function declares what effects it needs:
fn read_config() -> Config with IO, Fail {
let content = perform IO::read("config.toml")?
parse_toml(content)?
}
Units of Measure
Type-safe dimensional analysis prevents unit errors at compile time:
let distance: km = 42.195
let time: h = 2.5
let speed: km/h = distance / time // Type-checked!
Get Started
Visit our Getting Started guide or try Sounio in the interactive playground.
The Sounio Team