IRx
IRx is the semantic-analysis, LLVM-lowering, and native-runtime layer of the
ArxLang ecosystem. The PyPI distribution is pyirx; the Python import is irx.
Status: functional experimental backend. It supports substantial compiler and runtime flows but does not lower every ASTx node.
Responsibilities
- analyze ASTx modules and attach resolved semantic sidecars
- validate types, calls, imports, templates, classes, and FFI boundaries
- lower supported nodes to LLVM IR with
llvmlite - emit objects, link executables with Clang, and run built artifacts
- report structured semantic, lowering, native-compile, and link diagnostics
- activate native runtime features only when a compilation unit needs them
Native Apache Arrow runtime
IRx integrates Apache Arrow through native C++ runtime code and opaque C ABI handles. Current layers include:
- primitive Arrow arrays and Arrow C Data interoperability
- homogeneous fixed-width
arrow::Tensorvalues - DataFrames backed by
arrow::Table - Series backed by
arrow::ChunkedArray - RecordBatch schemas, builders, nullable data, and Arrow IPC streams
The RecordBatch API interoperates with PyArrow and supports signed/unsigned
integers, floats, booleans, UTF-8 and large UTF-8 strings, dates, timestamps,
and times. pyarrow and arx-arrowcpp-sources provide the Arrow C++ build and
link metadata.
Install
pip install pyirx
Native builds require an LLVM/Clang-compatible toolchain. Arrow runtime features require a C++ compiler.
Translate ASTx to LLVM IR
import astx
from irx.builder import Builder
builder = Builder()
module = builder.module()
body = astx.Block()
body.append(astx.FunctionReturn(astx.LiteralInt32(0)))
prototype = astx.FunctionPrototype(
name="main",
args=astx.Arguments(),
return_type=astx.Int32(),
)
module.block.append(astx.FunctionDef(prototype=prototype, body=body))
llvm_ir = builder.translate(module)
print(llvm_ir)
translate() returns LLVM IR text without linking. Use build() to emit and
link a native artifact, then run() to execute the built program.
RecordBatch API
The direct Python API lives in irx.record_batch. In a source checkout, build
its standalone shared library before first use:
python -c "from irx.builder.runtime.record_batch import build_record_batch_shared_library; build_record_batch_shared_library()"
from irx.record_batch import (
IrxColumnType,
RecordBatchBuilder,
RecordBatchSchema,
)
schema = RecordBatchSchema()
schema.add_field("id", IrxColumnType.INT32, nullable=False)
builder = RecordBatchBuilder(schema)
builder.append_int32(0, 42)
batch = builder.finish()
assert batch.get_int32(0, 0) == 42
batch.release()
builder.release()
schema.release()
Runtime features
Registered features include libc, libm, assertions, buffer, list,
array, tensor, dataframe, and record_batch. Features may contribute
external symbols, C/C++ sources, object files, libraries, and linker flags.
Boundaries
IRx does not parse Arx/AIX source and does not define high-level query or DataFrame language semantics. Arrow C++ stays behind the native runtime; LLVM does not encode Arrow object layouts directly.
Documentation: https://arxlang.org/irx/
License: Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyirx-1.24.0.tar.gz.
File metadata
- Download URL: pyirx-1.24.0.tar.gz
- Upload date:
- Size: 211.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4597321d90361cad646713a2905f01693bac2a8948d80ce9b89a98f62bebca92
|
|
| MD5 |
5696624fab826ceb1ff5e5eddb198dc5
|
|
| BLAKE2b-256 |
f4faca071ea66aeb19d964eeaf194bf64536f97fa5d4c2c5dae4c8fd9ffea43c
|
File details
Details for the file pyirx-1.24.0-py3-none-any.whl.
File metadata
- Download URL: pyirx-1.24.0-py3-none-any.whl
- Upload date:
- Size: 277.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5069ae17e522038e27d8a33932868497954682031c90838d4419cd3961a8dfd
|
|
| MD5 |
df245ce3f2acb2457347de4e1e2f12c2
|
|
| BLAKE2b-256 |
e95aa442eb0fe186037448901ecf4cc9944524251312da0f30906b039ebfef97
|