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 profilinguninstall()— restore originalscompile_hotspots(top_n=5)— auto-compile top-N hot functionscompile_function(func, module, attr_name)— manual compile + swaphot_swap(func, module, attr_name, backend)— compile + swap in one callrestore(key=None)— rollback to original function
Profiler
watch(func)— decorator to profile a functionget_hotspots(top_n=10)— ranked list by optimization potentialreport()— human-readable profiling summary
CodeGenerator
compile(func)— compile to best available backendvalidate(kernel, original, test_args)— A/B test for correctnessmeasure_speedup(kernel, original, test_args)— benchmark speedupdeploy(kernel, module, attr_name)— hot-swap into module
GeneratedKernel
ready— bool, True if compilation succeededcompiled— the compiled callablebackend— "numba", "rust", or "python"compile_time_ms— how long compilation tookspeedup— measured speedup vs original
Architecture
Profiler → Analyzer → CodeGenerator → Validator → Deployer
(watch) (rank) (compile) (A/B test) (hot-swap)
- Profiler samples 5% of calls, tracks timing and input shapes
- Analyzer scores functions for Numba vs Rust suitability via AST
- CodeGenerator compiles to best backend, with fallback to identity
- Validator runs A/B tests to verify correctness
- 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
- forgemaster — Forge orchestration (uses agentic compilation for swarm deliberation)
- cocapn-plato — Fleet PLATO integration
- tensor-spline — Compressed neural network layers
License
MIT
Project details
Release history Release notifications | RSS feed
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
425a2000e1a4e119570b35b461bbacd2d218d08f893f98489219986162e77556
|
|
| MD5 |
b586d215b8615b3df6a0ae240af8ccc9
|
|
| BLAKE2b-256 |
de541f492ad3f9f5b6a601a65e6276a8a5a75bfa2588f881e96ffa9b6dd59829
|
File details
Details for the file agentic_compiler-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agentic_compiler-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72f3a00edcfff614ddb19b025a0948218168e0fc1983dd4d9d927130e0380cdf
|
|
| MD5 |
44c7c59dcb5cc2a0a4935990519283c2
|
|
| BLAKE2b-256 |
4799bc81e03c70e785f6b81dca6c90cfc7d98ba3c8f659a55860198da2b28f1a
|