Skip to content

Releases: Genivia/ugrep

ugrep v7.8.2

Choose a tag to compare

@genivia-inc genivia-inc released this 17 May 19:41

What's new?

  • upgrade to autoconf 2.73 and automake 1.18.1
  • update TUI logic to remove terminal() call before print() of selected results, move print() back for more maintainable code (avoid "why is this here, again?")

ugrep v7.8.1

Choose a tag to compare

@genivia-inc genivia-inc released this 03 May 13:11

What's new?

Fixed two issues:

  • fix #545 --disable-avx512 tested and working
  • fix #544 (same as #537) a bug in the ugrep v7.6 ~ v7.8 (since March 5, 2026) that can't handle very long lines in huge files properly, outputting uninitialized input file buffer contents as if part of the matching line or contents read after the input file buffer as if part of the matching line.

Thank you for your feedback and help with our project ❤️

ugrep v7.8

Choose a tag to compare

@genivia-inc genivia-inc released this 29 Apr 14:41

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

Choose a tag to compare

@genivia-inc genivia-inc released this 21 Apr 17:43

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

Choose a tag to compare

@genivia-inc genivia-inc released this 05 Mar 19:30

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

Choose a tag to compare

@genivia-inc genivia-inc released this 18 Jun 19:20

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

Choose a tag to compare

@genivia-inc genivia-inc released this 15 May 19:29

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

Choose a tag to compare

@genivia-inc genivia-inc released this 28 Apr 11:55

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

Choose a tag to compare

@genivia-inc genivia-inc released this 24 Apr 16:25

What's new?

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

ugrep v7.4

Choose a tag to compare

@genivia-inc genivia-inc released this 22 Apr 18:57

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!