mirror of
https://github.com/gorhill/uBlock.git
synced 2026-03-11 09:04:36 +00:00
Regex-based static network filters are those most likely to cause performance degradation, and as such the best guard against undue performance degradation caused by regex-based filters is the ability to extract valid and good tokens from regex patterns. This commit introduces a complete regex parser so that the static network filtering engine can now safely extract tokens regardless of the complexity of the regex pattern. The regex parser is a library imported from: https://github.com/foo123/RegexAnalyzer The syntax highlighter adds an underline to regex-based filters as a visual aid to filter authors so as to avoid mistakenly creating regex-based filters. This commit further colors the underline as a warning when a regex-based filter is found to be untokenizable. Filter list authors are invited to spot these untokenizable regex-based filters in their lists to verify that no mistake were made for those filters, causing them to be untokenizabke. For example, what appears to be a mistake: /^https?:\/\/.*\/sw.js?.[a-zA-Z0-9%]{50,}/ Though the mistake is minor, the regex-based filter above is untokenizable as a result, and become tokenizable when the `.` is properly escaped: /^https?:\/\/.*\/sw\.js?.[a-zA-Z0-9%]{50,}/ Filter list authors can use this search expression in the asset viewer to find instances of regex-based filters: /^(@@)?\/[^\n]+\/(\$|$)/ |
||
|---|---|---|
| .. | ||
| codemirror | ||
| diff | ||
| lz4 | ||
| publicsuffixlist | ||
| regexanalyzer | ||
| punycode.js | ||