Skip to main content

Runtime-adaptive compilation for Python — auto-profile, auto-compile, hot-swap.

Project description

agentic-compiler

Runtime-adaptive compilation for Python. Automatically profiles hot functions, compiles them to optimized backends (Numba, Rust, CUDA), and hot-swaps them at runtime — no human intervention required.

The Pitch

You write plain Python. The compiler watches. After 100+ calls it notices your function is slow, compiles it with Numba, verifies the output is identical, measures the speedup, and silently replaces the slow version — all while your program is still running. If the compiled version is ever wrong, it rolls back in one call.

Installation

pip install agentic-compiler

With Numba support (recommended):

pip install agentic-compiler[numba]

Quickstart

from agentic_compiler import Compiler
import numpy as np

compiler = Compiler()
compiler.install()  # monkey-patch all hot paths

# Your normal code — the compiler is watching
def slow_sum(arr):
    total = 0.0
    for i in range(len(arr)):
        total += arr[i] * arr[i]
    return total

# Run it enough times to trigger compilation
for _ in range(200):
    slow_sum(np.random.randn(1000))

# The compiler will auto-compile and hot-swap if speedup > 2x
print(compiler.profiler.report())

Decorator-style profiling

from agentic_compiler import Profiler

profiler = Profiler(sample_rate=0.05)

@profiler.watch
def my_hot_function(x):
    return np.sum(x ** 2)

Manual hot-swap

from agentic_compiler import Compiler

compiler = Compiler()

result = compiler.hot_swap(my_slow_function)
print(f"Speedup: {result.speedup:.1f}x, Validated: {result.validated}")

# Rollback if something goes wrong
compiler.restore()

One-shot compilation

from agentic_compiler import ast_to_numba

kernel = ast_to_numba(my_function)
if kernel.ready:
    print(f"Compiled to {kernel.backend} in {kernel.compile_time_ms:.1f}ms")

Grid-Aware Backend Selection

The GridBackendSelector automatically picks the right backend based on workload size:

Workload Size Backend Why
n < 50 numpy ctypes overhead dominates
50–500 rust_oneshot medium arrays
500+ rust_persistent zero-copy, weights in Rust
1000+ (GPU available) cuda maximum parallelism
from agentic_compiler import GridBackendSelector

backend = GridBackendSelector.select(n_rooms=750)
print(GridBackendSelector.report())

API Reference

Compiler

  • install(module_name=None) — monkey-patch functions for profiling
  • uninstall() — restore originals
  • compile_hotspots(top_n=5) — auto-compile top-N hot functions
  • compile_function(func, module, attr_name) — manual compile + swap
  • hot_swap(func, module, attr_name, backend) — compile + swap in one call
  • restore(key=None) — rollback to original function

Profiler

  • watch(func) — decorator to profile a function
  • get_hotspots(top_n=10) — ranked list by optimization potential
  • report() — human-readable profiling summary

CodeGenerator

  • compile(func) — compile to best available backend
  • validate(kernel, original, test_args) — A/B test for correctness
  • measure_speedup(kernel, original, test_args) — benchmark speedup
  • deploy(kernel, module, attr_name) — hot-swap into module

GeneratedKernel

  • ready — bool, True if compilation succeeded
  • compiled — the compiled callable
  • backend — "numba", "rust", or "python"
  • compile_time_ms — how long compilation took
  • speedup — measured speedup vs original

Architecture

Profiler → Analyzer → CodeGenerator → Validator → Deployer
 (watch)   (rank)    (compile)     (A/B test)  (hot-swap)
  1. Profiler samples 5% of calls, tracks timing and input shapes
  2. Analyzer scores functions for Numba vs Rust suitability via AST
  3. CodeGenerator compiles to best backend, with fallback to identity
  4. Validator runs A/B tests to verify correctness
  5. Deployer hot-swaps if speedup exceeds 2× threshold

Testing

pip install -e ".[numba]"
pytest

Tests cover profiler instrumentation, backend selection, hot-swap correctness, and Numba integration (mocked when unavailable).

Related Repos

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentic_compiler-0.1.0.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentic_compiler-0.1.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file agentic_compiler-0.1.0.tar.gz.

File metadata

  • Download URL: agentic_compiler-0.1.0.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for agentic_compiler-0.1.0.tar.gz
Algorithm Hash digest
SHA256 425a2000e1a4e119570b35b461bbacd2d218d08f893f98489219986162e77556
MD5 b586d215b8615b3df6a0ae240af8ccc9
BLAKE2b-256 de541f492ad3f9f5b6a601a65e6276a8a5a75bfa2588f881e96ffa9b6dd59829

See more details on using hashes here.

File details

Details for the file agentic_compiler-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agentic_compiler-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 72f3a00edcfff614ddb19b025a0948218168e0fc1983dd4d9d927130e0380cdf
MD5 44c7c59dcb5cc2a0a4935990519283c2
BLAKE2b-256 4799bc81e03c70e785f6b81dca6c90cfc7d98ba3c8f659a55860198da2b28f1a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page