A VM which is intended for the creation and preservation of 3D worlds
Go to file
zongor 70a6de687f fix documentation, wrong license 2025-06-14 15:19:39 -04:00
docs fix documentation, wrong license 2025-06-14 15:19:39 -04:00
src refactor to reduce repeats 2025-06-14 14:54:38 -04:00
test add fat pointers for strings, update makefile, test 2025-06-08 16:41:53 -04:00
.gitignore begin breaking up into modules, add wasm 2025-06-11 22:41:49 -04:00
LICENSE fix documentation, wrong license 2025-06-14 15:19:39 -04:00
README.org fix documentation, wrong license 2025-06-14 15:19:39 -04:00

README.org

Zongor's Reality Engine

Overview

ZRE is a lightweight, portable programming language for permacomputing, game preservation, and indie game development. Built in C89 for cross-platform compatibility (desktop, microcontrollers, and web via Emscripten). Designed for simplicity, performance, and creative exploration. It is inspired by uxn, Dusk OS, Lua, Lisp, C, and Zig.

Key Features

Core Philosophy

  • Simple, portable, lightweight
  • Targets permacomputing, game world preservation, rapid prototyping, and indie games.
  • No macros or object hierarchies—prioritizes clarity and explicit behavior.
  • C/Zig like syntax. Lisp/Lua like development workflow.

Engine & Tooling

  • Integrated 2D/3D rendering system:

    • Immediate-mode canvas-based 3D rendering with low-poly 5th-6th gen console aesthetics.
    • 2D overlays styled after ImGui.
    • SDL2 backend for input, audio, and cross-platform compatibility.
  • Tree-walk interpreter + stack-based bytecode VM:

    • Compile bytecode to files for performance.
    • REPL with hot-code reloading for rapid iteration.
  • Emacs major mode included; Vim, VSCode, and Lite XL support planned.

Language Design

  • Strongly typed with optional type hints in function signatures.
  • real type (fixed point Q16.16 by default).
  • int for integer numbers (i32).
  • nat for unsigned integer numbers (u32).
  • byte for interop (u8, i64, etc.).
  • 3D math primitives: vec, mat, quat, and more.
  • Strings with interpolation, split, replace, trim, etc.
  • Error handling:

    • try-catch
    • Null coalescing (??) and null checks (?.).
  • Lightweight coroutines with event-loop-driven multitasking.
  • FFI via C-defined "system calls" (examples provided in VM).

Modularity & Ecosystem

  • C-like arrays with fat pointers.
  • Standard library: math, networking, 3D rendering, minimal GUI.
  • use keyword for modular code organization via file-based namespaces.

Technical Details

VM Architecture

  • Von Neumann style bytecode interpreter written in C89.
  • Portable to new systems, microcontrollers, and web via Emscripten.

Memory Management

  • Reference counting for globally scoped objects.
  • weak keyword to avoid cyclical references.
  • garbage collection as a system call (choose when to free memory)
  • Arena allocators for short-lived, scoped memory (e.g., function-local objects).

Rendering & I/O

  • SDL2-based abstraction for input, audio, and rendering.
  • Immediate-mode 3D canvas with 2D overlay support.

Planned Projects

  1. Code Editor with Terminal Emulator

    • Built-in development tooling.
  2. 3D Chat Room

    • Multiplayer cube avatars navigating a shared low-poly world.

Community & Collaboration

Roadmap

  • MVP: Core VM, REPL, and SDL2 integration.
  • 3D rendering pipeline + ImGui-style GUI.
  • Standard library and FFI examples.
  • Emacs/Vim tooling + website launch.
  • Fixed point for numbers for microcontrollers/retro computers without fpu
  • Custom renderer without SDL for portability

Motivation

ZRE bridges retro-inspired creativity with modern portability for:

  • Game jams (rapid prototyping + 3D engine).
  • Indie games (5th/6th-gen aesthetics).
  • Permacomputing (low-resource, sustainable code).
  • Education (simple VM/language design), a language which scales to the developers level.