A statically-typed permacomputing-oriented language for the purpose of creating 3D programs that work on constrained systems, retro consoles, and the web.
Go to file
zongor e71d687db8 update readme to add better build instructions 2025-12-21 16:57:33 -08:00
arch update docs, setup minimal builds for web gui/tui + linux gui/tui 2025-12-21 16:37:20 -08:00
imgs Add inital documentation, starter code. 2025-12-21 11:11:29 -08:00
vm update docs, setup minimal builds for web gui/tui + linux gui/tui 2025-12-21 16:37:20 -08:00
.gitignore update docs, setup minimal builds for web gui/tui + linux gui/tui 2025-12-21 16:37:20 -08:00
LICENSE Initial commit 2025-12-21 13:01:19 -05:00
README.org update readme to add better build instructions 2025-12-21 16:57:33 -08:00
ROADMAP.org update docs, setup minimal builds for web gui/tui + linux gui/tui 2025-12-21 16:37:20 -08:00
SPECIFICATION.org update docs, setup minimal builds for web gui/tui + linux gui/tui 2025-12-21 16:37:20 -08:00
build update docs, setup minimal builds for web gui/tui + linux gui/tui 2025-12-21 16:37:20 -08:00

README.org

Undâr Programming Language

[ᚢ  ᛫  ᛫  ᛫
 ᛫  ᚾ  ᛫  ᛫
 ᛫  ᛫  ᛞ  ᛫
 ᛫  ᛫  ᛫  ᚱ]

Philosophy

Undâr conforms to permacomputing principles.

Permacomputing as defined by the xxiivv wiki: "permacomputing encourages the maximization of hardware lifespan, minimization of energy usage and focuses on the use of already available computational resources. it values maintenance and refactoring of systems to keep them efficient, instead of planned obsolescence, permacomputing practices planned longevity. it is about using computation only when it has a strengthening effect on ecosystems."

Undâr is designed to ensure that programs will last indefinitly, but it is likely they will only last 'a very long time'.

The VM specification is the core of the language. It should be able to fit on a napkin and be able to be implemented in a weekend.

This implementation of the VM is written in freestanding C89 to maximize the chance that obscure C compilers will be able to compile it.

Once the VM is implemented it can be integrated into a architecutre specific code.

Undâr is intended to run on anything with a C compiler. From constrained systems like: retro consoles, microcontrollers to the web using emscripten.

Getting Started

Requirements

Main

  • Git
  • POSIX compliant shell (sh)
  • C compiler that supports C89

Optional

  • C compiler that supports ANSI C or later
  • SDL2

    • For GUI linux and web versions
  • Emscripten

    • For building the web version

Build

Note: the linux version is the default (for now)

git clone https://git.alfrescocavern.com/zongor/undar-lang.git
cd undar-lang && ./build

Build commands

  • clean deletes the build files for that arch
  • run runs that arch

Build settings

ARCH
  • linux
  • web
MODE
  • debug
  • release
UI
  • tui
  • gui

License

Inspirations

  • Plan 9 : 9P, Unified I/O, Tunnels.
  • Lisp : REPL, introspection.
  • Fortran : Array semantics.
  • C / Zig : Efficentcy, simplicity.
  • Lua - Friendly syntax, portable, and minimalism.
  • Lox - The start of my programming language creation journey.
  • Uxn - Major inspiration, espeically around the design for devices.
  • Dusk OS - A much better system for doing permacomputing.
  • Dis VM - Ideas on VM structure
  • Retro Systems - N64, PS1, Mac Classic, Windows 95, Especially Classic MacOS UI esthetics