Arx Programming Language
Arx is the programming language and source frontend in the ArxLang ecosystem. The arxlang distribution provides the arx Python package and the arx command-line compiler.
Arx owns source syntax, lexing, parsing, project-aware imports, compiler CLI behavior, and compiled tests. The parser emits ASTx nodes. IRx then performs semantic analysis, LLVM lowering, native runtime activation, and artifact generation.
Arx source
-> Arx lexer and parser
-> ASTx nodes
-> IRx semantic analysis
-> LLVM IR
-> object file or executable
Status: Arx is a functional prototype. Implemented behavior is tested, but the language and compiler interfaces are not production-stable.
Start here
Language reference
Implemented areas
The current frontend supports:
- typed functions, defaults, extern declarations, and function templates
- mutable variables, finite union aliases, casts, and type queries
if/else,while, count-stylefor, and list-valuedfor ... in- absolute, relative, grouped, namespace, standard-library, and installed package imports
- classes, inheritance, fields, methods, modifiers, and default construction
- lists and builtin
range - fixed-shape numeric tensors and runtime-shaped tensor parameters
- static-schema DataFrames and typed Series
- assertions and the compiled
arx testrunner - token, ASTx, LLVM IR, object, executable, and run modes
Apache Arrow types
Arx exposes typed collection syntax backed by IRx’s native Arrow C++ runtime:
| Arx type | Runtime representation |
|---|---|
tensor[T, D0, ...] |
arrow::Tensor |
dataframe[name: T, ...] |
arrow::Table |
series[T] |
arrow::ChunkedArray |
See Collections and Apache Arrow for language rules and Native Apache Arrow Support for the runtime boundary and current interoperability features.
Current limits
- Tensor elements are currently fixed-width signed integers or floats.
- Tensors are readonly, and runtime-shaped parameters cannot be indexed dynamically.
- DataFrame columns currently use fixed-width numeric or Boolean values.
- Runtime-schema DataFrame parameters do not expose columns by name.
- The standard library and general language surface remain limited.
- Arx does not define AST node types or feature lowering; those belong to ASTx and IRx respectively.