Documentation

Contributing

Contributing

ArxLang is developed as a six-package monorepo. Contributions should respect the boundary between source frontends, AST modeling, semantic analysis, and native runtime behavior.

Package ownership

New language syntax belongs in a frontend. New reusable nodes belong in ASTx. Semantic rules, LLVM lowering, and Arrow C++ integrations belong in IRx.

Development setup

git clone https://github.com/arxlang/arx.git
cd arx
mamba env create --file conda/dev.yaml
conda activate arx
poetry install

Create a focused branch, make minimal changes, and add tests close to the behavior being changed.

Quality checks

Run package-specific checks while iterating:

makim arx.unittests
makim astx.unittests
makim irx.unittests
makim arxpy.unittests
makim aix.unittests
makim arxjit.unittests

Before opening a pull request:

makim all.typecheck
makim all.lint
makim all.ci
makim docs.check
makim docs.build

Native toolchain-dependent checks require Clang and, for Arrow features, a C++ compiler.

Documentation and examples

The site uses DoukiMD, configured in doukimd.yaml. makim docs.build generates the Python API Markdown and builds the site in build/; makim docs.preview builds and serves it at http://localhost:8000. Rebuild after editing; preview does not watch files. Saved notebook outputs are rendered without executing cells. The existing API generator remains in use; enabling DoukiMD native API extraction is a separate migration that requires source docstring and export cleanup.

Python code

Configuration

Never use heredocs inside YAML-backed files such as .makim.yaml or GitHub Actions workflows. Use direct commands or plain Python/xonsh statements.

Pull requests

Search documentation

Type to search.