A modern Smalltalk dialect that compiles to native code. File-based, git-friendly, and designed for modern tooling.
# Define a Point class with x and y slots
Point := Object derive: #(x y)
# Add methods using the >> syntax
Point extend: [
self >> moveBy: dx and: dy [
x := x + dx
y := y + dy
^ self
]
self >> distanceFromOrigin [
^ ((x * x) + (y * y)) sqrt
]
]
# Create and use a Point
p := Point new
p x: 100 y: 200
p distanceFromOrigin println
Message passing, late binding, everything is an object. The essence of Smalltalk preserved.
Compiles to Nim -> C -> machine code. Fast, efficient, no VM required.
No image files. Source code lives in .hrd files you can version control and diff.
Full support for multiple inheritance with conflict detection. Compose behaviors.
Cooperative multitasking with first-class Process objects. Built-in scheduler.
Call Nim code directly. Access the entire Nim ecosystem and C libraries.
obj size, binary 3 + 4, keyword at:put:;do:, select:, collect:| Smalltalk | Harding |
|---|---|
| Period required | Optional - newline works |
| Double quotes for comments | Hash # for comments |
| Single quotes for strings | Double quotes for strings |
| Image-based | File-based, git-friendly |