]> git.donarmstrong.com Git - perltidy.git/blobdiff - docs/ChangeLog.html
Use canonical URL in Vcs-Browser.
[perltidy.git] / docs / ChangeLog.html
index 6457896bcf5a214c2129011a3e6cb5ae139c6e7a..90acabb91760022156edbdd57c14fa8b6f44d017 100644 (file)
@@ -1,5 +1,696 @@
 <h1>Perltidy Change Log</h1>
 
+<h2>2022 06 13</h2>
+
+<pre><code>- No significant bugs have been found since the last release but users
+  of programs which call the Perl::Tidy module should note the first
+  item below, which changes a default setting.  The main change to
+  existing formatting is the second item below, which adds vertical
+  alignment to 'use' statements.
+
+- The flag --encode-output-strings, or -eos, is now set 'on' by default.
+  This has no effect on the use of the 'perltidy' binary script, but could
+  change the behavior of some programs which use the Perl::Tidy module on
+  files encoded in UTF-8.  If any problems are noticed, an emergency fix
+  can be made by reverting to the old default by setting -neos.  For
+  an explanation of why this change needs to be made see:
+
+  https://github.com/perltidy/perltidy/issues/92
+
+  https://github.com/perltidy/perltidy/blob/master/docs/eos_flag.md
+
+- Added vertical alignment for qw quotes and empty parens in 'use'
+  statements (see issue #git 93).  This new alignment is 'on' by default
+  and will change formatting as shown below. If this is not wanted it can
+  be turned off with the parameter -vxl='q' (--valign-exclude-list='q').
+
+    # old default, or -vxl='q'
+    use Getopt::Long qw(GetOptions);
+    use Fcntl qw(O_RDONLY O_WRONLY O_EXCL O_CREAT);
+    use Symbol qw(gensym);
+    use Exporter ();
+
+    # new default
+    use Getopt::Long qw(GetOptions);
+    use Fcntl        qw(O_RDONLY O_WRONLY O_EXCL O_CREAT);
+    use Symbol       qw(gensym);
+    use Exporter     ();
+
+- The parameter -kbb (--keep-break-before) now ignores a request to break
+  before an opening token, such as '('.  Likewise, -kba (--keep-break-after)
+  now ignores a request to break after a closing token, such as ')'. This
+  change was made to avoid a rare instability discovered in random testing.
+
+- Previously, if a -dsc command was used to delete all side comments,
+  then any special side comments for controlling non-indenting braces got
+  deleted too. Now, these control side comments are retained when -dsc is
+  set unless a -nnib (--nonon-indenting-braces) flag is also set to
+  deactivate them.
+
+- This version runs about 10 percent faster on large files than the previous
+  release due to optimizations made with the help of Devel::NYTProf.  Much
+  of the gain came from faster processing of blank tokens and comments.
+
+- This version of perltidy was stress-tested for many cpu hours with
+  random input parameters. No failures to converge, internal fault checks,
+  undefined variable references or other irregularities were seen.
+</code></pre>
+
+<h2>2022 02 17</h2>
+
+<pre><code>- A new flag, --encode-output-strings, or -eos, has been added to resolve
+  issue git #83. This issue involves the interface between Perl::Tidy and
+  calling programs, and Code::TidyAll (tidyall) in particular.  The problem
+  is that perltidy by default returns decoded character strings, but
+  tidyall expects encoded strings.  This flag provides a fix for that.
+
+  So, tidyall users who process encoded (utf8) files should update to this
+  version of Perl::Tidy and use -eos for tidyall.  For further info see:
+
+  https://github.com/houseabsolute/perl-code-tidyall/issues/84, and
+  https://github.com/perltidy/perltidy/issues/83
+
+  If there are other applications having utf8 problems at the interface
+  with Perl::Tidy, this flag probably may need to be set.
+
+- The default value of the new flag, --encode-output-strings, -eos, is currently
+  -neos BUT THIS MAY CHANGE in a future release because the current
+  default is inconvenient.  So authors of programs which receive character
+  strings back from Perl::Tidy should set this flag, if necessary,
+  to avoid any problems when the default changes.  For more information see the
+  above links and the Perl::Tidy man pages for example coding.
+
+- The possible values of the string 's' for the flag '--character-encoding=s'
+  have been limited to 'utf8' (or UTF-8), 'none', or 'guess'.  Previously an
+  arbitrary encoding could also be specified, but as a result of discussions
+  regarding git #83 it became clear that this could cause trouble
+  since the output encoding was still restricted to UTF-8. Users
+  who need to work in other encodings can write a short program calling
+  Perl::Tidy with pre- and post-processing to handle encoding/decoding.
+
+- A new flag --break-after-labels=i, or -bal=i, was added for git #86.  This
+  controls line breaks after labels, to provide a uniform style, as follows:
+
+        -bal=0 follows the input line breaks [DEFAULT]
+        -bal=1 always break after a label
+        -bal=2 never break after a label
+
+  For example:
+
+      # perltidy -bal=1
+      INIT:
+        {
+            $xx = 1.234;
+        }
+
+      # perltidy -bal=2
+      INIT: {
+            $xx = 1.234;
+        }
+
+- Fix issue git #82, an error handling something like ${bareword} in a
+  possible indirect object location. Perl allows this, now perltidy does too.
+
+- The flags -kbb=s or --keep-old-breakpoints-before=s, and its counterpart
+  -kba=s or --keep-old-breakpoints-after=s have expanded functionality
+  for the container tokens: { [ ( } ] ).  The updated man pages have
+  details.
+
+- Two new flags have been added to provide finer vertical alignment control,
+  --valign-exclusion-list=s (-vxl=s) and  --valign-inclusion-list=s (-vil=s).
+  This has been requested several times, most recently in git #79, and it
+  finally got done.  For example, -vil='=&gt;' means just align on '=&gt;'.
+
+- A new flag -gal=s, --grep-alias-list=s, has been added as suggested in
+  git #77.  This allows code blocks passed to list operator functions to
+  be formatted in the same way as a code block passed to grep, map, or sort.
+  By default, the following list operators in List::Util are included:
+
+    all any first none notall reduce reductions
+
+  They can be changed with the flag -gaxl=s, -grep-alias-exclusion-list=s
+
+- A new flag -xlp has been added which can be set to avoid most of the
+  limitations of the -lp flag regarding side comments, blank lines, and
+  code blocks.  See the man pages for more info. This fixes git #64 and git #74.
+  The older -lp flag still works.
+
+- A new flag -lpil=s, --line-up-parentheses-inclusion-list=s, has been added
+  as an alternative to -lpxl=s, --line-up-parentheses-exclusion-list=s.
+  It supplies equivalent information but is much easier to describe and use.
+  It works for both the older -lp version and the newer -xlp.
+
+- The coding for the older -lp flag has been updated to avoid some problems
+  and limitations.  The new coding allows the -lp indentation style to
+  mix smoothly with the standard indentation in a single file.  Some problems
+  where -lp and -xci flags were not working well together have been fixed, such
+  as happened in issue rt140025.  As a result of these updates some minor
+  changes in existing code using the -lp style may occur.
+
+- This version of perltidy was stress-tested for many cpu hours with
+  random input parameters. No failures to converge, internal fault checks,
+  undefined variable references or other irregularities were seen.
+
+- Numerous minor fixes have been made, mostly very rare formatting
+  instabilities found in random testing.
+</code></pre>
+
+<h2>2021 10 29</h2>
+
+<pre><code>- No significant bugs have been found since the last release, but several
+  minor issues have been fixed.  Vertical alignment has been improved for
+  lists of call args which are not contained within parens (next item).
+
+- Vertical alignment of function calls without parens has been improved with
+  the goal of making vertical alignment essentially the same with or
+  without parens around the call args.  Some examples:
+
+    # OLD
+    mkTextConfig $c, $x, $y, -anchor =&gt; 'se', $color;
+    mkTextConfig $c, $x + 30, $y, -anchor =&gt; 's',  $color;
+    mkTextConfig $c, $x + 60, $y, -anchor =&gt; 'sw', $color;
+    mkTextConfig $c, $x, $y + 30, -anchor =&gt; 'e', $color;
+
+    # NEW
+    mkTextConfig $c, $x,      $y,      -anchor =&gt; 'se', $color;
+    mkTextConfig $c, $x + 30, $y,      -anchor =&gt; 's',  $color;
+    mkTextConfig $c, $x + 60, $y,      -anchor =&gt; 'sw', $color;
+    mkTextConfig $c, $x,      $y + 30, -anchor =&gt; 'e',  $color;
+
+    # OLD
+    is id_2obj($id), undef, "unregistered object not retrieved";
+    is scalar keys %$ob_reg, 0, "object registry empty";
+    is register($obj), $obj, "object returned by register";
+    is scalar keys %$ob_reg, 1, "object registry nonempty";
+    is id_2obj($id), $obj, "registered object retrieved";
+
+    # NEW
+    is id_2obj($id),         undef, "unregistered object not retrieved";
+    is scalar keys %$ob_reg, 0,     "object registry empty";
+    is register($obj),       $obj,  "object returned by register";
+    is scalar keys %$ob_reg, 1,     "object registry nonempty";
+    is id_2obj($id),         $obj,  "registered object retrieved";
+
+  This will cause some changes in alignment, hopefully for the better,
+  particularly in test code which often uses numerous parenless function
+  calls with functions like 'ok', 'is', 'is_deeply', ....
+
+- Two new parameters were added to control the block types to which the
+  -bl (--opening-brace-on-new-line) flag applies.  The new parameters are
+  -block-left-list=s, or -bll=s, and --block-left-exclusion-list=s,
+  or -blxl=s.  Previously the -bl flag was 'hardwired' to apply to
+  nearly all blocks. The default values of the new parameters
+  retain the the old default behavior but allow it to be changed.
+
+- The default behavior of the -bli (-brace-left-and-indent) flag has changed
+  slightly.  Previously, if you set -bli, then the -bl flag would also
+  automatically be set.  Consequently, block types which were not included
+  in the default list for -bli would get -bl formatting.  This is no longer done,
+  and these two styles are now controlled independently.  The manual describes
+  the controls.  If you want to recover the exact previous default behavior of
+  the -bli then add the -bl flag.
+
+- A partial fix was made for issue for git #74. The -lp formatting style was
+  being lost when a one-line anonymous sub was followed by a closing brace.
+
+- Fixed issue git #73, in which the -nfpva flag was not working correctly.
+  Some unwanted vertical alignments of spaced function perens
+  were being made.
+
+- Updated the man pages to clarify the flags -valign and -novalign
+  for turning vertical alignment on and off (issue git #72).
+  Added parameters -vc -vsc -vbc for separately turning off vertical
+  alignment of code, side comments and block comments.
+
+- Fixed issue git #68, where a blank line following a closing code-skipping
+  comment, '#&gt;&gt;V', could be lost.
+
+- This version runs 10 to 15 percent faster on large files than the
+  previous release due to optimizations made with the help of NYTProf.
+
+- This version of perltidy was stress-tested for many cpu hours with
+  random input parameters. No instabilities,  internal fault checks,
+  undefined variable references or other irregularities were seen.
+
+- Numerous minor fixes have been made, mostly very rare formatting instabilities
+  found in random testing. An effort has been made to minimize changes to
+  existing formatting that these fixes produce, but occasional changes
+  may occur. Many of these updates are listed at:
+
+       https://github.com/perltidy/perltidy/blob/master/local-docs/BugLog.pod
+</code></pre>
+
+<h2>2021 07 17</h2>
+
+<pre><code>- This release is being made mainly because of the next item, in which an
+  error message about an uninitialized value error message could be produced
+  in certain cases when format-skipping is used.  The error message was
+  annoying but harmless to formatting.
+
+- Fixed an undefined variable message, see git #67. When a format skipping
+  comment '#&lt;&lt;' is placed before the first line of code in a script, a
+  message 'Use of uninitialized value $Ktoken_vars in numeric ...' can
+  occur.
+
+- A warning will no longer be given if a script has an opening code-skipping
+  comment '#&lt;&lt;V' which is not terminated with a closing comment '#&gt;&gt;V'. This
+  makes code-skipping and format-skipping behave in a similar way: an
+  opening comment without a corresponding closing comment will cause
+  the rest of a file to be skipped.  If there is a question about which lines
+  are skipped, a .LOG file can be produced with the -g flag and it will have
+  this information.
+
+- Removed the limit on -ci=n when -xci is set, reference: rt #136415.
+  This update removes a limit in the previous two versions in which the
+  value of -ci=n was limited to the value of -i=n when -xci was set.
+  This limit had been placed to avoid some formatting instabilities,
+  but recent coding improvements allow the limit to be removed.
+
+- The -wn and -bbxx=n flags were not working together correctly. This has
+  been fixed.
+
+- This version may produce occasional differences in formatting compared to
+  previous versions, mainly for lines which are near the specified line
+  length limit.  This is due to ongoing efforts to eliminate edge cases of
+  formatting instability.
+
+- Numerous minor fixes have been made. A complete list is at:
+
+       https://github.com/perltidy/perltidy/blob/master/local-docs/BugLog.pod
+</code></pre>
+
+<h2>2021 06 25</h2>
+
+<pre><code>- This release adds several new requested parameters.  No significant bugs have
+  been found since the last release, but a number of minor problems have been
+  corrected.
+
+- Added a new option '--code-skipping', requested in git #65, in which code
+  between comment lines '#&lt;&lt;V' and '#&gt;&gt;V' is passed verbatim to the output
+  stream without error checking.  It is simmilar to --format-skipping
+  but there is no error checking of the skipped code. This can be useful for
+  skipping past code which employs an extended syntax.
+
+- Added a new option for closing paren placement, -vtc=3, requested in rt #136417.
+
+- Added flag -atnl, --add-terminal-newline, to help issue git #58.
+  This flag tells perltidy to terminate the last line of the output stream
+  with a newline character, regardless of whether or not the input stream
+  was terminated with a newline character.  This is the default.
+  If this flag is negated, with -natnl, then perltidy will add a terminal
+  newline character to the the output stream only if the input
+  stream is terminated with a newline.
+
+- Some nested structures formatted with the -lp indentation option may have
+  some changes in indentation.  This is due to updates which were made to
+  prevent formatting instability when line lengths are limited by the maximum line
+  length. Most scripts will not be affected. If this causes unwanted formatting
+  changes, try increasing the --maximum-line-length by a few characters.
+
+- Numerous minor fixes have been made. A complete list is at:
+
+       https://github.com/perltidy/perltidy/blob/master/local-docs/BugLog.pod
+</code></pre>
+
+<h2>2021 04 02</h2>
+
+<pre><code>- This release fixes several non-critical bugs which have been found since the last
+release.  An effort has been made to keep existing formatting unchanged.
+
+- Fixed issue git #57 regarding uninitialized warning flag.
+
+- Added experimental flag -lpxl=s requested in issue git #56 to provide some
+control over which containers get -lp indentation.
+
+- Fixed issue git #55 regarding lack of coordination of the --break-before-xxx
+flags and the --line-up-parens flag.
+
+- Fixed issue git #54 regarding irregular application of the --break-before-paren
+and similar --break-before-xxx flags, in which lists without commas were not
+being formatted according to these flags.
+
+- Fixed issue git #53. A flag was added to turn off alignment of spaced function
+parens.  If the --space-function-paren, -sfp flag is set, a side-effect is that the
+spaced function parens may get vertically aligned.  This can be undesirable,
+so a new parameter '--function-paren-vertical-alignment', or '-fpva', has been
+added to turn this vertical alignment off. The default is '-fpva', so that
+existing formatting is not changed.  Use '-nfpva' to turn off unwanted
+vertical alignment.  To illustrate the possibilities:
+
+    # perltidy [default]
+    myfun( $aaa, $b, $cc );
+    mylongfun( $a, $b, $c );
+
+    # perltidy -sfp
+    myfun     ( $aaa, $b, $cc );
+    mylongfun ( $a, $b, $c );
+
+    # perltidy -sfp -nfpva
+    myfun ( $aaa, $b, $cc );
+    mylongfun ( $a, $b, $c );
+
+- Fixed issue git #51, a closing qw bare paren was not being outdented when
+the -nodelete-old-newlines flag was set.
+
+- Fixed numerous edge cases involving unusual parameter combinations which
+  could cause alternating output states.  Most scripts will not be
+  changed by these fixes.
+
+- A more complete list of updates is at
+
+       https://github.com/perltidy/perltidy/blob/master/local-docs/BugLog.pod
+</code></pre>
+
+<h2>2021 01 11</h2>
+
+<pre><code>- Fixed issue git #49, -se breaks warnings exit status behavior.
+The exit status flag was not always being set when the -se flag was set.
+
+- Some improvements have been made in the method for aligning side comments.
+One of the problems that was fixed is that there was a tendency for side comment
+placement to drift to the right in long scripts.  Programs with side comments
+may have a few changes.
+
+- Some improvements have been made in formatting qw quoted lists.  This
+fixes issue git #51, in which closing qw pattern delimiters not always
+following the settings specified by the --closing-token-indentation=n settings.
+Now qw closing delimiters ')', '}' and ']' follow these flags, and the
+delimiter '&gt;' follows the flag for ')'.  Other qw pattern delimiters remain
+indented as the are now.  This change will cause some small formatting changes
+in some existing programs.
+
+- Another change involving qw lists is that they get full indentation,
+rather than just continuation indentation, if
+
+     (1) the closing delimiter is one of } ) ] &gt; and is on a separate line,
+     (2) the opening delimiter  (i.e. 'qw{' ) is also on a separate line, and
+     (3) the -xci flag (--extended-continuation-indentation) is set.
+
+This improves formatting when qw lists are contained in other lists. For example,
+
+        # OLD: perltidy
+        foreach $color (
+            qw(
+            AntiqueWhite3 Bisque1 Bisque2 Bisque3 Bisque4
+            SlateBlue3 RoyalBlue1 SteelBlue2 DeepSkyBlue3
+            ),
+            qw(
+            LightBlue1 DarkSlateGray1 Aquamarine2 DarkSeaGreen2
+            SeaGreen1 Yellow1 IndianRed1 IndianRed2 Tan1 Tan4
+            )
+          )
+
+        # NEW, perltidy -xci
+        foreach $color (
+            qw(
+                AntiqueWhite3 Bisque1 Bisque2 Bisque3 Bisque4
+                SlateBlue3 RoyalBlue1 SteelBlue2 DeepSkyBlue3
+            ),
+            qw(
+                LightBlue1 DarkSlateGray1 Aquamarine2 DarkSeaGreen2
+                SeaGreen1 Yellow1 IndianRed1 IndianRed2 Tan1 Tan4
+            )
+          )
+
+- Some minor improvements have been made to the rules for formatting
+some edge vertical alignment cases, usually involving two dissimilar lines.
+
+- A more complete list of updates is at
+
+       https://github.com/perltidy/perltidy/blob/master/local-docs/BugLog.pod
+</code></pre>
+
+<h2>2020 12 07</h2>
+
+<pre><code>- Fixed issue git #47, incorrect welding of anonymous subs.
+  An incorrect weld format was being made when the --weld-nested-containers option
+  (-wn) was used in to format a function which returns a list of anonymous subs.
+  For example, the following snippet was incorrectly being welded.
+
+$promises[$i]-&gt;then(
+    sub { $all-&gt;resolve(@_); () },
+    sub {
+        $results-&gt;[$i] = [@_];
+        $all-&gt;reject(@$results) if --$remaining &lt;= 0;
+        return ();
+    }
+);
+
+This was due to an error introduced in v20201201 related to parsing sub
+signatures.  Reformatting with the current version will fix the problem.
+</code></pre>
+
+<h2>2020 12 01</h2>
+
+<pre><code>- This release is being made primarily to make available a several new formatting
+  parameters, in particular -xci, -kbb=s, -kba=s, and -wnxl=s. No significant
+  bugs have been found since the previous release, but numerous minor issues have
+  been found and fixed as listed below.
+
+- This version is about 20% faster than the previous version due to optimizations
+  made with the help of Devel::NYTProf.
+
+- Added flag -wnxl=s, --weld-nested-exclusion-list=s, to provide control which containers
+  are welded with the --weld-nested-containers parameter.  This is related to issue git #45.
+
+- Merged pull request git #46 which fixes the docs regarding the -fse flag.
+
+- Fixed issue git #45, -vtc=n flag was ignored when -wn was set.
+
+- implement request RT #133649, delete-old-newlines selectively. Two parameters,
+
+  -kbb=s or --keep-old-breakpoints-before=s, and
+  -kba=s or --keep-old-breakpoints-after=s
+
+  were added to request that old breakpoints be kept before or after
+  selected token types.  For example, -kbb='=&gt;' means that newlines before
+  fat commas should be kept.
+
+- Fix git #44, fix exit status for assert-tidy/untidy.  The exit status was
+  always 0 for --assert-tidy if the user had turned off all error messages with
+  the -quiet flag.  This has been fixed.
+
+- Add flag -maxfs=n, --maximum-file-size-mb=n.  This parameter is provided to
+  avoid causing system problems by accidentally attempting to format an 
+  extremely large data file. The default is n=10.  The command to increase 
+  the limit to 20 MB for example would be  -mfs=20.  This only applies to
+  files specified by filename on the command line.
+
+- Skip formatting if there are too many indentation level errors.  This is 
+  controlled with -maxle=n, --maximum-level-errors=n.  This means that if 
+  the ending indentation differs from the starting indentation by more than
+  n levels, the file will be output verbatim. The default is n=1. 
+  To skip this check, set n=-1 or set n to a large number.
+
+- A related new flag, --maximum-unexpected-errors=n, or -maxue=n, is available
+  but is off by default.
+
+- Add flag -xci, --extended-continuation-indentation, regarding issue git #28
+  This flag causes continuation indentation to "extend" deeper into structures.
+  Since this is a fairly new flag, the default is -nxci to avoid disturbing 
+  existing formatting.  BUT you will probably see some improved formatting
+  in complex data structures by setting this flag if you currently use -ci=n 
+  and -i=n with the same value of 'n' (as is the case if you use -pbp, 
+  --perl-best-practices, where n=4).
+
+- Fix issue git #42, clarify how --break-at-old-logical-breakpoints works.
+  The man page was updated to note that it does not cause all logical breakpoints
+  to be replicated in the output file.
+
+- Fix issue git #41, typo in manual regarding -fsb.
+
+- Fix issue git #40: when using the -bli option, a closing brace followed by 
+  a semicolon was not being indented.  This applies to braces which require 
+  semicolons, such as a 'do' block.
+
+- Added 'state' as a keyword.
+
+- A better test for convergence has been added. When iterations are requested,
+  the new test will stop after the first pass if no changes in line break
+  locations are made.  Previously, file checksums were used and required at least two 
+  passes to verify convergence unless no formatting changes were made.  With the new test, 
+  only a single pass is needed when formatting changes are limited to adjustments of 
+  indentation and whitespace on the lines of code.  Extensive testing has been made to
+  verify the correctness of the new convergence test.
+
+- Line breaks are now automatically placed after 'use overload' to 
+  improve formatting when there are numerous overloaded operators.  For
+  example
+
+    use overload
+      '+' =&gt; sub {
+      ...
+
+- A number of minor problems with parsing signatures and prototypes have
+  been corrected, particularly multi-line signatures. Some signatures 
+  had previously been parsed as if they were prototypes, which meant the 
+  normal spacing rules were not applied.  For example
+
+  OLD:
+    sub echo ($message= 'Hello World!' ) {
+        ...;
+    }
+
+  NEW:
+    sub echo ( $message = 'Hello World!' ) {
+        ...;
+    }
+
+- Numerous minor issues that the average user would not encounter were found
+  and fixed. They can be seen in the more complete list of updates at 
+
+       https://github.com/perltidy/perltidy/blob/master/local-docs/BugLog.pod
+</code></pre>
+
+<h2>2020 10 01</h2>
+
+<pre><code>- Robustness of perltidy has been significantly improved.  Updating is recommended. Continual 
+  automated testing runs began about 1 Sep 2020 and numerous issues have been found and fixed. 
+  Many involve references to uninitialized variables when perltidy is fed random text and random
+  control parameters. 
+
+- Added the token '-&gt;' to the list of alignment tokens, as suggested in git
+  #39, so that it can be vertically aligned if a space is placed before them with -wls='-&gt;'.
+
+- Added parameters -bbhb=n (--break-before-hash-brace=n), -bbsb=n (--break-before-square-bracket=n),
+  and -bbp=n (--break-before-paren=n) suggested in git #38.  These provide control over the
+  opening container token of a multiple-line list.  Related new parameters -bbhbi=n, -bbsbi=n, -bbpi=n
+  control indentation of these tokens.
+
+- Added keyword 'isa'.
+</code></pre>
+
+<h2>2020 09 07</h2>
+
+<pre><code>- Fixed bug git #37, an error when the combination -scbb -csc was used.
+  It occurs in perltidy versions 20200110, 20200619, and 20200822.  What happens is
+  that when two consecutive lines with isolated closing braces had new side
+  comments generated by the -csc parameter, a separating newline was missing.
+  The resulting script will not then run, but worse, if it is reformatted with
+  the same parameters then closing side comments could be overwritten and data
+  lost. 
+
+  This problem was found during automated random testing.  The parameter
+  -scbb is rarely used, which is probably why this has not been reported.  Please
+  upgrade your version.
+
+- Added parameter --non-indenting-braces, or -nib, which prevents
+  code from indenting one level if it follows an opening brace marked 
+  with a special side comment, '#&lt;&lt;&lt;'.  For example,
+
+                { #&lt;&lt;&lt;   a closure to contain lexical vars
+
+                my $var;  # this line does not indent
+
+                }
+
+                # this line cannot 'see' $var;
+
+  This is on by default.  If your code happens to have some
+  opening braces followed by '#&lt;&lt;&lt;', and you
+  don't want this, you can use -nnib to deactivate it. 
+
+- Side comment locations reset at a line ending in a level 0 open
+  block, such as when a new multi-line sub begins.  This is intended to 
+  help keep side comments from drifting to far to the right.
+</code></pre>
+
+<h2>2020 08 22</h2>
+
+<pre><code>- Fix RT #133166, encoding not set for -st.  Also reported as RT #133171
+  and git #35. 
+
+  This is a significant bug in version 20200616 which can corrupt data if
+  perltidy is run as a filter on encoded text.
+</code></pre>
+
+<p><strong>Please upgrade</strong></p>
+
+<pre><code>- Fix issue RT #133161, perltidy -html was not working on pod
+
+- Fix issue git #33, allow control of space after '-&gt;'
+
+- Vertical alignment has been improved. Numerous minor issues have
+  been fixed.
+
+- Formatting with the -lp option is improved. 
+
+- Fixed issue git #32, misparse of bare 'ref' in ternary
+
+- When --assert-tidy is used and triggers an error, the first difference
+  between input and output files is shown in the error output. This is
+  a partial response to issue git #30.
+</code></pre>
+
+<h2>2020 06 19</h2>
+
+<pre><code>- Added support for Switch::Plain syntax, issue git #31.
+
+- Fixed minor problem where trailing 'unless' clauses were not 
+  getting vertically aligned.
+
+- Added a parameter --logical-padding or -lop to allow logical padding
+  to be turned off.  Requested by git #29. This flag is on by default.
+  The man pages have examples.
+
+- Added a parameter -kpit=n to control spaces inside of parens following
+  certain keywords, requested in git#26. This flag is off by default.
+
+- Added fix for git#25, improve vertical alignment for long lists with
+  varying numbers of items per line.
+
+- calls to the module Perl::Tidy can now capture any output produced
+  by a debug flag or one of the 'tee' flags through the new 'debugfile' and
+  'teefile' call parameters.  These output streams are rarely used but
+  they are now treated the same as any 'logfile' stream.
+
+- add option --break-at-old-semicolon-breakpoints', -bos, requested 
+  in RT#131644.  This flag will keep lines beginning with a semicolon.
+
+- Added --use-unicode-gcstring to control use of Unicode::GCString for
+  evaluating character widths of encoded data.  The default is 
+  not to use this (--nouse-unicode-gcstring). If this flag is set,
+  perltidy will look for Unicode::GCString and, if found, will use it 
+  to evaluate character display widths.  This can improve displayed
+  vertical alignment for files with wide characters.  It is a nice
+  feature but it is off by default to avoid conflicting formatting
+  when there are multiple developers.  Perltidy installation does not 
+  require Unicode::GCString, so users wanting to use this feature need 
+  set this flag and also to install Unicode::GCString separately.
+
+- Added --character-encoding=guess or -guess to have perltidy guess
+  if a file (or other input stream) is encoded as -utf8 or some 
+  other single-byte encoding. This is useful when processing a mixture 
+  of file types, such as utf8 and latin-1.
+
+  Please Note: The default encoding has been set to be 'guess'
+  instead of 'none'. This seems like the best default, since 
+  it allows perltidy work properly with both
+  utf8 files and older latin-1 files.  The guess mode uses Encode::Guess,
+  which is included in standard perl distributions, and only tries to 
+  guess if a file is utf8 or not, never any other encoding.  If the guess is 
+  utf8, and if the file successfully decodes as utf8, then it the encoding 
+  is assumed to be utf8.  Otherwise, no encoding is assumed. 
+  If you do not want to use this new default guess mode, or have a 
+  problem with it, you can set --character-encoding=none (the previous 
+  default) or --character-encoding=utf8 (if you deal with utf8 files).
+
+- Specific encodings of input files other than utf8 may now be given, for
+  example --character-encoding=euc-jp.
+
+- Fix for git#22, Preserve function signature on a single line. An
+  unwanted line break was being introduced when a closing signature paren
+  followed a closing do brace.
+
+- Fix RT#132059, the -dac parameter was not working and caused an error exit
+
+- When -utf8 is used, any error output is encoded as utf8
+
+- Fix for git#19, adjust line break around an 'xor'
+
+- Fix for git#18, added warning for missing comma before unknown bare word.
+</code></pre>
+
 <h2>2020 01 10</h2>
 
 <pre><code>- This release adds a flag to control the feature RT#130394 (allow short nested blocks)