pomsky
RE2
pomsky | RE2 | |
---|---|---|
19 | 49 | |
1,259 | 8,614 | |
0.2% | 0.5% | |
8.4 | 8.9 | |
3 months ago | 22 days ago | |
Rust | C++ | |
Apache License 2.0 | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pomsky
-
How to call from Rust into JS, Java, C#, Ruby and Python?
I started with JS, and my first step was to write a simple script that checks if a regex is valid. I can call this script from Rust, but there's a problem: Starting a nodejs process takes about 100ms, which is not acceptable, especially for fuzzing.
-
How do you guard against stack overflows
I noticed this when a test case of a parser I wrote failed in CI on Windows. I then learned that the default stack size on Windows is only 1 MiB whereas its 8 MiB on Linux if I remember correctly. The parser has a hard-coded recursion limit to prevent stack overflows, which is currently set to 128. However, this limit is lower than necessary on Linux, and might still be too high for some platforms (embedded?)
-
I have to rename Rulex
I was informed that Rulex is a registered trademark and I'm not allowed to use the name for my project. A lawyer contacted me and gave me a week to rename the project, so I have to come up with a different name :(
-
Melody 0.18 (a sane alternative to regular expressions)
In the other discussion, there's also a link to Rulex, which has similar goals but is more concise. Also claims to compile to multiple regex dialects.
-
Fuzzing rust-minidump at Mozilla for Embarrassment and Crashes – Part 2
Something similar happened to me a week ago. Someone emailed me that they found panics in rulex, and then created a PR to fix them. They even explained to me how to create a security advisory on GitHub because the panics could be used to DoS someone. It was very helpful.
-
Where would you put Error enums?
Sorry for not being more specific. Since this is a parser, the span points into the text file that is being parsed, so it's not that relevant for most libraries. Here is the parser, it uses nom parser combinators. Unfortunately, and adding the spans to the errors involves some boilerplate.
-
rulex VS melody - a user suggested alternative
2 projects | 19 Jun 2022
-
Any active open source repos built using Rust that need development ?
I welcome contributions for rulex. It's a medium-sized project that should be fairly easy to understand, and has some "good first issues" :)
-
Hacker News top posts: Jun 10, 2022
Rulex – A new, portable, regular expression language\ (102 comments)
- Rulex – A new, portable, regular expression language
RE2
-
C Is the Greenest Programming Language
Looking at the benchmark where C++ is worst compared to other languages, it's depending on the library used. I would guess if they used Google's re2 Regex library instead of Boost's, the result would be different.
https://github.com/google/re2
https://github.com/greensoftwarelab/Energy-Languages/blob/ma...
-
what does this + do in the regular expression "(^A-Za-z)+"
That page says it just includes "some of the most common special characters", and following the link to the Examples page in turn includes a link to the full list.
-
On a Great Interview Question
Python uses backtracking, so this probably isn't O(n), especially with the ability to choose the dictionary.
But with there are non-backtracking matchers which would make this O(n). Here's re2 from https://github.com/google/re2 :
>>> import re2
-
RE2 VS hyperscan - a user suggested alternative
2 projects | 17 Mar 2023
-
hyperscan VS RE2 - a user suggested alternative
2 projects | 17 Mar 2023
RE2 is a Google regular expression library
-
Projects ideas to learn C++/OOP
google's regex library: https://github.com/google/re2
-
Regex: is there a difference between * and {0,}, as well as + and {1,}?
I am currently working with Regex, specifically Re2, and was wondering if there is a real difference between the above expressions for repeated sub-regex.
-
First release of SPVM::File::Spec - complex regular expressions, file tests, SPVM::Cwd, inheritance
I ported Google RE2, a regular expression library, to SPVM as Resource::Re2, and created SPVM::Regex, a wrapper for it.
-
SPVM::File::Basename is released. This is the first module of SPVM using regular expressions.
I searched for I found that there is a Perl compatible regular expression called Google RE2. It is written in C++, and with Google RE2, I can use Perl-compatible regular expressions as a library.
-
Ruby 3.2.0 Is from Another Dimension
Yes, but there is an interesting clarification here. RE2 has used the "caching" approach documented in the Ruby bug ticket linked for quite some time (since its birth?): https://github.com/google/re2/blob/954656f47fe8fb505d4818da1...
It is mentioned only briefly in Cox's article on regex matching in the wild. Look for the word "bitstate": https://swtch.com/~rsc/regexp/regexp3.html
I didn't know Perl had implemented this trick too.
The paper[1] cited in the Ruby bug ticket was published very recently. When I first read the Ruby bug ticket, I immediately wondered how they sidestepped the memory use problem. The paper's abstract seems to suggest there is some technique for doing so, as it rebuffs the idea of doing "full" memoization. Alas, I do not have access the paper. (Which is fucking ridiculous.)
[1]: https://ieeexplore.ieee.org/abstract/document/9519427
What are some alternatives?
melody - Melody is a language that compiles to regular expressions and aims to be more readable and maintainable
compile-time-regular-expressions - Compile Time Regular Expression in C++
grex - A command-line tool and Rust library with Python bindings for generating regular expressions from user-provided test cases
semver.c - Semantic version in ANSI C
regex-automata - A low level regular expression library that uses deterministic finite automata.
Boost.Signals - Boost.org signals2 module
kleenexp - modern regular expression syntax everywhere with a painless upgrade path
libevil - The Evil License Manager
taffy - A high performance rust-powered UI layout library
constexpr-8cc - Compile-time C Compiler implemented as C++14 constant expressions
regex - An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.
Cppcheck - static analysis of C/C++ code