Skip to content

Releases: Genivia/ugrep

ugrep v7.5

18 Jun 19:20
Compare
Choose a tag to compare

ugrep: a user-friendly, faster, more capable grep replacement -- search for anything in everything... fast!

What's new?

  • smaller and faster executable with extended dual predict-match PM3+PM5 algorithms, see updated benchmarks compiled with Clang for speed and #485
  • symlink support for ugrep.exe and ug.exe for Windows #493
  • colorization improvement for ugrep.exe and ug.exe for old Windows 7 with ConEmu #491 #495

Thank you for your feedback to help improve ugrep ❤️

ugrep v7.4.3

15 May 19:29
Compare
Choose a tag to compare

What's new?

  • fix bug in option -x and regex ^$-anchors used in certain short patterns #489
  • mark likely/unlikely branches in hot paths for performance

About the upcoming release

ugrep v7.4.2

28 Apr 11:55
Compare
Choose a tag to compare

What's new?

Minor improvements:

  • speed up regex pattern search for some more extreme cases #485
  • clean up code base to remove shadowed locals
  • add safeguards for preventable pattern undermatch; practically impossible to happen with accurate match prediction, but should be guaranteed

ugrep v7.4.1

24 Apr 16:25
Compare
Choose a tag to compare

What's new?

  • fix #486 v7.4 regression issue in the AVX2 SIMD acceleration logic for certain short regex patterns

ugrep v7.4

22 Apr 18:57
Compare
Choose a tag to compare

What's new?

Very pleased to release v7.4 with the following usability enhancements suggested by users:

  • more responsive output when searching slow standard input pipes, such as tail -f log | ug pattern #478; this update required several changes to the search engine's acceleration code to support non-blocking standard input, to avoid being too "greedy" for input
  • new option argument -t seed7 (or --file-type=seed7) searches seed7 files #480
  • faster -g"path/file" (or --glob="path/file". --iglob="path/file") search of the specified directory path glob to search file glob by only recursing into the specified path names/globs; likewise --include-dir="path" is optimized for path globs; these options with paths (globs containing a /) also enable option -r when -d, -r or -R are not specified #481
  • clarify the usefulness of the default to not empty-match empty-matching patterns versus GNU grep that does (as with ugrep option -Y) #482
  • option -z (or --decompress) now also auto-detects bzip2, XZ, and Zstandard compressed files (i.e. no specific filename extension is required, as is the case already for zlib (gzip), compress (Z), zip, and tar/pax/cpio formats) #483
  • new option --from=FILE: read additional pathnames of files to search from FILE; this option is useful for example with find ... -print | ugrep --from=- ...' to search specific files found with the find criteria without using xargs #484
  • drain the input pipe until EOF when reading non-seekable standard input such as from a pipe, for compatibility with GNU grep, this change re-enables WITH_STDIN_DRAIN in the source code

Updated ugrep v7.4 benchmarks look as good as before

Thank you all for your suggestions and comments!

ugrep v7.3

03 Mar 17:56
Compare
Choose a tag to compare

What's new?

  • make options -i (--ignore-case) and -j (--smart-case) respect Unicode letter case conventions #467
  • usability improvements

ugrep v7.2.2

03 Feb 20:19
Compare
Choose a tag to compare

What's new?

  • as per request, a minor update to improve search speed when the specified regex pattern is not found in the input when the specified regex starts with a wildcard such as .*, which previously resulted in unnecessary regex match processing overhead

ugrep v7.2.1

27 Jan 15:53
Compare
Choose a tag to compare

What's new?

  • includes fix #463 for v7.2 regression bug in non-SIMD ugrep builds

Notes on unit and regression testing methodology and benchmarking:

  • to verify non-SIMD builds I ran 60,000 randomized test patterns each against 100MB text to search and compare to expected matches, this test fully covers the code of the scalar-optimized (non-SIMD) search algorithms (this test was not done for v7.2, which is my fault for thinking the latest change would not impact non-SIMD results, but it did)
  • to verify SIMD-optimized builds (SSE2/AVX2/AVX512BW and Neon/AArch64) I ran again 40,000 randomized test patterns each against 100MB text to search and compare to expected matches, this test fully covers the code of the SIMD-optimized search algorithms
  • in addition, the RE/flex high-performance regex project also includes many regex pattern test cases
  • this release does not affect the search speeds of ugrep v7 i.e. the posted benchmarks for v7 are unchanged

ugrep v7.2

23 Jan 21:14
Compare
Choose a tag to compare

What's new?

  • new options --no-files-with-matches and --no-count #452
  • update options -i and -j when used together: -i unconditional case-insensitive matching should override -j smart-case conditional case-insensitive matching #453
  • new adoc type added to option -t or --file-type #456
  • new full support for GNU/BSD grep option -z (--null-data), such that -z is reassigned from --decompress to --null-data when ugrep is specifically copied or symlinked with the target name grep, egrep, fgrep, zgrep, zegrep, or zfgrep executable file binaries to run as replacements of GNU/BSD grep #457
  • fix older MacOS build from source compile-time error QOS_CLASS_USER_INITIATED not declared #458
  • fix a bug in ugrep v7 when matching certain case-insensitive patterns at the very end of a file at EOF when an EOL before EOF is missing (this is not a problem in versions prior to v7) #461

ugrep v7.1.3

09 Jan 19:50
Compare
Choose a tag to compare

What's new?

  • fix a problem with option -i (--ignore-case) that in rare and specific circumstances may not match all of the specified alternate sub-patterns #451.