Harding is a Smalltalk dialect written in Nim. It keeps the distinguishing features of Smalltalk — live objects, messages, blocks, the image-like feel — while fitting into modern tooling and staying able to call straight into Nim and C libraries.

The interpreter is a stackless, AST-based one with classic green threads in the Smalltalk style, which is the interesting engineering problem underneath: real coroutines without giving up a simple evaluator.

"Hello, World!" println

Point := Object derivePublic: #(x y)
Point>>distanceFromOrigin [ ^ ((x * x) + (y * y)) sqrt ]

p := Point new
p x: 3; y: 4
p distanceFromOrigin println
  • Genuine Smalltalk — classes, inheritance, blocks and non-local returns.
  • Nim and C interop — reach into the ecosystem without FFI ceremony.
  • Green threads — stackless AST interpreter, no OS threads required.