Sentinel Runtime Release Notes
These are the release notes for the Sentinel runtime.
Each version of the runtime is released with a corresponding version of Sentinel CLI. To download the CLI, see the install page.
Sentinel integrations and embedded runtimes may not always have the latest version installed, depending on the product's individual release cycle. For more information, contact the support team for your specific integration.
0.27.0 (August 7, 2024)
ENHANCEMENTS:
imports/collection/maps
: Added anunset
helper to thecollection/maps
import, providing the ability to remove keys using a provided path.imports/collection/maps
: Added anomit
helper to thecollection/maps
import, which returns a map with all provided paths removed from the source map.imports/strings
: Added thereplace
,trim
,trim_left
,trim_right
andtrim_space
helpers to thestrings
import.
0.26.3 (July 19, 2024)
ENHANCEMENTS:
imports/collection/maps
: Added aset
helper to thecollection/maps
import, providing the ability to set values deeply within a map.imports/collection/maps
: Added apick
helper to thecollection/maps
import, providing the ability to select a series of values from a map.
0.26.2 (June 19, 2024)
ENHANCEMENTS:
imports/collection
: Added afilter
helper to thecollection
import, providing a functional approach to filtering collections.
0.26.1 (May 22, 2024)
NOTES:
- This release changes lower-level components and there are no user-facing changes.
0.26.0 (May 15, 2024)
FEATURES:
imports/collection
,imports/collection/lists
andimport/collection/maps
: Adding new helper imports for dealing with collections (lists, maps), helping avoid complexities within policy code.sentinel/eval
: Fixed an issue with per-policy parameters where parameters may leak from one policy into the following policy.
0.25.1 (Apr 18, 2024)
BREAKING CHANGES:
imports/http
: The defaultAccept
header has been changed to*/*
, removing a redundant extension that some servers may not accept by default.
0.25.0 (Apr 8, 2024)
ENHANCEMENTS:
cmd/apply
: JSON results will return an additionalduration
field for individual policies as well as the evaluation as a whole.cmd/test
:sentinel test
will return an additionalduration
field in the JSON output.
BUG FIXES:
cmd
: Removed redundant debug logging for custom plugins.
0.24.4 (Mar 21, 2024)
ENHANCEMENTS:
runtime/format
: Null values will now print correctly for rule value outputs.config
: Some internal changes to configuration parsing workflow.
0.24.3 (Feb 9, 2024)
NOTES:
- This release changes lower-level components that are used to manage policies within HashiCorp's Sentinel Integrations. There are no user-facing changes.
0.24.2 (Jan 31, 2024)
BUG FIXES:
imports/static
: Fixed an issue wherenil
values provided to the built-in static import were being treated asundefined
in policy.
0.24.1 (Jan 19, 2024)
BUG FIXES:
cmd/test
: Fixed an issue where the Sentinel cache was unstable due to concurrent tests.
0.24.0 (Dec 7, 2023)
ENHANCEMENTS:
cmd/apply
,cmd/test
: Custom import plugins can now be fetched from remote sources.cmd/apply
,cmd/test
: Static imports can now be fetched from remote sources.features/terraform
: Added support forresource_drift
in thetfplan/v2
import.
0.23.1 (Oct 19, 2023)
BUG FIXES:
cmd/apply
: Warnings and errors are included in the JSON output if the json flag is enabled.
0.23.0 (Sept 5, 2023)
FEATURES:
features/apply_all
: Adds theapply-all
feature, allowing for all policies to evaluate regardless of result, instead of exiting on first failure.
BUG FIXES:
features/terraform
: Thetfplan/v1
import correctly handles nested attribute schemas.
0.22.1 (June 22, 2023)
BUG FIXES:
sentinel/eval
: Under certain conditions, per-policy parameters would cause Sentinel to panic. This has been resolved.
0.22.0 (May 31, 2023)
config
: Configuration now supports asentinel
block to manage the Sentinel runtime.
0.21.1 (May 8, 2023)
BUG FIXES:
config
: An issue with certain identifiers being treated as incorrectly invalid has been resolved.
0.21.0 (March 8, 2023)
BREAKING CHANGES:
lang/ast
:is empty
andis not empty
are now treated asast.UnaryExpr
expressions, withast.IsEmptyExpr
being removed.lang/ast
: You can now assert if a value is defined or not using theis defined
andis not defined
syntax.
FEATURES:
config
: Parameter values can now be provided for individual policies within a policy block.
0.20.0 (February 16, 2023)
ENHANCEMENTS:
cmd/testcmd
: Allows sentinel tests to run concurrently by default. Sequential style testing can be enabled by running with the-maxConcurrency=1
option.cmd/testcmd
: Allows sentinel test command to timeout after a certain duration. This can be provided by the user or will default to 5 minutes.cmd/apply
: The policy enforcement level is now included in the JSON output.lang/ast
: Functions can now be declared as named statements, providing a safer function declaration.
BREAKING CHANGES:
cmd/apply
: Policies provided directly to the apply command will now default their enforcement level toadvisory
, aligning with thepolicy
configuration block.sentinel
: JSON results will no longer returnallowed_failure
orcan_override
fields.sentinel/result
: A new package has been added which provides additional methods to return supplemental data about the evaluation result.
0.19.5 (February 9, 2023)
BUG FIXES:
runtime/localast
: TheSelectorExpr
will correctly rewriteX
.
0.19.4 (February 8, 2023)
BUG FIXES:
runtime/localast
: TheCompile
function will correctly set theOriginal
field when rewriting aCallExpr
as anImportExpr
.
0.19.3 (February 3, 2023)
NOTES:
- This release changes lower-level components that are used to manage policies within HashiCorp's Sentinel Integrations. There are no user-facing changes.
0.19.2 (January 17, 2023)
BUG FIXES:
runtime/localast
: TheCompile
function will no longer modifyast.CallExpr
arguments in place.
0.19.1 (December 14, 2022)
BUG FIXES:
lang/ast
: TheRewrite
function will no longer modify the provided Node in place.
ENHANCEMENTS:
lang/semantic
: The Break semantic check uses the AST walker.
0.19.0 (December 6, 2022)
BREAKING CHANGES:
config
: Attempts to override a standard import with a custom import will now be met with an error.imports
: All plugin imports now returnsdk.Plugin
instead ofsdk.Import
, as per the SDK update to v0.4.0.
ENHANCEMENTS:
runtime/importer
: AnImport
andImportInstance
interface have been added to improve the import capabilities.runtime/importer
: TheImporter
interface now returns aImport
interface instead of asdk.Import
.lang/semantic
: The Import Assignment semantic check uses the AST walker.lang/ast
: Added an AST Walker so the AST rewriter does not need to be used for basic AST tasks.
FEATURES:
config
: Configuration syntax now allows for configuration of imports within the standard library.config
: A new configuration syntax for defining modules and plugins is now available.- Static data can now be added via
import
configuration. cmd/apply
: Theapply
command now supports multiple primary configuration files by default, loading all configuration files within the working directory.cmd/apply
: Theapply
command now accepts applying configuration overrides to primary configuration.
0.18.13 (October 31, 2022)
BUG FIXES:
cmd/apply
:sentinel apply
no longer aborts on advisory policy failure.
0.18.12 (September 15, 2022)
BUG FIXES:
runtime/localast
: Fixed an issue where nestedCallExpr
were not rewritten.
0.18.11 (June 8, 2022)
NOTES:
config
: Theenforcement_level
key for policies is now optional, defaulting to"advisory"
when not supplied.
0.18.10 (May 20, 2022)
NOTES:
runtime/initwd
: Improvements to the installer, including timeouts and filesize limits, as well as disabling support for symlinks withingit
orhg
repositories.
0.18.9 (March 23, 2022)
NOTES:
- This release fixes an issue with the Docker container build pipeline. There are no changes to the Sentinel runtime or CLI.
0.18.8 (March 22, 2022)
BUG FIXES:
runtime/initwd
: Fixed an issue in the installer for Windows paths.
0.18.7 (February 24, 2022)
NOTES:
- Darwin arm64. This release will be our first to include Darwin arm64 architecture.
BUG FIXES:
lang/ast
: Fixed issues whereIndexSpec
andRuleLit
nodes where returning incorrect end positions.lang/ast
: Fixed an issue whereParamSpec
nodes where returning incorrect end positions.
0.18.6 (February 2, 2022)
NOTES:
- This release changes lower-level components that are used to manage policies within HashiCorp's Sentinel Integrations. There are no user-facing changes.
0.18.5 (January 14, 2022)
IMPROVEMENTS:
runtime/initwd
: Changed the sum algorithm used during remote installation frommd5
tosha256
to reduce chance of collision.
0.18.4 (July 20, 2021)
FEATURES:
imports/static
: Improved handling of struct tags when performing encoding, allowing-
to mark as ignored.
0.18.3 (June 1, 2021)
BUG FIXES:
runtime/initwd
: Fixed an issue for remote source installation where duplicate sub-directories resulted in incorrect installation.imports/static
: Fixed an issue where global configuration that contained an empty map could not be accessed without raising selector issues.
0.18.2 (May 18, 2021)
BUG FIXES:
runtime/localast
: Fixed an issue where import expressions inside lists and maps were not being evaluated correctly.
0.18.1 (May 11, 2021)
BUG FIXES:
imports/json
: Fixed an issue where empty maps where failing when passed at any level tomarshal
.
0.18.0 (March 25, 2021)
FEATURES:
imports/http
: Added support for POST actions within thehttp
import through addition of thepost
function. Additionally, support for adding a body to therequest
object has been added viawith_body
.
0.17.4 (February 2, 2021)
BUG FIXES:
runtime/format
: Fixed a nesting issue with the rule printer where nesting state leaks were leading to all collection values eventually being truncated, regardless of their nesting level.
0.17.3 (January 15, 2021)
BUG FIXES:
runtime/initwd
: Fixed an issue where local file installation failed on Windows when usingsentinel test
.
0.17.2 (January 13, 2021)
BUG FIXES:
cmd/test
: Fixed an issue where duplicate log messages were being printed withsentinel test
.
0.17.1 (January 7, 2021)
BUG FIXES:
cmd/test
: Fixed an issue where hard-coded path separator causedsentinel test
issues in Windows.
0.17.0 (January 5, 2021)
LANGUAGE CHANGES:
- Map Expression
map
. A new quantifier expression,map
has been added.map
takes a collection and applies an operation to each element in the collection, returning a list of results with the resulting values. - Emptiness checks
is empty
andis not empty
. Two new expressions,is empty
andis not empty
have been added. As they are aliases to thelength
built-in, onlystring
,map
,list
orundefined
is supported. - Comparable maps Maps (the data type) are now comparable. Maps are equal if they are of equal length and both their corresponding keys and values are comparable and equal.
- Rich Return Types Rules can now process and return non-boolean data.
Scalar, list, and map types are supported. When non-boolean values are used,
the presence of a non-zero or non-zero-length
main
rule determines policy failure. More details can be found on https://docs.hashicorp.com/sentinel/language#main.
FEATURES:
- CLI:
sentinel apply
andsentinel test
now have options for JSON output. For more details, see the CLI documentation. imports/base64
: Added a new import,base64
, to assist with encoding and decoding base64 strings.
0.16.1 (October 21, 2020)
BUG FIXES:
runtime/eval
: Fixed an issue wherecontains
to ensure any instance ofundefined
would correctly result inundefined
.runtime/eval
: Fixed an issue inany
andall
expressions to ensure correct boolean logic when dealing with a collection containingundefined
.imports
: Fixed an issue where import processes were not killed, which caused non-graceful closures for the clients.lang/scanner
: Fixed an issue where inline#
style comments were not being consumed.
0.16.0 (October 14, 2020)
BREAKING CHANGES:
cmd/doc
: Removal of the deprecatedsentinel doc
command.sentinel
: Replacewhitelist
andblacklist
withallowlist
anddenylist
, as per inclusive language changes.
FEATURES:
imports/version
: Added a new import,version
, which supplies helpers for dealing with semantic versioning.cmd/apply
: Added anHCL
based configuration file, which will eventually deprecate the legacyJSON
configuration.cmd/apply
: Added support for download remote policies and modules.cmd/test
: Added support for downloading remote test modules.cmd/apply
: Added support for evaluating a policy based on it's key within the configuration.cmd/apply
: Added support for running all policies in a configuration by default.
0.15.6 (July 7, 2020)
NOTES:
- This release changes lower-level components that are used to manage policies within HashiCorp's Sentinel Integrations. There are no user-facing changes.
0.15.5 (May 20, 2020)
NOTES:
- This release changes lower-level components that are used to manage policies within HashiCorp's Sentinel integrations. There are no user-facing changes.
0.15.4 (May 13, 2020)
BUG FIXES:
imports
: Fixed an issue with the standard imports that was affecting the handling of null data within lists.
0.15.3 (April 16, 2020)
BUG FIXES:
runtime/localast
: Fixed an issue whereIndexExpr
were not rewritten, as well as ensuringSelectorExpr
uses any nested rewrites.lang/printer
: Fixed issue printing deeply nested structures and/or loops.
IMPROVEMENTS:
imports/decimal
: Added alias methods to improve consistency of method names within thedecimal
import. The alias methods areis_nan
forisnan
, as well as bothis_inf
andis_infinite
forisinfinite
.command/apply
:sentinel apply
will now output the policy description when a trace is forced via-trace
.sentinel
: ImprovedString
output formatting of Policy docstring forEvalPolicyResult
.
0.15.2 (April 2, 2020)
BUG FIXES:
lang/printer
: Fixed an issue with theprinter
that was causing a panic when a#
line comment was used with no text following it.imports/types
: Fixed an issue with thetypes
import where calls totype_of
for undefined types were incorrectly returning as map types. These will now be correctly be identified as undefined as expected.
0.15.1 (March 6, 2020)
BUG FIXES:
sentinel
: Fixed how modules are managed internally in the runtime to correct race conditions in concurrent scenarios and to allow for per-evaluation module restrictions. This functionality is only of interest to embedded applications with long-lived runtimes and is currently not implemented in any HashiCorp integration.
0.15.0 (March 5, 2020)
NOTES:
- Windows Digital Signature. Our windows releases for this version and up will be signed and verified according to Microsoft's requirements.
FEATURES:
cmd/config
: Modules can now be loaded off of local disk using the Sentinel CLI. For information on how to do so, see the Sentinel documentation.
IMPROVEMENTS:
runtime/eval
: Changed modules so that they now have singleton scope when loaded. Importing a module under two different aliases, or within a nested module, will now share scopes - modification of state in one will alter the other.lang/object
: Introduced an interface to allow the duplication of various types, like collections.runtime/eval
: Changed how collection data is returned from modules. This data is now duplicated to prevent accidental or deliberate circumvention of the prohibition on assignment to import data, and brings behavior to parity with binary imports.
0.14.4 (February 6, 2020)
IMPROVEMENTS:
imports/time
: Changed theadd
timespace function in thetime
import to allow it to take float types as durations. These values will be truncated to the appropriate integer-value duration.
BUG FIXES:
lang/parser
: Fixed an issue where out-of-place right-hand braces were being parsed as empty statements, instead of raising syntax errors.
0.14.3 (January 22, 2020)
IMPROVEMENTS:
cmd/test
: Fail when an assertion is not found in a trace.cmd/test
: Added a message to notify when no rules were evaluated in a test.
BUG FIXES:
lang/printer
: Fixed an issue where import aliases (theas baz
inimport "foo/bar" as baz
) were being removed when formatting withsentinel fmt
.imports/http
: Fixed an issue with the http import where the client library's debug logs were being printed to standard error.
0.14.2 (January 15, 2020)
NOTES:
With this release, we are discontinuing support for MacOS 32-bit. 64-bit builds are now the only builds available for MacOS.
IMPROVEMENTS:
lang/printer
: A newline is now added to files formatted viasentinel fmt
.
BUG FIXES:
lang/printer
: Fixed an issue in printing where multi-line expressions would indent infinitely. They will now only indent once at the most. This is mostly seen when usingsentinel fmt
.runtime/encoding
: Fixed an issue where if a plugin returned a deeply embedded undefined value, the value was instead decoded into a map.
0.14.1 (January 6, 2020)
BUG FIXES:
lang/parser
: Fixed an issue where reserved words could not be used as selectors when the selector expression was the last lexeme on a line.
0.14.0 (December 18, 2019)
LANGUAGE CHANGES:
- Filter Expression
filter
. A new quantifier expression,filter
has been added.filter
returns a subset of the provided collection based on a boolean condition that is asserted for each element.
NOTES:
- Apple Notarization. Our darwin releases for this version and up will be signed and notarized according to Apple's requirements.
0.13.1 (November 25, 2019)
BUG FIXES:
runtime/eval
: Parameters are no longer allowed in mock files. Adding one to a mock will result in a runtime error.runtime/eval
: Fixed an issue where import calls from within mocks were failing under certain circumstances.imports/decimal
:int
should now correctly provide the truncated integer representation of a decimal number, not the rounded one.
0.13.0 (November 15, 2019)
LANGUAGE CHANGES:
- Policy Parameters. The new policy
parameters feature
allows authors to use a
param
declaration at the top of a policy to supply values that are expected to come from outside of a policy. See the linked documentation for more details.
FEATURES:
imports/http
: Thehttp
import is a new addition to the standard library enabling the use of HTTP-accessible data from outside the runtime in policy rules.
BUG FIXES:
runtime/eval
: Fixed an issue where loading other imports before a mocked import would cause those imports to no longer be visible from within the policy.
0.12.0 (October 7, 2019)
LANGUAGE CHANGES:
- New
case
statement. This statement is a selection control mechanism to conditionally execute a branch based on expression equality, allowing simplification of complex conditional chains that may otherwise need to be written withelse if
. See the Case Statements section of the Sentinel language specification for more details.
IMPROVEMENTS:
lang/semantic
: Added a semantic check to ensure usage of append is not using a return value.
BUG FIXES:
runtime/eval
: Corrected an issue where calling a method on an import object value that was the result of a method call on another import object value would have erroneously tried to call an import of the name of the "parent" import object value. Example: ina = subject.new(); b = a.call(); c = b.call()
,b.call()
would attempt to call a method namedcall
on the root namespace for an import nameda
. This has now been corrected so thatb.call()
will now correctly call thecall
method for the respective object namespace residing in the import namedsubject
.imports
: Some standard imports may have been returning null for some unknown keys in objects when they should have been returning undefined. This was due to an SDK issue which was corrected in SDK version 0.3.2, which has now been corrected.cmd/test
:sentinel test
will now correctly fail a policy if it encounters an error.cmd/test
:sentinel test
will now correctly display errors and other output that were missing due to a formatting issue.runtime/eval
: Theappend
builtin now correctly returns undefined for all calls, as called for by the Specification. Note that in most cases, the semantic check outlined above will trigger an error if the return value is used.
0.11.0 (September 5, 2019)
LANGUAGE CHANGES:
- New builtin function:
range()
. This function existed in the spec in earlier versions but was removed as it lacked an implementation. This has now been implemented and re-added to the spec. See the Range section of the Sentinel Specification for more details. - Lists are now comparable. Lists are equal if their corresponding elements are comparable and equal.
- Method calls on values returned by imports are now supported. See the Imports section of the Sentinel Specification for more details.
FEATURES:
imports/decimal
: This is a new import designed to do exact precision mathematical calculations.runtime/eval
: Compound call expressions that refer to imports (example: foo.bar().baz() whenfoo
is a loaded import) will now function as expected. Previously, this was only supported up to the first call (example:foo.bar()
).imports/time
: Timespaces returned by calls such astime.now
are now callable. Example:t = time.now; t.after(some_previous_time)
will now function.
IMPROVEMENTS:
runtime/eval
: The implementation of comparison of non-comparable types has now changed. Rather than triggering a runtime error, non-comparable types will now return false when attempting to compare.
0.10.4 (August 15, 2019)
BUG FIXES:
runtime/encoding
: Fixed an issue with conversion of null values that could lead to crashes in imports.
0.10.3 (July 15, 2019)
BUG FIXES:
command/config
: Parsing a configuration file where malformed data is encountered after apparently properly-formed data will now report an error. An example would be a situation where misplaced braces would cause a JSON object to only parse part of the configuration file.
0.10.2 (June 25, 2019)
BUG FIXES:
lang/parser
: Corrected an issue where parsing certain compound binary expressions where the negation predicate (not
) was in use would cause the negation to have no effect. Example:foo else "bar" not in "baz"
would have been parsed and evaluated asfoo else "bar" in "baz"
, effectively producing the opposite result.
0.10.1 (May 9, 2019)
BUG FIXES:
command/test
:sentinel test
now displays policies without tests as an unknown result with [no test files], instead of the somewhat erroneous behavior of displaying it as a PASS. A full test run with a mixture of passing tests and no tests still results in an overall successful result.
0.10.0 (April 18, 2019)
LANGUAGE CHANGES:
- Mixed-number arithmetic operations are now allowed. Addition (
+
), subtraction (-
), multiplication (*
), division (/
), and remainder operations (%
) are no longer restricted to number values of the same type, and can mix integer and floating point. The result of these operations is always a floating-point number. - Remainder (modulo,
%
) operations are now allowed on floating-point numbers.
BUG FIXES:
lang/parser
: Fixed a bug that affected the use ofnot
withcontains
,matches
, orin
in a compound expression.runtime/eval
: Fixed error messages on evaluation errors withcontains
andin
to indicate that strings are an allowed type along with lists and maps.
0.9.2 (March 15, 2019)
This is a dependency update related to the changes mentioned in 0.9.1. No other changes have been made.
0.9.1 (March 14, 2019)
This is a patch release that is required to integrate with the latest versions of the Sentinel SDK. No other changes have been made.
0.9.0 (January 28, 2019)
FEATURES:
imports/strings
: Added ajoin
function to thestrings
import. This can be used to join a list into a string with a specific separator. Multi-dimensional lists and all Sentinel primitives are supported.
0.8.1 (January 17, 2019)
BUG FIXES:
lang/eval
: Fixed a bug that prevents the effective use ofreturn
statements infor
loops.
0.8.0 (January 14, 2019)
FEATURES:
- Mocks can now be represented by Sentinel code. This allows for the mocking of functions and other complex data structures that cannot be represented in JSON. For more information on using this feature via mocks, click here.
IMPROVEMENTS:
- Import validation has now been moved to the semantic checking phase. This
should result in better reporting of validation errors. In addition, import
validation will now enforce the use of an
as
identifier when an import path is not a valid identifier on its own (example:import "foo/bar"
).
0.7.0 (December 12, 2018)
BUG FIXES:
- There have been changes to the runtime in how scope is handled over multiple policy executions. Scope is now correctly unique per single policy execution, and values set or builtins that are overridden in one policy will no longer affect those values within another.
0.6.0 (November 30, 2018)
FEATURES:
imports/runtime
: This new import allows for one to check various aspects of the Sentinel runtime as it may be embedded in the simulator or a specific implementation. For now, it allows the version to be checked.
0.5.1 (November 28, 2018)
IMPROVEMENTS:
imports/time
: Added thezone
andzone_string
attributes to assist with validation of a timespace's zone.command/fmt
: Added a new -check flag. This option does not commit changes, but instead checks to see what files need formatting and outputs them on stdout.
BUG FIXES:
command/test
: Ensure that passing test results are correctly output one per line. Tests are also now run in a deterministic fashion based on lexicographical (alphabetical) order.imports/time
:month_name
andweekday_name
will now show up correctly in a returned timespace result.
0.5.0 (November 5, 2018)
IMPROVEMENTS:
spec
: Selectors can now contain any reserved word (example:rule
) or keyword operator (example:any
,all
,is
,not
). This only works for the selector part of the expression (after the first period) - the first primary expression (before the first period) still needs to be an identifier that does not conflict with reserved words.
BUG FIXES:
- The simulator should now display import function call names correctly in import errors.
0.4.0 (October 1, 2018)
FEATURES:
builtin
: Added thebool
built-in type conversion function. Booleans will also now accepted as conversion into other values as well, with the full list of behaviors available in the spec.
0.3.2 (September 27, 2018)
FEATURES:
command/apply
:sentinel apply
now prints out messages output by theprint()
function when a trace is output on policy failure, or when a trace is forced with-trace
.imports/time
: Added themonth_name
andweekday_name
keys to the timespace, which return full-English names for the month and day of the week.
BUG FIXES:
command/fmt
:sentinel fmt -
Will no longer print out the filter status message on the output stream when-write=false
Is not explicitly stated. This brings the behavior of the command in line with the help text.runtime
: Index operations on the right-hand-side that have negative indexes that go out of range (example:length(list) * -1 - 1
) now correctly returnundefined
. left-hand-side index assignments with a out-of-range negative index still return runtime errors.
0.3.1 (August 3, 2018)
BUG FIXES:
runtime
: Basic index assignment has been implemented as per the spec.runtime
: Index expressions for lists with negative indexes will no longer panic if the list index is less thanlength(list) * -1
.
0.3.0 (July 20, 2018)
FEATURES:
- New standard import:
types
. This can be used to dynamicaly detect the type of some value.
0.2.0 (April 11, 2018)
FEATURES:
- New standard import:
json
. Marshal and unmarshal JSON documents and access their contents as native Sentinel values. break
andcontinue
. These are now both specified and implemented.break
allows loop exiting andcontinue
allows immediate execution of the next iteration.
IMPROVEMENTS:
- runtime:
print()
map values are now ordered alphabetically by keys.
BUG FIXES:
- command/test: If no
test
block exists, test behaves like it is assertingmain: true
. - runtime: default maximum stack depth to 500
- runtime:
print()
map values now appear like more typical maps. - runtime: division by zero is an error, not a crash
- runtime: plugins that send map values with
null
values now decode properly into native Sentinel values.
0.1.0 (September 19, 2017)
Initial release.