Comments (5)
If you plan to add support for regexes I strongly suggest using Hyperscan/Vectorscan as a back end. Note however that pure Hyperscan has limitations -- e.g., no capturing group support -- but there is an alternative implementation shipped alongside it called Chimera that offers full pcre-style regex support.
Like your library, HS does a lot of really cool stuff with SIMD to massively speed things up.
from stringzilla.
I'm very familiar with HS and have been using it for years, but the core idea of this library is to be as minimalistic as possible and to work on "all" platforms. HS implementation is quite long and complex, so I was considering a simpler hack to solve common RegEx tasks without the need for DFA or advanced SIMD.
from stringzilla.
Take a look at tre as well; much more compact than HS and NFA-based.
https://github.com/laurikari/tre/
It's used in the magic library (what powers the file command).
from stringzilla.
Oh and you might also consider supporting glob syntax. Full-bore regexes are insane but I could see a very high performance glob matching implementation being super useful in many cases.
from stringzilla.
@dmbaggett, thatβs a great suggestion! Will do!
from stringzilla.
Related Issues (20)
- Standard-compliant `split` implementation
- Missing `sz::string::shrink_to_fit` HOT 3
- Overwrite LibC symbols with `LD_PRELOAD` HOT 1
- Improve Rolling Hashes
- Avoid Python GIL in `write_to`, sorting, Levenshtein HOT 1
- Refactor Str and SplitIterator to use `sz_string_view_t`
- V4 Wishlist HOT 3
- search for string without loading entire file into memory? HOT 1
- [BUG] Instant error STATUS_ACCESS_VIOLATION on Windows with Rust lib HOT 8
- Inconsistent compiler flags with Clang HOT 1
- Quick-start instructions for C++, Rust, and Swift HOT 4
- CMake targets for the C shared library HOT 3
- Pretty-printing `Strs` in Python HOT 3
- sz_capabilities might be incorrect for AVX512 HOT 4
- [CLI] sz_split error HOT 8
- sz::string length();size() and rstrip() HOT 3
- Inline Assembly for detecting CPU features on Arm
- Doesn't build under FreeBSD 14-STABLE HOT 6
- V3 bindings for Node.js
- Bug: sz_find incorrectly finds the substring with length=5 HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stringzilla.