A tribute to Dan Ingalls

Harding Smalltalk

Smalltalk feeling, modern tooling. A modern Smalltalk dialect with a stackless VM, Granite native compilation, reactive server-rendered web support, and file-based source that works well with git.

Scroll to explore
example.hrd
Point := Object derivePublic: #(x, y)

Point>>moveBy: dx and: dy [
    x := x + dx.
    y := y + dy
]

Point>>printString [
    ^ "Point(" & x asString & ", " & y asString & ")"
]

p := Point new.
p::x := 100.
p::y := 200.
p moveBy: 5 and: 10.
p printString println

What Makes Harding Special

Smalltalk Semantics

Message sends, blocks, non-local returns, resumable exceptions, and live-editable class definitions remain central to the language.

Two Execution Paths

Use the interpreter for interactive development and Granite for standalone native binaries.

🗂

File-Based And Git-Friendly

Harding code lives in .hrd files. No image is required for normal development workflows.

🌐

Reactive Server Rendering

Build web apps with the Html DSL, HTMX fragment updates, and RenderCache invalidation driven by tracked state.

Improved Ergonomics

Use dynamic literals like #(1, 2, 3) and #{...}, good json{...} support, direct member access with ::, & concatenation, and optional . at line ends.

📦

External Libraries And Packages

Install Harding libraries with harding lib, and use a package system that can bundle native Nim code and Harding code together in one versioned unit.

🚀

Web Server Built In

Harding can be built with integrated MummyX, a fast scalable native multithreaded HTTP server written in Nim.

🖼

GTK4 Integration

Harding includes GTK4 bindings so you can write native GTK applications directly in Harding.

🛠

IDE Tooling

Bona builds on the GTK integration and provides a Launcher, Workspace, Transcript, Browser, Inspector work, and an Application Builder workflow. VSCode support includes syntax highlighting, LSP, and DAP.

What You Can Build

Command-line tools with System and File, native binaries with Granite, JSON APIs, reactive HTMX web apps with MummyX, and installable packages that bundle Harding code and native Nim code together.