zongors-reality-engine/README.org

97 lines
3.8 KiB
Org Mode

#+OPTIONS: toc:nil
* Zongor's Reality Engine
:PROPERTIES:
:CUSTOM_ID: zongors-universe-machine
:END:
* 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 [[https://wiki.xxiivv.com/site/uxn.html][uxn]], [[http://duskos.org/][Dusk OS]], [[https://doc.cat-v.org/inferno/4th_edition/dis_VM_specification][Dis VM]], [[https://lua.org][Lua]], [[https://en.wikipedia.org/wiki/Lisp_(programming_language)][Lisp]], [[https://en.wikipedia.org/wiki/C_(programming_language)][C]], and [[https://ziglang.org/][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.
- [[https://www.libsdl.org/][SDL2]] backend for input, audio, and cross-platform compatibility.
- Tree-walk interpreter:
- 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 but with a friendly 'let' syntax.
- =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
- Website: [[https://alfrescocavern.com/][https://alfrescocavern.com/]]
- License: GPLv3
- Chat: Not yet
* 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).