go-dws is a reimplementation of DWScript — the object-oriented Object Pascal scripting engine — in Go. It is the continuation of a Pascal thread I have followed for decades, by other means.
You can try it right now: the DWScript Playground runs go-dws compiled to WebAssembly, entirely in your browser.
Why DWScript, again?
DWScript has accompanied me for a long time: I contributed to the original Delphi project, built the DWScriptExpert IDE plugin, wrote import tooling for Delphi units, and used its JavaScript backend to ship web apps in Pascal. The language is small, expressive and pleasant — and reimplementing a language you love is the deepest way to understand it.
The ecosystem around it
A language is only as useful as its tooling, so go-dws grew a family: a language server (go-dws-lsp), a VS Code extension (go-dws-vscode), a tree-sitter grammar, and go-dws-primer — an interactive teaching environment in the tradition of my old PascalPrimer.
Why keep coming back to Pascal-shaped things while writing Go all day? The two languages share a temperament — explicit, readable, compiled, a little stubborn. More in the blog post.