Distributed Application Programming Language

Ritchie

Multiple Components,
One Application

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

hello.riRitchie
$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 {u.name()}"
        }
    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.

ZeroCodeChanges*

WHEN

  • You scale from a monolith to isolated processes, a Kubernetes cluster, or multiple clusters
  • You grow from one developer to one team to one team per module
  • You migrate from one cloud to another
  • The Ritchie runtime adopts a newer architecture
*

Error rates and latency may vary.