A tribute to Dan Ingalls

Harding Smalltalk

Smalltalk feeling, modern tooling. A modern Smalltalk dialect aiming at native compilation. File-based, git-friendly, and designed for modern tooling.

example.hrd
# Define a Point class with x and y
# auto generate setter and getter methods
Point := Object deriveWithAccessors: #(x y)

# Add a method to the class using selector:put:
# and a block representing the code
Point selector: #moveBy:and: put: [:dx :dy |
    x := x + dx
    y := y + dy
]

# Simpler way to add a method using >> syntactic sugar
Point >>+ aPoint [
    x := x + aPoint x
    y := y + aPoint y
]

# Create and use a Point, cascades work fine
p := Point new
p x: 100; y: 200
p moveBy: 5 and: 10
Scroll to explore

What Makes Harding Special

Smalltalk Heritage

Everything you love about Smalltalk - message passing, blocks, live programming - preserved and modernized.

Native Compilation

Granite compiler produces standalone native binaries via Nim → C. No runtime dependencies, true native performance.

File-Based

No image files. Source lives in .hrd files you can version control, diff, and edit with any editor.

Multiple Inheritance

Multiple inheritance with automatic conflict detection at class definition time.

Green Threads

Cooperative multitasking with first-class Process objects. Built-in scheduler with Monitor, SharedQueue, and Semaphore synchronization.

Smalltalk-Style Exceptions

Resumable exception handling with on:do:, signal, resume, retry, and pass. Full signal point preservation.

Nim Interop

Call Nim code directly with good primitive bridging support. Access the entire Nim ecosystem: libraries, packages, and system APIs.

Nim-Harding Package Model

Bundle Nim primitive implementations and matching .hrd sources in one package. Load package code through load: and keep Harding and Nim APIs versioned together.

Practical I/O and Process API

Built-in File, FileStream, and System helpers provide file read/write, current directory, stdio streams (Stdin, Stdout, Stderr), and command-line arguments.

IDE Tooling

VSCode extension with full LSP and DAP support. GTK-based Bona IDE currently includes Launcher, Workspace, and Transcript; Browser and Inspector are in progress, with Debugger planned.

Get Started

Ready to try Harding? Check out the documentation to install and run your first program, or explore the full feature list to learn more about what makes Harding special.