O Language

O Language development

Build targets, source layout and the files to inspect when changing runtime behavior.

O Language pagesO Language development
On this page

The runtime is a Go module with a Go 1.21 module declaration. This page describes the source layout and repository targets; it does not claim that every target has been built for this website review.

Build and install targets

Target Defined behavior
make build Fetch Go dependencies and build the current platform’s olang executable.
make install Build, then install through go install.
make system-install Build, then copy the binary to /usr/local/bin.
make build-all Build Linux amd64/arm64, macOS amd64/arm64 and Windows amd64 binaries.
make test, make lint, make vet Run the repository’s test or analysis commands.
make fmt, make clean Format Go files or remove build outputs.
make docker, make snap-build Build the container image or Snap package.
make release, make quality Compose other Makefile targets into release or quality workflows.

Read the Makefile before running a target. Some targets install software, modify system paths, download dependencies, or build and publish artifacts.

Source map

Area Source path Responsibility
Tokens and keywords token/, lexer/ Token names, keywords and source scanning.
Grammar and AST parser/, ast/ Accepted forms and syntax tree types.
Interpreter values and behavior object/, evaluator/ Runtime objects, expression evaluation and built-ins.
Bytecode compiler and VM compiler/compiler.go, compiler/builtins.go, vm/ Bytecode generation, VM execution and a separate built-in registry.
ELF output compiler/elf_compiler.go The smaller x86-64 Linux output path.
REPL and CLI repl/, main.go Interactive input, file modes, command parsing and output selection.
Package manifests olpfile/ JSON manifest fields, dependency synchronization and jobs.
Process files opsfile/, proc/ INI process entries and their local launch/stop behavior.
Web commands and server web/, evaluator/server.go Project scaffolding, route configuration and HTTP handling.

Making a language change

When changing syntax, trace the token through the lexer, parser and AST, then check the evaluator and both compiler paths. A built-in added to the interpreter is not automatically added to the VM registry. Update the CLI, examples, syntax reference, execution model and runtime API pages when behavior changes.

Source snapshot

This documentation was compared with runtime commit eb2301cfe4dbf2e6c1f10802bfbec2be3a797e99 and the OnixOS package snapshot 20260825.898_eb2301c. The package recipe follows the upstream branch and can advance; repeat the source review when the packaged commit changes.