Skip to content

v0.8.0

Compare
Choose a tag to compare
@kddnewton kddnewton released this 19 Aug 01:15
· 3151 commits to main since this release
e39f861

Added

  • Some performance improvements when converting from the C AST to the Ruby AST.
  • Two rust crates have been added: yarp-sys and yarp. They are as yet unpublished.

Changed

  • Escaped newlines in strings and heredocs are now handled more correctly.
  • Dedenting heredocs that result in empty string nodes will now drop those string nodes from the list.
  • Beginless and endless ranges in conditional expressions now properly form a flip flop node.
  • % at the end of files no longer crashes.
  • Location information has been corrected for if/elsif chains that have no else.
  • __END__ at the very end of the file was previously parsed as an identifier, but is now correct.
  • BREAKING: Nodes that reference &&=, ||=, and other writing operators have been consolidated. Previously, they were separate individual nodes. Now they are a tree with the target being the left-hand side and the value being the right-hand side with a joining AndWriteNode, OrWriteNode, or OperatorWriteNode in the middle. This impacts all of the nodes that match this pattern: {ClassVariable,Constant,ConstantPath,GlobalVariable,InstanceVariable,LocalVariable}Operator{And,Or,}WriteNode.
  • BREAKING: BlockParametersNode, ClassNode, DefNode, LambdaNode, ModuleNode, ParenthesesNode, and SingletonClassNode have had their statements field renamed to body to give a hint that it might not be a StatementsNode (it could also be a BeginNode).