| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: regal-bash-completion | Distribution: openSUSE Tumbleweed |
| Version: 0.42.0 | Vendor: openSUSE |
| Release: 1.2 | Build date: Fri Jul 17 07:16:35 2026 |
| Group: System/Shells | Build host: reproducible |
| Size: 16093 | Source RPM: regal-0.42.0-1.2.src.rpm |
| Packager: http://bugs.opensuse.org | |
| Url: https://github.com/open-policy-agent/regal | |
| Summary: Bash Completion for regal | |
Bash command line completion support for regal.
Apache-2.0
* Fri Jul 17 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.42.0:
* Language Server
- Find References and Rename
This release brings initial support for finding references
and renaming symbols in the workspace. This first version is
limited to function arguments and some bindings, but we plan
to expand this in future releases.
Video see
https://github.com/open-policy-agent/regal/releases/tag/v0.42.0
References are checked across the whole workspace, and
renames work even when for example, a function is
incrementally defined in several different files.
- New future.keywords completion provider
The language server will now suggest future.keywords in
completions for import lines — notably the new import
future.keywords.not for now, with a few more to follow soon
in OPA.
* Debug Adapter
- Evaluate
Regal's debug adapter protocol (DAP) implementation now
supports evaluating variables and expressions inside of stack
frames in debugging sessions! This also allows setting up
watch expressions in clients like VS Code.
Video see
https://github.com/open-policy-agent/regal/releases/tag/v0.42.0
Make sure to download the latest version of the OPA VS Code
extension to try it out. More clients hopefully supported
soon!
* Various Improvements
- Add --aggregate flag to regal new rule command to create
aggregate rules. Thanks @mvanhorn!
- Allocate less memory while linting with this one simple trick
- Make common rule name provider provide suggestions for
default rules
- Make input.json completion provider provide suggestion for
imports
- Have boolean value completion provider provide suggestions in
many more locations
- Add inline docs to import provider
- Add label details to built-in function completion provider
- Bump OPA dependency to v1.18.2
* Bugs Fixed
- Override return type of object.subset while waiting for the
next OPA release to fix this. Thanks @mvanhorn!
- Fix wrong end location of reported for unresolved functions
- Fix wrong end location reported by rule-shadows-builtin
* Documentation
- Update defunct styra.com links to point to archived copies
until we find a better home for them
- Documentation added for how GitHub Copilot breaks
autocomplete in VS Code and a recommendation not to use it.
* Changelog
- 22365a3: docs: Document Copilot breaking language servers in
VS Code (#2021) (@anderseknert)
- b842742: docs: Archive some styra.com references (#2022)
(@charlieegan3)
- a2539ef: roast: adjust not test locations (#2023) (@srenatus)
- 81d6485: feat: add --aggregate flag to regal new rule (#341)
(#1966) (@mvanhorn)
- 75ce34c: lsp: first implementation of find references and
rename (#2029) (@anderseknert)
- efa9106: perf: remove a million allocations with this one
simple trick (#2024) (@anderseknert)
- c64b3a3: build(deps): bump the dependencies group with 3
updates (#2027) (@dependabot[bot])
- b3594a4: docs: Small updates to address some inconsistencies
(#2030) (@charlieegan3)
- dd92373: [lsp] Update find references and rename request to
support "some" variables (#2031) (@SeanLedford)
- a107bea: build(deps): bump markdown-it and markdownlint-cli
in /build (#2032) (@dependabot[bot])
- 656cb56: [feature] Extending find references variable support
(#2035) (@SeanLedford)
- c78887b: build(deps): bump the dependencies group across 1
directory with 4 updates (#2037) (@dependabot[bot])
- 4e5e4a2: build(deps): bump the dependencies group with 5
updates (#2043) (@dependabot[bot])
- 9b380f4: build(deps): bump golang.org/x/net from 0.53.0 to
0.55.0 in /build/lsp (#2041) (@dependabot[bot])
- ce12d08: OPA v1.18.2 (#2040) (@anderseknert)
- 4f5d1dc: fix: override object.subset return type to boolean
(#2048) (@mvanhorn)
- 75fd9d3: build(deps): bump golang.org/x/crypto from 0.50.0 to
0.52.0 in /build/ws (#2044) (@dependabot[bot])
- c2328a5: build(deps): bump the dependencies group with 4
updates (#2049) (@dependabot[bot])
- 758630a: Fix wrong end location of reported unresolved
functions (#2053) (@anderseknert)
- 9a74766: Fix wrong end location reported by
rule-shadows-builtin (#2054) (@anderseknert)
- 2bb3592: dap: Implement Evaluate feature (#2051)
(@anderseknert)
- 76ed1f0: Raise test timeout threshold to 3 seconds (#2058)
(@anderseknert)
- d7aaf8f: Use new inmem.NewFromASTObject to set up Regal store
(#2056) (@anderseknert)
- 98fc359: Add import future.keywords completion provider
(#2055) (@anderseknert)
- bcdaa1d: Various completion provider improvements (#2057)
(@anderseknert)
* Wed Jun 03 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- update to 0.41.1:
NOTE this is the same code as that of v0.41.0 — just that the
combination of a release deployment issue and immutable releases
just had that one end up without any downloadable artifacts. That
is now corrected!
- Update to version 0.41.0:
This release brings automatic Rego test generation, as well as
squashing a bunch of issues under the hood with sweeping
enhancements to the core language server code.
* New Feature: Automatic Test Generation
A first pass at automatic test generation has landed in the
language server (#1982), thanks to @SeanLedford! With a new
code action available when working in a policy file, Regal can
generate a test stub based on the current state of the
workspace. This uses the values found in input.json to populate
the with statements in the generated test.
* Language Server Improvements
This release includes significant internal improvements to the
language server.
Completion performance has seen a major improvement: for
clients like VS Code that support a default replacement range,
the completion payload is now roughly half the size it was
before, and clients generally do no longer need to send
continuous requests to the server for more suggestions once you
start typing (#1992).
The folding range provider has been rewritten in Rego (#1979),
and now additionally honours client capabilities like
lineFoldingOnly and rangeLimit.
The handling of input.json and input.yaml files has been
overhauled (#2002). These files are now tracked as first-class
workspace state: they are parsed and cached when saved, and the
server now requests update notifications for them from the
client, rather than re-parsing the file on each evaluation, or
debug sessions started.
* OPA v1.17.0
Regal has been updated to OPA v1.17.0 (#2014). This OPA release
notably introduces future.keywords.not, which improves the
semantics of the not keyword by wrapping composite-expression
negation in an implicit body. Thanks @johanfylling for making
sure this also works in Regal now!
Regal's RoAST representation (and docs) have been updated to
support the new ast.Not form introduced alongside this feature
(#1985).
* RoAST module.comments Representation
The RoAST representation of module.comments has changed
(#1987). Comments are now represented as plain locations rather
than base64-encoded text, allowing Regal to retrieve the
original text from the source file directly with less bytes to
transfer and parse. Note: this is a breaking change for custom
rules that reference input.comments directly. Users should
instead prefer to reference data.regal.ast.comments_decoded,
which provides comment locations in the usual form and which
will remain stable even through future format changes.
* Bug Fixes
- Addressed a panic in regal fix caused by fixes being applied
in non-deterministic order; opa-fmt could reduce line count
such that use-assignment-operator would then access
out-of-bounds row numbers (#2003) as reported by @erazemk
- The unassigned-return-value rule now correctly flags
namespaced builtins like json.match_schema(...) in addition
to flat builtins like lower(...) (#2005) — thanks @mvanhorn
for the fix and @anderseknert for the report
- Nicer formatting of with sequences (#1969)
- regal/ast: metadata labels field is now recognized as a valid
metadata key, aligned with OPA v1.17.0 (#1983, #1988) —
thanks @srenatus
- Regal fix now works regardless of local git state (#2011).
Thanks @seiyab for the report in #2006
* What's Changed
- Use common aggregate data in circular-import (#2019)
- build(deps): bump github/codeql-action in the dependencies
group (#2017)
- debug: Determine abs debugging path for input.json (#2018)
- Unify common aggregation and aggregated data (#2016)
- build(deps): bump the dependencies group with 3 updates
(#2008)
- build(deps): bump github.com/containerd/containerd/v2 in
/e2e/testbuild (#2007)
- Add capabilities verification to build check (#2015)
- Use logger in Rego router (#2012)
- deps: Update opa to 1.17.0 (#2014)
- Extract file polling into waitForFile helper (#2013)
- Remove git validation from fix command (#2011)
- lsp: Introduce workspace abstraction (#2009)
- Remove the settings.json change that was introduced in my
previous PR (#2010)
- fix(rules): unassigned-return-value now covers namespaced
builtins (#2005)
- [feature] First Pass at Automatic Test Generation in Regal
(#1982)
- fixer: Apply linter fixes in deterministic order (#2003)
- build(deps): bump the dependencies group across 1 directory
with 2 updates (#1998)
- build(deps): bump brace-expansion from 5.0.5 to 5.0.6 in
/build (#1997)
- Improved handling of input.(json|yaml) files (#2002)
- build(deps): bump github.com/go-git/go-git/v5 in
/e2e/testbuild (#2000)
- build(deps): bump github.com/go-git/go-git/v5 from 5.18.0 to
5.19.1 (#2001)
- Move location of LSP storage helpers (#1993)
- New framework for testing language server handlers (#1992)
- Breaking: new RoAST representation of module.comments (#1987)
- regal/ast: update metadata fields (#1988)
- roast: Add marshaling support for `ast.Not` (#1985)
- Introduce passthrough handler type (#1984)
- regal/ast: add 'id' to valid metadata keys (#1983)
- build(deps): bump github/codeql-action in the dependencies
group (#1981)
- Move folding range provider to Rego handlers (#1979)
- Cleanup (#1978)
- feat(pre-commit): add regal-fix hooks for auto-fixing rules
(#1847) (#1976)
- build(deps): bump the dependencies group with 2 updates
(#1975)
- Move initialize handler to Rego router (#1977)
- Various code quality improvements (#1970)
- Nicer formatting of `with` test sequences (#1969)
- Update ast.json else to use "#/$defs/rule" (#1967)
- Use OPA main until next OPA release (#1968)
* Tue Apr 21 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.40.0:
Today we celebrate Regal who turns v0.40.0 just in time for the
GitHub download tracker to report 1 million total downloads.
Quite the milestone! Thank you all for the encouragement, support
and contributions during these past 3 years. Together we're
redefining the policy development experience, and we have a lot
more of that planned for the future. Stay tuned!
This release includes 2 new linter rules, and many new features
and improvements to both the linter and language server.
* Linter
- New Rule: invalid-regexp
Category: bugs
The new invalid-regexp rule scans regular expressions found
in policies and reports invalid patterns that would otherwise
fail at runtime.
Avoid
package policy
invalid if regexp.match("[a-z", "test")
Prefer
package policy
valid if regexp.match("[a-z]", "test")
- New Rule: superflous-object-get
Category: idiomatic
The superflous-object-get rule flags calls to object.get
where using the built-in function provides no benefit
compared to using a reference directly, and without the call.
Avoid
package policy
superfluous if {
[#] the default value (`""`) isn't used in the expression,
[#] so object.get provides no benefit here
object.get(input, ["user", "department"], "") == "engineering"
}
Prefer
package policy
much_better if {
input.user.department == "engineering"
}
More cases of superfluous object.get will be added to this
rule as we encounter them.
* Improvements
- The naming-convention rule now accepts a list of allowed
names in addition to regex patterns
- The non-loop-expression rule now identifies more types of
expressions that could be moved out of iteration
- All rules now contain a related_resources item in their
metadata pointing to the docs for the rule
- The regal new rule command now generates a Related Resources
section in the new rule's documentation template
* Bugs Fixed
- Fixed two false positives reported in the non-loop-expression
rule
- The server now exits with an error if the --profile flag is
used without --format json (thanks @mvanhorn!)
* Language Server
* Evaluate and Debug Actions
Any input.json or input.yaml file found in the workspace will
be used for input during evaluation and debugging sessions,
but this wasn't obvious without reading the docs. The
Evaluate and Debug code lenses / commands will now present a
dialog option asking to create an input.json file in the
project workspace in case one isn't found. This file is
populated with dummy JSON data based on references to input
found in the policy, and should be edited by the user to
provide more relevant data.
* Hover Provider Improvements
The hover provider showing tooltips for built-in functions
and keywords has been rewritten in Rego, and additionally saw
a few improvements land as part of that process:
- Links to examples for built-in functions now point to the
correct location in the OPA docs
- The print function now shows up in hover results as well
- Hover provider now less resource intensive, and all
information rendered just in time for display
* Inlay Hints Improvements
The inlay hint provider (that provides names of function
arguments to be displayed at call sites) has also been
rewritten in Rego, and the server now implements also the
inlayHint/resolve handler, which improves performance by only
calculating inlay hint details when the client requests them
for display.
Additionally, the inlay hint provider now properly takes the
range of the active editor view into account, and will only
spend resources calculating hints for code that the user can
actually can see.
* Semantic Tokens in Comprehensions and every Expressions
The language server's semantic token provider (providing
context-based syntax highlighting) now provides semantic
tokens inside of comprehensions and every expressions in
addition to previously supported contexts. Additionally, most
of the semantic token logic is now implemented entirely in
Rego.
* Improved Language Server Initialization
This release contains a number of fixes and improvements
related to the language server's initialization routine,
which should now be both more robust and faster.
* Bugs Fixed
- Two potential nil dereferences identified and fixed
- Fix a potential out of bounds panic in slice access
- The bundled web server now shows a link to Regal's editor
integration documentation on its index page
* Finally
Extra thanks goes out to @charlieegan3 this release, who worked
tirelessly to fix some really complex race conditions and
concurrency issues in the language server. A thankless job, but
extremely important, and he pulled it off like a true Viking!
* Changelog
- 691afe1: Replace some Styra references (#1904)
(@anderseknert)
- 975ae72: build(deps): bump github.com/go-git/go-git/v5 in the
dependencies group (#1903) (@dependabot[bot])
- c85d88f: build(deps): bump go.opentelemetry.io/otel/sdk in
/build/lsp (#1906) (@dependabot[bot])
- 5ff449b: build(deps): bump the dependencies group with 3
updates (#1907) (@dependabot[bot])
- 9900522: lsp: Wait for client to send initialized at boot
(#1909) (@charlieegan3)
- d661b5a: build(deps): bump github/codeql-action in the
dependencies group (#1912) (@dependabot[bot])
- fd85e2d: Allow naming-convention rule to take list of names
(not only a pattern) (#1911) (@anderseknert)
- 299d3fc: Semantic Token Support for Comprehensions and
Constructs (#1883) (@SeanLedford)
- 422a9ef: build(deps): bump github/codeql-action in the
dependencies group (#1915) (@dependabot[bot])
- 02a9dc8: Fail with error when --profile used without JSON
format (#1918) (@mvanhorn)
- 1716e13: lsp/webserver: Add links to the index page (#1914)
(@charlieegan3)
- 1ab360f: lsp/testing: Nested test implementation (#1913)
(@charlieegan3)
- 53e5bf2: build(deps): bump google.golang.org/grpc in
/e2e/testbuild (#1916) (@dependabot[bot])
- 45841bf: build(deps): bump smol-toml and markdownlint-cli in
/build (#1919) (@dependabot[bot])
- 371bf1f: build(deps): bump picomatch from 4.0.3 to 4.0.4 in
/build (#1920) (@dependabot[bot])
- 62852fc: build(deps): bump the dependencies group across 1
directory with 4 updates (#1921) (@dependabot[bot])
- d32408d: build(deps): bump github.com/go-git/go-git/v5 in
/e2e/testbuild (#1922) (@dependabot[bot])
- 8b9bcf0: build(deps): bump github.com/go-git/go-git/v5 from
5.17.0 to 5.17.1 (#1923) (@dependabot[bot])
- f2251f2: [create-pull-request] automated change (#1908)
(@github-actions[bot])
- 820d3f0: OPA v1.15.1 (#1925) (@anderseknert)
- a155b62: Add popup prompt for creating input.json if it
doesnt exist when Evaluate is run (#1929) (@SeanLedford)
- 27067af: build(deps): bump the dependencies group with 2
updates (#1931) (@dependabot[bot])
- 2179ae4: Fix non-loop-expression false positives (#1930)
(@anderseknert)
- 33282ba: Rule: superflous-object-get (#1932) (@anderseknert)
- 6fd115a: Include rule docs links in metadata (#1935)
(@anderseknert)
- 6a364fb: Fix aggregate test loop initialization (#1936)
(@charlieegan3)
- 61ab730: Rule: invalid-regexp (#1937) (@anderseknert)
- 752ca7e: Cover more non-loop-expressions (#1938)
(@anderseknert)
- cb9a9c8: Add convenience functions for working with lines and
uints (#1944) (@anderseknert)
- 85171b8: build(deps): bump go.opentelemetry.io/otel/sdk in
/e2e/testbuild (#1942) (@dependabot[bot])
- 7fd6d66: [feature] Create input.json Skeleton if User Would
Like When One Doesn't Exist (#1934) (@SeanLedford)
- e4e326b: OPA v1.15.2 (#1945) (@anderseknert)
- e8f1469: build(deps): bump
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
(#1941) (@dependabot[bot])
- 7a1235c: Fix potential nil deref in language server (#1947)
(@anderseknert)
- d6d2bf0: Fix index out of bounds in parital inlay hint
(#1948) (@anderseknert)
- 0a0f1f8: build(deps): bump the dependencies group with 2
updates (#1946) (@dependabot[bot])
- d0e99b5: Rewrite hover provider in Rego (#1951)
(@anderseknert)
- cc35d48: Fix possible nil deref in ogre (#1954)
(@anderseknert)
- 44ceabe: Rewrite inlay hint provider in Rego (#1953)
(@anderseknert)
- 5c62c72: testing: Improve lsp shutdown logic & address test
race conditions (#1943) (@charlieegan3)
- 12cc776: Semantic package tokens in Rego (#1956)
(@anderseknert)
- b4ccafc: feat(new): add Related Resources source link to
builtin rule doc template (#1957) (@mvanhorn)
- 543d3fa: linter/lsp: Tidy use of aggregates and store in ls
(#1962) (@charlieegan3)
- 1442904: build(deps): bump github.com/go-git/go-git/v5 from
5.17.2 to 5.18.0 (#1958) (@dependabot[bot])
- 293cd7f: build(deps): bump github.com/go-git/go-git/v5 in
/e2e/testbuild (#1959) (@dependabot[bot])
- 344a389: build(deps): bump the dependencies group with 3
updates (#1963) (@dependabot[bot])
- 784fa86: Semantic import tokens Rego rewrite (#1960)
(@anderseknert)
- 0a00617: Refactor: Sending Variable Semantic Tokens Data from
Rego (#1961) (@SeanLedford)
- 9016d3d: Minor fixes (#1965) (@anderseknert)
- 0ddd70f: docs: Update setup-regal in docs (#1964)
(@charlieegan3)
* Fri Feb 27 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.39.0:
We're happy to announce Regal v0.39.0, featuring 3 new linter
rules, many language server improvements, and much faster
linting!
* New Rule: use-array-flatten
Category: idiomatic
The use-array-flatten rule recommends using array.flatten
instead of nested array.concatenation (#1873).
Avoid
package policy
flat1 := array.concat(arr1, array.concat(arr2, arr3))
flat2 := array.concat(arr1, array.concat(arr2, array.concat(arr3, arr4)))
Prefer
package policy
flat1 := array.flatten([arr1, arr2, arr3])
flat2 := array.flatten([arr1, arr2, arr3, arr4])
* New Rule: use-object-union-n
Category: idiomatic
The use-object-union-n rule recommends using object.union_n
over nested calls to object.union (#1873).
Avoid
package policy
obj := object.union(obj1, object.union(obj2, obj3))
Prefer
package policy
obj := object.union_n([obj1, obj2, obj3])
* New Rule: equals-over-count
Category: performance
The new optional equals-over-count rule suggests using direct
equality comparisons rather than count when checking collection
membership or emptiness (#1878). This is a micro-optimization
and not a general recommendation. Must be manually enabled.
* Performance
This release brings an approximate 25% reduction in linting
time through aggregate remodeling and Rego prepare stage
optimizations (#1838). Additional performance work includes
Rego refactoring (#1857, #1884), AST transform improvements
(#1892), and various micro-optimizations (#1866, #1879).
* Language Server Improvements
The language server now includes a semantic token framework for
improved syntax highlighting (#1845, #1865, #1870), code
actions for the constant-condition and
redundant-existence-check fixers (#1830). and an
opaTestProvider feature for test discovery (#1888, #1889,
[#1898]),
Completion performance is improved with a
completionItem/resolve handler (#1831), and server capabilities
are now properly exposed and consistent with the clients
(#1867, #1880).
Note: Semantic token support is feature flagged and will be
available in the next release.
* Compiler Explorer
Regal now supports the VSCode-based OPA Explorer extension,
providing a rich GUI to compare compiler stages directly in VS
Code (#1862) - thanks @srenatus! A new "Format stages" option
has also been added to the compiler explorer (#1854) - thanks
@johanfylling!
* Experimental: rq Engine Support
Initial support for the rq engine has been added (#1872)
* Various Improvements
- Improved redundant-existence-check rule (#1897, fixes #1805)
- Disabled zero-arity-function rule as opa-fmt now covers that
(#1885)
* Bug Fixes
- Fix nil dereference on compiler errors in explorer (#1837)
- Fix broken links to fixer page (#1852)
- Fix false positive in use-some-for-output-vars (#1886)
- Fix broken input.json completion provider (#1891)
* Dependency Updates
- Regal has been upgraded to use OPA v1.14.0 and Go 1.26.
* Documentation
- Added mise as an alternative installation method (#1849)
- Updated installation documentation (#1861)
- Updated note about eval and debug roots (#1894)
- Show release badge when using pre-release versions (#1899)
* Wed Jan 14 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.38.1:
This patch release fixes several bugs including some found in the
recent v0.38.0 release, as well some other improvements.
* Bug Fixes
- Fix for prefer-equals-comparison fixer failing to parse
policies with multiple "=" in expressions (#1824, fixes #1818
reported by @gusega)
- Fix for incorrect fixable violation count display in lint
output (#1825, fixes #1813 reported by @gusega)
- Fix for false positive in prefer-equals-comparison rule with
comprehension term vars (#1828, fixes #1826 reported by
@SeanLedford)
- bundle: Surface configured rule notices as messages in lint
output (#1827, fixes #1795 reported by @ghmer)
* Improvements
- Code action for prefer-equals-comparison fixer now available
in the language server (#1810)
- New option for prefer-value-in-head rule to count
interpolated strings as scalars (#1817)
- Minor performance improvement for any_set_item, used for
selecting items from sets (#1815)
* Changelog
- f1c5f74: bundle: Improve performance of any_set_item (#1815)
(@charlieegan3)
- 9300420: Implemented Code action for prefer-equals-comparison
fixer (#1810) (@SeanLedford)
- 28121f0: build(deps): bump github/codeql-action in the
dependencies group (#1823) (@dependabot[bot])
- 54cdcb6: Add prefer-value-in-head option to count
interpolated string as scalar (#1817) (@anderseknert)
- e68184d: Fix false positivie in prefer-equals-comparison
(#1828) (@anderseknert)
- 593e221: fix: Prefer-Equals-Comparison Edge Case With
Multiple "=" (#1824) (@SeanLedford)
- 3dc28bb: bundle: Surface configured rule notices (#1827)
(@charlieegan3)
- aac9618: Updated lint reporter to track fixable violation
count separate from fixable violation Set (#1825)
(@SeanLedford)
- fd6dd4d: Updated example for prefer-equals-comparison edge
case to not include false positive (#1829) (@SeanLedford)
* Sun Jan 11 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.38.0:
* Feature: String Interpolation Support
v0.38.0 of your favorite Rego linter, debugger and language
server brings full support for OPA's new string interpolation
feature. This means not only that Regal lints code found inside
interpolated strings, but that you'll have access to all your
favorite language server features within them too — like code
completions, tooltips on hover, or document highlighting. You
can even use the debugger to step through interpolated
expressions! If you haven't yet tried it out, grab OPA v1.12.2,
Regal v0.38.0 and enjoy an absolutely awesome addition to the
Rego language!
In addition to this, we have a number of fun new features and
performance improvements.
* New Rule: disallow-rego-v1
Category: custom
This optional new rule flags the use of import rego.v1 in Rego
policies (#1778). Since OPA v1.0 (December 2024), this import
is a no-op and no longer needed. The rule helps users maintain
clean code by preventing this outdated import from appearing in
new policies. Teams standardizing on OPA 1.0+ can enable this
rule to enforce modern Rego standards.
package example
import rego.v1 # <-- Happy 2026! Time to stop doing this!
* New Fixers
@SeanLedford has also done some great work to help expand
Regal's auto-fixing capabilities by having regal fixers added
for three more rules.
- prefer-equals-comparison
- redundant-existence-check
- constant-condition
See (#1790) and (#1794) for more details.
* Performance
The fixer saw a 12% performance improvement by reusing the
linter, reducing allocations from 2.3M to 2.0M operations
(#1783). Additional optimizations include:
- faster file filtering by avoiding recompiled ignore patterns
(#1758),
- better built-in function handling by registering Regal's
functions globally only once (#1788),
- and more efficient AST location serialization (#1758)
To track ongoing performance work, a new post-merge
benchmark-recording workflow was added (#1793).
* LSP: New Ignore Code Action
The language server now supports a code action to quickly add
regal ignore configuration for specific rules directly from the
editor (#1777).
* Changelog
- ac35695: Various performance improvements (#1758)
(@anderseknert)
- 48cd03d: docs: Add custom head for regal index page (#1761)
(@charlieegan3)
- 728ae28: build(deps): bump golangci/golangci-lint-action
(#1762) (@dependabot[bot])
- 92cf6ca: explorer: allow hiding stages without an effect
(+misc) (#1760) (@srenatus)
- c000994: docs: Correct sidebar labels (#1763) (@charlieegan3)
- bf0b621: build(deps): bump
github.com/containerd/containerd/v2 in /e2e/testbuild (#1753)
(@dependabot[bot])
- 18e7a89: build(deps): bump
github.com/containerd/containerd/v2 (#1754)
(@dependabot[bot])
- ccab7bd: Rename: encoding/util -> encoding/write (#1764)
(@anderseknert)
- 54f7625: build: run windows in matrix with other jobs (#1770)
(@charlieegan3)
- 5c9e6f0: update: Update version checking logic (#1772)
(@charlieegan3)
- 5034776: build: Add badge update to readme script (#1773)
(@charlieegan3)
- 95e8220: Added OPA installation as a Regal prerequisite, and
fixed golangci-lint link. (#1774) (@SeanLedford)
- 149f71d: build(deps): bump js-yaml from 4.1.0 to 4.1.1 in
/build (#1775) (@dependabot[bot])
- b8f8b7f: Enable more golangci-lint linters (@anderseknert)
- e092627: build: Update mac runner (@charlieegan3)
- 877884c: lsp: Add code action and command to ignore rule
(#1777) (@charlieegan3)
- ece9ca2: build(deps): bump the dependencies group with 5
updates (@dependabot[bot])
- bd37bbd: build(deps): bump golang.org/x/crypto in /build/lsp
(@dependabot[bot])
- 17cc429: build(deps): bump golang.org/x/crypto in
/e2e/testbuild (@dependabot[bot])
- 415b05f: build(deps): bump golang.org/x/crypto from 0.43.0 to
0.45.0 (@dependabot[bot])
- e1bb975: Improve fixer performance (@anderseknert)
- 1b083ff: Added Rule: Disallow import rego.v1 (#1778)
(@SeanLedford)
- 9e43c50: Optimize and improve code for built-in functions
(@anderseknert)
- 64ce2aa: build(deps): bump glob and markdownlint-cli in
/build (#1779) (@dependabot[bot])
- 48fddeb: build(deps): bump github/codeql-action in the
dependencies group (#1787) (@dependabot[bot])
- bc41f63: pkg/linter: use errgroup, set limits + context on it
(@srenatus)
- f22c2aa: Add fixer for prefer-equals-comparison rule (#1790)
(@SeanLedford)
- cf88eb9: Fixers for redundant-existence-check and
constant-condition rules (#1794) (@SeanLedford)
- 36401a2: build(deps): bump the dependencies group across 1
directory with 7 updates (#1796) (@dependabot[bot])
- ecb23d3: version: Add OPA version to version output (#1798)
(@charlieegan3)
- 94ce038: build(deps): bump golang.org/x/crypto from 0.43.0 to
0.45.0 in /build/ws (#1791) (@dependabot[bot])
- 9ce1ddd: workflows: add post-merge benchmark-recording
workflow (@srenatus)
- e111443: workflows/benchmark: fix golang setup (@srenatus)
- 4bb2d5a: docs: Update messy rule docs (@charlieegan3)
- dec83ea: docs: Updates from opa website link scanner
(@charlieegan3)
- 8f544a6: fix typo in fix.go help message (#1807) (@gusega)
- 941b02e: build(deps): bump the dependencies group with 3
updates (#1804) (@dependabot[bot])
- 9f09e6e: build(deps): bump the dependencies group with 4
updates (#1808) (@dependabot[bot])
- 476ef89: OPA v1.12.2 and full string interpolation support
(#1811) (@anderseknert)
- a9843ab: Move chained-rule-body to custom category (#1812)
(@anderseknert)
* Fri Nov 07 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.37.0:
This release features a new linter rule, several new language
server features, and many improvements and fixes. The two major
OPA versions bumped since the last release additionally contains
several performance improvements that were contributed as part of
developing Regal!
* New Rule: prefer-equals-comparison
The prefer-equals-comparison linter rule recommends using the
== operator for equality comparison over the unification
operator =. The rule helps improve code clarity by using
operators for their intended purposes: := for assignment, ==
for equality comparison, and = for unification. The linter
identifies when = is used for comparison by checking if both
sides of the operator are "unassignable".
Avoid
input.request.method = "GET"
Prefer
input.request.method == "GET"
There are some certainly valid use cases for the unification
operator! But simple equality comparison is not one. For more
information, see the documentation for the rule. As an amusing
aside, this fixes one of the first issues created in the
project!
* Language server: Document highlighting to help show where
function args are referenced
Document highlighting is one of the more subtle features of the
LSP specification, but a really helpful one when implemented
well. The experimental first implementation that shipped with
Regal v0.36.0 is no longer experimental, and has also been
extended to highlight usage of function argument variables
inside of a function head or body.
(Please find the screencast in the release notes)
* Language server: Selection ranges
Selection ranges provide smart selection of code that can
expand and shrink based on knowledge of the code rather than
simple text properties, like hyphens or whitespace. This makes
moving code around extremely fast, and without leaving the
keyboard. Consult the language server docs for how to enable
this in your editor
(Please find the screencast in the release notes)
* Improvements
- The pointless-reassignment rule would previously only flag
reassignment at the top level of a rule body. Now it flags
pointless reassignments also in nested bodies, like
comprehensions, every statements, and so on.
- All completion providers are now implemented purely in Rego
- Remove the go-semver dependency in favor of a custom, much
faster implementation
- Build: Reduce permissions granted in update-caps top-level
workflow, by @timothyklee
- Docs: Update language server page to demonstrate recently
added features
- Docs: Add kakoune LSP configuration example
* Windows compatibility improvements
In this release we have fixed various Windows bugs (Language
Server Init, Goto Definition, Error Popups) in #1740, #1737,
[#1736], following #1633, and #1642 last release.
These fixes have also made it possible to run our test suites
on Windows runners to catch issues sooner in future. A huge
thanks to @charlieegan3 for his tireless work on this!
* Bugs fixed
- Fix false positive in use-some-for-output-vars triggered by
nested variables in rule ref heads, like rule[input[i]].allow
if ....
- Fix false positive in redundant-existence-check when a not
check made an existence check necessary, reported by @gusega
- Fix false positive in narrow-argument rule, which would
incorrectly flag some arrays passed as arguments
- Ensure that the language server InitOptions is never nil and
don't cause issues with clients that don't provide those
* Dependency Updates:
- github.com/open-policy-agent/opa: v1.8.0 → v1.10.1
- github.com/arl/statsviz: v0.7.1 → v0.7.2
- github.com/go-git/go-git/v5: v5.16.2 → v5.16.3
- github.com/olekukonko/tablewriter: v0.0.5 → v1.1.0
- github.com/spf13/cobra: v1.9.1 → v1.10.1
- github.com/spf13/pflag: v1.0.7 → v1.0.10
- Removed: github.com/coreos/go-semver: v0.3.1
* Changelog
- 244459c: docs: Remove some old references (#1689)
(@anderseknert)
- 4212b5c: build(deps): bump the dependencies group with 2
updates (#1690) (@dependabot[bot])
- e149c6d: build: reduce update-caps top-level workflow
permission to read (#1691) (@timothyklee)
- 819bbec: lsp: Fix missing initial root (#1692)
(@charlieegan3)
- be8b020: docs: Update style guide links to new repo (#1693)
(@charlieegan3)
- ceb890b: Builtin function completion in Rego (#1694)
(@anderseknert)
- d36555e: Package ref import suggestions in Rego (#1698)
(@anderseknert)
- 4e44131: build(deps): bump the dependencies group with 2
updates (#1703) (@dependabot[bot])
- 14166e9: Avoid multi-line highlighting of issues (#1702)
(@anderseknert)
- 1685bb8: Move completion handler into Rego router (#1699)
(@anderseknert)
- 0da5eaa: build(deps): bump the dependencies group with 2
updates (#1708) (@dependabot[bot])
- e792757: Bump OPA -> v1.9.0, golangci-lint 2.5.0 (#1709)
(@anderseknert)
- 3092d1d: docs: Address some broken links from OPA report
(#1704) (@charlieegan3)
- bebfd06: util: use Partial2 for IsAnyError (@srenatus)
- f22a570: Fix false positive in redundant-existence-check
(#1716) (@anderseknert)
- 2703715: Various fixes (#1715) (@anderseknert)
- 87981f2: build(deps): bump the dependencies group with 2
updates (#1713) (@dependabot[bot])
- a6487b6: lsp: document highlighting supporting function args
(#1718) (@anderseknert)
- fe8cbd3: Rule: prefer-equals-comparison (#1726)
(@anderseknert)
- f3722ea: Fix false positive in narrow-argument (#1724)
(@anderseknert)
- 73b8c65: Improve pointless-reassignment to cover nested cases
(#1727) (@anderseknert)
- 9cf180c: lsp: Implement selection ranges and linked editing
range (#1722) (@anderseknert)
- bf632d0: build(deps): bump the dependencies group with 2
updates (#1725) (@dependabot[bot])
- a373ae3: lsp: Use filename path for current buffer for defns
(#1732) (@charlieegan3)
- d758eaf: lsp: Refactor range utilities (#1729)
(@anderseknert)
- 13de8a9: Fix incorrect behavior in pointless-import (#1733)
(@anderseknert)
- fb560c1: Fix false positive in use-some-for-output-vars
(#1731) (@anderseknert)
- 70449b7: Various small fixes (#1736) (@anderseknert)
- 2594719: windows: Better use of slash paths (#1737)
(@charlieegan3)
- 499125f: Get FindClosestMatchingRoot working on windows
(#1740) (@charlieegan3)
- 3715085: OPA v1.10.0 (#1742) (@anderseknert)
- 781f809: deps: stick to
github.com/vektah/gqlparser/v2@v2.5.30 (#1744) (@srenatus)
- bbb03db: Use generic client identifier in tests (#1741)
(@charlieegan3)
- c42ce08: build(deps): bump github/codeql-action in the
dependencies group (#1745) (@dependabot[bot])
- 4384b0d: Remove go-semver dependency, plus various fixes
(#1746) (@anderseknert)
- 97dfbd4: docs: update LSP page to show new features (#1748)
(@charlieegan3)
- 818b33a: docs: Minor fixes to docs typos and links (#1747)
(@charlieegan3)
- 4138270: Update to OPA v1.10.1 (@charlieegan3)
- 55cf029: lsp: ensure that InitOptions is never nil (#1752)
(@srenatus)
- 8ffa270: docs: add kakoune LSP config snippet (#1751)
(@srenatus)
- 216341a: reporter,lsp: update URLs for help links (#1750)
(@srenatus)
* Sun Sep 14 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.36.1 (0.36.0 was not released):
This is Regal v0.36! The first Regal release since becoming a
part of the OPA project last month. This release mostly delivers
a number of new language server features as well as wider
improvements under the hood and to the developer experience.
* A note about Regal's documentation
Our documentation is now displayed as part of the main OPA
website!
https://www.openpolicyagent.org/projects/regal
From this release, links generated from Regal in output to
rules will point to this location. You might find links to the
old location as we get things updated. Please feel free to open
any issues for link problems you find just so we don't miss
anything.
* Get contextual documentation when calling built-in functions
- Following PR #1654, the Regal language server will now offer
signatureHelp to compatible clients. This shows the current
argument type and description in the help text for built-in
functions. This is in addition to the other general function
documentation displayed here.
* Quickly see related fields in when editing METADATA
- PR #1657 implements support for the documentHighlight request
from clients. This is currently only used to show signal
other related METADATA keys when working with Rego metadata.
In future, this same functionality could be used to highlight
other related items currently in the viewport.
* Jump directly from ignore directives to documentation
- documentLink is another request from clients which allow the
server to respond with link ranges. We have used this to make
regal ignore directives clickable, helping users quickly
learn what they mean when encountered in policies PR #1657.
* Get live diagnostics from custom rules as you type
- PR #1631 ensures that users of custom linter rules are also
able to access these for live diagnostics in language server
clients. Previously these were not evaluated in the server,
only in the Regal CLI.
* Notable Refactors & Development Changes
- Rego Language Server Routing: PR #1675 makes some notable
changes to how Rego is used within the Regal’s language
server. The Language Server Protocol (LSP), which Regal
implements to support LSP clients, is based on JSON message
passing. This lends itself to Rego evaluation which is JSON
in, JSON out. This PR updates the handling of different LSP
messages sent from clients to route them in Rego, handling
Rego backed rules first, and falling back to Golang
implementations that still remain otherwise. This sets the
direction for more Rego LSP functionality in the language
server in future.
- Development bundle loading from disk: PR #1646 gives those
working on Regal in development the option of using the
current source for the Regal bundle without rebuilding the
binary. This improves the experience when working on Rego
based language server functionality by reducing the time of a
feedback loop. Set REGAL_BUNDLE_PATH to use this feature.
* Changelog
- 1f1044f: build: Remove tap key (#1687) (@charlieegan3)
- build(deps): bump github/codeql-action from 3.29.0 to 3.29.1
in the dependencies group by @dependabot[bot] in #1616
- Add Regal bundle compilation benchmark by @anderseknert in
[#1618]
- Remove quotes from keywords in refs by @anderseknert in #1619
- lsp: Skip loading files on disk when in cache by
@charlieegan3 in #1620
- build(deps): bump the dependencies group with 2 updates by
@dependabot[bot] in #1621
- automated: update capabilities by @github-actions[bot] in
[#1622]
- add experimental lsp package for websocket communication by
@srenatus in #1623
- internal/io: add FindInputPath when the content isn't needed
by @srenatus in #1624
- build(deps): bump github/codeql-action from 3.29.2 to 3.29.3
in the dependencies group by @dependabot[bot] in #1626
- lsp/completions: Handle hyphenated package names by
@charlieegan3 in #1625
- lsp: fix didOpen templating race by @charlieegan3 in #1627
- build/lsp: add web client demo by @srenatus in #1629
- lsp: Fix stale diagnostics after deletion by @charlieegan3 in
[#1628]
- Some doc updates by @anderseknert in #1632
- lsp: Add support for custom rules by @charlieegan3 in #1631
- Vendor roast dependency by @anderseknert in #1634
- lsp: Address windows goto definition URI issue by
@charlieegan3 in #1633
- Fix regal new rule issues + refactor io code by @anderseknert
in #1636
- lsp: Use full text replacement for Intellij fmt by
@charlieegan3 in #1637
- test: refactor e2e test, add new regal command runner by
@anderseknert in #1640
- build(deps): bump github/codeql-action from 3.29.3 to 3.29.5
in the dependencies group by @dependabot[bot] in #1641
- Fix missing source.explore code action by @anderseknert in
[#1643]
- lsp: Present filename relative to root in errors by
@charlieegan3 in #1638
- refactor: Improve code quality throughout the codebase by
@anderseknert in #1642
- lsp/uri: Refactor URI handling by @charlieegan3 in #1644
- Tidying up more code by @anderseknert in #1645
- Provide development option to load bundle from disk by
@anderseknert in #1646
- lsp/eval: Ensure filenames use URI in print output by
@charlieegan3 in #1647
- Rewrite more completion providers in Rego. Resolve schemas at
runtime. by @anderseknert in #1652
- lsp: Add signature help by @charlieegan3 in #1654
- lsp: Fix server signature race in test by @charlieegan3 in
[#1655]
- build(deps): bump the dependencies group with 5 updates by
@dependabot[bot] in #1639
- build(deps): bump the dependencies group with 3 updates by
@dependabot[bot] in #1653
- docs: update README badges for OPA 1.7.1 release by
@charlieegan3 in #1656
- New LSP features and internal improvements by @anderseknert
in #1657
- lsp/documenthighlight: Add tests by @charlieegan3 in #1659
- Add tests for textDocument/documentLink handler by
@anderseknert in #1658
- Styra URLs -> OPA URLs by @anderseknert in #1662
- docs: Update README re: move to open-policy-agent by
@charlieegan3 in #1664
- internal/io: explicitly disable lazy loading of regal bundle
by @srenatus in #1666
- build(deps): bump the dependencies group across 1 directory
with 4 updates by @dependabot[bot] in #1663
- Enable pprof endpoint only with env var set by @anderseknert
in #1667
- docs: Remove update workflow & minor adjustments by
@charlieegan3 in #1668
- Disable Codecov PR comments by @anderseknert in #1670
- deps: OPA v1.8.0 by @anderseknert in #1669
- docs: Changes needed in docs for opa site deploy by
@charlieegan3 in #1673
- build(deps): bump github/codeql-action from 3.29.11 to 3.30.0
in the dependencies group by @dependabot[bot] in #1674
- Rego-based routing of Rego handlers + refactor by
@anderseknert in #1675
- Just one more.. refactor by @anderseknert in #1677
- docs: Updates in preparation for OPA site deploy by
@charlieegan3 in #1676
- lsp: GTD use URI for location by @charlieegan3 in #1680
- fix: Don't use OS path separator when walking FS by
@anderseknert in #1681
- build(deps): bump the dependencies group with 3 updates by
@dependabot[bot] in #1678
- build: Add windows runners to build workflow by @charlieegan3
in #1682
- Weekend refactor by @anderseknert in #1684
- Fix documentLink issue when no user config provided by
@anderseknert in #1686
- build: Remove tap key by @charlieegan3 in #1687
* Tue Jul 01 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.35.1 (0.35.0 was not released):
We're happy to release v0.35.1, the mid-summer release of Regal
for the 🏖️ ! This release updates to OPA v1.6.0 bringing a number
of performance improvements as well as other improvements and bug
fixes.
* Improved Schema Loading This PR replaces Regal's custom schema
loader with one that matches OPA's behavior, enabling the same
schemas to work across opa check, opa eval, and other OPA
commands. PR #1605
* Performance Improvements
- Thanks to a PR in OPA, Regal's memory use is now much reduced
due to a change conditionally supplying built-in contexts
only when needed.
- This PR optimizes Rego evaluation by directly mapping source
data to ast.Value objects instead of going through
intermediate map[string]any or JSON representations,
eliminating ~2.9 million allocations in benchmarks. PR #1606
- Regal contributors will be happy with
open-policy-agent/opa#7442 which makes running Regal's tests
around 2.5x as fast!
* Code Actions Rewrite
- Code actions are LSP features that provide automated fixes or
refactoring suggestions (like "quick fix" options), and this
PR implements them for Regal with server-side filtering to
reduce data transfer and ensure consistent editor behavior.
This is also now implemented in Rego! PR #1604
* Docs
- PR #1584 refactors a number of Regal's pages including
breaking down the previously large README into separate
files. Browse the new structure on the Regal Website.
- The Code Lens documentation has been updated to better
explain supported configurations. Thanks @Shinzu for the
report here. #1596
* Changelog
- 92d1ba9: deps: Update OPA to v1.6.0 (#1617) (@charlieegan3)
- 2bbe76e: [create-pull-request] automated change (#1582)
(@github-actions[bot])
- 6e5e6bb: e2e: add frankenstein test build (@srenatus)
- 5bf607d: build(deps): bump github/codeql-action in the
dependencies group (#1585) (@dependabot[bot])
- 6f45a9f: build(deps): bump brace-expansion from 2.0.1 to
2.0.2 in /build (#1587) (@dependabot[bot])
- e85b878: docs: Update config cli docs (#1584) (@charlieegan3)
- 30c73fe: build(deps): bump github/codeql-action in the
dependencies group (#1595) (@dependabot[bot])
- b8f3e8f: fix: improve snippets suggestion condition (#1597)
(@anderseknert)
- eb48984: Fix issue with handling big numbers (#1599)
(@anderseknert)
- 1ee1cf4: fix: Correct end location in unresolved-reference
(#1600) (@anderseknert)
- e50c9af: Bump Roast -> v0.12.0 (#1601) (@anderseknert)
- 981d8d2: docs: Update Evaluation Code Lens docs (#1602)
(@charlieegan3)
- 3577efe: lsp/completion/input: don't suggest 'input'
following dot (#1603) (@srenatus)
- 02d1546: lsp: Code Action feature rewritten in Rego (#1604)
(@anderseknert)
- 25b1072: More robust loading of schemas (#1605)
(@anderseknert)
- 112dc87: perf: avoid JSON/map roundtrips in ast.Value
transforms (#1606) (@anderseknert)
- d87fd2f: docs: Tone down "obsolete" description for
use-rego-v1 (#1610) (@anderseknert)
- a939219: lsp: Roll over load file failures (#1611)
(@charlieegan3)
- 1d771ca: interning: bump opa+roast, replace call to
ast.InternedBoolTerm() (#1613) (@srenatus)
- ed0ead4: build(deps): bump
github.com/go-viper/mapstructure/v2 in /e2e/testbuild (#1615)
(@dependabot[bot])
- 0d65ef0: build(deps): bump
github.com/go-viper/mapstructure/v2 (#1614)
(@dependabot[bot])
* Wed Jun 04 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.34.1:
This patch release fixes a bug found since v0.34.0 as well as it
bumps the OPA dependency to the v1.5.1 patch also released today.
While Regal's own policies were not affected by the regression in
walk, custom linter rules could very well be.
* Highlights
- OPA v1.5.0 -> v1.5.1
- Go 1.23 -> 1.24
- Fix false positive in sprintf-arguments-mismatch when the
%-*s pattern was used for padding.
* Changelog
- OPA v1.5.1 and some perf tweaks (#1580)
- docs: Update typo in link (#1581)
- deps: Revert 47c70f0 tablewriter changes (#1579)
- docs: Update to allow better regal docs generation (#1578)
- [create-pull-request] automated change (#1577)
- fix: consider padding pattern in sprintf-arguments-mismatch
(#1575)
- build(deps): bump ossf/scorecard-action in the dependencies
group (#1576)
- Fix deprecated notices in .goreleaser.yaml (#1570)
- Go 1.23 -> 1.24 (#1573)
* Sat May 31 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.34.0:
After a month of development, we're happy to announce Regal
v0.34. This version of the OPA community's favorite linter and
language server brings you new 3 linter rules, performance
improvements and much more.
With the v0.34.0 release, Regal now ships with more than 100
linter rules!
Which is pretty close to one new week per rule since the project
started.
* New rules
- unresolved-reference
This one is particularly exciting! The new
unresolved-reference rule reports any references (like
data.users.permissions) that cannot be resolved (i.e. found)
anywhere in the project. Some projects will have valid
references that can't be resolved at the time Regal lints the
project, and the rule provides configuration options to mark
certain references, or entire paths (like data.users.*) as
resolved. See the docs for the rule for more details.
- pointless-import
Category: imports
The new pointless-import rule will flags imports of the same
package, and other import forms where the import has no real
effect.
- single-item-in
Category: idiomatic
The single-item-in rule reports cases of in being used on a
single item collection, and suggests using an equality check
instead.
* Performance
- Use OPA v1.5.0, which brings performance improvements to walk
reducing linting time by about 10%.
- Faster linting by avoiding walk in a few locations where
possible.
- Improve performance of aggregate rules.
- Several performance optimizations to Regal's linter rules.
* API
- The linter API now has a new Prepare method that can be used
to prepare the linter before reusing it across several runs.
* Various
- Some rules that would previously only scan the topmost level
of a rule body will now recursively scan the whole rule.
- The input completions provider has been rewritten in Rego
(previously Go).
- The automatic version check has been rewritten in Rego
(previously Go).
* Bugs
- Fix false positive in custom one-liner-rule.
* Docs
- Updated roadmap. Go check it out!
- Move rules table from README and into a more interactive form
on the Styra docs. Take a look!
- Add link to Renovating Rego blog.
- README: add link to KubeCon London talk, which prominently
featured Regal.
- Update links to adapt to OPA's new documentation.
- Update outdated information in README.
* Dependencies
- build(deps): bump the dependencies group with 2 updates
(#1551)
- build(deps): bump the dependencies group with 2 updates
(#1544)
- build(deps): bump the dependencies group with 2 updates
(#1521)
- build(deps): bump github/codeql-action in the dependencies
group (#1507)
* Thu Apr 24 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.33.1:
This release is the same tag as v0.33.1, please see that release
for the release notes.
Another v0.33.1 was released to trigger the rebuilding of some
assets that were deleted in a draft release.
* New Rule: in-wildcard-key
Using a wildcard variable (_) for the key in the key-value form
of iteration (some _, value in collection) is never needed, and
can be replaced by the simple some value in … form . This rule
flags cases where the key iteration is redundant. (Read more)
* New Rule: confusing-alias
While import aliases can improve readability, aliasing an
import reference that is also imported without an alias is
confusing, as both names point to the same resource. This rule
catches such cases. (Read more)
* New Rule: mixed-iteration
Rego supports different styles of collection iteration. While
"reference style" iteration (collection[_]) can be concise for
deeply nested structures, mixing it with the some .. in style
within a single iteration expression makes for code that’s more
difficult to follow. This rule encourages consistency within a
single iteration statement. (Read more)
* New Rule: narrow-argument
This new rule analyzes function arguments to suggest narrowing
them down to the minimal value the function depends on. This
can improve clarity and reusability. The rule considers
incrementally defined functions across all their definitions.
This is a powerful but opinionated rule and is thus in the
custom category and is not on by default. See the documentation
for how to enable it if you’re curious to try it out! (Read
more)
* Performance Improvements
Several improvements have been made to reduce memory
allocations and improve overall linting performance. Numbers
below refer to Regal’s benchmark for linting its own policies.
- Optimized config loading and parsing, saving around 2.7
million allocations (#1491).
- Reduced allocations by approximately 2 million (#1494).
- Improved the performance of the use-strings-count rule,
saving almost 1 million allocations (#1465).
- Optimized reference comparisons and small iteration patterns,
saving around 300k allocations (#1472).
- Included performance enhancements alongside an update to the
external-reference rule to make it more configurable (#1496).
* OPA v1.3.0
Regal has been upgraded to use OPA v1.3.0. This brings several
upstream improvements, including support for the new one-liner
grouping in formatting (see OPA#6760). (#1459)
* Bug Fixes
- Fixed a bug in the handling of Rego input from stdin. Thanks
@tokyowizard for the report! (#1474)
- Fixed a panic that could occur in FindConfigRoots when
supplied with unexpected arguments. (#1487)
* Other Rule Updates
- The external-reference rule can now be configured with a
maximum number of allowed external references, instead of
solely flagging all external uses within a function. If you
previously had this rule disabled, you might want to try
enabling it now, and possibly tweak its configuration to your
liking. (#1496)
- The rule-length rule now has a separate setting
(max-test-rule-length) with a higher default value (60 vs 30)
for test rules, acknowledging that tests often include
substantial data. (#1476)
- Updated documentation for the rule-named-if rule based on
community feedback received via the page feedback form
(please let us know if you see issues! & thanks for the
report!) (#1463)
* Dependencies
This release also updates Regals dependencies as follows.
- github.com/open-policy-agent/opa v1.2.0 -> v1.3.0
- github.com/prometheus/client_golang v1.21.0 -> v1.21.1
- go.opentelemetry.io/otel v1.34.0 -> v1.35.0
- go.opentelemetry.io/otel/metric v1.34.0 -> v1.35.0
- go.opentelemetry.io/otel/sdk v1.34.0 -> v1.35.0
- go.opentelemetry.io/otel/trace v1.34.0 -> v1.35.0
- golang.org/x/crypto v0.35.0 -> v0.36.0
- golang.org/x/net v0.36.0 -> v0.38.0
- golang.org/x/sync v0.11.0 -> v0.12.0
- golang.org/x/sys v0.30.0 -> v0.31.0
- golang.org/x/text v0.22.0 -> v0.23.0
- google.golang.org/protobuf v1.36.4 -> v1.36.5
* Changelog
- automated: update capabilities by @github-actions in #1458
- OPA 1.3.0 by @anderseknert in #1459
- Parameterize some tests by @anderseknert in #1460
- automated: update capabilities by @github-actions in #1461
- build(deps): bump the dependencies group with 2 updates by
@dependabot in #1462
- docs: rule-named-if by @charlieegan3 in #1463
- Some perf fixes by @anderseknert in #1465
- Rule: in-wildcard-key by @anderseknert in #1466
- Increase coverage by @anderseknert in #1467
- build(deps): bump github/codeql-action from 3.28.13 to
3.28.14 in the dependencies group by @dependabot in #1468
- perf: various improvements by @anderseknert in #1472
- Rule: confusing-alias by @anderseknert in #1470
- Add benchmark for testing all rules individually by
@anderseknert in #1469
- Rule: mixed-iteration by @anderseknert in #1475
- Add max-test-rule-length setting to rule-length rule by
@anderseknert in #1476
- fix: ensure policy from stdin is enumerated correctly by
@anderseknert in #1474
- automated: update capabilities by @github-actions in #1477
- builtins.RegalIsFormatted: recover from formatter panics by
@srenatus in #1481
- automated: update capabilities by @github-actions in #1482
- build(deps): bump github/codeql-action from 3.28.14 to
3.28.15 in the dependencies group by @dependabot in #1484
- Fix unnecessary-some rule not working after OPA 1.0+ by
@anderseknert in #1485
- FindConfigRoots: return error, not panic by @srenatus in
[#1487]
- perf: Improve how config is parsed, and when by @anderseknert
in #1491
- Rule: narrow-argument by @anderseknert in #1488
- build(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 by
@dependabot in #1490
- build(deps): bump codecov/codecov-action from 5.4.0 to 5.4.2
in the dependencies group by @dependabot in #1495
- Make external-reference rule less annoying by @anderseknert
in #1496
- docs: fix docs that still used v0 syntax by @anderseknert in
[#1494]
* Fri Mar 28 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
- new package regal: linter and language server for Rego, bringing
your policy development experience to the next level
/usr/share/bash-completion/completions/regal
Generated by rpm2html 1.8.1
Fabrice Bellet, Sun Aug 2 03:14:27 2026