Mesh
v0.1.8 Release notes

Write a server.
Ship a fleet.

Mesh is a compiled, statically typed language with actors built in and clustering in the runtime. Mark the work that can run anywhere; Mesh handles placement, routing, and failover.

Get started
curl -sSf https://meshlang.dev/install.sh | sh
Native
LLVM-compiled binaries
Typed
Hindley–Milner inference
Concurrent
Actors and supervisors
Distributed
Clustering in the runtime
main.mplmesh
pub fn hello(request :: Request) -> Response do
  case Request.param(request, "name") do
    Some(name) -> HTTP.response(200, json { hello: name })
    None -> HTTP.response(400, "missing name")
  end
end

fn main() do
  let router = HTTP.router()
    # the runtime decides which node runs it
    |> HTTP.on_get("/hello/:name", HTTP.clustered(hello))

  case Node.start_from_env() do
    Ok(_) -> HTTP.serve(router, 8080)
    Err(reason) -> println("boot failed: #{reason}")
  end
end

Distribution

Keep orchestration out of your handlers.

Handlers declare what may run on the cluster. The runtime owns placement, routing, and continuity, so a lost node is its problem, not your code's.

healthy · 3/3 nodes
ingressload balancernode-1leadernode-2node-3

Illustrative. Real recovery depends on quorum, replicas, and your continuity policy.

Standard library

Server primitives, included.

HTTP, WebSockets, Postgres, SQLite, JSON, jobs, and a test runner ship with the toolchain. No framework to pick first.

Browse the standard library →
actor counter(total :: Int) do
  receive do
    amount -> counter(total + amount)
  end
end

fn main() do
  let pid = spawn(counter, 0) # Pid<Int>
  send(pid, 5)
  send(pid, "five") # compile error: expected Int, found String
end
services/counter.mplActors guide →

Performance

Native speed, measured.

One minimal HTTP endpoint on dedicated 2 vCPU machines, 100 connections. A benchmark, not a promise about your app.

Read the methodology →
Requests per second and latency for GET /text
Languagerequests / sp50p99
Rust
46.2k
2.064.55
Go
30.3k
2.958.51
Mesh
29.1k
2.7716.94
Elixir
12.4k
6.7425.14
GET /text · latency in ms · 5 × 30 s runs after warmup, first run excluded

Start building.

One script installs the meshc compiler and the meshpkg package manager.

macOS and Linux
curl -sSf https://meshlang.dev/install.sh | sh
Windows (PowerShell)
irm https://meshlang.dev/install.ps1 | iex