Commit Graph
876 Commits
Author SHA1 Message Date
Andrew Gallant 7f0b1ccbd3 Before contexts seem to work.
Code is in a little better shape.
2016-09-02 23:25:07 -04:00
Andrew Gallant 5450aed9a8 Make "before" context work.
No line numbers. And match inverting is broken.

This is awful.
2016-09-01 21:56:23 -04:00
Andrew Gallant 5aa3b9bc58 struggling with printing contexts, what a mess 2016-08-31 20:02:59 -04:00
Andrew Gallant 79f62012d7 fix glob tests 2016-08-31 20:02:48 -04:00
Andrew Gallant 03d9df4303 tests and refactoring search 2016-08-31 15:52:35 -04:00
Andrew Gallant d011cea053 The search code is a mess, but...
... we now support inverted matches and line numbers!
2016-08-29 22:44:15 -04:00
Andrew Gallant c809679cf2 Lots of improvements. Most notably, removal of memory maps for searching.
Memory maps appear to degrade quite a bit in the presence of multithreading.

Also, switch to lock free data structures for synchronization. Give each
worker an input and output buffer which require no synchronization.
2016-08-28 20:18:34 -04:00
Andrew Gallant 1c8379f55a Implementing core functionality.
Initially experimenting with crossbeam to manage synchronization.
2016-08-28 01:37:12 -04:00
Andrew Gallant 065c449980 File path filtering works and is pretty fast.
I'm pretty disappointed by the performance of regex sets. They are
apparently spending a lot of their time in construction of the DFA,
which probably means that the DFA is just too big.

It turns out that it's actually faster to build an *additional* normal
regex with the alternation of every glob and use it as a first-pass
filter over every file path. If there's a match, only then do we try the
more expensive RegexSet.
2016-08-27 01:01:06 -04:00
Andrew Gallant b55ecf34c7 globbing by regex 2016-08-25 21:44:37 -04:00
Andrew Gallant 957f90c898 docs and small polish 2016-08-24 18:33:35 -04:00
Andrew Gallant 61f49ba716 Remove the buffered reader.
We really need functionality like this when memory maps aren't suitable,
either because they're too slow or because they just aren't available (like
for reading stdin). However, this particular approach was completely bunk.
Namely, the interface was all wrong. The caller needs to maintain some kind
of control over the search buffers for special output features (like
contexts or inverted matching), but this interface as written doesn't
support that kind of pattern at all.

So... back to the drawing board.
2016-08-24 18:06:42 -04:00
Andrew Gallant e97d75c024 Refactor buffered test. 2016-08-08 19:17:25 -04:00
Andrew Gallant 076eeff3ea update 2016-08-05 00:10:58 -04:00
Andrew Gallant a3f609222c progress 2016-06-22 21:19:02 -04:00
Andrew Gallant 0163b39faa refactor progress 2016-06-20 16:55:13 -04:00
Andrew Gallant 8d9d602945 update 2016-04-03 21:22:09 -04:00
Andrew Gallant 07bff7409b tweaks 2016-03-30 22:24:59 -04:00
Andrew Gallant f1a91307cd short matches 2016-03-30 20:44:26 -04:00
Andrew Gallant 79a51029c1 progress 2016-03-29 21:21:34 -04:00
Andrew Gallant 4ae67a8587 progress 2016-03-28 20:07:25 -04:00
Andrew Gallant 3b76981007 rename to xrep 2016-03-28 18:11:35 -04:00
Andrew Gallant 8996911681 makefile 2016-03-10 21:03:13 -05:00
Andrew Gallant 883ceb343c add readme 2016-03-10 21:02:08 -05:00
Andrew Gallant 403bb72a4d beating 'grep -E' on some things 2016-03-10 20:48:44 -05:00
Andrew Gallant 9d1e619ff3 initial commit 2016-02-27 11:07:26 -05:00