Skip to content

Releases: zeux/qgrep

Performance release

15 Nov 16:24
Compare
Choose a tag to compare

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 where search <expression> can be used multiple times; the same process also acts as an update watcher, similarly to qgrep 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

30 Dec 17:30
Compare
Choose a tag to compare

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

21 Feb 05:28
Compare
Choose a tag to compare

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

17 Dec 05:14
Compare
Choose a tag to compare

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