=== 2.5.2 / 2025-03-25

* 1 bug fix:

  * Added support for 3 slot op_asgn (eg `a &= 1`)

=== 2.5.1 / 2024-07-08

* 1 bug fix:

  * Fix errors created when string literals are frozen. (byroot + zenspider)

=== 2.5.0 / 2022-10-04

* 5 minor enhancements:

  * Added support for (most?) pattern matching.
  * Added support for **kwrest.
  * Added support for forward args (...), defn and call.
  * Added support for preexe (BEGIN { ... }).
  * Support ruby 3.1 hash shorthand syntax. (presidentbeef)

* 3 bug fixes:

  * Fix generation of case w/ no else.
  * Fixed a bug block shadow vars (they're grouped)
  * Fixed find_pat up (after fixing a find_pat bug in ruby_parser).

=== 2.4.4 / 2019-09-24

* 1 bug fix:

  * Fixed deprecation warnings from patterns change in sexp_processor.

=== 2.4.3 / 2019-06-03

* 4 bug fixes:

  * Added shadow block args. (jaynetics)
  * Fixed generation for block args w/ trailing commas.
  * Fixed nested masgn block args and arrays. (jaynetics)
  * Fixes for stabby proc / lambda changes.

=== 2.4.2 / 2019-03-12

* 2 bug fixes:

  * Rewrote process_masgn to fix problems with nesting masgn in block args.
  * Use RubyParser directly instead of versioned parsers.

=== 2.4.1 / 2018-02-15

* 2 minor enhancements:

  * Added bitwise ops to BINARY. (david942j)
  * Added rewrite_call|if|until|while to normalize `not` in conditions.

=== 2.4.0 / 2017-07-17

* 1 major enhancement:

  * Major overhaul. Process methods no longer mutate arguments.

* 1 minor enhancement:

  * Now SEXP_STRICT=1 clean.

* 2 bug fixes:

  * Fixed 2.4 Fixnum deprecation warning
  * Fixed for new 24 parser.

=== 2.3.2 / 2016-11-30

* 5 bug fixes:

  * FINALLY fixed a problem with escaping in dstrs. (nex3)
  * Fix using match3 on LHS of call. (eqv)
  * Fixed handling defn that starts w/ begin+rescue+other stuff. (eqv)
  * Fixed return expressions with complex RHS. (eqv)
  * Tweaked sexp_processor dependency to ~> 4.6 to sync them better

=== 2.3.1 / 2016-10-09

* 1 minor enhancement:

  * Support more op_asgn nodes. (presidentbeef)

* 1 bug fix:

  * Fix for non-binary 'binary' calls (eg arity > 1). (presidentbeef)

=== 2.3.0 / 2016-02-18

* 3 minor enhancements:

  * Added support for safe navigation/lonely operator. (presidentbeef)
  * Expanded tests for 2.3 support
  * Support safe attrasgn. (presidentbeef).

=== 2.2.0 / 2015-05-27

* 1 minor enhancement:

  * Normalized block arg goalposts (always there unless arg slot == 0).

=== 2.1.4 / 2015-04-13

* 1 minor enhancement:

  * Wrap fewer hash values in parentheses. (jaredbeck)

* 1 bug fix:

  * Fixed handling of kwsplat args.

=== 2.1.3 / 2014-09-26

* 1 bug fix:

  * Fixed handling of kwargs. (joenas)

=== 2.1.2 / 2014-08-28

* 1 bug fix:

  * Fixed readme to point out that deep_clone may be needed. (heathd)

=== 2.1.1 / 2014-06-09

* 1 bug fix:

  * Moved Regexp::CODES out of guard on ::ENC_NONE. (presidentbeef)

=== 2.1.0 / 2014-04-23

* 4 minor enhancements:

  * Don't indent defn body extra if it has a top-level rescue.
  * Don't indent defn body until fully processed.
  * Don't use simple rescue form if resbody is a return (statement keyword). (eyberg)
  * Remove superfluous begin/end for top-level defn rescue.

=== 2.0.8 / 2014-03-24

* 1 bug fix:

  * 2.0/2.1: Fixed support for **kwsplat. (troessner)

=== 2.0.7 / 2013-12-13

* 4 minor enhancements:

  * Add != to list of binary operators. (camertron) *le sigh*
  * Clean out cruft from process_masgn that I can't reproduce anymore.
  * Extend process_args to deal with masgn (eg: a.b { |(c, d)| ... }).
  * Extend process_masgn to deal with both sexps and var lists.

* 1 bug fix:

  * Ensure proper parens on rescue subexpressions. (Bocete)

=== 2.0.6 / 2013-06-20

* 2 bug fixes:

  * Fixed bug with complex rescue but short enough to trigger 1-liner. (Confusion)
  * Fixed multiple expressions inside sclass

=== 2.0.5 / 2013-04-25

* 2 bug fixes:

  * Fixed attrasgn w/ multiple keys: a[x, y] = z. (derula)
  * Fixed error w/ attr_* detection when more than 1 ivar/iasgn exist in body.

=== 2.0.4 / 2013-03-28

* 1 bug fix:

  * Fixed attr_* generators in cases where the body isn't idiomatic. (robertfeldt)

=== 2.0.3 / 2013-02-07

* 2 minor enhancements:

  * 1.9: Added support for ! call to go back to (not ...).
  * 2nd and 3rd order testing now uses RubyPraser.for_current_ruby for maximal carnage.

* 1 bug fix:

  * On failure (eg ruby 2.0), fall back to compound RubyParser instance for 2nd & 3rd order testing

=== 2.0.2 / 2013-01-16

* 1 minor enhancement:

  * Updated to ruby_parser 3.1 and up

=== 2.0.1 / 2012-11-02

* 1 bug fix:

  * Fixed dependency on alpha ruby_parser. *sigh*

=== 2.0.0 / 2012-11-02

* 1 minor enhancement:

  * Only do phase 1 testing if $SIMPLE=1.

* 1 bug fix:

  * Fixed block args processing for RP 3.0 sexp changes

=== 2.0.0.b1 / 2012-07-27

* 4 major enhancements:

  * Made it work without arglist in call.
  * Made it work without scope/block in class/module/defn/defs.
  * Removed block from resbody
  * Removed block from when node

* 4 minor enhancements:

  * Added debug task to help isolate an error
  * Empty hash is now a proper {}
  * Refactored and added finish method.
  * Switched to new Ruby18Parser to avoid deprecation warnings

* 4 bug fixes:

  * Fixed call with empty hash arg. (neilconway)
  * OMG WTF... removed long decrepit ParseTree dependency
  * Removed isolate/rake require to reduce minimum bootstrap to hoe + rake + rake install_plugins (*2)
  * Skip 1.9 tests for now.

=== 1.3.1 / 2011-09-22

* 1 minor enhancement:

  * Added parenthesize to add parens in certain contexts.

* 10 bug fixes:

  * Add newline to 'do nothing' comment in a block... seems contrived. (andreacampi)
  * Binary operations not work properly with some complex statements. (smorss)
  * Fixed if statements with no body (smorss)
  * Fixed logic for call with hash args in various locations (smorss)
  * Fixed match3 on an assignment. (smorss)
  * Fixed multiple nested rescue/ensure exprs (larsch)
  * Fixed process_alias to parenthesize (smorss)
  * Fixed process_and to parenthenize only when it makes sense.
  * Fixed rescue with 2+ statements in resbody (smorss)
  * Regexps with options other than /o were not showing flags. (smorss)

=== 1.3.0 / 2011-09-01

* 1 minor enhancement:

  * output comments for class and method definitions. (pythonic)

=== 1.2.5 / 2010-09-01

* 4 minor enhancements:

  * Added braces to hash args surrounded if in a binary method call.
  * Added rewrite_resbody to double check structure and freak if necessary.
  * Added stress task
  * rewrite_rescue now detects rescue with multiple arguments.

* 2 bug fixes:

  * Fixed dstr/dregex/d* roundtripping problem
  * Fixed up call arg processing to be more correct and to work with the new sexp form

=== 1.2.4 / 2009-08-14

* 2 bug fixes:

  * Fixed all doco to use ruby_praser
  * Fixed bin/r2r_show to use ruby_parser. oops

=== 1.2.3 / 2009-06-23

* 4 minor enhancements:

  * Overhauled 4-generation tests to use RubyParser. Much cleaner
  * Removed last of ParseTree. Fully switched to RubyParser.
  * Switched to minitest
  * Updated Rakefile to new hoe capabilities

=== 1.2.2 / 2009-01-20

* 3 minor enhancements:

  * Added -s to display sexp before printing r2r
  * Added a bunch of backslash and masgn tests.
  * Refactored tests.

* 4 bug fixes:

  * Fixed iters to deal with empty bodies.
  * Fixed process_call for a number of cases incl [], []=, and args processing.
  * Fixed process_hash to always generate braces if in arglist.
  * Switched process_alias to producing alias again, needed for globals.

=== 1.2.1 / 2008-11-04

* 1 bug fix:

  * Don't freak out and die if passed a c function defn. stupid rails.

=== 1.2.0 / 2008-10-22

* 2 minor enhancements:

  * Removed all PT dependent code to PT project (see parse_tree_extensions.rb).
  * Revamped. Got working with new unified ruby output. Much much cleaner.

=== 1.1.9 / 2008-06-09

* 5 minor enhancements:

  * Added more defensive programming in the tests to make it work with 1.9 and rubinius better.
  * Converted r2r_show to more plain parse style, no more discover_new_classes.
  * Made Proc#to_sexp and #to_ruby more resiliant.
  * Started to work on fallback to ruby_parser code. Should prolly do flog first.
  * Updated rakefile and readme format for hoe. Much cleaner!

* 6 bug fixes:

  * Added 1.9 fixes.
  * Added code to tests to isolate rubyinline builds.
  * Fixed miniunit-deprecated assertions
  * Fixes for const2/3, esp in class names
  * Renamed ProcStoreTmp#name to #new_name. dur.
  * Skip proc tests in 1.9 since they require ParseTree.

=== 1.1.8 / 2007-08-21

* 6 minor enhancements:

  * Added super awesome .autotest file. YAY!
  * Removed nil.method_missing... too many ppl bitching about it.
  * Renamed RubyToRuby (the class name) to Ruby2Ruby.
  * Restructured self-translation tests so they were friendlier when dying.
  * Strings are now always one line long only.
  * Fully in sync with ParseTree and ruby_parser.

* 2 bug fixes:

  * Fixed a number of issues/bugs discovered via ruby_parser.
  * Cleaned out some dead code and hacks we don't need anymore.

=== 1.1.7 / 2007-08-21

* 2 major enhancements:

  * Switched to ParseTree's UnifiedRuby... much much cleaner now!
  * Made test_ruby2ruby MUCH more rigorous with circular testing.

* 5 minor enhancements:

  * Add r2r_show command like parse_tree_show.
  * Add parens for :block nodes as appropriate. May be overzealous.
  * Make SexpAny work with #==.
  * Removed calls to processor_stack / caller in favor of self.context.
  * Some style differences, eschew rescue.

* 6 bug fixes:

  * Fix R2R bug with masgn/argscat.
  * Fixed a bug with new resbody unification.
  * Fixes for changes to pt_testcase.
  * Fixes the rest of the tests under strict sexp checking.
  * Fixed some circular bugs, mostly by hacking them out, wrt operator precidence.
  * Fixed trinary operator.

=== 1.1.6 / 2007-06-05

* 2 minor enhancements:

  * Extended tests for dstr/dsym/drgx to test against embedded slashes and quotes.
  * Updated for dasgn_curr changes to PT.

* 2 bug fixes:

  * Fixed a bug with begin/rescue/ensure.
  * Fixed argscat and blockpass bug. blah(42, *args, &block) handled.

=== 1.1.5 / 2007-02-13

* 3 minor enhancements:

  * Can now heckle ActiveRecord::Base in full.
  * Cleaned up 1-liner generating code.
  * Made clean/simple rescues 1-liners.

* 7 bug fixes:

  * Finally got the rest of block_pass working.
  * Fixed block_pass on procs in iters. UGH!
  * Fixed attrasgn in masgn.
  * Fixed splat in masgn.
  * Fixed unary/prefix methods.
  * Fixed attrasgn for []= where there were multiple args inside [].
  * Fixed a couple resbody bugs.

=== 1.1.4 / 2007-01-15

* 4 minor enhancements:

  * Added some extra rewriting code and tests for various bmethods. Ugh.
  * Added support for splatted block args.
  * Refactored class/module and dsym/dstr.
  * Short if/unless statements are now post-conditional expressions.

* 4 bug fixes:

  * Finally fixed eric's nebulous proc code-in-goalposts bug.
  * Fixed dasgn_curr so block's dasgn vars decl goes away (bug 7420).
  * Fixed dmethod. I think the tests were bogus before.
  * Fixed improper end in method rescues (bug 7396).

=== 1.1.3 / 2006-12-20

* 1 minor enhancement

  * Unit tests do self-translation and retesting for 3 generations! Solid. BAM!

* 1 bug fixes

  * iasgn inside masgn was totally borked in ruby2ruby.

=== 1.1.2 / 2006-12-19

* 2 minor enhancements

  * Improved []= and [] to be more idiomatic.
  * Support for nested whens (from when case has no expression).

* 3 bug fixes

  * Fixed case output when there is no case expression.
  * NEARLY have RubyToRuby self-cloning and passing tests again.
  * Minor cleanup

=== 1.1.1 / 2006-11-13

* 3 bug fixes

  * Fixed procs
  * Cleaned return when no return values.
  * Rewrote process_if. No more elsif but no more bugs. :)

=== 1.1.0 / 2006-10-11

* 2 major enhancements

  * Released separately from ZenHacks.
  * Major overhaul/audit from the new ParseTree test infrastructure. Very complete now.
