I am
still working on my VanitySearch build by the way.
Over the past few days, I made the CPU core of the regex support work (It just needs a few lines of code change to allow you to lock the search to prefix or suffix, but that will be done in a few days), but apparently, there's a ton of work necessary to be done on the GPU side.
[Yes, I hate CUDA - what an abomination to debug - but if nobody else is going to do it, why let the idea of regex search go down the drain?]
EDIT: GPUEngine must be almost completely rewritten, including making a regex matcher in CUDA. Apparently,
nobody has ever done this before (or at least finished it) so whatever I'm going to implement here might possibly be the first time someone attempts that.
Why does it need to be rewritten?
Because the GPUEngine was based on wildcards. It would basically take the ? and * and then calculate all the different possible combinations of the prefix, and the result would be a gigantic array which is indexed by a unique prefix ID, where ago find a match for an address, you'd run a string comparison on all of the corresponding prefixes, so see if any match.
There is two ways to insert regex at hat point:
1- shoehorn the other regex characters inside the GPUEngine (but this approach really only works with quantifier metacharacters), or
2) break the input string down into a tree, where each regex character corresponds to some part of the tree, and match all those parts in parallel.
2) is the approach I chose to take because it means I can use the existing CPU regex library as a reference for how to match stuff.
Either way, we're on track to make the first regex-enables VanitySearch, eventually.
PS. There is no longer a GPU performance hit, but it just seems to be sitting there idle ever since I ripped out the (pointless for this build, IMO) prefix input's anyway.