v0.1.1 — Early preview

Object-oriented.
Clean by design.

Sapphire is a Ruby-inspired programming language with gradual typing, first-class blocks, and a clean object model. No magic. No sigils. Just elegant code.

$ sapphire run hello.spr
hello.spr
class Greeter {
  attr name: String

  def greet() -> String {
    "Hello, #{self.name}! Welcome to Sapphire."
  }
}

g = Greeter.new(name: "world")
print g.greet()

# Blocks, iterators, type annotations — all built in
squares = [1, 2, 3].map { |n| n * n }
squares.each { |n| print n }

See the language

Real examples from the standard library and documentation — no toy snippets.

class Shape {
  attr color = "red"

  def area() { 0 }

  def describe() {
    "A #{self.color} shape"
  }
}

class Rectangle < Shape {
  attr width: Int
  attr height: Int

  def area() {
    self.width * self.height
  }

  def describe() {
    super.describe() + " (#{self.width}x#{self.height})"
  }
}

r = Rectangle.new(width: 4, height: 5)
print r.describe()   # A red shape (4x5)
print r.area()       # 20
print r.is_a?(Shape) # true

Built with intention

Every design decision in Sapphire has a reason. No magic, no surprises.

Everything is an Object

Primitives like Int, Bool, and String are objects with methods. Call .even?, .upcase, or .times directly on literals.

Blocks & Iterators

First-class blocks and yield make iteration expressive. Build your own higher-order functions naturally.

Gradual Typing

Add type annotations where you want compile-time safety. Leave them off where you want flexibility. Enforced at runtime when present.

Ruby-Inspired Syntax

Clean, readable syntax with no sigils or metaprogramming surprises. Familiar to Ruby developers, approachable to everyone.

Get started

Use facet — the official Sapphire toolchain manager — to install Sapphire and create projects.

  1. 1

    Install facet

    $ cargo install --git https://github.com/sapphire-project/facet

    Or grab a pre-built binary from the facet releases page.

  2. 2

    Install the Sapphire toolchain

    $ facet sapphire install latest
  3. 3

    Create and run your first project

    $ facet new myproject && cd myproject
    $ facet run
    Hello, Sapphire!