fun> Documentation
Detailed documentation for the Fun programming language.
The documentation is always a work in progress! It will always be behind the development of the code. It will be 100% aligned with a 1.0 release... ;)
This file serves as an index of the documents in this directory. Links are relative and can be opened directly on Git hosting or locally.
Basics
- Handbook - Comprehensive handbook for the Fun language and VM: install/build, configuration flags, usage, and full feature overview.
- REPL - REPL user guide: how to build/launch, editing and history, completions, REPL-on-error, and tips.
- Specification
- Examples
- Standard Library
The examples directory contains demonstrations of most Fun features, from basic “Hello, World!” to threading, networking, classes, and more. The lib directory includes modules written in Fun itself.
Overview
- Types - Core types (numbers, strings, arrays, maps, nil/bool), common operations, patterns, and interop notes.
- Numbers - Working with integers and floats: arithmetic, conversions, clamping, bitwise ops, and patterns.
- Strings - Working with strings: literals/escaping, concatenation, substr/find, split, and conversions.
- Arrays - Working with arrays: creation, indexing/slicing, iteration patterns, helpers, and idioms.
- Maps - Working with maps: construction, lookup/update, merging, iteration, and common patterns.
- Includes - Using local vs. system includes, FUN_LIB_DIR, DEFAULT_LIB_DIR, and namespaced includes with
as. - Opcodes - VM opcodes overview grouped by domain with brief behavior/stack notes.
- Internals - Implementation details: bytecode format, VM architecture, stacks/frames, parser, and dispatch.
- Examples - How to run the examples and the interactive showcase script, with environment tips.
- Testing - How to build and run tests/targets with CMake/CTest, and where to add new tests.
- Troubleshooting - Common issues and quick fixes for build, includes, and REPL usage.
New and supplemental guides
- Build - How to build Fun with CMake, available targets, and build options (FUN_DEBUG, FUN_USE_MUSL, FUN_WITH_CPP, FUN_WITH_RUST, FUN_WITH_OPENSSL).
- CLI - Command-line usage of the
funexecutable: synopsis, options, exit codes, includes and library paths. - fun - Full usage guide for the
funexecutable: invocation patterns, REPL, env vars, include paths, examples, and install locations. - Asyncio - Async I/O primitives and patterns: non-blocking sockets, fd polling, examples, and best practices.
- funstx - Syntax checker for .fun files with optional –fix auto-corrections; usage, exit codes, and limitations.
- Contributing - How to contribute: project structure, coding style, running tests, and PR guidelines.
- Style-Guide - Coding conventions for C and Fun (indentation, naming, idioms).
- stdlib - Overview of the standard library modules under ./lib with one-line summaries.
- Embedding - Embedding the VM from C/Rust, lifecycle, and host integration tips.
- Errors-and-Diagnostics - Understanding parser/runtime errors and enabling diagnostics.
- Performance - Build/runtime tuning tips and patterns for better performance.
- Security-and-Sandboxing - Trust boundaries, I/O expectations, and capability restrictions.
- FAQ - Frequently asked questions and quick answers.
- Website - Documentation for the fun-lang.xyz website in the
./web/directory. - Writing-Tests - How to author new tests for Fun and opcode components.
- Bytecode-Format - Reference for the bytecode format (split out from internals for convenience).
- Roadmap - High-level direction, planned features, and pointers to issues.
Examples
- Examples - Catalog of all example scripts under https://git.xw3.org/fun/fun/src/branch/main/examples: what each area contains, how to run them, required env vars, and extension requirements.
Extensions
Documentation for optional, build-time selectable integrations lives in ./extensions/:
- Index of extensions
- Highlights: cURL, INI, JSON, XML (libxml2), SQLite, PCRE2, PC/SC, OpenSSL
Tips
- When building from the repo without installing, set
FUN_LIB_DIRto the local./libdirectory so examples and the REPL can locate the stdlib. - For a broader project overview and quickstart, see the repository root README.
- Crypto examples:
- If built with
-DFUN_WITH_OPENSSL=ON, tryexamples/crypto/openssl_md5.fun.
- If built with

