Regal v0.30.0 is the first release to fully support OPA 1.0 while at the same time being fully compatible with older versions of OPA and Rego. This process helped improve both Regal and OPA, as a few things to fix in both projects got identified along the way!
Full support for OPA 1.0, while maintaining compatibility with earlier versions
Regal now seamlessly supports working with both pre-1.0 and 1.0+ policies, or even a mix of both! See Regal's new documentation on OPA 1.0 to learn more about how to get the most out of Regal when working with Rego of any version.
As part of this upgrade, all the Regal docs have now been updated to use OPA/Rego 1.0 syntax, in examples and anywhere else Rego is used.
Finally, and perhaps needless to say — Regal itself and all of its linter policies are now upgraded to OPA 1.0!
Much Faster Linting
A mission that started out with the goal of improving the performance of Regal's linter, ended up with multiple PR's
to improve evaluation performance in OPA. This of course benefits not just Regal, but all users of OPA! However, since
the regal lint
command was used for benchmarking, most optimizations have been along the hot path of that command.
Linting with Regal is now almost 2x as fast as before, while consuming 2/3 of the memory previously needed. And we have
more improvements lined up in OPA for the next release, so stay tuned!
Notable Improvements
- The evaluation code lens now supports using an
input.yaml
file as input, in addition toinput.json
. Thanks @mrgadgil for suggesting this feature! - The redundant-existence-check rule now also reports redudant checks of function arguments
- New
InputFromTextWithOptions
functions for users of the Go API - Faster evaluation by avoiding custom function calls in hot path
- Reduced time to evaluation by performance improvements in Roast input conversion
- The language server now logs the version of Regal and the path to the binary at startup, helping users know which Regal binary is being used
Notable Fixes
- Fixed issue where
--force
wasn't honored byregal fix
. Thanks @grosser for reporting that! - Fixed false positive in pointless-reassignment rule
- Fixed false positive in top-level-iteration rule
- Fixed false positive in external-reference rule. Thanks @tsandall for reporting the issue!
- The evaluate code lens now works even when
input.json
/input.yaml
isn't found - Improved docs for directory-package-mismatch
- Fixed nil dereference in JUnit reporter. Thanks @OhMyGuus for reporting the issue!
Changelog
- 5b7d423: build(deps): bump codecov/codecov-action from 4.6.0 to 5.0.0 (#1263) (@dependabot[bot])
- 99752a0: build(deps): bump github/codeql-action from 3.27.3 to 3.27.4 (#1264) (@dependabot[bot])
- f078127: build(deps): bump codecov/codecov-action from 5.0.0 to 5.0.2 (#1268) (@dependabot[bot])
- c8a0329: lsp: Use notify for sending messages (#1267) (@charlieegan3)
- abd9504: build(deps): bump cross-spawn from 7.0.3 to 7.0.5 in /build (#1266) (@dependabot[bot])
- acd22f7: Add support for using input.yaml in Evaluate code lens (#1269) (@anderseknert)
- 183584a: build(deps): bump codecov/codecov-action from 5.0.2 to 5.0.4 (#1270) (@dependabot[bot])
- 6716d37: Less frequent, and grouped dependabot updates (#1271) (@anderseknert)
- aa65332: build(deps): bump smol-toml from 1.3.0 to 1.3.1 in /build (#1272) (@dependabot[bot])
- 34ba147: build(deps): bump github/codeql-action from 3.27.4 to 3.27.5 (#1274) (@dependabot[bot])
- f61f52b: build(deps): bump codecov/codecov-action from 5.0.4 to 5.0.7 (#1273) (@dependabot[bot])
- 46d913b: rules: Add InputFromTextWithOptions for go users (#1278) (@charlieegan3)
- 2d6b61c: Fix issue where --force wasn't honored in git check (#1282) (@anderseknert)
- da251c9: Enable a few more golangci-lint rules (#1280) (@anderseknert)
- 87c2ff3: Have
redundant-existence-check
include function args (#1279) (@anderseknert) - 0a88ab3: Fix false positive in
top-level-assignment
(#1287) (@anderseknert) - c0ac18f: Fix false positive in
pointless-reassignment
(#1286) (@anderseknert) - 8759f08: Fix false positive in external-reference and vars in composite values (#1284) (@anderseknert)
- 0db5b5f: Avoid allocations by not calling custom functions on hot path (#1289) (@anderseknert)
- 69b43a8: build(deps): bump github/codeql-action from 3.27.5 to 3.27.6 (#1292) (@dependabot[bot])
- 981ac1d: build(deps): bump actions/cache from 4.1.2 to 4.2.0 (#1291) (@dependabot[bot])
- bc46bd6: build(deps): bump codecov/codecov-action from 5.0.7 to 5.1.1 (#1290) (@dependabot[bot])
- 668950a: dev: Fix golangci-lint reporting issues in ignored files in VS Code (#1296) (@anderseknert)
- 36a72d4: Roast v0.5.0, faster input conversion (#1293) (@anderseknert)
- 8a096a1: build(deps): bump golang.org/x/crypto from 0.28.0 to 0.31.0 (#1297) (@dependabot[bot])
- 9102b94: Evaluate should work even when input missing (#1295) (@anderseknert)
- 00e5341: dev: Fix integration test that used old URL for capabilities (#1304) (@anderseknert)
- 8d0d888: docs: add note about roots in directory-package-mismatch rule (#1303) (@charlieegan3)
- 44182c7: build(deps): bump github/codeql-action from 3.27.6 to 3.27.9 (#1301) (@dependabot[bot])
- d3d096d: build(deps): bump actions/setup-go from 5.1.0 to 5.2.0 (#1302) (@dependabot[bot])
- 7f8e54d: [create-pull-request] automated change (@charlieegan3)
- 748c2e8: Fix nil pointer dereference in JUnit reporter (#1307) (@anderseknert)
- 0673c09: hints: remove tail anchor for multiple-default-rules hint (#1314) (@srenatus)
- bac6333: build(deps): bump github/codeql-action from 3.27.9 to 3.28.0 (#1311) (@dependabot[bot])
- cc08ab1: build(deps): bump actions/upload-artifact from 4.4.3 to 4.5.0 (#1309) (@dependabot[bot])
- 46c5205: build(deps): bump codecov/codecov-action from 5.1.1 to 5.1.2 (#1310) (@dependabot[bot])
- fb3ac2e: build(deps): bump peter-evans/create-pull-request from 7.0.5 to 7.0.6 (#1312) (@dependabot[bot])
- 550d05c: build(deps): bump github.com/go-git/go-git/v5 in the dependencies group (#1313) (@dependabot[bot])
- e31c132: dependabot: Update GHA dependencies in groups (#1315) (@charlieegan3)
- 4459436: build(deps): bump github.com/go-git/go-git/v5 in the dependencies group (#1316) (@dependabot[bot])
- 34f9827: Use concurrent map implementation (#1318) (@anderseknert)
- 2d7753f: tests: Skip server multi file test (#1320) (@charlieegan3)
- 6fecf4c: Add new blog! (#1308) (@anderseknert)
- b909a5c: [create-pull-request] automated change (@charlieegan3)
- d445931: cmd/languageserver: Log path & version at startup (#1326) (@charlieegan3)
- 4434de2: [create-pull-request] automated change (#1330) (@github-actions[bot])
- cf1632a: build(deps): bump the dependencies group with 2 updates (#1331) (@dependabot[bot])
- d569e50: Prepare for OPA 1.0 (#1317) (@anderseknert)
- 75b57bb: build(deps): bump actions/upload-artifact in the dependencies group (#1332) (@dependabot[bot])
- 351b5bb: Update badge to 1.0.0 (#1333) (@anderseknert)