Releases: Genivia/ugrep
ugrep v4.3.0
Redesigned TUI with a new split screen window pane to preview matching files.
- new TUI split screen, activated with CTRL-T, and new option
--split
to start the TUI with a split screen (addsplit
to your .ugrep configuration file to enable) #254 - improved TUI screen updating
- refactored the search engine internals to keep the search engine alive until ugrep terminates to optimize the TUI matching file preview pane display speed
- improved option
-o
(--only-matching
) layout when context options-ABC
are used - fixed
--zmax=n
for n>1 that had a low chance to hang as discovered recently (about once in a few thousand runs) when searching (deeply) nested zip or tar archives - fixed compressed file search of files that are exactly one byte long, instead of rejecting those files as being empty
- updated performance benchmark results: ugrep is faster than other grep tools on x64 and arm64 machines in nearly every test of 564 benchmark test cases
ugrep v4.2.0
Ugrep 4.2 includes several usability improvements:
- improved TUI to display search progress and final stats in a status line at the bottom
- improved TUI ctrl-Y to jump to the corresponding line number in the pager #296
- improved recursive search performance #297
- improved compatibility with GNU grep #273
- improved detection of special devices to avoid searching them
ugrep v4.1.0
Ugrep 4.1 includes usability fixes and adds several improvements:
- fix
-Z
fuzzy matching when character deletions are solely specified with a minus sign, as in-Z-NUM
e.g. with-Z-1
the pattern 'abcd' should still match 'acd' with a missing character 'b' in the input (-Z
worked fine, but-Z-1
did not match) - fix
--pager
when a regex syntax error occurs #285 - update
--pager
to use$PAGER
#286 - update
--ignore-files
for compliance with git and ag gitignore rules #118 - update
-Q
TUI ctrl-S and ctrl-W to jump to context group separators when context options-ABC
are specified - update
-o
for GNU grep compatibility with "empty-matching" patterns - update POSIX
[[:space:]]
and\s
to exclude newline\n
matching. No regex pattern matches newlines, except for\n
,\R
and\X
,\P{C}
(anything not in Unicode class C),\D
(anything not a digit),\H
(anything not blank), and\W
(anything not a word character), for the latter patterns you can/should use the more conventional character classes[^\p{C}]
,[^\d]
[^\h]
and[^\w]
, respectively, to not match newlines - improve performance: faster
-c
and line matching #284 - improve performance: faster "empty-matching" pattern search #287
Ugrep was extensively tested prior to release. Updated benchmark results: https://github.com/Genivia/ugrep-benchmarks
ugrep v4.0.5
One last minor update before the break. I want to make sure ugrep is and remains a high-quality search tool.
- Fixed a recently-added optimization that may in some rare cases cause a problem with a match at the end of a file.
Additional features and the promised additional speed-ups (and more) will be ready for a new release after a 3~4 week break.
ugrep v4.0.4
- new
--delay=DELAY
option to specify a default query TUI response delay time, which can be specified in a .ugrep config file withdelay=DELAY
(--save-config
includes this setting also) - fix option
-m
compatibility issue wth GNU grep when showing context lines with-ABC
after the last max match - updated
--save-config
as per user request - correct an issue with
-o
and context
Additional features and the promised additional speed-ups (and more) will be ready after a 3~4 week break.
ugrep v4.0.2
- additional speed up with improved parameterization of the matching algorithm decision logic 🚀
- updated performance benchmarks showing that ugrep is almost always faster than other grep tools (more benchmarks will be added over time)
Work in progress: speed up options -ABC
and significantly speed up option -c
and line matching (*). This work is delayed by 3~4 weeks.
(*) when matching lines, the idea is to skip to the next line when permitted instead of continuing matching (i.e. no multi-line matching pattern, no colors, no replace, no tag displayed). This is an optimization that is effectively performed by GNU grep. The principle is copied by other grep tools.
ugrep v4.0.1
- this update resolves a legacy C++ compilation error with
ptrdiff_t
- speeds up option
-l
when searching compressed files with-z
- enables an important search optimization that was no longer enabled
- publish new ugrep performance benchmarks 🚀
ugrep v4.0
Ugrep 4.0 offers faster searching with improved internals:
- faster async output, speeds up ugrep 3x when outputting many matching lines 🚀
- removed "rest line" buffering, speeds up ugrep up to 2x, depending on the output-related options used 🚀
- removed redundant "binary file" checking, speeds up ugrep 10%~20% 🚀
- double size input buffer, speeds up searching 5%~20% when searching very large files (GB) with none/infrequent pattern matches 🚀
- faster empty pattern matching, i.e. pattern
''
matches all lines faster, as much as 10x faster 🚀 - removed redundant color escape codes from the output 🖥
- option
-Q
with an optional argument is now-Q=DELAY
instead of-QDELAY
, so-Q2
is-Q -2
(simple options should be composable/separable) which searches 2 directory levels deep with the query TUI 🖥 - fully tested
--index
(still beta version) to search indexed file systems, see also WIP project ugrep-indexer 🚀
Thumbs up to all ugrep users and contributors to make this possible 👍
A comprehensive performance benchmarking comparison will be published. I hope this convinces you all how fast ugrep is compared to other grep tools. At least until/unless other grep start using (rip-off, ahem...) my work ❤️
ugrep v3.12.7
This update of ugrep includes a compatibility improvement with one of GNU grep's idiosyncrasies: unpaired )
in regex are matched literally. This behavior is automatically in effect when the grep
and egrep
aliases of ugrep are used or explicitly with option -Y
.
ugrep v3.12.6
New option -S
(--dereference-files
) to follow symbolic links only to files, not to directories, when using option -r
for recursive search. Updated default recursive search to strictly perform -r
without following any symbolic links (use -S
to search symlinked files). New option --index
for fast index-based search with the new ugrep-indexer
tool. The ugrep-indexer
tool is released on GitHub as a separate open source project at https://github.com/Genivia/ugrep-indexer which will become part of ugrep later after more feedback is received for this new feature.