Skip to content

v0.18.0

Compare
Choose a tag to compare
@kddnewton kddnewton released this 21 Nov 19:07
· 1517 commits to main since this release
6ca8896

Added

  • The ParametersNode#signature method is added, which returns the same thing as Method#parameters.
  • Visitor functionality has been added to the JavaScript API.
  • The Node#to_dot API has been added to convert syntax trees to Graphviz digraphs.
  • IfNode and UnlessNode now have a then_keyword_loc field.
  • Many more encodings are now supported.
  • Some new Location APIs have been added for dealing with characters instead of bytes, which are: start_character_offset, end_character_offset, start_character_column, and end_character_column.
  • A warning has been added for when END {} is used within a method.
  • ConstantPathNode#full_name{,_parts} will now raise an error if the receiver of the constant path is not itself a constant.
  • The in keyword and the => operator now respect non-associativity.
  • The .. and ... operators now properly respect non-associativity.

Changed

  • Previously ... in blocks was accepted, but it is now properly rejected.
  • BREAKING: librubyparser.* has been renamed to libprism.* in the C API.
  • We now properly reject floats with exponent and rational suffixes.
  • We now properly reject void value expressions.
  • BREAKING: The --disable-static option has been removed from the C extension.
  • The rescue modifier keyword is now properly parsed in terms of precedence.
  • We now properly reject defining a numbered parameter method.
  • BREAKING: MatchWriteNode now has a list of targets, which are local variable target nodes. This is instead of locals which was a constant list. This is to support writing to local variables outside the current scope. It has the added benefit of providing location information for the local variable targets.
  • BREAKING: CaseNode has been split into CaseNode and CaseMatchNode, the latter is used for case ... in expressions.
  • BREAKING: StringConcatNode has been removed in favor of using InterpolatedStringNode as a list.