<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://onix-project.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tedaryum</id>
	<title>OnixOS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://onix-project.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tedaryum"/>
	<link rel="alternate" type="text/html" href="https://onix-project.com/Special:Contributions/Tedaryum"/>
	<updated>2026-10-07T00:26:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://onix-project.com/index.php?title=Category_talk:O_Language&amp;diff=207</id>
		<title>Category talk:O Language</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Category_talk:O_Language&amp;diff=207"/>
		<updated>2026-08-25T07:36:53Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Category:O_Language&amp;diff=206</id>
		<title>Category:O Language</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Category:O_Language&amp;diff=206"/>
		<updated>2026-08-25T07:36:33Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;Category:O Language&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Category_talk:Programming_languages&amp;diff=205</id>
		<title>Category talk:Programming languages</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Category_talk:Programming_languages&amp;diff=205"/>
		<updated>2026-08-25T07:36:22Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Category:Programming_languages&amp;diff=204</id>
		<title>Category:Programming languages</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Category:Programming_languages&amp;diff=204"/>
		<updated>2026-08-25T07:36:17Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Category:O_Language&amp;diff=203</id>
		<title>Category:O Language</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Category:O_Language&amp;diff=203"/>
		<updated>2026-08-25T07:35:12Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS:Building_From_Scratch&amp;diff=202</id>
		<title>OnixOS:Building From Scratch</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS:Building_From_Scratch&amp;diff=202"/>
		<updated>2026-08-25T07:33:51Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;OnixOS:Building From Scratch&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building From Scratch =&lt;br /&gt;
&lt;br /&gt;
This document covers the complete build lifecycle of the OnixOS Build System — from environment setup and package repository builds to ISO creation, syncing, Docker-based builds, and live build monitoring.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The build system runs on &#039;&#039;&#039;Arch Linux&#039;&#039;&#039; (or an Arch-based environment). The following packages are required for ISO builds and are installed automatically by &amp;lt;code&amp;gt;build.py&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Package !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;archiso&amp;lt;/code&amp;gt; || Core ISO creation tool (&amp;lt;code&amp;gt;mkarchiso&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;base-devel&amp;lt;/code&amp;gt; || Compiler toolchain&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;devtools&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;makechrootpkg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkarchroot&amp;lt;/code&amp;gt; for isolated chroot builds&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;arch-install-scripts&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;pacstrap&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;arch-chroot&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;squashfs-tools&amp;lt;/code&amp;gt; || SquashFS filesystem creation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dosfstools&amp;lt;/code&amp;gt; || FAT filesystem creation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;syslinux&amp;lt;/code&amp;gt; || Bootloader&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;git-lfs&amp;lt;/code&amp;gt; || Source fetching&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt; || File synchronisation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt; || Go language toolchain&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nasm&amp;lt;/code&amp;gt; || Assembler&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ninja&amp;lt;/code&amp;gt; || Build system&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gperf&amp;lt;/code&amp;gt; || Hash function generator&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;imagemagick&amp;lt;/code&amp;gt; || Image processing&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;python-sphinx&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;xmlto&amp;lt;/code&amp;gt; || Documentation toolchain&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gnome-shell&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;qtcreator&amp;lt;/code&amp;gt; || Desktop environment build deps&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gnupg&amp;lt;/code&amp;gt; || GPG package signing&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;qemu-user-static&amp;lt;/code&amp;gt; || Cross-architecture emulation (ARM builds on x86_64 host)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;binfmt-support&amp;lt;/code&amp;gt; || Binary format registration for qemu-user-static&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; || Privilege escalation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;repository builds&#039;&#039;&#039; the system additionally uses &amp;lt;code&amp;gt;makepkg&amp;lt;/code&amp;gt; (included in &amp;lt;code&amp;gt;base-devel&amp;lt;/code&amp;gt;) and the AUR snapshot endpoint:&lt;br /&gt;
&lt;br /&gt;
 https://aur.archlinux.org/cgit/aur.git/snapshot&lt;br /&gt;
&lt;br /&gt;
== Project Structure ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onix-build-system/&lt;br /&gt;
├── build.py                  # Main build entry point&lt;br /&gt;
├── clean.py                  # Cleans output/ and mounts&lt;br /&gt;
├── watcher.py                # Terminal build status monitor&lt;br /&gt;
├── qemu.py                   # Launch built ISO in QEMU&lt;br /&gt;
├── Makefile                  # Convenience make targets&lt;br /&gt;
├── buildkit-docker/&lt;br /&gt;
│   ├── Dockerfile            # Build container image&lt;br /&gt;
│   ├── entrypoint.sh         # Docker entrypoint (chroot bootstrap)&lt;br /&gt;
│   ├── conf/&lt;br /&gt;
│   │   └── makepkg.conf      # Generic x86-64 baseline CFLAGS&lt;br /&gt;
│   ├── docker-compose.yml        # Dev shell container&lt;br /&gt;
│   ├── docker-compose.iso.yml    # Automated ISO build container&lt;br /&gt;
│   └── docker-compose.repos.yml  # Automated repo build container&lt;br /&gt;
├── onixos/&lt;br /&gt;
│   ├── archconfig.py         # Multiarch configuration (CFLAGS, chroot, qemu)&lt;br /&gt;
│   ├── iso.py                # ISO build logic (mkarchiso wrapper)&lt;br /&gt;
│   ├── pkgbuild.py           # PKGBUILD / .SRCINFO parser&lt;br /&gt;
│   ├── proc.py               # Subprocess wrapper with logging&lt;br /&gt;
│   └── repository.py         # Repository build logic (chroot, sanitize, sign)&lt;br /&gt;
├── sources/&lt;br /&gt;
│   ├── packages/             # Local package sources (PKGBUILD)&lt;br /&gt;
│   ├── profiles/             # archiso profiles (core, gnome, xfce, icewm, security, kurumsal, odesk)&lt;br /&gt;
│   ├── packages.list         # Local packages to build&lt;br /&gt;
│   ├── aur.list              # AUR packages to build&lt;br /&gt;
│   ├── profiles.list         # ISO profiles to build&lt;br /&gt;
│   ├── signing.conf          # GPG signing configuration (example)&lt;br /&gt;
│   ├── sync/                 # Repo upload config&lt;br /&gt;
│   │   ├── sourceforge.conf&lt;br /&gt;
│   │   └── local.conf&lt;br /&gt;
│   └── isosync/              # ISO upload config&lt;br /&gt;
│       ├── sourceforge.conf&lt;br /&gt;
│       └── local.conf&lt;br /&gt;
├── output/                   # All build artefacts (generated, per-arch)&lt;br /&gt;
└── logs/                     # Build logs (generated, per-arch)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Commands ==&lt;br /&gt;
&lt;br /&gt;
All commands must be run from the &#039;&#039;&#039;repository root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Full Build ===&lt;br /&gt;
&lt;br /&gt;
Builds all repositories &#039;&#039;&#039;and&#039;&#039;&#039; all ISO profiles in sequence:&lt;br /&gt;
&lt;br /&gt;
 sudo python build.py&lt;br /&gt;
&lt;br /&gt;
=== Repository Build ===&lt;br /&gt;
&lt;br /&gt;
Builds the &amp;lt;code&amp;gt;onix-base&amp;lt;/code&amp;gt; (local packages) and &amp;lt;code&amp;gt;onix-aur&amp;lt;/code&amp;gt; (AUR packages) repositories for &#039;&#039;&#039;all supported architectures&#039;&#039;&#039; by default:&lt;br /&gt;
&lt;br /&gt;
 python build.py repos&lt;br /&gt;
&lt;br /&gt;
To build for a &#039;&#039;&#039;specific architecture&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 python build.py repos --arch=x86_64_v3&lt;br /&gt;
&lt;br /&gt;
The build process per architecture:&lt;br /&gt;
# Bootstraps a clean chroot with &amp;lt;code&amp;gt;base-devel&amp;lt;/code&amp;gt; (isolated from host system).&lt;br /&gt;
# Generates architecture-specific &amp;lt;code&amp;gt;makepkg.conf&amp;lt;/code&amp;gt; inside the chroot (generic CFLAGS baseline).&lt;br /&gt;
# Sanitizes PKGBUILD files to prevent instruction leakage (&amp;lt;code&amp;gt;-march=native&amp;lt;/code&amp;gt; → architecture baseline).&lt;br /&gt;
# Builds packages using &amp;lt;code&amp;gt;makechrootpkg -c -r &amp;amp;lt;chroot&amp;amp;gt;&amp;lt;/code&amp;gt; (host isolation, dependency resolution inside chroot).&lt;br /&gt;
# Signs each &amp;lt;code&amp;gt;.pkg.tar.zst&amp;lt;/code&amp;gt; with GPG detach-signature (if signing key is configured).&lt;br /&gt;
# Generates repository database with &amp;lt;code&amp;gt;repo-add&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supported architectures:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Architecture !! CFLAGS Baseline !! Description !! QEMU Required&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64&amp;lt;/code&amp;gt; || Generic x86-64 (2004+, all CPUs) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x86_64_v2&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64-v2&amp;lt;/code&amp;gt; || SSE4.2, POPCNT (2008+: Nehalem, Bulldozer) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x86_64_v3&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64-v3&amp;lt;/code&amp;gt; || AVX, AVX2, BMI1/2, FMA (2015+: Haswell, Zen) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;i686&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=i686&amp;lt;/code&amp;gt; || 32-bit x86 (Pentium Pro+) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;aarch64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=armv8-a&amp;lt;/code&amp;gt; || 64-bit ARM (ARMv8-A) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;armv7h&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=armv7-a -mfloat-abi=hard&amp;lt;/code&amp;gt; || 32-bit ARM hard-float (ARMv7-A) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;armv6h&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=armv6 -mfloat-abi=hard&amp;lt;/code&amp;gt; || 32-bit ARM hard-float (ARMv6, Raspberry Pi 1) || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|ARM architectures require &amp;lt;code&amp;gt;qemu-user-static&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;binfmt-support&amp;lt;/code&amp;gt; for cross-architecture emulation. The Docker image includes these packages.}}&lt;br /&gt;
&lt;br /&gt;
=== ISO Build ===&lt;br /&gt;
&lt;br /&gt;
Builds ISO images for &#039;&#039;&#039;all ISO-supported architectures&#039;&#039;&#039; (x86_64 and aarch64) and every profile listed in &amp;lt;code&amp;gt;sources/profiles.list&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 sudo python build.py iso&lt;br /&gt;
&lt;br /&gt;
To build for a &#039;&#039;&#039;specific architecture&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 sudo python build.py iso --arch=aarch64&lt;br /&gt;
&lt;br /&gt;
To build &#039;&#039;&#039;without chroot isolation&#039;&#039;&#039; (direct &amp;lt;code&amp;gt;mkarchiso&amp;lt;/code&amp;gt; invocation, useful for debugging):&lt;br /&gt;
&lt;br /&gt;
 sudo python build.py iso --no-chroot&lt;br /&gt;
&lt;br /&gt;
The build process per profile per architecture:&lt;br /&gt;
# Installs ISO build dependencies via &amp;lt;code&amp;gt;pacman&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Creates a &#039;&#039;&#039;staging copy&#039;&#039;&#039; of the profile with architecture-specific overrides:&lt;br /&gt;
#* Rewrites &amp;lt;code&amp;gt;profiledef.sh&amp;lt;/code&amp;gt; with the target architecture and boot modes.&lt;br /&gt;
#* Selects &amp;lt;code&amp;gt;packages.&amp;amp;lt;arch&amp;amp;gt;&amp;lt;/code&amp;gt; as the package list.&lt;br /&gt;
#* Generates architecture-specific &amp;lt;code&amp;gt;pacman.conf&amp;lt;/code&amp;gt; (with &amp;lt;code&amp;gt;$arch&amp;lt;/code&amp;gt; repo URLs).&lt;br /&gt;
#* Removes &amp;lt;code&amp;gt;syslinux/&amp;lt;/code&amp;gt; for aarch64 (UEFI-only).&lt;br /&gt;
# When &#039;&#039;&#039;chroot isolation&#039;&#039;&#039; is enabled (default):&lt;br /&gt;
## Bootstraps a clean chroot with &amp;lt;code&amp;gt;base-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;archiso&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;squashfs-tools&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dosfstools&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;arch-install-scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
## Bind-mounts &amp;lt;code&amp;gt;/proc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/sys&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/dev/pts&amp;lt;/code&amp;gt;, source profile, work directory, and output directory into the chroot.&lt;br /&gt;
## Runs &amp;lt;code&amp;gt;mkarchiso&amp;lt;/code&amp;gt; inside the chroot with sanitized environment variables.&lt;br /&gt;
## Unmounts all bind mounts (deepest first) on exit, error, or signal (SIGINT/SIGTERM).&lt;br /&gt;
# When &#039;&#039;&#039;chroot isolation&#039;&#039;&#039; is disabled (&amp;lt;code&amp;gt;--no-chroot&amp;lt;/code&amp;gt;):&lt;br /&gt;
## Unmounts any stale mounts from a previous failed build.&lt;br /&gt;
## Cleans the work directory.&lt;br /&gt;
## Runs &amp;lt;code&amp;gt;mkarchiso&amp;lt;/code&amp;gt; directly on the host.&lt;br /&gt;
# Writes the finished &amp;lt;code&amp;gt;.iso&amp;lt;/code&amp;gt; file to &amp;lt;code&amp;gt;output/iso/&amp;amp;lt;profile&amp;amp;gt;/&amp;amp;lt;arch&amp;amp;gt;/output/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ISO-supported architectures:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Architecture !! Boot Modes !! Syslinux !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt; || BIOS (syslinux) + UEFI (systemd-boot) || Yes || Standard x86-64 ISO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;aarch64&amp;lt;/code&amp;gt; || UEFI only (systemd-boot) || No || ARM64, excludes x86-only packages (microcode, video drivers)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|The aarch64 ISO excludes packages that are x86-specific: &amp;lt;code&amp;gt;amd-ucode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;intel-ucode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memtest86+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;syslinux&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;broadcom-wl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b43-fwcutter&amp;lt;/code&amp;gt;, x86-only video drivers (&amp;lt;code&amp;gt;xf86-video-*&amp;lt;/code&amp;gt;), and &amp;lt;code&amp;gt;edk2-shell&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
=== Upload / Sync ===&lt;br /&gt;
&lt;br /&gt;
Uploads built repositories to the configured remote server(s):&lt;br /&gt;
&lt;br /&gt;
 python build.py upload&lt;br /&gt;
&lt;br /&gt;
Uploads built ISO images:&lt;br /&gt;
&lt;br /&gt;
 python build.py iso-sync&lt;br /&gt;
&lt;br /&gt;
Both commands read from the relevant &amp;lt;code&amp;gt;*.conf&amp;lt;/code&amp;gt; files under &amp;lt;code&amp;gt;sources/sync/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sources/isosync/&amp;lt;/code&amp;gt; respectively (see [[#Sync Configuration|Sync Configuration]]).&lt;br /&gt;
&lt;br /&gt;
== Make Targets ==&lt;br /&gt;
&lt;br /&gt;
=== Core Build Targets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make            # clean → repos → iso (full build, all architectures)&lt;br /&gt;
make clean      # Remove output artefacts and unmount&lt;br /&gt;
make repos      # Repository build for all architectures&lt;br /&gt;
make repos ARCH=x86_64_v3  # Repository build for specific architecture&lt;br /&gt;
make iso        # ISO build for all architectures (x86_64 + aarch64)&lt;br /&gt;
make iso ARCH=x86_64       # ISO build for specific architecture&lt;br /&gt;
make iso-all    # ISO build for all architectures (explicit)&lt;br /&gt;
make iso-nochroot          # ISO build without chroot isolation&lt;br /&gt;
make iso-nochroot ARCH=aarch64  # ISO build without chroot for specific architecture&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Chroot Management ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make chroot_bootstrap              # Bootstrap chroots for all architectures&lt;br /&gt;
make chroot_bootstrap ARCH=x86_64  # Bootstrap chroot for specific architecture&lt;br /&gt;
make chroot_clean                  # Remove all chroots&lt;br /&gt;
make chroot_clean ARCH=x86_64      # Remove chroot for specific architecture&lt;br /&gt;
make chroot_shell ARCH=x86_64      # Spawn shell inside chroot (requires ONIX_CHROOT)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make test                    # Run all tests for all architectures&lt;br /&gt;
make test ARCH=x86_64_v3     # Run all tests for specific architecture&lt;br /&gt;
make test-march              # Verify -march baseline in compiled binaries&lt;br /&gt;
make test-sign               # Verify GPG signatures&lt;br /&gt;
make test-deps               # Check for missing shared-object dependencies&lt;br /&gt;
make test-sanitize           # Verify PKGBUILD sanitizer rewrites flags&lt;br /&gt;
make test-smoke              # End-to-end smoke test (build single package)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Docker Targets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make docker_build            # Build the Docker image&lt;br /&gt;
make docker_publish          # Push image to registry (olproject/buildkit)&lt;br /&gt;
make docker_pull             # Pull image from registry&lt;br /&gt;
make docker_shell            # Open interactive shell in container&lt;br /&gt;
&lt;br /&gt;
make docker_iso_build        # Run ISO build inside Docker for all architectures&lt;br /&gt;
make docker_iso_build ARCH=aarch64  # Run ISO build for specific architecture&lt;br /&gt;
make docker_repo_build       # Run repo build inside Docker for all architectures&lt;br /&gt;
make docker_repo_build ARCH=aarch64  # Run repo build for specific architecture&lt;br /&gt;
make docker_test             # Build repos in Docker, then run tests locally&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environment Variables ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Variable !! Default !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ARCH&amp;lt;/code&amp;gt; || (all) || Target architecture for make targets&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_ARCH&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt; || Architecture (used by entrypoint.sh and docker-compose)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_CHROOT&amp;lt;/code&amp;gt; || (auto) || Explicit chroot path for repo builds (Jenkins per-build)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_ISO_CHROOT&amp;lt;/code&amp;gt; || (auto) || Explicit chroot path for ISO builds&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_CHROOT_PREFIX&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/tmp/onix-chroot&amp;lt;/code&amp;gt; || Chroot path prefix (auto-suffix with arch+pid+ts)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_SIGN_KEY&amp;lt;/code&amp;gt; || (default key) || GPG key ID / email for signing&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_GPG_PASSPHRASE&amp;lt;/code&amp;gt; || (none) || GPG passphrase for batch mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Docker Builds ==&lt;br /&gt;
&lt;br /&gt;
The Docker image is based on &amp;lt;code&amp;gt;archlinux&amp;lt;/code&amp;gt; and ships with all build dependencies pre-installed, including &amp;lt;code&amp;gt;devtools&amp;lt;/code&amp;gt; (for &amp;lt;code&amp;gt;makechrootpkg&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;qemu-user-static&amp;lt;/code&amp;gt; (for ARM emulation), and &amp;lt;code&amp;gt;gnupg&amp;lt;/code&amp;gt; (for package signing). The image tag is &amp;lt;code&amp;gt;olproject/buildkit&amp;lt;/code&amp;gt;. All Docker-related files are located under &amp;lt;code&amp;gt;buildkit-docker/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Building the Image ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker build -f buildkit-docker/Dockerfile . -t olproject/buildkit&lt;br /&gt;
# or via make:&lt;br /&gt;
make docker_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Dockerfile installs:&lt;br /&gt;
* &amp;lt;code&amp;gt;base-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;devtools&amp;lt;/code&amp;gt; — compiler toolchain and &amp;lt;code&amp;gt;makechrootpkg&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;qemu-user-static&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;binfmt-support&amp;lt;/code&amp;gt; — ARM cross-architecture emulation&lt;br /&gt;
* &amp;lt;code&amp;gt;gnupg&amp;lt;/code&amp;gt; — GPG package signing&lt;br /&gt;
* &amp;lt;code&amp;gt;makepkg.conf&amp;lt;/code&amp;gt; with generic x86-64 baseline CFLAGS&lt;br /&gt;
&lt;br /&gt;
=== ISO Build via Docker ===&lt;br /&gt;
&lt;br /&gt;
Builds ISO images for &#039;&#039;&#039;all ISO-supported architectures&#039;&#039;&#039; by default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make docker_iso_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build for a &#039;&#039;&#039;specific architecture&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make docker_iso_build ARCH=aarch64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The make target automatically:&lt;br /&gt;
# Runs the Docker container with &amp;lt;code&amp;gt;ONIX_ARCH&amp;lt;/code&amp;gt; set.&lt;br /&gt;
# Copies &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;logs/&amp;lt;/code&amp;gt; from the container.&lt;br /&gt;
# Removes the container.&lt;br /&gt;
# Iterates over all ISO architectures if no &amp;lt;code&amp;gt;ARCH&amp;lt;/code&amp;gt; is specified.&lt;br /&gt;
&lt;br /&gt;
The container entrypoint (&amp;lt;code&amp;gt;entrypoint.sh&amp;lt;/code&amp;gt;) automatically:&lt;br /&gt;
# Resolves the chroot directory (from &amp;lt;code&amp;gt;ONIX_CHROOT&amp;lt;/code&amp;gt; or generates dynamic path).&lt;br /&gt;
# Tears down any existing chroot and bootstraps a clean one with &amp;lt;code&amp;gt;mkarchroot&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Ensures &amp;lt;code&amp;gt;GNUPGHOME&amp;lt;/code&amp;gt; directory exists.&lt;br /&gt;
# Passes &amp;lt;code&amp;gt;--arch&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;python build.py iso&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Repository Build via Docker ===&lt;br /&gt;
&lt;br /&gt;
Builds repositories for &#039;&#039;&#039;all architectures&#039;&#039;&#039; by default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker-compose -f buildkit-docker/docker-compose.repos.yml up --abort-on-container-exit --build&lt;br /&gt;
docker cp buildkit:/home/buildkit/builder/output/. ./output/&lt;br /&gt;
docker cp buildkit:/home/buildkit/builder/logs/. ./logs/&lt;br /&gt;
docker rm buildkit&lt;br /&gt;
# or via make:&lt;br /&gt;
make docker_repo_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build for a &#039;&#039;&#039;specific architecture&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ONIX_ARCH=x86_64_v3 docker-compose -f buildkit-docker/docker-compose.repos.yml up --abort-on-container-exit --build&lt;br /&gt;
# or via make:&lt;br /&gt;
make docker_repo_build ARCH=x86_64_v3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The container entrypoint (&amp;lt;code&amp;gt;entrypoint.sh&amp;lt;/code&amp;gt;) automatically:&lt;br /&gt;
# Resolves the chroot directory (from &amp;lt;code&amp;gt;ONIX_CHROOT&amp;lt;/code&amp;gt; or generates dynamic path).&lt;br /&gt;
# Tears down any existing chroot and bootstraps a clean one with &amp;lt;code&amp;gt;mkarchroot&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Ensures &amp;lt;code&amp;gt;GNUPGHOME&amp;lt;/code&amp;gt; directory exists.&lt;br /&gt;
# Passes &amp;lt;code&amp;gt;--arch&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;python build.py repos&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;python build.py iso&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Shell ===&lt;br /&gt;
&lt;br /&gt;
Starts a persistent container with output and logs mounted as volumes, useful for manual inspection or debugging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker-compose -f buildkit-docker/docker-compose.yml up -d&lt;br /&gt;
docker exec -it buildkit bash&lt;br /&gt;
# or via make:&lt;br /&gt;
make docker_shell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The container mounts:&lt;br /&gt;
* &amp;lt;code&amp;gt;./output/&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;/home/buildkit/builder/output&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;./logs/&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;/home/buildkit/builder/logs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gnupg&amp;lt;/code&amp;gt; volume → &amp;lt;code&amp;gt;/gnupg&amp;lt;/code&amp;gt; (GPG keyring)&lt;br /&gt;
&lt;br /&gt;
{{Note|The container runs in &amp;lt;code&amp;gt;--privileged&amp;lt;/code&amp;gt; mode, which is required by &amp;lt;code&amp;gt;mkarchiso&amp;lt;/code&amp;gt; for loop device and mount operations, and by &amp;lt;code&amp;gt;makechrootpkg&amp;lt;/code&amp;gt; for chroot operations.}}&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
&lt;br /&gt;
ISO profiles are listed in &amp;lt;code&amp;gt;sources/profiles.list&amp;lt;/code&amp;gt;, one per line. Each profile corresponds to a directory under &amp;lt;code&amp;gt;sources/profiles/&amp;lt;/code&amp;gt; that contains a complete &amp;lt;code&amp;gt;archiso&amp;lt;/code&amp;gt; profile.&lt;br /&gt;
&lt;br /&gt;
Each profile directory contains architecture-specific files:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;profiledef.sh&amp;lt;/code&amp;gt; || ISO metadata (name, label, version, boot modes, arch) — &#039;&#039;&#039;rewritten at build time&#039;&#039;&#039; for target architecture&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pacman.conf&amp;lt;/code&amp;gt; || Pacman config for ISO build (with &amp;lt;code&amp;gt;$arch&amp;lt;/code&amp;gt; repo URLs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pacman.aarch64.conf&amp;lt;/code&amp;gt; || Pacman config for aarch64 (no multilib, &amp;lt;code&amp;gt;Architecture = aarch64&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;packages.x86_64&amp;lt;/code&amp;gt; || Package list for x86_64&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;packages.aarch64&amp;lt;/code&amp;gt; || Package list for aarch64 (excludes x86-only packages)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;airootfs/&amp;lt;/code&amp;gt; || Files to overlay onto the ISO root filesystem&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;syslinux/&amp;lt;/code&amp;gt; || Syslinux bootloader configs (x86_64 only, removed for aarch64)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;efiboot/&amp;lt;/code&amp;gt; || EFI boot files (per-architecture entries)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Available profiles:&lt;br /&gt;
&lt;br /&gt;
[Profiles are now maintained in an external repository](https://gitlab.com/onix-os/onixos-profiles). The repository contains the same profile directories as before. You can clone it and point the build system to the directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Profile !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;core&amp;lt;/code&amp;gt; || Minimal base system&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gnome&amp;lt;/code&amp;gt; || GNOME desktop environment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xfce&amp;lt;/code&amp;gt; || Xfce desktop environment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;icewm&amp;lt;/code&amp;gt; || IceWM lightweight desktop&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;security&amp;lt;/code&amp;gt; || Security-focused variant&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- Corporate profile removed --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;odesk&amp;lt;/code&amp;gt; || Office desktop environment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Kurumsal sub‑profiles removed --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build only a specific profile, edit &amp;lt;code&amp;gt;sources/profiles.list&amp;lt;/code&amp;gt; temporarily or call &amp;lt;code&amp;gt;ISO.mkarchiso()&amp;lt;/code&amp;gt; directly.&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
=== Local Packages (onix-base) ===&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;code&amp;gt;sources/packages.list&amp;lt;/code&amp;gt;. Sources live under &amp;lt;code&amp;gt;sources/packages/&amp;amp;lt;name&amp;amp;gt;/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Package !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; || OnixOS language runtime&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onix-base&amp;lt;/code&amp;gt; || Base system metapackage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onix-graphics&amp;lt;/code&amp;gt; || Graphics stack&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onix-meta&amp;lt;/code&amp;gt; || Meta package&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;calamares-onix&amp;lt;/code&amp;gt; || Graphical installer (Qt6, git source, with branding)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;linux-onix-zen&amp;lt;/code&amp;gt; || OnixOS ZEN kernel (7.1.7-zen1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;linux-onix-rt&amp;lt;/code&amp;gt; || OnixOS real-time kernel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;linux-onix-generic&amp;lt;/code&amp;gt; || OnixOS generic kernel (Arch mainline 7.1.7.arch1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;plymouth-onix-boot&amp;lt;/code&amp;gt; || Boot splash screen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;openxenmanager&amp;lt;/code&amp;gt; || Xen hypervisor management tool&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onix-updater&amp;lt;/code&amp;gt; || OnixOS system updater&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mkinitcpio-openswap&amp;lt;/code&amp;gt; || Encrypted swap support for mkinitcpio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ckbcomp&amp;lt;/code&amp;gt; || Keyboard composition utility&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== External Packages Repository ===&lt;br /&gt;
&lt;br /&gt;
The package definitions have been moved to an external repository:&lt;br /&gt;
&lt;br /&gt;
[OnixOS Packages Repository](https://gitlab.com/onix-os/onixos-packages)&lt;br /&gt;
&lt;br /&gt;
You can clone this repository and refer to it for package sources.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUR Packages (onix-aur) ===&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;code&amp;gt;sources/aur.list&amp;lt;/code&amp;gt;. Downloaded from the AUR snapshot endpoint at build time. Output goes to &amp;lt;code&amp;gt;output/aur/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Sync Configuration ==&lt;br /&gt;
&lt;br /&gt;
Both repository and ISO sync use SSH (&amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt; over SSH). Configuration files follow the standard &amp;lt;code&amp;gt;configparser&amp;lt;/code&amp;gt; INI format.&lt;br /&gt;
&lt;br /&gt;
=== Repository Sync ===&lt;br /&gt;
&lt;br /&gt;
Config files read by &amp;lt;code&amp;gt;build.py upload&amp;lt;/code&amp;gt; (both are used if they exist):&lt;br /&gt;
* &amp;lt;code&amp;gt;sources/sync/sourceforge.conf&amp;lt;/code&amp;gt; — SourceForge remote&lt;br /&gt;
* &amp;lt;code&amp;gt;sources/sync/local.conf&amp;lt;/code&amp;gt; — Local/internal server&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sync]&lt;br /&gt;
server  = frs.sourceforge.net&lt;br /&gt;
user    = olproject&lt;br /&gt;
path    = /home/frs/project/onixos/Repo&lt;br /&gt;
port    = 22&lt;br /&gt;
keyfile = /home/ted/.ssh/id_ed25519&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uploads &amp;lt;code&amp;gt;output/base/&amp;amp;lt;arch&amp;amp;gt;/repo&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;amp;lt;path&amp;amp;gt;/base/&amp;amp;lt;arch&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;output/aur/&amp;amp;lt;arch&amp;amp;gt;/repo&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;amp;lt;path&amp;amp;gt;/aur/&amp;amp;lt;arch&amp;amp;gt;&amp;lt;/code&amp;gt; for each architecture.&lt;br /&gt;
&lt;br /&gt;
Example remote structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/frs/project/onixos/Repo/&lt;br /&gt;
├── base/&lt;br /&gt;
│   ├── x86_64/&lt;br /&gt;
│   │   ├── onix-base.db.tar.gz&lt;br /&gt;
│   │   ├── package1.pkg.tar.zst&lt;br /&gt;
│   │   └── package1.pkg.tar.zst.sig&lt;br /&gt;
│   ├── x86_64_v2/&lt;br /&gt;
│   ├── x86_64_v3/&lt;br /&gt;
│   ├── i686/&lt;br /&gt;
│   ├── aarch64/&lt;br /&gt;
│   ├── armv7h/&lt;br /&gt;
│   └── armv6h/&lt;br /&gt;
└── aur/&lt;br /&gt;
    ├── x86_64/&lt;br /&gt;
    ├── x86_64_v2/&lt;br /&gt;
    └── ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ISO Sync ===&lt;br /&gt;
&lt;br /&gt;
Config files read by &amp;lt;code&amp;gt;build.py iso-sync&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;sources/isosync/sourceforge.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sources/isosync/local.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uploads &amp;lt;code&amp;gt;output/iso/&amp;amp;lt;profile&amp;amp;gt;/&amp;amp;lt;arch&amp;amp;gt;/output&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;amp;lt;path&amp;amp;gt;/ISO/&amp;amp;lt;arch&amp;amp;gt;&amp;lt;/code&amp;gt; for each profile and architecture.&lt;br /&gt;
&lt;br /&gt;
Example remote structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/frs/project/onixos/Daily/ISO/&lt;br /&gt;
├── x86_64/&lt;br /&gt;
│   ├── onixos-core-*.iso&lt;br /&gt;
│   ├── onixos-gnome-*.iso&lt;br /&gt;
│   ├── onixos-xfce-*.iso&lt;br /&gt;
│   ├── onixos-icewm-*.iso&lt;br /&gt;
│   └── onixos-security-*.iso&lt;br /&gt;
└── aarch64/&lt;br /&gt;
    ├── onixos-core-*.iso&lt;br /&gt;
    ├── onixos-gnome-*.iso&lt;br /&gt;
    └── ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Debug Mode ==&lt;br /&gt;
&lt;br /&gt;
Append &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;iso&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;repos&amp;lt;/code&amp;gt; subcommands to stream &amp;lt;code&amp;gt;stdout&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;stderr&amp;lt;/code&amp;gt; to the terminal in real time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo python build.py iso -d&lt;br /&gt;
sudo python build.py iso --arch=aarch64 -d&lt;br /&gt;
python build.py repos -d&lt;br /&gt;
python build.py repos --arch=x86_64_v3 -d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt;, command output is only written to the log files in &amp;lt;code&amp;gt;logs/&amp;amp;lt;arch&amp;amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Build Watcher ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;watcher.py&amp;lt;/code&amp;gt; provides a live terminal dashboard that tracks ISO and repository build status, active mounts, and recent log output. It refreshes every 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Standalone (curses UI):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 python watcher.py&lt;br /&gt;
&lt;br /&gt;
Press &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Esc&amp;lt;/code&amp;gt; to exit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attached to a build (GUI overlay):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo python build.py iso -gui&lt;br /&gt;
python build.py repos -gui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-gui&amp;lt;/code&amp;gt; flag starts the watcher in a background thread alongside the build process and stops it automatically when the build finishes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What the watcher shows:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ISO Builds&#039;&#039;&#039; — profile name, ISO filename, file size, build timestamp, architecture, and status. Scans per-arch directories (&amp;lt;code&amp;gt;output/iso/&amp;amp;lt;profile&amp;amp;gt;/&amp;amp;lt;arch&amp;amp;gt;/output/&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Repositories&#039;&#039;&#039; — repo name, total package count across all architectures, DB update timestamp, and status. Scans per-arch directories (&amp;lt;code&amp;gt;output/base/&amp;amp;lt;arch&amp;amp;gt;/repo/&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Active Mounts&#039;&#039;&#039; — any loop/overlay mounts still active inside &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Last Build Log&#039;&#039;&#039; — last 6 lines of &amp;lt;code&amp;gt;logs/isobuild.log&amp;lt;/code&amp;gt; with colour-coded errors and warnings.&lt;br /&gt;
&lt;br /&gt;
== Testing with QEMU ==&lt;br /&gt;
&lt;br /&gt;
Launch a built ISO in a QEMU virtual machine for quick validation:&lt;br /&gt;
&lt;br /&gt;
 python qemu.py &amp;lt;path-to-iso&amp;gt; [--arch=&amp;lt;arch&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python qemu.py output/iso/gnome/x86_64/output/onixos-gnome-x86_64.iso&lt;br /&gt;
python qemu.py output/iso/core/aarch64/output/onixos-core-aarch64.iso --arch=aarch64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VM parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! x86_64 !! aarch64&lt;br /&gt;
|-&lt;br /&gt;
| Binary || &amp;lt;code&amp;gt;qemu-system-x86_64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;qemu-system-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Machine || (default) || &amp;lt;code&amp;gt;virt&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CPU || &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;cortex-a57&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 4 GB || 4 GB&lt;br /&gt;
|-&lt;br /&gt;
| Cores || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| VGA || qxl || virtio-gpu-pci&lt;br /&gt;
|-&lt;br /&gt;
| Network || User-mode (NAT) || User-mode (NAT)&lt;br /&gt;
|-&lt;br /&gt;
| Boot || CD-ROM || CD-ROM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;qemu-system-x86_64&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;qemu-system-aarch64&amp;lt;/code&amp;gt; must be installed and available in &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Cleaning the Build ==&lt;br /&gt;
&lt;br /&gt;
Removes all build artefacts, clears the pacman package cache, unmounts any stale mounts, and deletes log files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo python clean.py&lt;br /&gt;
# or via make:&lt;br /&gt;
make clean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What &amp;lt;code&amp;gt;clean.py&amp;lt;/code&amp;gt; does in order:&lt;br /&gt;
# Reads &amp;lt;code&amp;gt;/proc/mounts&amp;lt;/code&amp;gt; and unmounts (with &amp;lt;code&amp;gt;umount -l&amp;lt;/code&amp;gt;) anything mounted inside &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt;, deepest paths first.&lt;br /&gt;
# Clears the pacman package cache: &amp;lt;code&amp;gt;find /var/cache/pacman/pkg/ -name &#039;*.pkg.tar.*&#039; -delete&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Removes all &amp;lt;code&amp;gt;logs/*.log&amp;lt;/code&amp;gt; files.&lt;br /&gt;
# Removes all contents of &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;sudo rm -rfv output/*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|This is destructive. All previously built ISOs and repository packages will be deleted.}}&lt;br /&gt;
&lt;br /&gt;
To remove only the chroot directories (without touching output):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make chroot_clean&lt;br /&gt;
# or for a specific architecture:&lt;br /&gt;
make chroot_clean ARCH=x86_64_v3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Isolated Chroot Build ==&lt;br /&gt;
&lt;br /&gt;
Repository builds use &amp;lt;code&amp;gt;makechrootpkg&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;devtools&amp;lt;/code&amp;gt; package to compile packages in an &#039;&#039;&#039;isolated chroot environment&#039;&#039;&#039;. ISO builds use a similar chroot isolation approach with &amp;lt;code&amp;gt;mkarchiso&amp;lt;/code&amp;gt;. This prevents:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Host pollution&#039;&#039;&#039; — packages cannot accidentally link against host libraries not listed in &amp;lt;code&amp;gt;makedepends&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Instruction leakage&#039;&#039;&#039; — packages are compiled with generic CFLAGS baseline, not host-specific optimizations.&lt;br /&gt;
# &#039;&#039;&#039;Non-reproducible builds&#039;&#039;&#039; — the build environment is deterministic and isolated from host updates.&lt;br /&gt;
&lt;br /&gt;
=== Repository Chroot Lifecycle ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Bootstrap&#039;&#039;&#039;: &amp;lt;code&amp;gt;mkarchroot &amp;amp;lt;chroot&amp;amp;gt;/root base-devel&amp;lt;/code&amp;gt; creates a minimal Arch Linux root filesystem.&lt;br /&gt;
# &#039;&#039;&#039;Build&#039;&#039;&#039;: &amp;lt;code&amp;gt;makechrootpkg -c -r &amp;amp;lt;chroot&amp;amp;gt;&amp;lt;/code&amp;gt; builds the package inside the chroot. The &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; flag creates a copy-on-write snapshot, so the base chroot remains clean.&lt;br /&gt;
# &#039;&#039;&#039;Cleanup&#039;&#039;&#039;: After each build, the snapshot is discarded. The base chroot persists for reuse.&lt;br /&gt;
&lt;br /&gt;
=== ISO Chroot Lifecycle ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Bootstrap&#039;&#039;&#039;: &amp;lt;code&amp;gt;mkarchroot &amp;amp;lt;chroot&amp;amp;gt;/root base-devel archiso squashfs-tools dosfstools arch-install-scripts&amp;lt;/code&amp;gt; creates a chroot with all ISO build tools.&lt;br /&gt;
# &#039;&#039;&#039;Mount&#039;&#039;&#039;: Bind-mounts virtual filesystems and directories into the chroot:&lt;br /&gt;
#* &amp;lt;code&amp;gt;/proc&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;chroot/root/proc&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;/sys&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;chroot/root/sys&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;chroot/root/dev&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;/dev/pts&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;chroot/root/dev/pts&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Staging profile directory → &amp;lt;code&amp;gt;chroot/root/src&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Work directory → &amp;lt;code&amp;gt;chroot/root/work&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Output directory → &amp;lt;code&amp;gt;chroot/root/out&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Build&#039;&#039;&#039;: &amp;lt;code&amp;gt;chroot &amp;amp;lt;chroot&amp;amp;gt;/root /usr/bin/env -i PATH=... mkarchiso ...&amp;lt;/code&amp;gt; runs inside the chroot with sanitized environment.&lt;br /&gt;
# &#039;&#039;&#039;Cleanup&#039;&#039;&#039;: All bind mounts are unmounted (deepest first) on exit, error, or signal (SIGINT/SIGTERM). Mount cleanup is guaranteed via &amp;lt;code&amp;gt;try/finally&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Note|ISO chroot isolation can be disabled with &amp;lt;code&amp;gt;--no-chroot&amp;lt;/code&amp;gt; for debugging or when running in an already-isolated environment (e.g., Docker).}}&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Chroot Path ===&lt;br /&gt;
&lt;br /&gt;
The chroot directory is resolved dynamically per architecture:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repository builds:&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Explicit&#039;&#039;&#039;: &amp;lt;code&amp;gt;ONIX_CHROOT&amp;lt;/code&amp;gt; environment variable (Jenkins per-build isolation).&lt;br /&gt;
# &#039;&#039;&#039;Prefix-based&#039;&#039;&#039;: &amp;lt;code&amp;gt;ONIX_CHROOT_PREFIX&amp;lt;/code&amp;gt; + architecture + PID + timestamp (workspace-aware).&lt;br /&gt;
# &#039;&#039;&#039;Auto-generated&#039;&#039;&#039;: &amp;lt;code&amp;gt;/tmp/onix-chroot-&amp;amp;lt;arch&amp;amp;gt;-&amp;amp;lt;pid&amp;amp;gt;-&amp;amp;lt;timestamp&amp;amp;gt;&amp;lt;/code&amp;gt; (unique per process).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ISO builds:&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Explicit&#039;&#039;&#039;: &amp;lt;code&amp;gt;ONIX_ISO_CHROOT&amp;lt;/code&amp;gt; environment variable.&lt;br /&gt;
# &#039;&#039;&#039;Prefix-based&#039;&#039;&#039;: &amp;lt;code&amp;gt;ONIX_CHROOT_PREFIX&amp;lt;/code&amp;gt; + architecture + PID + timestamp.&lt;br /&gt;
# &#039;&#039;&#039;Auto-generated&#039;&#039;&#039;: &amp;lt;code&amp;gt;/tmp/onix-iso-chroot-&amp;amp;lt;arch&amp;amp;gt;-&amp;amp;lt;pid&amp;amp;gt;-&amp;amp;lt;timestamp&amp;amp;gt;&amp;lt;/code&amp;gt; (unique per process).&lt;br /&gt;
&lt;br /&gt;
Example for Jenkins:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export ONIX_CHROOT=&amp;quot;/var/lib/jenkins/onix-chroot-${BUILD_NUMBER}&amp;quot;&lt;br /&gt;
python build.py repos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manual Chroot Management ===&lt;br /&gt;
&lt;br /&gt;
Bootstrap chroots for all architectures:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make chroot_bootstrap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bootstrap a specific architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make chroot_bootstrap ARCH=aarch64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Spawn a shell inside a chroot (requires &amp;lt;code&amp;gt;ONIX_CHROOT&amp;lt;/code&amp;gt; to be set):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export ONIX_CHROOT=/tmp/onix-chroot&lt;br /&gt;
make chroot_bootstrap ARCH=x86_64&lt;br /&gt;
make chroot_shell ARCH=x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PKGBUILD Sanitization ==&lt;br /&gt;
&lt;br /&gt;
Before building each package, the build system &#039;&#039;&#039;sanitizes&#039;&#039;&#039; the &amp;lt;code&amp;gt;PKGBUILD&amp;lt;/code&amp;gt; file to prevent instruction leakage:&lt;br /&gt;
&lt;br /&gt;
# Searches for hardcoded &amp;lt;code&amp;gt;-march=native&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-march=haswell&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-mavx2&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
# Rewrites them to the architecture-specific baseline (e.g., &amp;lt;code&amp;gt;-march=x86-64&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Strips explicit AVX/SSE4 feature flags (&amp;lt;code&amp;gt;-mavx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-mfma&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-msse4.2&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Backs up the original &amp;lt;code&amp;gt;PKGBUILD&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;PKGBUILD.bak&amp;lt;/code&amp;gt; (idempotent — only first run).&lt;br /&gt;
&lt;br /&gt;
This ensures packages compiled on a modern build server (e.g., with AVX-512) will run on older CPUs without triggering &amp;lt;code&amp;gt;Illegal instruction&amp;lt;/code&amp;gt; errors.&lt;br /&gt;
&lt;br /&gt;
=== Sanitization Patterns ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pattern !! Replacement (x86_64) !! Replacement (x86_64_v3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-march=native&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64-v3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-march=haswell&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64-v3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-march=skylake&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-march=x86-64-v3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-mtune=native&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-mtune=generic&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;-mtune=generic&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-mavx2&amp;lt;/code&amp;gt; || (removed) || (removed)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-mfma&amp;lt;/code&amp;gt; || (removed) || (removed)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-msse4.2&amp;lt;/code&amp;gt; || (removed) || (removed)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Verification ===&lt;br /&gt;
&lt;br /&gt;
Test the sanitizer with a synthetic PKGBUILD:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make test-sanitize ARCH=x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPG Signing ==&lt;br /&gt;
&lt;br /&gt;
Each built package is signed with a GPG detach-signature before being added to the repository database.&lt;br /&gt;
&lt;br /&gt;
=== Signing Configuration ===&lt;br /&gt;
&lt;br /&gt;
Create &amp;lt;code&amp;gt;sources/signing.conf&amp;lt;/code&amp;gt; (example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sign]&lt;br /&gt;
key_id = &amp;quot;FINGERPRINT_OR_EMAIL_OF_SIGNING_KEY&amp;quot;&lt;br /&gt;
passphrase_env = &amp;quot;ONIX_GPG_PASSPHRASE&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Key Setup ===&lt;br /&gt;
&lt;br /&gt;
Import the private key into the GPG keyring:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export GNUPGHOME=/gnupg  # or ~/.gnupg for local builds&lt;br /&gt;
gpg --import &amp;lt;private-key.asc&amp;gt;&lt;br /&gt;
gpg --edit-key &amp;lt;key_id&amp;gt;&lt;br /&gt;
  &amp;gt; trust&lt;br /&gt;
  &amp;gt; 5&lt;br /&gt;
  &amp;gt; save&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environment Variables ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Variable !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GNUPGHOME&amp;lt;/code&amp;gt; || Path to GPG keyring directory (default: &amp;lt;code&amp;gt;/gnupg&amp;lt;/code&amp;gt; in Docker)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_SIGN_KEY&amp;lt;/code&amp;gt; || GPG key ID or email to use with &amp;lt;code&amp;gt;--local-user&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ONIX_GPG_PASSPHRASE&amp;lt;/code&amp;gt; || Passphrase for the signing key (batch mode with &amp;lt;code&amp;gt;--pinentry-mode loopback&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Verification ===&lt;br /&gt;
&lt;br /&gt;
Verify signatures on built packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make test-sign ARCH=x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The build system includes a comprehensive test suite to verify package integrity.&lt;br /&gt;
&lt;br /&gt;
=== Test Targets ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Target !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test&amp;lt;/code&amp;gt; || Run all tests for all architectures&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test ARCH=x86_64_v3&amp;lt;/code&amp;gt; || Run all tests for specific architecture&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test-march&amp;lt;/code&amp;gt; || Verify compiled binaries use generic &amp;lt;code&amp;gt;-march&amp;lt;/code&amp;gt; baseline (no instruction leakage)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test-sign&amp;lt;/code&amp;gt; || Verify GPG signatures exist and validate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test-deps&amp;lt;/code&amp;gt; || Check for missing shared-object dependencies (host makedepends leak detection)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test-sanitize&amp;lt;/code&amp;gt; || Verify PKGBUILD sanitizer rewrites flags correctly&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test-smoke&amp;lt;/code&amp;gt; || End-to-end smoke test: build single package, verify integrity&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== test-march ===&lt;br /&gt;
&lt;br /&gt;
Inspects every ELF binary in built packages using &amp;lt;code&amp;gt;readelf -n&amp;lt;/code&amp;gt; to verify the &amp;lt;code&amp;gt;march&amp;lt;/code&amp;gt; value matches the architecture baseline. Fails if binaries were compiled with host-specific optimizations (e.g., &amp;lt;code&amp;gt;-march=skylake&amp;lt;/code&amp;gt; on an &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt; build).&lt;br /&gt;
&lt;br /&gt;
=== test-sign ===&lt;br /&gt;
&lt;br /&gt;
Verifies that every &amp;lt;code&amp;gt;.pkg.tar.zst&amp;lt;/code&amp;gt; file has a corresponding &amp;lt;code&amp;gt;.pkg.tar.zst.sig&amp;lt;/code&amp;gt; file and that the signature validates against the GPG keyring.&lt;br /&gt;
&lt;br /&gt;
=== test-deps ===&lt;br /&gt;
&lt;br /&gt;
Extracts each package, runs &amp;lt;code&amp;gt;ldd&amp;lt;/code&amp;gt; on ELF binaries, and checks for &amp;quot;not found&amp;quot; shared libraries. Detects cases where a package was compiled against host libraries not listed in &amp;lt;code&amp;gt;makedepends&amp;lt;/code&amp;gt; (chroot isolation failure).&lt;br /&gt;
&lt;br /&gt;
=== test-sanitize ===&lt;br /&gt;
&lt;br /&gt;
Creates a synthetic &amp;lt;code&amp;gt;PKGBUILD&amp;lt;/code&amp;gt; with instruction leakage (&amp;lt;code&amp;gt;-march=native&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-mavx2&amp;lt;/code&amp;gt;, etc.), runs the sanitizer, and verifies:&lt;br /&gt;
# Flags were rewritten to the architecture baseline.&lt;br /&gt;
# Original &amp;lt;code&amp;gt;PKGBUILD&amp;lt;/code&amp;gt; was backed up to &amp;lt;code&amp;gt;PKGBUILD.bak&amp;lt;/code&amp;gt;.&lt;br /&gt;
# No leaked flags remain in the sanitized file.&lt;br /&gt;
&lt;br /&gt;
=== test-smoke ===&lt;br /&gt;
&lt;br /&gt;
Builds a single small AUR package (e.g., &amp;lt;code&amp;gt;lolcat&amp;lt;/code&amp;gt;) end-to-end in a fresh chroot, then runs &amp;lt;code&amp;gt;test-march&amp;lt;/code&amp;gt; on the result. Useful as a fast CI gate before building the full ~1000-package list.&lt;br /&gt;
&lt;br /&gt;
=== Example Test Run ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Build repos for x86_64_v3&lt;br /&gt;
make repos ARCH=x86_64_v3&lt;br /&gt;
&lt;br /&gt;
# Run all tests&lt;br /&gt;
make test ARCH=x86_64_v3&lt;br /&gt;
&lt;br /&gt;
# Or run individual tests&lt;br /&gt;
make test-march ARCH=x86_64_v3&lt;br /&gt;
make test-sign ARCH=x86_64_v3&lt;br /&gt;
make test-deps ARCH=x86_64_v3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output Structure ==&lt;br /&gt;
&lt;br /&gt;
After a successful full build (all architectures):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output/&lt;br /&gt;
├── base/&lt;br /&gt;
│   ├── x86_64/&lt;br /&gt;
│   │   └── repo/              # onix-base repository for x86_64&lt;br /&gt;
│   ├── x86_64_v2/&lt;br /&gt;
│   │   └── repo/              # onix-base repository for x86_64_v2&lt;br /&gt;
│   ├── x86_64_v3/&lt;br /&gt;
│   │   └── repo/              # onix-base repository for x86_64_v3&lt;br /&gt;
│   ├── i686/&lt;br /&gt;
│   │   └── repo/              # onix-base repository for i686&lt;br /&gt;
│   ├── aarch64/&lt;br /&gt;
│   │   └── repo/              # onix-base repository for aarch64&lt;br /&gt;
│   ├── armv7h/&lt;br /&gt;
│   │   └── repo/              # onix-base repository for armv7h&lt;br /&gt;
│   └── armv6h/&lt;br /&gt;
│       └── repo/              # onix-base repository for armv6h&lt;br /&gt;
├── aur/&lt;br /&gt;
│   ├── x86_64/&lt;br /&gt;
│   │   └── repo/              # onix-aur repository for x86_64&lt;br /&gt;
│   ├── x86_64_v2/&lt;br /&gt;
│   │   └── repo/&lt;br /&gt;
│   ├── x86_64_v3/&lt;br /&gt;
│   │   └── repo/&lt;br /&gt;
│   ├── i686/&lt;br /&gt;
│   │   └── repo/&lt;br /&gt;
│   ├── aarch64/&lt;br /&gt;
│   │   └── repo/&lt;br /&gt;
│   ├── armv7h/&lt;br /&gt;
│   │   └── repo/&lt;br /&gt;
│   └── armv6h/&lt;br /&gt;
│       └── repo/&lt;br /&gt;
└── iso/&lt;br /&gt;
    ├── core/&lt;br /&gt;
    │   ├── x86_64/&lt;br /&gt;
    │   │   ├── work/              # mkarchiso working directory (temporary)&lt;br /&gt;
    │   │   └── output/            # core-*.iso (x86_64)&lt;br /&gt;
    │   └── aarch64/&lt;br /&gt;
    │       ├── work/&lt;br /&gt;
    │       └── output/            # core-*.iso (aarch64)&lt;br /&gt;
    ├── gnome/&lt;br /&gt;
    │   ├── x86_64/&lt;br /&gt;
    │   │   ├── work/&lt;br /&gt;
    │   │   └── output/            # gnome-*.iso (x86_64)&lt;br /&gt;
    │   └── aarch64/&lt;br /&gt;
    │       ├── work/&lt;br /&gt;
    │       └── output/            # gnome-*.iso (aarch64)&lt;br /&gt;
    ├── xfce/&lt;br /&gt;
    │   ├── x86_64/&lt;br /&gt;
    │   └── aarch64/&lt;br /&gt;
    ├── icewm/&lt;br /&gt;
    │   ├── x86_64/&lt;br /&gt;
    │   └── aarch64/&lt;br /&gt;
    ├── security/&lt;br /&gt;
    │   ├── x86_64/&lt;br /&gt;
    │   └── aarch64/&lt;br /&gt;
    ├── kurumsal/&lt;br /&gt;
    │   ├── firewall/&lt;br /&gt;
    │   │   ├── work/&lt;br /&gt;
    │   │   └── output/            # kurumsal-firewall-*.iso&lt;br /&gt;
    │   ├── server/&lt;br /&gt;
    │   │   ├── work/&lt;br /&gt;
    │   │   └── output/            # kurumsal-server-*.iso&lt;br /&gt;
    │   └── desktop/&lt;br /&gt;
    │       ├── work/&lt;br /&gt;
    │       └── output/            # kurumsal-desktop-*.iso&lt;br /&gt;
    └── odesk/&lt;br /&gt;
        ├── work/&lt;br /&gt;
        └── output/                # odesk-*.iso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each repository directory contains:&lt;br /&gt;
* &amp;lt;code&amp;gt;*.pkg.tar.zst&amp;lt;/code&amp;gt; — built packages&lt;br /&gt;
* &amp;lt;code&amp;gt;*.pkg.tar.zst.sig&amp;lt;/code&amp;gt; — GPG detach-signatures&lt;br /&gt;
* &amp;lt;code&amp;gt;onix-base.db.tar.gz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;onix-aur.db.tar.gz&amp;lt;/code&amp;gt; — repository database&lt;br /&gt;
* &amp;lt;code&amp;gt;onix-base.files.tar.gz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;onix-aur.files.tar.gz&amp;lt;/code&amp;gt; — file list database&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
&lt;br /&gt;
Build logs are written to &amp;lt;code&amp;gt;logs/&amp;amp;lt;arch&amp;amp;gt;/&amp;lt;/code&amp;gt; in the repository root (per-architecture):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
logs/&lt;br /&gt;
├── x86_64/&lt;br /&gt;
│   ├── chroot-bootstrap.log   # mkarchroot output (repo builds)&lt;br /&gt;
│   ├── iso-chroot-bootstrap.log  # mkarchroot output (ISO chroot)&lt;br /&gt;
│   ├── isobuild.log           # mkarchiso output (ISO builds)&lt;br /&gt;
│   ├── pacinst.log            # pacman dependency installation&lt;br /&gt;
│   ├── &amp;amp;lt;package&amp;amp;gt;.log          # makechrootpkg output per package&lt;br /&gt;
│   ├── sign.log               # GPG signing output&lt;br /&gt;
│   ├── repoadd.log            # repo-add output&lt;br /&gt;
│   └── copy.log               # package copy output&lt;br /&gt;
├── x86_64_v2/&lt;br /&gt;
│   └── ...&lt;br /&gt;
├── x86_64_v3/&lt;br /&gt;
│   └── ...&lt;br /&gt;
├── i686/&lt;br /&gt;
│   └── ...&lt;br /&gt;
├── aarch64/&lt;br /&gt;
│   ├── chroot-bootstrap.log&lt;br /&gt;
│   ├── iso-chroot-bootstrap.log&lt;br /&gt;
│   ├── isobuild.log&lt;br /&gt;
│   └── ...&lt;br /&gt;
├── armv7h/&lt;br /&gt;
│   └── ...&lt;br /&gt;
├── armv6h/&lt;br /&gt;
│   └── ...&lt;br /&gt;
└── clean.log                  # clean operation output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each log entry records the command, date/time, exit code, stderr, and stdout.&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS:Repositories&amp;diff=201</id>
		<title>OnixOS:Repositories</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS:Repositories&amp;diff=201"/>
		<updated>2026-08-25T07:33:31Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;OnixOS:Repositories&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OnixOS Mirrors ==&lt;br /&gt;
&lt;br /&gt;
You can install packages in repositories on your own Arch Linux-based system using Arch Linux repositories.&lt;br /&gt;
&lt;br /&gt;
The pacman we mentioned at the bottom.you can use the conf and mirrorlist files under /etc/.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/onix-os/onix-build-system/-/blob/main/sources/profiles/core/pacman.conf pacman.conf]&lt;br /&gt;
* [https://gitlab.com/onix-os/onix-build-system/-/blob/main/sources/profiles/core/airootfs/etc/pacman.d/mirrorlist mirrorlist]&lt;br /&gt;
&lt;br /&gt;
 [onix-base]&lt;br /&gt;
 SigLevel = Never&lt;br /&gt;
 Server = http://repo.onix-project.com/base/&lt;br /&gt;
 [onix-aur]&lt;br /&gt;
 SigLevel = Never&lt;br /&gt;
 Server = http://repo.onix-project.com/aur/&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS:Package_Management&amp;diff=200</id>
		<title>OnixOS:Package Management</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS:Package_Management&amp;diff=200"/>
		<updated>2026-08-25T07:33:26Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;OnixOS:Package Management&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039; pacman Usage Guide&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; pacman&#039;&#039;&#039; is the package manager for Arch Linux and its derivatives, designed to manage packages efficiently with simple commands.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Pacman is included by default in Arch Linux. To ensure it is installed and up to date, run:&lt;br /&gt;
&lt;br /&gt;
  sudo  pacman -Syu&lt;br /&gt;
&lt;br /&gt;
== Basic Usage ==&lt;br /&gt;
=== Package Installation ===&lt;br /&gt;
To install a package, use:&lt;br /&gt;
&lt;br /&gt;
  sudo  pacman -S &amp;lt;package_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to install Firefox:&lt;br /&gt;
  sudo  pacman -S firefox&lt;br /&gt;
&lt;br /&gt;
=== Package Removal ===&lt;br /&gt;
To remove a package:&lt;br /&gt;
&lt;br /&gt;
 sudo  pacman -R &amp;lt;package_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a package along with its dependencies:&lt;br /&gt;
&lt;br /&gt;
 sudo  pacman -Rns &amp;lt;package_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System Update ===&lt;br /&gt;
To update all installed packages:&lt;br /&gt;
&lt;br /&gt;
 sudo pacman -Syu&lt;br /&gt;
&lt;br /&gt;
To force a database refresh and then update:&lt;br /&gt;
&lt;br /&gt;
sudo pacman -Syyu&lt;br /&gt;
&lt;br /&gt;
== Package Management ==&lt;br /&gt;
=== Searching for Packages ===&lt;br /&gt;
To search for a package in the official repositories:&lt;br /&gt;
&lt;br /&gt;
 pacman -Ss &amp;lt;keyword&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if a package is installed:&lt;br /&gt;
&lt;br /&gt;
 pacman -Qs &amp;lt;package_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Package Information ===&lt;br /&gt;
To view package details:&lt;br /&gt;
&lt;br /&gt;
 pacman -Qi &amp;lt;package_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To list all installed packages:&lt;br /&gt;
&lt;br /&gt;
 pacman -Qe&lt;br /&gt;
&lt;br /&gt;
== Cleaning Up ==&lt;br /&gt;
To remove orphaned dependencies:&lt;br /&gt;
&lt;br /&gt;
 sudo  pacman -Rns $( pacman -Qdtq)&lt;br /&gt;
&lt;br /&gt;
To clean the package cache:&lt;br /&gt;
&lt;br /&gt;
 sudo pacman -Sc&lt;br /&gt;
&lt;br /&gt;
To remove all cached packages:&lt;br /&gt;
&lt;br /&gt;
 sudo pacman -Scc&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Fixing Key Issues ===&lt;br /&gt;
If a signature error occurs:&lt;br /&gt;
&lt;br /&gt;
 sudo pacman-key --init&lt;br /&gt;
 sudo pacman-key --populate archlinux&lt;br /&gt;
&lt;br /&gt;
To refresh keys:&lt;br /&gt;
&lt;br /&gt;
 sudo pacman-key --refresh-keys&lt;br /&gt;
&lt;br /&gt;
=== Resolving Conflicts ===&lt;br /&gt;
If a file conflict error occurs, manually remove the conflicting file and retry:&lt;br /&gt;
&lt;br /&gt;
 sudo rm /path/to/conflicting/file&lt;br /&gt;
 sudo pacman -Syu&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/ pacman Arch Linux  pacman Wiki]&lt;br /&gt;
* [https://man.archlinux.org/man/ pacman.8  pacman Manual]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS:Getting_Started&amp;diff=199</id>
		<title>OnixOS:Getting Started</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS:Getting_Started&amp;diff=199"/>
		<updated>2026-08-25T07:33:17Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;OnixOS:Getting Started&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OnixOS: Getting Started ==&lt;br /&gt;
&lt;br /&gt;
== Introduction == &lt;br /&gt;
&lt;br /&gt;
OnixOS Arch is a Linux-based and open source distribution. It comes with its own system-based functional programming language (O Language). It offers some customized tools for developers. &lt;br /&gt;
&lt;br /&gt;
== System Requirements == &lt;br /&gt;
&lt;br /&gt;
Before getting started with OnixOS, make sure your system meets the following requirements:&lt;br /&gt;
&lt;br /&gt;
=== Minimum Requirements ===&lt;br /&gt;
* 1 GHz Processor&lt;br /&gt;
* 1 GB RAM&lt;br /&gt;
* 5 GB Free Hard Drive Space&lt;br /&gt;
* Graphics: 1024x768 resolution display&lt;br /&gt;
&lt;br /&gt;
=== Recommended Requirements ===&lt;br /&gt;
* Dual-core processor (2.0 GHz or higher)&lt;br /&gt;
* 2 GB RAM or more&lt;br /&gt;
* 10 GB Free Hard Drive Space&lt;br /&gt;
* Graphics: 1366x768 resolution or higher&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/System&amp;diff=198</id>
		<title>O Language/API/System</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/System&amp;diff=198"/>
		<updated>2026-08-25T07:32:51Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API/System&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= System APIs =&lt;br /&gt;
&lt;br /&gt;
System APIs connect O Language programs to the operating system and external services.&lt;br /&gt;
&lt;br /&gt;
== Files and environment ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;finfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wdir&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;chdir&amp;lt;/code&amp;gt; for files and directories. Use &amp;lt;code&amp;gt;sysenv&amp;lt;/code&amp;gt; to read environment values.&lt;br /&gt;
&lt;br /&gt;
== Processes ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sh_exec&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;cmd_exec&amp;lt;/code&amp;gt; to start commands. Use &amp;lt;code&amp;gt;proc_out&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_pid&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;proc_kill&amp;lt;/code&amp;gt; to inspect or stop them.&lt;br /&gt;
&lt;br /&gt;
== Sockets ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sock socket &amp;quot;tcp4&amp;quot; &amp;quot;9050&amp;quot; &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
sock_send(socket, &amp;quot;ping&amp;quot;)&lt;br /&gt;
sock_listen(socket, {&amp;quot;ping&amp;quot;: &amp;quot;pong&amp;quot;})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sock_listen&amp;lt;/code&amp;gt; dispatches messages from a hash and &amp;lt;code&amp;gt;sock_send&amp;lt;/code&amp;gt; sends a message through an open socket.&lt;br /&gt;
&lt;br /&gt;
== HTTP ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;webserver(port, routes)&amp;lt;/code&amp;gt; starts an HTTP server. See [[O_Language/Web|Web Programming]] for route and request examples.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
The database API includes &amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;migrate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;create&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;drop&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;truncate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;query&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;search&amp;lt;/code&amp;gt;. See [[O_Language/Web/Database|Database]] for a complete example.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/CLI&amp;diff=197</id>
		<title>O Language/API/CLI</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/CLI&amp;diff=197"/>
		<updated>2026-08-25T07:32:47Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API/CLI&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CLI =&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; executable runs source files, starts the REPL, manages packages and processes, and operates web projects.&lt;br /&gt;
&lt;br /&gt;
== Source commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang                         # Start the REPL&lt;br /&gt;
olang run &amp;amp;lt;file&amp;amp;gt;              # Run a source file&lt;br /&gt;
olang exec &#039;output(&amp;quot;Hello&amp;quot;)&#039;&lt;br /&gt;
olang compile -f &amp;amp;lt;file&amp;amp;gt; -o &amp;amp;lt;output&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Package commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang install [-f library.olp]&lt;br /&gt;
olang info [-f library.olp]&lt;br /&gt;
olang generate [-f library.olp]&lt;br /&gt;
olang create --name &amp;amp;lt;project&amp;amp;gt; --repo &amp;amp;lt;remote&amp;amp;gt;&lt;br /&gt;
olang get &amp;amp;lt;name&amp;amp;gt; &amp;amp;lt;remote&amp;amp;gt;&lt;br /&gt;
olang job &amp;amp;lt;name&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;library.olp&amp;lt;/code&amp;gt; stores package metadata and dependency definitions.&lt;br /&gt;
&lt;br /&gt;
== Process commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang process --start true --file proc.ops&lt;br /&gt;
olang process --stop true --file proc.ops&lt;br /&gt;
olang process --init true --file proc.ops&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Web commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang web init &amp;amp;lt;local&amp;amp;gt;&lt;br /&gt;
olang web init &amp;amp;lt;remote&amp;amp;gt; &amp;amp;lt;local&amp;amp;gt;&lt;br /&gt;
olang web run&lt;br /&gt;
olang web stop&lt;br /&gt;
olang web create controller [name]&lt;br /&gt;
olang web create model [name]&lt;br /&gt;
olang web create connection [name]&lt;br /&gt;
olang web create route &amp;amp;lt;method&amp;amp;gt; &amp;amp;lt;path&amp;amp;gt; &amp;amp;lt;controller&amp;amp;gt;&lt;br /&gt;
olang web add &amp;amp;lt;remote&amp;amp;gt; &amp;amp;lt;library-name&amp;amp;gt;&lt;br /&gt;
olang web install&lt;br /&gt;
olang web update&lt;br /&gt;
olang web artifact &amp;amp;lt;filename&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The web CLI writes generated routes to &amp;lt;code&amp;gt;config/config.ola&amp;lt;/code&amp;gt; and keeps &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt; current. See [[O_Language/Web_Framework|O Language Web Framework]] for the workflow.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/Functions&amp;diff=196</id>
		<title>O Language/API/Functions</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/Functions&amp;diff=196"/>
		<updated>2026-08-25T07:32:42Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API/Functions&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Built-in Functions =&lt;br /&gt;
&lt;br /&gt;
This page summarizes the current built-in registry in the O Language source repository.&lt;br /&gt;
&lt;br /&gt;
== Values and collections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;itostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;atostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getval&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;len&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;push&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;rand&amp;lt;/code&amp;gt; operate on values and collections.&lt;br /&gt;
&lt;br /&gt;
== Console, files, and data ==&lt;br /&gt;
&lt;br /&gt;
Console functions include &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;inspect&amp;lt;/code&amp;gt;. File functions include &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;finfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wdir&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;chdir&amp;lt;/code&amp;gt;. Data helpers include &amp;lt;code&amp;gt;json&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;jsonp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;jsonf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xmlp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xmlf&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;renderf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Processes and networking ==&lt;br /&gt;
&lt;br /&gt;
Process functions include &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sh_exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cmd_exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_out&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_pid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_kill&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sysenv&amp;lt;/code&amp;gt;. Networking functions include &amp;lt;code&amp;gt;webserver&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sock_send&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sock_listen&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;migrate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;create&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;drop&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;truncate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;query&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;search&amp;lt;/code&amp;gt; provide database operations. See [[O_Language/Web/Database|Database]] for examples.&lt;br /&gt;
&lt;br /&gt;
== Other runtime functions ==&lt;br /&gt;
&lt;br /&gt;
Other registered helpers include &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colorize&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;regexp_check&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;regexp_find&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_sum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_abs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_cos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_sin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_tan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_log&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;encrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;decrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hash_encode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hash_decode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fwatch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/Types&amp;diff=195</id>
		<title>O Language/API/Types</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/Types&amp;diff=195"/>
		<updated>2026-08-25T07:32:33Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API/Types&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Types =&lt;br /&gt;
&lt;br /&gt;
O Language values are dynamically represented at runtime.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Integer || &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; || Signed whole number.&lt;br /&gt;
|-&lt;br /&gt;
| Float || &amp;lt;code&amp;gt;3.14&amp;lt;/code&amp;gt; || Floating-point number.&lt;br /&gt;
|-&lt;br /&gt;
| Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; || Boolean value.&lt;br /&gt;
|-&lt;br /&gt;
| String || &amp;lt;code&amp;gt;&amp;quot;O Language&amp;quot;&amp;lt;/code&amp;gt; || Text value.&lt;br /&gt;
|-&lt;br /&gt;
| Array || &amp;lt;code&amp;gt;[1, &amp;quot;two&amp;quot;, true]&amp;lt;/code&amp;gt; || Ordered, zero-based collection.&lt;br /&gt;
|-&lt;br /&gt;
| Hash || &amp;lt;code&amp;gt;{&amp;quot;name&amp;quot;: &amp;quot;O&amp;quot;}&amp;lt;/code&amp;gt; || Key/value collection.&lt;br /&gt;
|-&lt;br /&gt;
| Function || &amp;lt;code&amp;gt;fn(x) { return x + 1 }&amp;lt;/code&amp;gt; || Callable value.&lt;br /&gt;
|-&lt;br /&gt;
| Empty || Missing or void result || Context-dependent empty result.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The runtime also exposes system values for processes, environments, sockets, database connections, models, routes, requests, signals, modules, closures, compiled functions, and errors.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def items = [&amp;quot;first&amp;quot;, &amp;quot;second&amp;quot;]&lt;br /&gt;
output(items[0])&lt;br /&gt;
&lt;br /&gt;
def user = {&amp;quot;name&amp;quot;: &amp;quot;Ada&amp;quot;}&lt;br /&gt;
output(user[&amp;quot;name&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; to inspect a runtime type. Use &amp;lt;code&amp;gt;itostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;atostr&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;getval&amp;lt;/code&amp;gt; for common conversions.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/Tokens&amp;diff=194</id>
		<title>O Language/API/Tokens</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/Tokens&amp;diff=194"/>
		<updated>2026-08-25T07:32:26Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API/Tokens&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tokens and Operators =&lt;br /&gt;
&lt;br /&gt;
== Literals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Token !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Identifier || &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Integer || &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Float || &amp;lt;code&amp;gt;3.14&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| String || &amp;lt;code&amp;gt;&amp;quot;hello&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Comments start with &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; and continue to the end of the source input.&lt;br /&gt;
&lt;br /&gt;
== Operators and delimiters ==&lt;br /&gt;
&lt;br /&gt;
Arithmetic operators are &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;. Comparisons use &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;. Boolean negation uses &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;. Scope member access uses &amp;lt;code&amp;gt;-&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Parentheses group expressions and function arguments. Braces delimit blocks and hashes. Brackets delimit arrays and indexes. Commas separate items, colons separate hash keys and values, and semicolons separate statements.&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scope&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;env&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;literal&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;begin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;except&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;recover&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;final&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;route&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;impl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signal&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;async&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wait&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/Syntax&amp;diff=193</id>
		<title>O Language/API/Syntax</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/Syntax&amp;diff=193"/>
		<updated>2026-08-25T07:32:21Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API/Syntax&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Syntax =&lt;br /&gt;
&lt;br /&gt;
== Definitions and expressions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def answer = 6 * 7&lt;br /&gt;
def greeting = &amp;quot;Hello, &amp;quot; + &amp;quot;world!&amp;quot;&lt;br /&gt;
output(answer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Statements may be separated with semicolons. Braces delimit blocks, hashes, and scopes.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def add = fn(left, right) {&lt;br /&gt;
  return left + right&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output(add(2, 3))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Functions are first-class values and can be passed to &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Conditions and iteration ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; for branches. Use &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; for condition-based repetition. Use &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; to iterate arrays and hashes.&lt;br /&gt;
&lt;br /&gt;
== Scopes and modules ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scope math {&lt;br /&gt;
  def double = fn(x) { return x * 2 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output(math-&amp;gt;double(4))&lt;br /&gt;
load &amp;quot;helpers.olm&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other parser forms include &amp;lt;code&amp;gt;proc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;env&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;route&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signal&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;async&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wait&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;literal&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;impl&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API&amp;diff=192</id>
		<title>O Language/API</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API&amp;diff=192"/>
		<updated>2026-08-25T07:32:14Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/API&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= API Reference =&lt;br /&gt;
&lt;br /&gt;
This is the complete reference section. Use it when you know what you want to do and need the exact name, form, or accepted value.&lt;br /&gt;
&lt;br /&gt;
* [[O_Language/API/Syntax|Syntax]] — definitions, functions, control flow, scopes, and language forms.&lt;br /&gt;
* [[O_Language/API/Tokens|Tokens and Operators]] — literals, operators, delimiters, and keywords.&lt;br /&gt;
* [[O_Language/API/Types|Types]] — language values and runtime objects.&lt;br /&gt;
* [[O_Language/API/Functions|Built-in Functions]] — the built-in runtime function registry.&lt;br /&gt;
* [[O_Language/API/CLI|CLI]] — &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; commands, process management, and web commands.&lt;br /&gt;
* [[O_Language/API/System|System APIs]] — files, processes, environment, sockets, HTTP, and database operations.&lt;br /&gt;
&lt;br /&gt;
Web concepts and framework workflows remain in [[O_Language/Web|Web Programming]] and [[O_Language/Web_Framework|O Language Web Framework]] so that this reference stays focused on exact API behavior.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Web_Framework&amp;diff=191</id>
		<title>O Language/Web Framework</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Web_Framework&amp;diff=191"/>
		<updated>2026-08-25T07:32:01Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Web Framework&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= O Language Web Framework (olf) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt; is the convention-based web framework for O Language. It provides a project layout for routes, controllers, templates, browser assets, and database code.&lt;br /&gt;
&lt;br /&gt;
== Create and run a project ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang web init my-project&lt;br /&gt;
cd my-project&lt;br /&gt;
olang web run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The official framework source is [https://gitlab.com/olanguage/web/framework the olf repository].&lt;br /&gt;
&lt;br /&gt;
== Project structure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Path !! Responsibility&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;boot.ola&amp;lt;/code&amp;gt; || Starts the application by loading &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt; || Central loader for every generated and installed module.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;config/config.ola&amp;lt;/code&amp;gt; || HTTP route table.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;controllers/&amp;lt;/code&amp;gt; || Request handler functions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;models/&amp;lt;/code&amp;gt; || Data model definitions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;connections/&amp;lt;/code&amp;gt; || Database connection definitions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;templates/&amp;lt;/code&amp;gt; || Server-rendered HTML templates.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;public/&amp;lt;/code&amp;gt; || Browser assets.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;library.olp&amp;lt;/code&amp;gt; || Project metadata and dependencies.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;proc.ops&amp;lt;/code&amp;gt; || Local process definition.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Generate application components ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang web create controller home&lt;br /&gt;
olang web create model user&lt;br /&gt;
olang web create connection main&lt;br /&gt;
olang web create route get /users/:id show_user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The web CLI updates &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt; whenever it creates or installs a component. Controller and route definitions are written to &amp;lt;code&amp;gt;config/config.ola&amp;lt;/code&amp;gt;; no separate route file is created. Generated controller functions are intentionally empty so the developer can fill in the behavior.&lt;br /&gt;
&lt;br /&gt;
== Add libraries ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang web add &amp;amp;lt;remote&amp;amp;gt; &amp;amp;lt;library-name&amp;amp;gt;&lt;br /&gt;
olang web install&lt;br /&gt;
olang web update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dependency is recorded in &amp;lt;code&amp;gt;library.olp&amp;lt;/code&amp;gt;, installed under &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;, and its entry point is added to the central loader.&lt;br /&gt;
&lt;br /&gt;
== Templates and request data ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def main = fn() {&lt;br /&gt;
  return renderf(&amp;quot;templates/index.html&amp;quot;, {&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;My Olang App&amp;quot;,&lt;br /&gt;
    &amp;quot;body&amp;quot;: &amp;quot;Welcome!&amp;quot;&lt;br /&gt;
  })&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;server.parameters&amp;lt;/code&amp;gt; for route parameters and &amp;lt;code&amp;gt;server.get&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;server.post&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;server.headers&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;server.form&amp;lt;/code&amp;gt; for request data.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Web Framework]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Advanced/Runtime&amp;diff=190</id>
		<title>O Language/Advanced/Runtime</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Advanced/Runtime&amp;diff=190"/>
		<updated>2026-08-25T07:31:26Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Advanced/Runtime&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules and Loading =&lt;br /&gt;
&lt;br /&gt;
Modules use the &amp;lt;code&amp;gt;.olm&amp;lt;/code&amp;gt; extension. A module can define functions and values that become available to the program that loads it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
load &amp;quot;helpers.olm&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The path is resolved from the current project directory. Keep shared definitions in modules instead of repeating them in every entry point.&lt;br /&gt;
&lt;br /&gt;
== Web project loading ==&lt;br /&gt;
&lt;br /&gt;
Web projects use one central loader:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
load &amp;quot;lib/loader.olm&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;boot.ola&amp;lt;/code&amp;gt; loads &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt;. The loader loads controllers, models, connections, libraries, and finally &amp;lt;code&amp;gt;config/config.ola&amp;lt;/code&amp;gt;. Controllers must be loaded before the route configuration because route responses refer to handler functions.&lt;br /&gt;
&lt;br /&gt;
When the web CLI creates or adds a project component, it updates the loader automatically. This keeps the boot process in one place.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Advanced]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Advanced/Modules&amp;diff=189</id>
		<title>O Language/Advanced/Modules</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Advanced/Modules&amp;diff=189"/>
		<updated>2026-08-25T07:31:20Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Advanced/Modules&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules and Loading =&lt;br /&gt;
&lt;br /&gt;
Modules use the &amp;lt;code&amp;gt;.olm&amp;lt;/code&amp;gt; extension. A module can define functions and values that become available to the program that loads it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
load &amp;quot;helpers.olm&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The path is resolved from the current project directory. Keep shared definitions in modules instead of repeating them in every entry point.&lt;br /&gt;
&lt;br /&gt;
== Web project loading ==&lt;br /&gt;
&lt;br /&gt;
Web projects use one central loader:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
load &amp;quot;lib/loader.olm&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;boot.ola&amp;lt;/code&amp;gt; loads &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt;. The loader loads controllers, models, connections, libraries, and finally &amp;lt;code&amp;gt;config/config.ola&amp;lt;/code&amp;gt;. Controllers must be loaded before the route configuration because route responses refer to handler functions.&lt;br /&gt;
&lt;br /&gt;
When the web CLI creates or adds a project component, it updates the loader automatically. This keeps the boot process in one place.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Advanced]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Advanced&amp;diff=188</id>
		<title>O Language/Advanced</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Advanced&amp;diff=188"/>
		<updated>2026-08-25T07:31:14Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Advanced&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Advanced Topics =&lt;br /&gt;
&lt;br /&gt;
Use this section after [[O_Language/Getting_Started|Getting Started]]. It covers the runtime model and language features used in larger programs.&lt;br /&gt;
&lt;br /&gt;
== Modules ==&lt;br /&gt;
&lt;br /&gt;
Move reusable definitions into &amp;lt;code&amp;gt;.olm&amp;lt;/code&amp;gt; modules and load them by path. The complete loading order and project loader conventions are described in [[O_Language/Advanced/Modules|Modules and Loading]].&lt;br /&gt;
&lt;br /&gt;
== Runtime control ==&lt;br /&gt;
&lt;br /&gt;
O Language can start external processes, work with environment values, and coordinate asynchronous work. The reference details are in [[O_Language/Advanced/Runtime|Runtime and Concurrency]].&lt;br /&gt;
&lt;br /&gt;
== Sockets ==&lt;br /&gt;
&lt;br /&gt;
Message-oriented socket communication is available through the &amp;lt;code&amp;gt;sock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sock_listen&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sock_send&amp;lt;/code&amp;gt; APIs. Use it when an HTTP request/response model is not appropriate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sock socket &amp;quot;tcp4&amp;quot; &amp;quot;9050&amp;quot; &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
def messages = {&amp;quot;ping&amp;quot;: &amp;quot;pong&amp;quot;}&lt;br /&gt;
sock_listen(socket, messages)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[O_Language/API/System|System APIs]] for the full socket and process reference.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Advanced]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Getting_Started/Project_Files&amp;diff=187</id>
		<title>O Language/Getting Started/Project Files</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Getting_Started/Project_Files&amp;diff=187"/>
		<updated>2026-08-25T07:30:49Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Getting Started/Project Files&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Project Files =&lt;br /&gt;
&lt;br /&gt;
O Language projects use a small number of file types:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Extension !! Use&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.ola&amp;lt;/code&amp;gt; || Application source or an entry-point file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.olm&amp;lt;/code&amp;gt; || Loadable O Language module.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.olp&amp;lt;/code&amp;gt; || Package metadata and dependency definitions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.ops&amp;lt;/code&amp;gt; || Process configuration.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.obc&amp;lt;/code&amp;gt; || Compiled bytecode output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Web projects also use conventional directories such as &amp;lt;code&amp;gt;controllers/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;models/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;connections/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;config/&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;. See [[O_Language/Web_Framework|O Language Web Framework]] for their roles.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Getting Started]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Getting_Started/Language_Basics&amp;diff=186</id>
		<title>O Language/Getting Started/Language Basics</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Getting_Started/Language_Basics&amp;diff=186"/>
		<updated>2026-08-25T07:30:43Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Getting Started/Language Basics&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Language Basics =&lt;br /&gt;
&lt;br /&gt;
== Values and definitions ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt; to bind a value to a name. O Language supports numbers, text, booleans, arrays, hashes, and functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def answer = 6 * 7&lt;br /&gt;
def greeting = &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
def enabled = true&lt;br /&gt;
def colors = [&amp;quot;red&amp;quot;, &amp;quot;blue&amp;quot;]&lt;br /&gt;
def user = {&amp;quot;name&amp;quot;: &amp;quot;Ada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
output(answer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
Functions are values. Define one with &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, return a value with &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;, and call it by name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def add = fn(left, right) {&lt;br /&gt;
  return left + right&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output(add(2, 3))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conditions and loops ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (answer &amp;gt;= 42) {&lt;br /&gt;
  output(&amp;quot;ready&amp;quot;)&lt;br /&gt;
} else {&lt;br /&gt;
  output(&amp;quot;not ready&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for (colors in index, value) {&lt;br /&gt;
  output(value)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; for condition-based repetition. Use &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; when a function should be applied to the items in a collection.&lt;br /&gt;
&lt;br /&gt;
== Read more ==&lt;br /&gt;
&lt;br /&gt;
The complete grammar and value model are in [[O_Language/API/Syntax|Syntax]], [[O_Language/API/Tokens|Tokens and Operators]], and [[O_Language/API/Types|Types]].&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Getting Started]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/Getting_Started&amp;diff=185</id>
		<title>O Language/Getting Started</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/Getting_Started&amp;diff=185"/>
		<updated>2026-08-25T07:30:37Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language/Getting Started&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
This section is for a new O Language user. It explains the language&#039;s purpose, the first program, and the small set of ideas needed before reading the advanced or reference pages.&lt;br /&gt;
&lt;br /&gt;
== What is O Language? ==&lt;br /&gt;
&lt;br /&gt;
O Language is a system-oriented functional language. Values and functions are central, while system operations such as processes, files, networking, and databases are available from the same runtime.&lt;br /&gt;
&lt;br /&gt;
The official source repository is [https://gitlab.com/olanguage/olang.git gitlab.com/olanguage/olang]. This documentation assumes that the &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; executable is already available on &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Your first program ==&lt;br /&gt;
&lt;br /&gt;
Create &amp;lt;code&amp;gt;hello.ola&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output(&amp;quot;Hello, World!&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang hello.ola&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; without a file to open the interactive REPL.&lt;br /&gt;
&lt;br /&gt;
== Learn the core ideas ==&lt;br /&gt;
&lt;br /&gt;
* [[O_Language/Getting_Started/Language_Basics|Language Basics]] introduces values, definitions, functions, conditions, loops, and collections.&lt;br /&gt;
* [[O_Language/Getting_Started/Project_Files|Project Files]] explains &amp;lt;code&amp;gt;.ola&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.olm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.olp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;.ops&amp;lt;/code&amp;gt; files.&lt;br /&gt;
* [[O_Language/Web|Web Programming]] shows how the same language concepts are used in an HTTP application.&lt;br /&gt;
&lt;br /&gt;
When these ideas are familiar, continue to [[O_Language/Advanced|Advanced Topics]] or use the [[O_Language/API|API Reference]].&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language Getting Started]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS:Copyrights&amp;diff=184</id>
		<title>OnixOS:Copyrights</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS:Copyrights&amp;diff=184"/>
		<updated>2026-08-25T07:29:59Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;OnixOS:Copyrights&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OnixOS:Copyrights =&lt;br /&gt;
&lt;br /&gt;
This page describes the copyright and licensing information for software documented by the OnixOS project.&lt;br /&gt;
&lt;br /&gt;
== O Language and olf ==&lt;br /&gt;
&lt;br /&gt;
The O Language runtime and the &amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt; web framework are released under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Project !! Copyright holder !! License !! Source&lt;br /&gt;
|-&lt;br /&gt;
| [https://gitlab.com/olanguage/olang O Language]&lt;br /&gt;
| Oytun Özdemir, 2017&lt;br /&gt;
| [https://opensource.org/license/mit MIT License]&lt;br /&gt;
| [https://gitlab.com/olanguage/olang/-/blob/master/LICENSE LICENSE]&lt;br /&gt;
|-&lt;br /&gt;
| [https://gitlab.com/olanguage/web/framework olf Web Framework]&lt;br /&gt;
| Oytun Özdemir, 2017&lt;br /&gt;
| [https://opensource.org/license/mit MIT License]&lt;br /&gt;
| [https://gitlab.com/olanguage/web/framework/-/blob/master/LICENSE LICENSE]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License permits use, copying, modification, publication, distribution, sublicensing, and sale of the software, provided that the copyright notice and permission notice are included in copies or substantial portions of the software.&lt;br /&gt;
&lt;br /&gt;
== O Language VS Code extension ==&lt;br /&gt;
&lt;br /&gt;
The O Language VS Code extension is a separate project and is distributed under the GNU General Public License, version 3.&lt;br /&gt;
&lt;br /&gt;
* Project: [https://gitlab.com/olanguage/editors/olanguage-vscode O Language VS Code extension]&lt;br /&gt;
* License: [https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0]&lt;br /&gt;
* License file: [https://gitlab.com/olanguage/editors/olanguage-vscode/-/blob/master/LICENSE.md LICENSE.md]&lt;br /&gt;
&lt;br /&gt;
== Third-party software ==&lt;br /&gt;
&lt;br /&gt;
Third-party libraries and tools retain their own copyright and license terms. Their licenses are not replaced by the license of O Language, &amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt;, or any OnixOS documentation.&lt;br /&gt;
&lt;br /&gt;
When redistributing a project, review the license files included by that project and its dependencies. Preserve required copyright notices and license texts.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
The O Language documentation in this wiki is maintained as part of the [https://gitlab.com/olanguage/docs O Language documentation repository]. Documentation pages and included assets may have separate terms; check the relevant source repository or page notice before redistribution.&lt;br /&gt;
&lt;br /&gt;
For the legally binding terms, always consult the license file in the relevant source repository.&lt;br /&gt;
&lt;br /&gt;
[[Category:OnixOS]]&lt;br /&gt;
[[Category:Copyrights]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS_talk:Copyrights&amp;diff=183</id>
		<title>OnixOS talk:Copyrights</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS_talk:Copyrights&amp;diff=183"/>
		<updated>2026-08-25T07:29:52Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=OnixOS:Copyrights&amp;diff=182</id>
		<title>OnixOS:Copyrights</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=OnixOS:Copyrights&amp;diff=182"/>
		<updated>2026-08-25T07:29:45Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created page with &amp;quot;= OnixOS:Copyrights =  This page describes the copyright and licensing information for software documented by the OnixOS project.  == O Language and olf ==  The O Language runtime and the &amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt; web framework are released under the MIT License.  {| class=&amp;quot;wikitable&amp;quot; ! Project !! Copyright holder !! License !! Source |- | [https://gitlab.com/olanguage/olang O Language] | Oytun Özdemir, 2017 | [https://opensource.org/license/mit MIT License] | [https://gitlab.co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OnixOS:Copyrights =&lt;br /&gt;
&lt;br /&gt;
This page describes the copyright and licensing information for software documented by the OnixOS project.&lt;br /&gt;
&lt;br /&gt;
== O Language and olf ==&lt;br /&gt;
&lt;br /&gt;
The O Language runtime and the &amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt; web framework are released under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Project !! Copyright holder !! License !! Source&lt;br /&gt;
|-&lt;br /&gt;
| [https://gitlab.com/olanguage/olang O Language]&lt;br /&gt;
| Oytun Özdemir, 2017&lt;br /&gt;
| [https://opensource.org/license/mit MIT License]&lt;br /&gt;
| [https://gitlab.com/olanguage/olang/-/blob/master/LICENSE LICENSE]&lt;br /&gt;
|-&lt;br /&gt;
| [https://gitlab.com/olanguage/web/framework olf Web Framework]&lt;br /&gt;
| Oytun Özdemir, 2017&lt;br /&gt;
| [https://opensource.org/license/mit MIT License]&lt;br /&gt;
| [https://gitlab.com/olanguage/web/framework/-/blob/master/LICENSE LICENSE]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License permits use, copying, modification, publication, distribution, sublicensing, and sale of the software, provided that the copyright notice and permission notice are included in copies or substantial portions of the software.&lt;br /&gt;
&lt;br /&gt;
== O Language VS Code extension ==&lt;br /&gt;
&lt;br /&gt;
The O Language VS Code extension is a separate project and is distributed under the GNU General Public License, version 3.&lt;br /&gt;
&lt;br /&gt;
* Project: [https://gitlab.com/olanguage/editors/olanguage-vscode O Language VS Code extension]&lt;br /&gt;
* License: [https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0]&lt;br /&gt;
* License file: [https://gitlab.com/olanguage/editors/olanguage-vscode/-/blob/master/LICENSE.md LICENSE.md]&lt;br /&gt;
&lt;br /&gt;
== Third-party software ==&lt;br /&gt;
&lt;br /&gt;
Third-party libraries and tools retain their own copyright and license terms. Their licenses are not replaced by the license of O Language, &amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt;, or any OnixOS documentation.&lt;br /&gt;
&lt;br /&gt;
When redistributing a project, review the license files included by that project and its dependencies. Preserve required copyright notices and license texts.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
The O Language documentation in this wiki is maintained as part of the [https://gitlab.com/olanguage/docs O Language documentation repository]. Documentation pages and included assets may have separate terms; check the relevant source repository or page notice before redistribution.&lt;br /&gt;
&lt;br /&gt;
For the legally binding terms, always consult the license file in the relevant source repository.&lt;br /&gt;
&lt;br /&gt;
[[Category:OnixOS]]&lt;br /&gt;
[[Category:Copyrights]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Forum&amp;diff=181</id>
		<title>Forum</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Forum&amp;diff=181"/>
		<updated>2026-08-25T07:29:36Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;Forum&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The official community forum for the Onix Project, where users can engage in discussions, share feedback, and access support resources, can be found at https://forum.onix-project.com/.&lt;br /&gt;
&lt;br /&gt;
Telegram channel: http://t.me/onixos_community&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Planet&amp;diff=180</id>
		<title>Planet</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Planet&amp;diff=180"/>
		<updated>2026-08-25T07:29:26Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;Planet&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OnixOS Planet is an aggregator page that collects blog posts and updates from the OnixOS community, providing a centralized stream of developer content.&lt;br /&gt;
&lt;br /&gt;
https://planet.onix-project.com/&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:Forum&amp;diff=179</id>
		<title>Talk:Forum</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:Forum&amp;diff=179"/>
		<updated>2026-08-25T07:29:18Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Download&amp;diff=178</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Download&amp;diff=178"/>
		<updated>2026-08-25T07:29:07Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;Download&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OnixOS is a public and open source operating system. It is an operating system with “O Language” support for developers and users. You have many options to download the latest version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;htmltag tagname=&amp;quot;a&amp;quot; href=&amp;quot;https://sourceforge.net/projects/onixos/files/latest/download&amp;quot;&amp;gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; alt=&amp;quot;Download OnixOS&amp;quot; src=&amp;quot;https://a.fsdn.com/con/app/sf-download-button&amp;quot; width=&amp;quot;276&amp;quot; height=&amp;quot;48&amp;quot; srcset=&amp;quot;https://a.fsdn.com/con/app/sf-download-button?button_size=2x 2x&amp;quot; /&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ISO (x86_64) ===&lt;br /&gt;
&lt;br /&gt;
We will give you a few ISO links for Daily and Stable Updates. You can download anything you want from these links.&lt;br /&gt;
&lt;br /&gt;
* [https://sourceforge.net/projects/onixos/files/Release/ Stable Updates (Source Forge Mirror)]&lt;br /&gt;
* [https://sourceforge.net/projects/onixos/files/Daily/ Daily Updates (Source Forge Mirror)]&lt;br /&gt;
* [http://pub.onix-project.com/ Daily Updates (Onix Project Mirror)]&lt;br /&gt;
&lt;br /&gt;
=== Docker ===&lt;br /&gt;
&lt;br /&gt;
You can use the following links to develop a project on OnixOS on Docker or to work on a Docker version.&lt;br /&gt;
 &lt;br /&gt;
 docker pull olproject/onixos&lt;br /&gt;
 docker run -it olproject/onixos /bin/bash&lt;br /&gt;
&lt;br /&gt;
 docker pull olproject/olang&lt;br /&gt;
 docker run -t olproject/olang olang &amp;lt;olang file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can start working on docker using the command above.&lt;br /&gt;
&lt;br /&gt;
=== Vagrant ===&lt;br /&gt;
&lt;br /&gt;
To use the OnixOS operating system on Vagrant and make improvements, you can use the following commands or links.&lt;br /&gt;
&lt;br /&gt;
To use it in a new project;&lt;br /&gt;
&lt;br /&gt;
 vagrant init olproject/onixos --box-version 3.0&lt;br /&gt;
&lt;br /&gt;
To use it in the Vagrantfile file;&lt;br /&gt;
&lt;br /&gt;
 Vagrant.configure(&amp;quot;2&amp;quot;) do |config|&lt;br /&gt;
    config.vm.box = &amp;quot;olproject/onixos&amp;quot;&lt;br /&gt;
    config.vm.box_version = &amp;quot;3.0&amp;quot;&lt;br /&gt;
    config.ssh.username = &amp;quot;vagrant&amp;quot;&lt;br /&gt;
    config.ssh.password = &amp;quot;vagrant&amp;quot;&lt;br /&gt;
    config.ssh.insert_key = true&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux Mirrors ===&lt;br /&gt;
&lt;br /&gt;
You can install packages in repositories on your own Arch Linux-based system using Arch Linux repositories.&lt;br /&gt;
&lt;br /&gt;
The pacman we mentioned at the bottom.you can use the conf and mirrorlist files under /etc/.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/onix-os/onix-build-system/-/blob/main/sources/profiles/core/pacman.conf pacman.conf]&lt;br /&gt;
* [https://gitlab.com/onix-os/onix-build-system/-/blob/main/sources/profiles/core/airootfs/etc/pacman.d/mirrorlist mirrorlist]&lt;br /&gt;
&lt;br /&gt;
 [onix-base]&lt;br /&gt;
 SigLevel = Never&lt;br /&gt;
 Server = http://repo.onix-project.com/base/&lt;br /&gt;
 [onix-aur]&lt;br /&gt;
 SigLevel = Never&lt;br /&gt;
 Server = http://repo.onix-project.com/aur/&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language&amp;diff=177</id>
		<title>O Language</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language&amp;diff=177"/>
		<updated>2026-08-25T07:28:55Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Protected &amp;quot;O Language&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= O Language =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O Language&#039;&#039;&#039; is a &#039;&#039;&#039;System-Oriented Functional Programming Language (SOFPL)&#039;&#039;&#039;. It combines functional values with direct access to processes, files, sockets, databases, and HTTP services.&lt;br /&gt;
&lt;br /&gt;
The official source repository is [https://gitlab.com/olanguage/olang.git gitlab.com/olanguage/olang].&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
Start with the first section and use the later sections as your needs grow.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Getting Started&#039;&#039;&#039; — learn what O Language is, write a first program, and understand the basic project model.&lt;br /&gt;
** [[O_Language/Getting_Started|Getting Started]]&lt;br /&gt;
** [[O_Language/Getting_Started/Language_Basics|Language Basics]]&lt;br /&gt;
** [[O_Language/Getting_Started/Project_Files|Project Files]]&lt;br /&gt;
* &#039;&#039;&#039;Advanced&#039;&#039;&#039; — continue here after learning the core language.&lt;br /&gt;
** [[O_Language/Advanced|Advanced Topics]]&lt;br /&gt;
** [[O_Language/Advanced/Modules|Modules and Loading]]&lt;br /&gt;
** [[O_Language/Advanced/Runtime|Runtime and Concurrency]]&lt;br /&gt;
* &#039;&#039;&#039;Web&#039;&#039;&#039; — build HTTP applications with the language runtime.&lt;br /&gt;
** [[O_Language/Web|Web Programming]]&lt;br /&gt;
** [[O_Language/Web/Routing|Routing]]&lt;br /&gt;
** [[O_Language/Web/Database|Database]]&lt;br /&gt;
* &#039;&#039;&#039;O Language Web Framework&#039;&#039;&#039; — create and operate projects with the &amp;lt;code&amp;gt;olf&amp;lt;/code&amp;gt; conventions and web CLI.&lt;br /&gt;
** [[O_Language/Web_Framework|O Language Web Framework]]&lt;br /&gt;
* &#039;&#039;&#039;API&#039;&#039;&#039; — complete reference for the language, runtime, and command-line tools.&lt;br /&gt;
** [[O_Language/API|API Reference]]&lt;br /&gt;
** [[O_Language/API/Syntax|Syntax]]&lt;br /&gt;
** [[O_Language/API/Tokens|Tokens and Operators]]&lt;br /&gt;
** [[O_Language/API/Types|Types]]&lt;br /&gt;
** [[O_Language/API/Functions|Built-in Functions]]&lt;br /&gt;
** [[O_Language/API/CLI|CLI]]&lt;br /&gt;
** [[O_Language/API/System|System APIs]]&lt;br /&gt;
* &#039;&#039;&#039;Free Books&#039;&#039;&#039;&lt;br /&gt;
**[[:File:OlangForNewbies-TR.pdf|Turkish]]&lt;br /&gt;
**[[:File:OlangForNewbies-EN.pdf|English]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:Programming languages]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API/System&amp;diff=176</id>
		<title>Talk:O Language/API/System</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API/System&amp;diff=176"/>
		<updated>2026-08-25T07:28:23Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API/CLI&amp;diff=175</id>
		<title>Talk:O Language/API/CLI</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API/CLI&amp;diff=175"/>
		<updated>2026-08-25T07:28:18Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API/Functions&amp;diff=174</id>
		<title>Talk:O Language/API/Functions</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API/Functions&amp;diff=174"/>
		<updated>2026-08-25T07:28:10Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API/Types&amp;diff=173</id>
		<title>Talk:O Language/API/Types</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API/Types&amp;diff=173"/>
		<updated>2026-08-25T07:27:59Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API/Tokens&amp;diff=172</id>
		<title>Talk:O Language/API/Tokens</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API/Tokens&amp;diff=172"/>
		<updated>2026-08-25T07:27:44Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API/Syntax&amp;diff=171</id>
		<title>Talk:O Language/API/Syntax</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API/Syntax&amp;diff=171"/>
		<updated>2026-08-25T07:27:26Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/API&amp;diff=170</id>
		<title>Talk:O Language/API</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/API&amp;diff=170"/>
		<updated>2026-08-25T07:27:20Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Web/Database&amp;diff=169</id>
		<title>Talk:O Language/Web/Database</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Web/Database&amp;diff=169"/>
		<updated>2026-08-25T07:26:57Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Web/Routing&amp;diff=168</id>
		<title>Talk:O Language/Web/Routing</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Web/Routing&amp;diff=168"/>
		<updated>2026-08-25T07:26:50Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Web&amp;diff=167</id>
		<title>Talk:O Language/Web</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Web&amp;diff=167"/>
		<updated>2026-08-25T07:26:44Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Advanced/Modules&amp;diff=166</id>
		<title>Talk:O Language/Advanced/Modules</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Advanced/Modules&amp;diff=166"/>
		<updated>2026-08-25T07:26:34Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Advanced&amp;diff=165</id>
		<title>Talk:O Language/Advanced</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Advanced&amp;diff=165"/>
		<updated>2026-08-25T07:26:28Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Getting_Started/Project_Files&amp;diff=164</id>
		<title>Talk:O Language/Getting Started/Project Files</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Getting_Started/Project_Files&amp;diff=164"/>
		<updated>2026-08-25T07:26:21Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Getting_Started/Language_Basics&amp;diff=163</id>
		<title>Talk:O Language/Getting Started/Language Basics</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Getting_Started/Language_Basics&amp;diff=163"/>
		<updated>2026-08-25T07:26:16Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Getting_Started&amp;diff=162</id>
		<title>Talk:O Language/Getting Started</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Getting_Started&amp;diff=162"/>
		<updated>2026-08-25T07:26:09Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=Talk:O_Language/Web_Framework&amp;diff=161</id>
		<title>Talk:O Language/Web Framework</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=Talk:O_Language/Web_Framework&amp;diff=161"/>
		<updated>2026-08-25T07:25:21Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/System&amp;diff=160</id>
		<title>O Language/API/System</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/System&amp;diff=160"/>
		<updated>2026-08-25T07:22:19Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created page with &amp;quot;= System APIs =  System APIs connect O Language programs to the operating system and external services.  == Files and environment ==  Use &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;finfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wdir&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;chdir&amp;lt;/code&amp;gt; for files and directories. Use &amp;lt;code&amp;gt;sysenv&amp;lt;/code&amp;gt; to read environment values.  == Processes ==  Use &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;run&amp;lt;/code...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= System APIs =&lt;br /&gt;
&lt;br /&gt;
System APIs connect O Language programs to the operating system and external services.&lt;br /&gt;
&lt;br /&gt;
== Files and environment ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;finfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wdir&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;chdir&amp;lt;/code&amp;gt; for files and directories. Use &amp;lt;code&amp;gt;sysenv&amp;lt;/code&amp;gt; to read environment values.&lt;br /&gt;
&lt;br /&gt;
== Processes ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sh_exec&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;cmd_exec&amp;lt;/code&amp;gt; to start commands. Use &amp;lt;code&amp;gt;proc_out&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_pid&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;proc_kill&amp;lt;/code&amp;gt; to inspect or stop them.&lt;br /&gt;
&lt;br /&gt;
== Sockets ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sock socket &amp;quot;tcp4&amp;quot; &amp;quot;9050&amp;quot; &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
sock_send(socket, &amp;quot;ping&amp;quot;)&lt;br /&gt;
sock_listen(socket, {&amp;quot;ping&amp;quot;: &amp;quot;pong&amp;quot;})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sock_listen&amp;lt;/code&amp;gt; dispatches messages from a hash and &amp;lt;code&amp;gt;sock_send&amp;lt;/code&amp;gt; sends a message through an open socket.&lt;br /&gt;
&lt;br /&gt;
== HTTP ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;webserver(port, routes)&amp;lt;/code&amp;gt; starts an HTTP server. See [[O_Language/Web|Web Programming]] for route and request examples.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
The database API includes &amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;migrate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;create&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;drop&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;truncate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;query&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;search&amp;lt;/code&amp;gt;. See [[O_Language/Web/Database|Database]] for a complete example.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/CLI&amp;diff=159</id>
		<title>O Language/API/CLI</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/CLI&amp;diff=159"/>
		<updated>2026-08-25T07:21:45Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created page with &amp;quot;= CLI =  The &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; executable runs source files, starts the REPL, manages packages and processes, and operates web projects.  == Source commands ==  &amp;lt;pre&amp;gt; olang                         # Start the REPL olang run &amp;amp;lt;file&amp;amp;gt;              # Run a source file olang exec &amp;#039;output(&amp;quot;Hello&amp;quot;)&amp;#039; olang compile -f &amp;amp;lt;file&amp;amp;gt; -o &amp;amp;lt;output&amp;amp;gt; &amp;lt;/pre&amp;gt;  == Package commands ==  &amp;lt;pre&amp;gt; olang install [-f library.olp] olang info [-f library.olp] olang generate [-f library.olp...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CLI =&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;olang&amp;lt;/code&amp;gt; executable runs source files, starts the REPL, manages packages and processes, and operates web projects.&lt;br /&gt;
&lt;br /&gt;
== Source commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang                         # Start the REPL&lt;br /&gt;
olang run &amp;amp;lt;file&amp;amp;gt;              # Run a source file&lt;br /&gt;
olang exec &#039;output(&amp;quot;Hello&amp;quot;)&#039;&lt;br /&gt;
olang compile -f &amp;amp;lt;file&amp;amp;gt; -o &amp;amp;lt;output&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Package commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang install [-f library.olp]&lt;br /&gt;
olang info [-f library.olp]&lt;br /&gt;
olang generate [-f library.olp]&lt;br /&gt;
olang create --name &amp;amp;lt;project&amp;amp;gt; --repo &amp;amp;lt;remote&amp;amp;gt;&lt;br /&gt;
olang get &amp;amp;lt;name&amp;amp;gt; &amp;amp;lt;remote&amp;amp;gt;&lt;br /&gt;
olang job &amp;amp;lt;name&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;library.olp&amp;lt;/code&amp;gt; stores package metadata and dependency definitions.&lt;br /&gt;
&lt;br /&gt;
== Process commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang process --start true --file proc.ops&lt;br /&gt;
olang process --stop true --file proc.ops&lt;br /&gt;
olang process --init true --file proc.ops&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Web commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
olang web init &amp;amp;lt;local&amp;amp;gt;&lt;br /&gt;
olang web init &amp;amp;lt;remote&amp;amp;gt; &amp;amp;lt;local&amp;amp;gt;&lt;br /&gt;
olang web run&lt;br /&gt;
olang web stop&lt;br /&gt;
olang web create controller [name]&lt;br /&gt;
olang web create model [name]&lt;br /&gt;
olang web create connection [name]&lt;br /&gt;
olang web create route &amp;amp;lt;method&amp;amp;gt; &amp;amp;lt;path&amp;amp;gt; &amp;amp;lt;controller&amp;amp;gt;&lt;br /&gt;
olang web add &amp;amp;lt;remote&amp;amp;gt; &amp;amp;lt;library-name&amp;amp;gt;&lt;br /&gt;
olang web install&lt;br /&gt;
olang web update&lt;br /&gt;
olang web artifact &amp;amp;lt;filename&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The web CLI writes generated routes to &amp;lt;code&amp;gt;config/config.ola&amp;lt;/code&amp;gt; and keeps &amp;lt;code&amp;gt;lib/loader.olm&amp;lt;/code&amp;gt; current. See [[O_Language/Web_Framework|O Language Web Framework]] for the workflow.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
	<entry>
		<id>https://onix-project.com/index.php?title=O_Language/API/Functions&amp;diff=158</id>
		<title>O Language/API/Functions</title>
		<link rel="alternate" type="text/html" href="https://onix-project.com/index.php?title=O_Language/API/Functions&amp;diff=158"/>
		<updated>2026-08-25T07:21:30Z</updated>

		<summary type="html">&lt;p&gt;Tedaryum: Created page with &amp;quot;= Built-in Functions =  This page summarizes the current built-in registry in the O Language source repository.  == Values and collections ==  &amp;lt;code&amp;gt;itostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;atostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getval&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;len&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;push&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;rand&amp;lt;/code&amp;gt; operate on values and collections.  == Console, files, and data ==  Console functions include...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Built-in Functions =&lt;br /&gt;
&lt;br /&gt;
This page summarizes the current built-in registry in the O Language source repository.&lt;br /&gt;
&lt;br /&gt;
== Values and collections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;itostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;atostr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getval&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;len&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;push&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;rand&amp;lt;/code&amp;gt; operate on values and collections.&lt;br /&gt;
&lt;br /&gt;
== Console, files, and data ==&lt;br /&gt;
&lt;br /&gt;
Console functions include &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;inspect&amp;lt;/code&amp;gt;. File functions include &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;finfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wdir&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;chdir&amp;lt;/code&amp;gt;. Data helpers include &amp;lt;code&amp;gt;json&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;jsonp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;jsonf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xmlp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xmlf&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;renderf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Processes and networking ==&lt;br /&gt;
&lt;br /&gt;
Process functions include &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sh_exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cmd_exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_out&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_pid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;proc_kill&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sysenv&amp;lt;/code&amp;gt;. Networking functions include &amp;lt;code&amp;gt;webserver&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sock_send&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sock_listen&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;migrate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;create&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;drop&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;truncate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;query&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;search&amp;lt;/code&amp;gt; provide database operations. See [[O_Language/Web/Database|Database]] for examples.&lt;br /&gt;
&lt;br /&gt;
== Other runtime functions ==&lt;br /&gt;
&lt;br /&gt;
Other registered helpers include &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colorize&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;regexp_check&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;regexp_find&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_sum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_abs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_cos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_sin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_tan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;math_log&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;encrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;decrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hash_encode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hash_decode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fwatch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:O Language]]&lt;br /&gt;
[[Category:O Language API]]&lt;/div&gt;</summary>
		<author><name>Tedaryum</name></author>
	</entry>
</feed>