zongors-reality-engine/README.org

92 lines
3.6 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+OPTIONS: toc:nil
* Zongor's Universe Machine
:PROPERTIES:
:CUSTOM_ID: zongors-universe-machine
:END:
* Overview
ZTL is a lightweight, portable programming language for permacomputing, game preservation, and indie game development.
Built in **C99** 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://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 syntax inspired by C.
- Targets permacomputing, game world preservation, rapid prototyping, and indie games.
- No macros or object hierarchies—prioritizes clarity and explicit behavior.
** Engine & Tooling
- Integrated 2D/3D rendering system:
- Immediate-mode canvas-based 3D rendering with low-poly 5th6th gen console aesthetics.
- 2D overlays styled after ImGui.
- [[https://www.libsdl.org/][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
- Dynamically typed with optional type hints in function signatures.
- Unified =real= type (=f64= by default) with =byte= for interop (u8, i32, f32, etc.).
- 3D math primitives: =vec=, =mat=, =quat=, and more.
- Strings with interpolation, =split=, =replace=, =trim=, etc.
- Error handling:
- Go-style explicit errors.
- Null coalescing (=??=) and null checks (=?.=).
- Lightweight coroutines with event-loop-driven multitasking.
- FFI via C-defined "native functions" (examples provided in VM).
** Modularity & Ecosystem
- Unified table type (like Lua) for lists, maps, and tuples.
- Standard library: math, networking, 3D rendering, minimal GUI.
- =use= keyword for modular code organization via file-based namespaces.
* Technical Details
** VM Architecture
- Stack-based bytecode interpreter written in C99.
- Portable to new systems, microcontrollers, and web via Emscripten.
** Memory Management
- Reference counting for globally scoped objects.
- =weak= keyword to avoid cyclical references.
- 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://yourwebsite.org/permalang][https://alfrescocavern.com/ztl]]
- 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.
* Motivation
ztl 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).
* Contributing
Contributions welcome! Join the community or submit PRs on GitHub/GitLab/yourrepo.