explaingit

tinybiggames/ganymede

11PascalAudience · developerComplexity · 4/5ActiveLicenseSetup · moderate

TLDR

Apache 2.0 embeddable scripting engine for Windows x64 that JIT compiles a Pascal-like language to native machine code via a single DLL with a 39-function C API.

Mindmap

mindmap
  root((ganymede))
    Inputs
      Pascal-like source
      Host function imports
      External DLL declarations
    Outputs
      Native x64 code
      Static libraries
      Standalone DLLs
    Use Cases
      Embed scripting in apps
      Compile scripts to DLLs
      Bridge Delphi and C code
    Tech Stack
      Pascal
      Delphi
      Windows
      x64

Things people build with this

USE CASE 1

Embed scripting into a Delphi or C++ Windows application via Ganymede.dll

USE CASE 2

Compile a Pascal-like script into a standalone DLL or static library

USE CASE 3

Register native host functions with gny_import_host and call them from scripts

USE CASE 4

Pull a compiled script routine as a raw function pointer and call it from C

Tech stack

PascalDelphiWindows

Getting it running

Difficulty · moderate Time to first run · 30min

Windows 10 or 11 on x64 only, and building from source needs Delphi 12 or higher.

Apache 2.0 lets you use, modify, and distribute the code commercially as long as you keep the license and notices.

In plain English

Ganymede is an embeddable scripting engine for Windows. It takes source code you write and compiles it into native x64 machine code using just in time compilation, meaning the script runs directly on the CPU rather than through an interpreter or a virtual machine. The engine ships as a single Windows DLL named Ganymede.dll, with a flat C style API of 39 functions exposed for any language that can load a DLL. The README emphasizes that compiled script functions become bare native pointers, so calling them from your host program has no extra cost beyond a normal C function call. The language Ganymede compiles looks like Pascal. Source files declare modules, with public routines that take typed parameters, shown in the README through a Fibonacci example and an add example. There are three module kinds: in memory JIT for embedded use, static libraries, and standalone DLLs. The type system covers records, static and dynamic arrays, pointers, unions called overlays, enums, sets, function pointers, and managed strings, all statically typed and compiled to native code. A central feature is host function binding. You can register a native function from your program with gny_import_host, and scripts then call it as if it were built in. Going the other way, gny_get_symbol returns a raw function pointer for any compiled script routine, which the host casts and calls directly. Scripts can also call any DLL function through an external declaration, without writing a wrapper. Getting started is drop in. Delphi users copy Ganymede.dll and Ganymede.pas into a project and add Ganymede to the uses clause. C and C plus plus users copy Ganymede.dll and Ganymede.h, define GANYMEDE_IMPLEMENTATION in one translation unit, and include the header elsewhere. The README shows full working examples for both. System requirements are Windows 10 or 11 on x64, and building from source needs Delphi 12 or higher. Ganymede is licensed under Apache 2.0. The repository links to a Discord community, a Bluesky account, and a docs file with the full language reference and API guide.

Copy-paste prompts

Prompt 1
Show me how to drop Ganymede.dll and Ganymede.pas into a Delphi project and run a Fibonacci script
Prompt 2
Walk me through defining GANYMEDE_IMPLEMENTATION in one C translation unit and including the header elsewhere
Prompt 3
Explain how gny_import_host and gny_get_symbol bridge host code and compiled scripts
Prompt 4
Compile a script module into a standalone DLL using Ganymede's three build modes
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.