Anand Krishnamoorthi
|
3f7a5496dc
|
feat(bindings)!: add RVM/Program support across FFI and language bindings (#565)
- FFI: add RVM/Program APIs, execution state accessors, HostAwait handling, and buffer/result helpers in rvm.rs, common.rs, engine.rs.
- Compiler: emit HostAwait for __builtin_host_await in function_calls.rs.
- RVM tests: add HostAwait regression cases and extend harness for suspend/resume responses in host_await.yaml and mod.rs.
- C/C++: add RVM tests/examples and wrapper updates in rvm_tests.c, rvm_tests.cpp, regorus.hpp, plus CMake wiring.
- C#: add Program/Rvm bindings, SafeHandle/PInvoke, tests, and example usage in Regorus, RvmProgramTests.cs, Program.cs, and README updates.
- Go: add Program/Rvm bindings, tests, and examples in rvm.go, rvm_test.go, main.go.
- Java: add Program/Rvm bindings, JNI glue, and examples in lib.rs, regorus, Test.java.
- Python: add Program/Rvm bindings and examples in lib.rs, test.py.
- WASM: add Program/Rvm bindings and examples in lib.rs, test.js.
- Tooling: wire binding tests in xtask and ignore generated Java artifacts in .gitignore.
Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
|
2026-01-30 23:55:31 +05:30 |
|
Anand Krishnamoorthi
|
a3a20a1235
|
feat!: Rego -> RVM Compiler and extensive testsuite (#506)
# RVM compiler test cases
Coverage:
- arithmetic
- arrays
- chained lookups
- comparisons
- comprehensions
- default rules
- destructuring
- function rules
- loops/quantifiers
- multiple entrypoints
- objects/sets
- variables
- negative/edge scenarios such as data/rule conflicts
- virtual data lookups
- etc
# Modify interpreter and compiled policy for RVM Compilation
- Interpreter::eval_default_rule_for_compiler:
evaluates a named default rule in isolation - allows compiler to emit a constant value instead of instructions
for the default value
# feat: Rego Compiler Scaffolding
- Introduce the rego::compiler module surface and entry point wiring
- Add the core compiler concepts:
- register allocator
- scope tracking
- literal/builtin tables
- rule worklists
- instruction emit helpers
- compiler-specific error types
- context structs for rules, comprehensions, and loops to support later lowering passes.
# feat: Compile Rules/Queries
- add compiler::compile_from_policy workflow plus rule worklist, entry-point wiring, and recursion checks
- implement query lowering:
- scheduling-aware statement ordering
- loop hoisting
- “every/some” semantics
- context yields
- literal assertions
- finalize Program construction
# feat: Expression Lowering
- add compile_rego_expr and helpers to translate every AST expression into RVM instructions,
- interop with binding plans, comprehensions, and membership checks.
- implement collection literal builders (ArrayCreate, SetCreate, ObjectCreate)
- dedupe literal keys and handle mixed literal/dynamic fields via instruction data blocks.
- operations:
- arithmetic/boolean/bin operators
- membership
- unary minus
- set unions/intersections
- etc
- user-defined and builtin function calls
- reference handling
- analyse chained refs
- distinguishe data/input/local roots
- perform rule dispatch or virtual document lookups
- emits optimized Index/ChainedIndex instructions.
# feat: Comprehensions & Loops
- shared comprehension emitter
- wraps array/set/object comprehensions with ComprehensionBegin/End
- context management
- loop lowering utilities
- read hoisting metadata
- emit LoopStart/LoopNext
- some in lowering
- every quantifiers
- index iteration
- propagate binding plans into stored registers so downstream statements see bound variables.
# feat: Destructuring Lowering
- destructuring planner integration
- assignment/parameter/loop bindings use hoisted plans instead of re-walking ASTs.
- handle :=, =, wildcard matches, and equality
- evaluate RHS
- applying destructuring plans
- emit assert condition as needed
- support nested array/object destructuring, dynamic keys, and some ... in forms
# test: Shared Testing + RVM Suites
- move YAML test helpers into test_utils.rs and re-export via common.rs for use by interpreter and vm test suites
- comprehensive compiler test suite
- compiles policies with the new Rego→RVM compiler
- runs them through RegoVM
- compares against interpreter behavior
- supports multiple entry points
- provides assembly listings
- filterable YAML suites.
Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
|
2025-11-24 12:08:37 -06:00 |
|