v3.0.0-rc.0: breaking changes#338
Open
smn wants to merge 1 commit into
Open
Conversation
santiagocardo
approved these changes
May 9, 2026
Contributor
santiagocardo
left a comment
There was a problem hiding this comment.
This is great 🔥✨🎉
Happy to try this new version on PROD. I hope this fixes existing bugs, especially the ones related to type coercions 🤞
Comment on lines
203
to
+204
| def op(:=, a, b) when is_struct(a, DateTime) and is_struct(b, DateTime), | ||
| do: Date.compare(a, b) == :eq | ||
| do: DateTime.compare(a, b) == :eq |
Contributor
There was a problem hiding this comment.
I believe that at some point should highlight this as a syntax error. Users should use == instead.
Comment on lines
46
to
+47
|
|
||
| Both use [NimbleParsec](https://hexdocs.pm/nimble_parsec) for parsing. | ||
| (The experimental V2 parser/evaluator was removed in v3.0.0.) |
Contributor
There was a problem hiding this comment.
@smn, if there are no more references to V2, we can remove this to avoid confusion, no?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
First release candidate for v3.0.0. Lands every breaking change deferred to a major version in
CRITICAL_REVIEW.md(Phase 7) plus full removal of the V2 parser/evaluator. Cut as an rc so engage CI can surface migration work before final tag.Breaking changes
Context.new/2no longer normalizes by default.lowercase_keysandcoerce_stringsboth default tofalse. Variable lookup remains case-insensitive at evaluation time. Passlowercase_keys: true, coerce_strings: trueto restore v2 behavior.:skip_context_evaluation?removed. Usecoerce_strings: false.evaluate_as_string!/3is unchanged. UseExpression.evaluate_template/3for explicit template resolution inside callback arguments.Expression.error/1removed. UseExpression.error_map/1for the legacy map shape, or raiseExpression.Error.=on twoDateTimes now compares full DateTime (matches==). v2 incorrectly compared only the date portion viaDate.compare/2.Expression.V2,V2.Parser,V2.Compile,V2.Context,V2.Eval,V2.Callbacks,V2.Callbacks.Standard,V2.Autodoc,V2.Compatare all gone. Static-analysis consumers (engage'sTurn.Dsl.Validation/Turn.Dsl.Parser) will need to migrate to V1's AST surface or grow new compile-to-AST capabilities — this is the rc's primary forcing function.bencheedep removed. Thebenchmark/directory existed for V1↔V2 comparison; with V2 gone it has no purpose.benchee,deep_merge,statistexremoved frommix.lock.Why an rc
tag-and-discoveris the strategy: cut the rc, run engage's full CI against it, address fallout (engage's V2 references inTurn.Dsl.Validation/Turn.Dsl.Parser, the oneExpression.error/1call site inturn/build/callbacks.ex:188), then bump to3.0.0final.Test plan
mix test— 386 doctests, 235 tests, 0 failuresmix credo --strict— no issuesmix format --check-formatted— cleanmix compile --warnings-as-errors— clean3.0.0-rc.0to surface migration workExpression.error/1call site)3.0.0final once rc is greenFiles
See
CHANGELOG.mdfor the user-facing changelog andV3_PLAN.mdfor the implementation plan with consumer-impact notes.