Releases: ruby/prism
Releases ยท ruby/prism
v1.6.0
v1.5.2
v1.5.1
v1.5.0
Added
- Add
Prism::Translation::ParserCurrent. - Add
Integer::to_u32_digitsfor the Rust API. - Add
pm_comment_type_tfield for the Rust API. - Support leading logical operators for CRuby 3.5+.
Changed
- Mark Prism as ractor-safe.
- Enforce a minimum version for the parser translation layer.
- Many fixes to the parser translation layer.
- Accept a newline after the
defined?keyword. - Reject
true && not true. - Make
it = itassign nil to match parse.y behavior [Bug #21139]. - Some fixes to the ruby parser translation layer.
- Ensure call nodes have the correct ending location.
- Reject
foo && return bar.
v1.4.0
Added
- Support
3.5as a version option. - Many, many compatibility fixes for the parser translation layer.
- Handle escapes in named capture names.
- The
freezeoption is added to the variousPrism::APIs to deeply freeze the AST. - Properly support
itfor the parser and ruby_parser translation layers. - Track the
thenkeyword onrescuenodes. - Add a
multiple_statements?flag to parentheses nodes to support desireddefined?behavior.
Changed
- The strings used in the AST are now frozen.
- Fixed handling escaped characters after control sequences in character literals.
- Fix reading off the end of an unterminated global variable.
- Raise a syntax error for defining
[]=with endless method syntax. - Increase value of
PRISM_DEPTH_MAXIMUMto10000. - Freeze
Prism::VERSION. - Fix up rescue modifier precedence.
v1.3.0
Added
- Introduce
Prism::StringQuery. - Introduce
Prism::Relocation. - Track
dokeyword forWhileNodeandUntilNode. - Change the way the gem is built to rely on
mkmfinstead ofmake. - Lots more documentation on node fields.
Changed
- Properly add an error for
def @foo; end. - Properly add an error for
foo(**, *). - Fix up regression in string parsing in
RubyParsertranslation. - Reject invalid dot method call after match expression.
- Reject invalid operator after match expression.
- Fix up %-literals delimited by newlines.
- Properly add an error for
-> { _1; -> { _1 } }. - Reject blocks and keywords in index writes.
v1.2.0
Added
- Introduce
Prism::CodeUnitsCache.
Changed
- Properly handle lexing global variables that begin with
$-. - Properly reject invalid multi writes within parentheses.
- Fix unary
*binding power. - Set
contains_keywordsflag for implicitgetscalls when-pis used. - Properly reject invalid non-associative operator patterns.
- Do not warn about unused variables declared on negative lines.
v1.1.0
Added
- Explicitly type each child node field in the Ruby API.
- Add the
main_scriptoption to the parse APIs, which controls whether or not shebangs are considered. - Add the
partial_scriptoptions to the parse APIs, which controls whether or not jumps that would otherwise be considered invalid are allowed. This is useful for parsing things like ERB sources, where you know it will be evaluated in a different context. Note that this functionality is replacing the previous idiom of passing in a list of scopes to indicate anevalcontext, because that behavior has changed upstream inruby/ruby. - Add
ArgumentsNode#contains_multiple_splats?. - Add
ArgumentsNode#contains_forwarding?. - Accept all valid Ruby versions for the
versionoption on parse APIs. - Accept version shorthands like
"3.3"and"3.4"for theversionoption on parse APIs. - Support a max depth to protect against malicious payloads without hitting the stack limit.
Changed
- Fix some token incompatibilities in the
parsertranslation. - Fix up parsing tempfiles on Windows.
- Fix up handling UTF-8 characters in file paths on Windows.
- Do not warn for a
\rat the end of a shebang on Windows. - Properly handle erroring for parsing a directory on Windows.
- When a numbered reference is out of range, warn instead of raise.
- Allow returns in default parameter values.
- Reject many more invalid syntax patterns.
v1.0.0
Added
- Add
Node#breadth_first_search. - Add
Node#node_id. - Add
ArgumentsNode#contains_splat?. - Passing the special value
falsefor theencodingoption tells Prism to ignore magic encoding comments. - Expose flags on every node type (allows checking static literal and newline).
- Implement mismatched indentation warning.
- Add C API for receiving a callback when parsing shebangs with additional flags.
Changed
- BREAKING: Some fields are renamed that had illogical names. The previous names all now emit deprecation warnings.
CaseMatchNode#consequentwas renamed toCaseMatchNode#else_clauseCaseNode#consequentwas renamed toCaseNode#else_clauseIfNode#consequentwas renamed toIfNode#subsequentRescueNode#consequentwas renamed toRescueNode#subsequentUnlessNode#consequentwas renamed toUnlessNode#else_clause
- Block exits are now allowed in loop predicates (e.g.,
while _ && break do end). - Multi-writes are now disallowed when not at the statement level.
- Ensure that range operators are non-associative.
- (JavaScript) Correctly deserialize encoded strings.
- Properly support parsing regular expressions in extended mode.
- Use gmake on FreeBSD.
- Parsing streams now handles NUL bytes in the middle of the stream.
- Properly detect invalid returns.
v0.30.0
Added
- More correctly raise mixed encoding errors.
- Implement ambiguous binary operator warning.
- Fix up regexp escapes with control and meta characters.
- Fix up support for the
itimplicit local variable. - Heredoc identifiers now properly disallow CLRF.
- Errors added for void value expressions in begin clauses.
- Many updates to more closely match the
parsergem in parser translation. - Many errors added for invalid regular expressions.
Changed
- Handle parser translation missing the
parsergem. - Handle ruby_parser translation missing the
ruby_parsergem. - Various error messages have been updated to more closely match CRuby.
RationalNodenow has anumeratoranddenominatorfield instead of anumericfield. For the Ruby API we provide aRationalNode#numericmethod for backwards-compatibility.