Releases: zeux/qgrep
Maintenance release
This release brings about small compatibility and performance improvements.
Note: macOS binaries published starting from this release use Arm architecture; to run qgrep on Intel Macs, use a binary built from source or version 1.3.
- Add CMake to the list of languages included into projects by default
- Add support for Windows-on-Arm compilation from source
- Add bash completion script (needs to be installed manually from shell-completion/bash/)
- Optimize project scanning on Windows, making no-op updates 10-25% faster
- Improve build throughput by up to 5% due to LZ4 upgrade
Thanks @asakovets, @ch45er, @wegank and @BeastLe9enD for help with this release!
Performance release
This change brings performance improvements, various fixes and a new interactive
command.
Performance improvements:
- Build throughput is now ~40% faster through a combination of compression and file processing tuning
- Regex-heavy searches are now noticeably faster on high core count machines on Windows due to use of SRW locks
- Searches are now ~50% faster on ARM due to LZ4 decompression improvements and SIMD tuning
Note: macOS binaries published with this release use x64 architecture; for optimal performance on macOS, using a binary built from source is advised.
New features:
CE
flag can be used to output match column range (both start and end)qgrep interactive <project>
now launches an interactive session wheresearch <expression>
can be used multiple times; the same process also acts as an update watcher, similarly toqgrep watch
Fixes:
- Fix an occasional assertion in
buildAppendFilePart
during building - Case folding has been fixed to leave Unicode characters in tact and improve case insensitive searches for Unicode characters
- Fix treatment of full drive-based paths on Windows as project paths
Thanks @ivzhh, @vegorov-rbx, @MRWITEK and @NightRa for their help with this release!
Maintenance release
This release brings about several correctness fixes and some performance improvements.
Usability:
- New projects include more source code extensions by default
- In Vim plugin, QgrepSearch can now be called with arguments seeding the input query
Fixes:
- Fix an assertion in incremental updater for empty files
- Fix an off-by-one error in SIMD matcher when the match ended at the input's end
Performance:
- Update lz4 to 1.9.3 (~3% faster searching on some queries)
- Update re2 to latest (much faster regular expression matching on Windows due to improved scalability of SRW locks)
Watcher release
This release brings performance improvements, better Windows path handling and new watch/change commands.
Watch mode
qgrep watch project
now starts qgrep in the mode that watches changes to all folders in the project, marks the changed files as dirty (which leads to search commands reading actual file contents from disk) and periodically updates the pack to maintain high search performance.
qgrep change project file
marks the file as dirty manually; this can be integrated into text editors so that files that are edited and saved are searched without having to run the watcher, for example in Vim you can now use the following command if you're using the qgrep.vim
plugin:
au BufWritePost * call qgrep#change(expand('%'))
Windows path handling improvements
- Improve support for Unicode paths on Windows
- Implement special file name (e.g.
aux.c
) and long file path handling on Windows
Performance improvements
- Substantially improve pack update performance under Windows Subsystem for Linux (up to 3x faster)
- Improve incremental pack update performance (up to 2x faster)
- Improve pack clean build performance (up to 50% faster)
- Update lz4 to a recent version, making search faster (up to 20% faster on complex queries)
Initial release
This is a first release of qgrep, featuring:
- Very fast multithreaded search using a database that contains all source text in a compressed form
- Regular expression and literal search, with an option for case insensitive (ASCII) lookups
- Fast incremental database updates
- Flexible project configuration with partial folder specification, include/exclude filters etc.
- File path search with several different search modes, including fuzzy search with ranking
- Vim plugin with incremental content and file search