History file for ack 3. https://beyondgrep.com/ v3.0.0 Mon May 27 21:46:34 CDT 2019 ======================================== First official release of ack verison 3. See "Release notes for ack 3.0.0" at the bottom of this document for details of what has changed between ack 2.x and ack 3. [FIXES] Fixed a failing test if Pod::Perldoc::ToTextOverstrike was being used. (GH#202) 2.999_08 Sun May 19 20:33:13 CDT 2019 ===================================== [ENHANCEMENTS] Consolidated the manual and FAQ into one document, accessible with --man. Cookbook.pm has been moved to dev for future use. Added SVG filetype. [FIXES] Invalid options used to cause an error message triplicate. Fixes GH #192. 2.999_07 Sun Mar 31 21:54:55 CDT 2019 ===================================== [ENHANCEMENTS] Added --help-colors and --help-rgb-colors options to display colors available for color options. Many more mutex options have been added to help users know when they've made a mistake. For example, it doesn't make sense to have -C to show context when using -f to get a file list. Overhauled the handling of mutually exclusive options. We now properly handle mutex options even if they are abbreviated. The actual argument used is now shown. Fixes GH #57. 2.999_06 Thu Jan 10 20:37:23 CST 2019 ===================================== [ENHANCEMENTS] The --tt option for Template Toolkit is now --ttml. The short version still works. The standalone version of ack no longer supports the --faq or --cookbook options, which never worked right for it anyway. Instead, --man includes the FAQ and Cookbook. The --man option no longer uses the `perldoc` program for rendering the documentation. This means you'll have to pipe it into your own pager if you want scrolling, but it makes it much more portable. [FIXES] ack would stop finding files if there was a file named "0" in the current directory. Thanks, Rob Hoelz. (GH #162) [REMOVED FUNCTIONALITY] The --lines option has been removed. (GH #167) The -u short alias for --underline has been removed. (GH #173) 2.999_05 Sun Oct 21 21:37:39 CDT 2018 ===================================== [ENHANCEMENTS] Add -p as a shorter version of --proximate. 2.999_04 Thu Sep 6 17:45:07 CDT 2018 ===================================== [ENHANCEMENTS] Added -P as a negation of --proximate. It is the same as --proximate=0. If you have --proximate in an .ackrc, -P can be used to cancel it. Added --ts for Typescript. 2.999_03 Fri Jan 19 11:02:46 CST 2018 ===================================== [ENHANCEMENTS] The check for whether we need to scan the entire file line-by-line now reads 10M of file instead of just 100K. Removed support for the ACK_OPTIONS environment variable. Use an ackrc file instead. If you have ACK_OPTIONS set, ack will give a warning. Lots of internal speedups. 2.999_02 Mon Jan 8 23:03:42 CST 2018 ===================================== [ENHANCEMENTS] Added an optimization to make ack only do a line-by-line search of a file if there's a match somewhere in the file. This gives ack a 20-30% in timings of common cases. 2.999_01 Mon Jan 1 22:11:17 CST 2018 ===================================== [ENHANCEMENTS] Added --pod as a filetype, recognizing .pod as its extension. This is Perl's POD (Plain Old Documentation) format. Added --markdown as a filetype, recognizing .md and .markdown as extensions. --pager is no longer allowed in a project .ackrc file. --match and --output are not allowed in any .ackrc file. ack 3's new features are listed below for now. [FIXES] --lines had some mutex options that were not getting checked. Now, --lines is mutex with --passthru, --match and all context options. ============================= # Release notes for ack 3.0.0 ============================= # New features ack 3 is a greplike tool optimized for searching large code trees. Improvements over ack 2 include: * Improved `-w` option. * `-w` option will warn if your pattern does not lend itself to word matching. * `-i`, `-I` and `--smart-case` * `--proximate=N` option * Added `--pod` and `--markdown`. * Added `GNUmakefile` to the list of makefile specs. * Added `-S` as a synonym for `--smart-case`. # Bug fixes * Column numbers were not getting colorized in the output. Added `--color-colno` option and `ACK_COLOR_COLNO` environment variable. * A pattern that wanted whitespace at the end could match the linefeed at the end of a line. This is no longer possible. # Incompatibilities with ack 2 ## ack 3 requires Perl 5.10.1 ack 2 only needed Perl 5.8.8. This shouldn't be a problem since 5.10.1 has been out since 2009. ## ack 3 no longer highlights capture groups. ack 2 would highlight your capture groups. For example, ack '(set|get)_foo_(name|id)' would highlight the `set` or `get`, and the `name` or `id`, but not the full `set_user_id` that was matched. This feature was too confusing and has been removed. Now, the entire matching string is highlighted. ## ack 3's --output allows fewer special variables In ack 2, you could put any kind of Perl code in the `--output` option and it would get `eval`uated at run time, which would let you do tricky stuff like this gem from Mark Fowler (http://www.perladvent.org/2014/2014-12-21.html): ack --output='$&: @{[ eval "use LWP::Simple; 1" && length LWP::Simple::get($&) ]} bytes' \ 'https?://\S+' list.txt http://google.com/: 19529 bytes http://metacpan.org/: 7560 bytes http://www.perladvent.org/: 5562 bytes This has been a security problem in the past, and so in ack 3 we no longer `eval` the contents of `--output`. You're now restricted to the following variables: `$1` thru `$9`, `$_`, `$.`, `$&`, ``$` ``, `$'` and `$+`. You can also embed `\t`, `\n` and `\r` , and `$f` as stand-in for `$filename` in `ack2 --output` .