A business rule engine with a stable C ABI. Same input, same bytecode, same decision — guaranteed across platforms. No SaaS, no network hop, no surprises.
Same engine + same bytecode + same inputs = same output. Always. No hidden time sources, no locale drift, no randomness. Auditable and reproducible.
In-process library. No database, no message broker, no sidecar. Link .dll or .so into your app and call the C API. Sub-millisecond evaluation.
Forward-compatible struct design with struct_size + reserved fields. Upgrade the engine without recompiling your application. Error codes are frozen.
C API at the core, with ready-made Python and C# wrappers. No C expertise required. More languages coming based on demand.
12 stable error codes with actionable diagnostic messages. Troubleshooting guide covers every scenario. Designed for minimal vendor support.
Write rules in RuleDSL, compile to bytecode, load at runtime. Change business logic without touching application code or restarting services.
Define rules in RuleDSL — a simple, readable DSL for business decisions
Compile to bytecode with the CLI compiler. Deterministic output, every time.
Verify bytecode integrity and compatibility before loading into production.
Call the API with your data. Get a decision. ALLOW, DECLINE, REVIEW, or LIMIT.
rule high_risk { when amount > 1000 and currency == "USD"; then risk_score = 90, reason = "high_amount", decline; }
from ruledsl import RuleDSL engine = RuleDSL("ruledsl_capi.dll") rules = open("rules.rule").read() bc = engine.compile(rules) decision = engine.evaluate(bc, { "amount": 1200.0, "currency": "USD" }) # decision.action == "DECLINE"
Tested against adversarial and edge-case scenarios. Zero tolerance for crashes — all malformed inputs are rejected gracefully.
| Category | Tests | Crashes | Result |
|---|---|---|---|
| Fuzz (malformed rule sources) | 45 | 0 | PASS |
| Bytecode tampering | 17 | 0 | PASS |
| Input injection (SQLi / XSS / CRLF) | 37 | 0 | PASS |
| Memory stability (sequential) | 500 | 0 | PASS |
| Rule complexity limits | 30 | 0 | PASS |
| Locale determinism | 7 | 0 | PASS |
| C API misuse (NULL / NaN / overflow) | 48 | 0 | PASS |
| Multi-thread stress (8 threads) | 800,000 | 0 | PASS |
| Total | 800,684 | 0 | ALL PASS |
800K concurrent evaluations across 8 threads with zero errors. Memory flat after warm-up, returns below baseline after cleanup. No leak, no degradation.
Per-thread compiler pattern for full parallelism. Shared compiler misuse detected at runtime with AX_ERR_CONCURRENT_COMPILER_USE — no crash, no data corruption.
Compiled output verified identical across 7 OS locales including Turkish, German, and French. No decimal-separator drift, no collation variance.
All 17 tampering vectors — flipped bits, truncation, wrong magic, 1 MB garbage — correctly detected and rejected with structured error codes.
Interested in evaluating RuleDSL for your project?
I am looking for pilot partners in fintech, compliance, and risk management.