Distributed Application Programming Language

Ritchie

Multiple Components,
One Application

Ritchie is a programming language for stateful cloud-native enterprise applications. Stop assembing servers, start composing functionality.

hello.rscRitchie
$User {
unique String name
}

$User.name() -> String {
return self.name
}

@Greeter { }

@Greeter.sayHello(String toWhom) -> String {
$User u = $User[name: toWhom]
else create $User{} then {
return f"Hello new user {toWhom}"
}
return f"Hello registered user {u.name()}"
}

First class support for distributed concepts.

Ritchie gives the compiler a semantic view of the application: which work is local, which state persists, which operations cross a boundary, which reads are published, and which failures callers can recover from.

@T

Services

Stateless, networked application operations.

$T

Entities

Durable identity and transactional state.

%T

Projections

Read-only rows over committed state.

T~>

Streams

Continuous facts and subscriptions.

T!

Errors

Typed, recoverable domain outcomes.

Less Integration. More Program.

01 / DEVELOPMENT

First-Class Distributed Application Concepts

Execution boundaries, durable state, derived reads, event flow and recoverable failures in the source code — not just in an architecture diagram assembled from conventions.

02 / OPERATIONS

Clean Hand-Off Across Engineering Disciplines

Software, reliability, database and data engineering work against the same application structure rather than integrating between disconnected tools and models.

03 / DESIGN

DDD as Language Semantics

Ownership, behaviour, bounded contexts and invariants become compiler-enforced rules instead of conventions followed by framework discipline and runtime discovery.