Packages
expression
3.0.0-rc.1
3.0.0-rc.1
3.0.0-rc.0
2.49.1
2.49.0
2.48.0
2.47.5
2.47.4
2.47.3
2.47.2
2.47.1
2.47.0
2.46.0
2.45.1
2.45.0
2.44.1
2.44.0
2.43.0
2.42.1
2.41.4
2.41.3
2.41.2
2.41.0
2.40.0
2.38.0
2.37.0
2.36.2
2.36.1
2.36.0
2.35.0
2.34.0
2.33.1
2.33.0
2.32.1
2.31.6
2.31.3
2.31.0
2.30.0
2.28.0
2.27.3
2.27.2
2.27.1
2.27.0
2.26.1
2.26.0
2.25.0
2.24.2
2.24.1
2.24.0
2.23.9
2.23.8
2.23.7
2.23.6
2.23.4
2.23.3
2.23.2
2.23.1
2.23.0
2.22.2
2.22.0
2.21.0
2.20.0
2.19.0
2.18.0
2.17.0
2.16.0
2.14.0
2.13.0
2.12.0
2.11.0
2.10.1
2.10.0
2.9.0
2.8.0
2.6.0
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.1
2.4.0
2.3.2
2.3.1
2.3.0
2.2.1
2.2.0
2.1.1
2.1.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.1.1
1.1.0
1.0.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.0
0.4.3
0.4.2
0.4.1
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.1.0
A Excel like expression parser, compatible with FLOIP Expression language.
Current section
Files
Jump to
Current section
Files
expression
CHANGELOG.md
CHANGELOG.md
# Changelog
## v3.0.0-rc.0
This is the first release candidate for v3.0.0. It contains the breaking
changes intended for the major version. Cut to allow downstream CI runs
to surface migration work before the final v3.0.0 tag.
### Breaking changes
- **`Context.new/2` no longer normalizes by default.** Both `lowercase_keys`
and `coerce_strings` now default to `false`. Original key casing is
preserved (variable lookup remains case-insensitive at evaluation time
via `Eval.case_insensitive_get/2`), and string values pass through
untouched. Callers that need v2 behavior must opt in explicitly:
`Context.new(ctx, lowercase_keys: true, coerce_strings: true)`.
- **`:skip_context_evaluation?` option has been removed.** Use
`coerce_strings: false` instead.
- **`Expression.error/1` has been removed.** Use `Expression.error_map/1`
to produce the legacy error map shape, or raise `Expression.Error` for
new code.
- **The entire V2 parser/evaluator has been removed.** All modules under
`lib/expression/v2/` (`Expression.V2`, `Expression.V2.Parser`,
`Expression.V2.Compile`, `Expression.V2.Context`, `Expression.V2.Eval`,
`Expression.V2.Callbacks`, `Expression.V2.Callbacks.Standard`,
`Expression.V2.Autodoc`) and `Expression.V2.Compat` are gone. Consumers
using V2 for static analysis (`Expression.V2.parse_block/1`,
`Expression.V2.Compile.to_quoted/1`) will need to migrate to V1's
AST surface or build their own analysis layer.
### Added
- **v2-compat mode on all evaluation entry points.** `evaluate!/4`,
`evaluate/4`, `evaluate_block!/4`, `evaluate_block/4`,
`evaluate_as_string!/4`, `evaluate_as_boolean!/4` and
`evaluate_template!/4` accept a trailing options list. `mode: :v2`
expands to `lowercase_keys: true, coerce_strings: true`, restoring the
v2 context normalization per evaluation; explicitly passed flags win
over the expansion. This lets a consumer run v2- and v3-semantics
evaluations side by side in the same VM.
### Migration
See `V3_PLAN.md` for the detailed plan and engage-specific impact notes.