Open Policy Agent v1.20.0
++++++++~~-********
Changes
- Ast: Remove a few unnecessary allocationsremoved
- Allocate less in ast.NewObjectchanged
- Heap allocation huntingchanged
- Improved UUID implementationchanged
- New Rego keywords: and and or, for combining conditions inside a single rule bodyadded
- Debug: Allow configuring variable value length limitadded
- Format: Add support for formatting and/or logical expressions (#8683) reported andadded
- Oracle: Support and/or logical keywords (#8819) reported andadded
- Repl: Add support for and/or imports (#9066) reported andadded
- Repl: Allow interactive ref head rule definitionsadded
- Runtime: Allow registering hooks, and pass them to discoveryadded
- Ast: Allow non-infix and()/or() set built-in callsadded
58 more lines
- Ir: Add end locations in plan statementsadded
- Ir: Add list of unplanned rules to plan dataadded
- Ast: Add Equal implementation for *objectadded
- Ast: Add sync pool for strings.Readeradded
- Bundle: Fix roots containing percent-encoded charactersfixed
- Loader: Fix loading absolute paths on Windowsfixed
- Plugins: Avoid predictable OCI temp storefixed
- Plugins: Fix overly verbose return of errorsfixed
- Ast: Correct regression in Ruleset Addfixed
- Ast: Fix future.keywords wildcard import not including the not keywordfixed
- Ast: Fix panic for shadowed root document calls in Rego v0 (#9067) reported andfixed
- Topdown: Fix false modulo by zero for multiples of 2^64fixed
- Topdown: Fix negation inlining limit overflowingfixed
- Topdown: Fix sum overflow when integer elements fit int64 but the sum does notfixed
- Ast: Avoid excessive save/restore calls in parserfixed
- Ast: Fix performance regression in InterfaceToValuefixed
- Allow_net now restricts remote JSON Schema $ref fetching from json.match_schema and json.verify_schemaother
- Coverage reports can now explain why a range is not coveredother
- Much faster partial evaluation for dynamically composed policiesother
- Rego Keywords: and, or — the full referenceother
- Precedence and grouping — how the operators group, and where parentheses are neededother
- Combining with notother
- Incremental rules — the idiom when the alternatives must produce a valueother
- Compile: Validate plan-addons existother
- Config: Migrate server.encoding and server.decoding validation to Regoother
- Format: Converge object comprehension layout (#9075) reported andother
- Format: Don't group rules that aren't written on one lineother
- Format: Don't unwrap one-line rule body braces from a single set termother
- Format: Honor line breaks before explicit and/or operand bodiesother
- Format: Keep parens around a nested not operandother
- Format: Wrap set union | infix in parens when output would be re-interpreted as comprehensionother
- Format: Write added imports before rulesother
- Rego: Pass capabilities to the parser in (*Rego).compileModulesother
- Server: Decouple decision logging from request context cancellationother
- Wasm: Address regression causing memory corruptionother
- Ast: Don't index away rules with a nested print callother
- Ast: Don't leak generated locals for calls in ref type errorsother
- Ast: Don't leak generated locals in ref type errorsother
- Ast: Don't report type errors for documents replaced by withother
- Ast: Index rules with and/or expressionsother
- Ast: Name the enclosing rule in unsafe var errors on shared linesother
- Ast: Only re-parse brace-led set terms as rule bodiesother
- Ast: Print undeclared var namesother
- Ast: Reject print calls as and/or operandsother
- Ast: Reject assignments in implicit not, and and or bodiesother
- Ast: Reject bare ambiguous { ... | ... } not operandsother
- Topdown,tester: Don't put shared interned refs into mutable ASTsother
- Topdown: A few tracing/profiling improvementsother
- Topdown: Clean up http.send implementationother
- Topdown: Don't yield a key in both base and virtual docs twiceother
- Topdown: Error on built-in calls with unevaluated operandsother
- Topdown: Save enumerated refs over unknown dataother
- Topdown: Speed up partial evaluation of dynamically composed policiesother
- Topdown: Treat an empty JSON Schema enum as unsatisfiableother
- Ast: Bucket built-in name lookup by ref shapeother
- Ast: Use pointer comparison in Equal methodsother
- Eval: Catch booleans trying to escape to the heapother
- Topdown: Various io.Writer improvementsother
39 maintenance lines (dependency bumps, CI, tests, docs)
- Ecosystem: Add Scanara to the ecosystem pagemaintenance
- Ecosystem: Describe what GOPAL actually coversmaintenance
- Policy-reference: Add examples for common built-insmaintenance
- Website: Refresh Apache APISIX ecosystem resourcesmaintenance
- Add endswith and replace built-in examplesmaintenance
- Add split and lower built-in examplesmaintenance
- Clarify glob.match indexing requirementsmaintenance
- Document and/or keywords (#8682) reported andmaintenance
- Highlight and/or keywords in Rego syntaxmaintenance
- Improve to_number built-in descriptionmaintenance
- Keep snippets highlighted while they are editedmaintenance
- Ast: Annotations code cleanupmaintenance
- Ast: Enable modernize linter for golangci-lintmaintenance
- Ast: Enable static check of consistent receiver namesmaintenance
- Ast: Move global builtin.Ref() vars to a single locationmaintenance
- Ast: Move interning experiment behind noisy tagmaintenance
- Ast: Replace use of sort package with modern alternativesmaintenance
- Ast: Use slices.CompareFunc for imports and annotationsmaintenance
- Build/release: Create new release toolmaintenance
- Modernize for the Go 1.26 standard librarymaintenance
- Bundle: Use util.WithPrefixmaintenance
- Migrate proto-check to bufbuild/buf-actionmaintenance
- Serialize benchmarks workflow to avoid racing writes to benchmarks branchmaintenance
- Enable all usetesting optionsmaintenance
- Remove intrange linter, as it's covered by modernizemaintenance
- Releng: Sample benchmarks from 15 processes, not 3maintenance
- Releng: Update post-merge benchmark regression checkmaintenance
- Server_test: Adjust test to avoid flakey decision log test outcomemaintenance
- Clean up irrelevant nolint directivesmaintenance
- Restore print-based and/or short-circuit testsmaintenance
- Topdown: Add uri built-in compliance cases for parser edge casesmaintenance
- Topdown: Cover uuid.parse input format leniencymaintenance
- Topdown: Modernize fixes and some string building improvementsmaintenance
- Util: Don't return a nil slice from StringToByteSlice("")maintenance
- Dependency updates; notably:maintenance
- Bump the build toolchain to Go 1.27, and the go.mod language version to 1.26maintenance
- Bump github.com/dgraph-io/badger/v4 from 4.9.4 to 4.9.5maintenance
- Bump github.com/prometheus/client_golang from 1.24.0 to 1.24.1maintenance
- Bump go.opentelemetry.io/proto/otlp from 1.10.0 to 1.11.0maintenance
109 lines1 removed12 added3 changed12 fixed42 other39 maintenancetyped from the source notes