Skip to main content

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::Tensor values
  • 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.

Metadata

Release files for pyirx 1.24.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyirx 1.24.1
File Size Uploaded
pyirx-1.24.1.tar.gz 211.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyirx 1.24.1
File Interpreter ABI Platform
pyirx-1.24.1-py3-none-any.whl Python 3 none any Details

Total release size: 488.9 kB

Release files / pyirx-1.24.1.tar.gz

Download URL pyirx-1.24.1.tar.gz
Size 211.4 kB
Tags Source
SHA-256 checksum
How to use checksums
17b8613cc8027974559b1bdd6c1eaaca7efcf75e7b7e8c6a39a38772104b995d
BLAKE2b-256 checksum
How to use checksums
16db99adcac45f0592b425e16f4a678f512a30c7050458c02511ee63131c82cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1020-azure

Release files / pyirx-1.24.1-py3-none-any.whl

Download URL pyirx-1.24.1-py3-none-any.whl
Size 277.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
add96105982a3a6170a29c256e62097242fa18df1217d91bd99e1fbf27ff0bfa
BLAKE2b-256 checksum
How to use checksums
9f0381079216a16e575e1c53025eeb57fe5816f2743fb9ea1f5cba976c439d0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1020-azure

Release history Release notifications | RSS feed

This release

1.24.1 This release

2 release files

1.23.1

2 release files

1.23.0

2 release files

1.22.0

2 release files

1.21.0

2 release files

1.20.0

2 release files

1.19.2

2 release files

1.19.1

2 release files

1.18.0

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.14.0

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page