All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Fixed unsafe vars with built-in operator names bug (#206)
- Fixed body to rule conversion bug (#202)
- Improved request parameter handling (#201)
- Improved release infrastructure
The last major/minor release of 2016! Woohoo! This release contains a few non-backwards compatible changes to the APIs.
These changes simplify and clean up the storage.Store interface. This should make it easier to implement custom stores in the future.
- Update storage to support context.Context (#155)
- Update underlying number representation (#154)
- Updates to use new storage.Path type (#159)
These changes update the language to align query arguments with state stored in OPA. With these changes, OPA can readily analyze policies and determine references that refer to state stored in OPA versus query arguments versus local variables.
These changes also update how query arguments are provided via the REST API.
- Updates to how query arguments are handled #197
- topdown.Context has been renamed to topdown.Topdown to avoid confusion with Golang's context.
- Add help topics to REPL (#172)
- Fix error handling bug in Query API (#183)
- Fix handling of prefixed paths with -w flag (#193)
- Improve exit handling in REPL (#175)
- Update parser support for = rules (#192)
- Add Visual Studio and Atom plugins
- Add lazy loading of modules during compilation
- Fix bug in serialization of empty objects/arrays
- Add YAML loading and refactor into separate file (#135)
- Add command line flag to eval, print, and exit (#152)
- Add compiler check for consistent rule types (#147)
- Add set_diff built-in (#133)
- Add simple 'show' command to print current module (#108)
- Added examples to 'help' output in REPL (#151)
- Check package declarations for conflicts (#137)
- Deep copy modules in compiler (#158)
- Fix evaluation of refs to set literals (#149)
- Fix indexing usage for refs with intersecting vars (#153)
- Fix output for references iterating sets (#148)
- Fix parser handling of keywords in variable names (#178)
- Improve file loading support (#163)
- Remove conflict error for same key/value pairs (#165)
- Support "data" query in REPL (#150)
- Add new compiler harness for ad-hoc queries
- Add tab completion of imports
- Added support for non-ground global values
- Added several new string manipulation built-ins
- Added TextMate grammar file
- Setup Docker image build and push to Docker Hub as part of CI
- Set literals
- Composite and reference values in Rule head
- Complete Rule definitions containing variables
- Builtins for regular expressions, string concatenation, casting to numbers
- Improved error reporting in parser and compiler
- Iteration over base and virtual documents (in the same reference)
- Query tracing and explanation support
- Pluggable data storage support
- GoDoc strings with examples
- REST API specification
- Concise language reference
- Per-query cache of virtual documents in topdown
And many other small improvements and fixes.
- Basic value types: null, boolean, number, string, object, and array
- Reference and variables types
- Array comprehensions
- Built-in functions for basic arithmetic and aggregation
- Incremental and complete rule definitions
- Negation and disjunction
- Module system
- Reference resolver to support packages
- Safety check to prevent recursive rules
- Safety checks to ensure successful evaluation will bind all variables in head and body of rules
- Initial top down query evaluation algorithm
- Basic in-memory storage that exposes JSON Patch style API
- REPL that can be run to experiment with ad-hoc queries
- Server mode supports HTTP APIs to manage policies, push and query documents, and execute ad-hoc queries.
- Basic build infrastructure to produce cross-platform builds, run style/lint/format checks, execute tests, static HTML site
- Introductions to policy, policy-enabling, and how OPA works
- Language reference that serves as guide for new users
- Tutorial that introduces users to the REPL
- Tutorial that introduces users to policy-enabling with a Docker Authorization plugin