The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 2.999_07 - 2019-03-31

  • 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.

Changes for version 2.999_06 - 2019-01-10

  • 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)

Changes for version 2.999_05 - 2018-10-21

  • ENHANCEMENTS
    • Add -p as a shorter version of --proximate.

Changes for version 2.999_04 - 2018-09-06

  • 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.

Changes for version 2.999_03 - 2018-01-19

  • 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.

Changes for version 2.999_02 - 2018-01-08

  • 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.

Changes for version 2.999_01 - 2018-01-01

  • 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.000
    • 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` .

Provides

in lib/App/Ack/ConfigLoader.pm
in lib/App/Ack/Docs/Cookbook.pm
in lib/App/Ack/Docs/FAQ.pm