Skip to content

Releases: Genivia/ugrep

ugrep v7.8

29 Apr 14:41

Choose a tag to compare

What's new?

This update includes usability improvements and important updates to protect the user when ug is used to search untrusted file systems:

  • improve TUI custom-command option --view to wait for key press after viewing, by specifying + in --view=+COMMAND, such as --view=+file to display file type info in the TUI with CTRL-Y (overrides viewing the file contents) #543
  • update TUI to block ANSI OSC escape codes, such as ESC ] P n rr gg bb that may hang the terminal according to Wikipedia
  • update the ug+ and ugrep+ scripts to end options in filter commands with --, in case a filename starts with a - (dash)
  • improve config parsing to ignore some options that do not make sense to set in a (local) config file
  • local config files located in the working directory are only read when owned by the user running the ug or ugrep --config process (already implemented in update 7.7)

Thank you all for your help with the ugrep project ❤️ Stay safe 🙏

ugrep v7.7.0

21 Apr 17:43

Choose a tag to compare

What's new?

  • support TUI search on slow and incomplete standard input pipes e.g. from tail -f #540
  • update options -m (--max-count) and -K (--max-line) to stop reading input upon reaching the stopping criterium, then exit without draining the standard input pipe like GNU grep #538
  • improve binary file detection for huge mixed files #537
  • add new option ./build.sh --disable-avx512 #534
  • local config files located in the working directory are only read when owned by the user running the ugrep process
  • fix lzma 7zip api memory leak

ugrep v7.6

05 Mar 19:30

Choose a tag to compare

What's new?

  • new options --max-size and min-size to search files whose physical size is in the specified MIN and/or MAX range
  • fix zsh completion syntax error (#528)
  • update option --ignore-file to ignore files and directories specified in an .gitignore file as an absolute /glob to ignore those matching the glob under its sub-directories (#526)
  • fix emulation of GNU grep option -z (--null-data) to match newlines (zero bytes internally) with pattern \s (space), which requires non-standard regex behavior internally to include matching zero bytes with pattern \s (#525)
  • update --ignore-file=FILE to accept a FILE pathname to a non-local gitignore FILE that applies globally to ignore files and directories, similar to --exclude-from=FILE, but with the minor difference that gitignore rules match both files and directories with a single glob (#518 #519 #532)
  • fix third-party sourced zopen.c library (BSD open source) one-byte read beyond its allocated struct s_zstate state variable in getcode() (#511)
  • fix -m (--max-count) with context options -A or -C sometimes producing garbled after-context output that may cause a crash in the worst case (#510)
  • fix reverse sort by date --sort=rchanged and --sort=rcreated not recognized by the TUI at startup (#508)
  • update ugrep to search named pipe files specified as arguments on the command line instead of skipping them by default, such as process substitutions; also improve Linux special system files /proc and /sys skipping and/or reading and option -z file read error handling to avoid possible pipe fd leaks when thousands of /proc files are searched that produce (expected) read errors (#503)
  • support option --no-empty while using full grep-emulation mode, i.e. when ugrep is renamed to grep

Thank you for your feedback to help improve ugrep ❤️

ugrep v7.5

18 Jun 19:20

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

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

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

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

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

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

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