Type: other Re-open of #1775, based on https://github.com/EFForg/https-everywhere/issues/1775#issuecomment-151655897 ordered by priority (personal) ## GOAL ??? ## PROPOSAL Proof of concept PRs, may or may not be get implemented for various reasons. Discussions should be made in their respective PRs. - Try using a Prefix Tree for RuleSets.targets (#12530) - ~Try using a LRU Cache for caching (#12591)~ See #3952 ## TODO ### Core - [x] Use Map instead of Object for RuleSets.targets (#12160) (2017.8.31) * improve performance - [x] Use JSON for default.rulesets instead of XML (#12273) (2017.9.12) * reduce the startup time to below 1.5 seconds * reduce the memory usage to below 100mb (on Chromium task manager on startup after GC). * reduce the size of default.rulesets from 8.4mb to 6.4mb and thus smaller extension size - [x] Use Map instead of Object for redirectCounter and Fix Memory Leak (#12422) (2017.9.12) * fix a small memory leak for long lasting browsing session * improve performance - [x] Use null instead of Empty Set for in RuleSets.ruleCache (#12494, #12577) (2017.10.24) * avoid unnecessary memory allocation - [x] Merge exclusions into a single pattern in default.rulesets (#16092, related #15448) (2018.7.8) * reduce memory overhead - [x] Trivialize rulesets with _static_ `securecookie`, thanks @RReverser (#16029, #16378) (2018.9.19) * removed 300+ wildcard targets, improve lookup speed and memory usage * related #16540, #16634 - [x] Merge securecookies which match any cookie.name in each rulesets (2019.5.2) * Refactor and enhance trivialize-cookie-rules.js (#17438, #17578) * Update utils/merge-rulesets.py (#17492) * Remove/ Update some securecookie with no coverage (#17565) - [x] Drop support for middle wildcard targets in potentiallyApplicableRulesets (2019.5.2) * Forbid and remove wildcards in the middle (#4369, #12319 thanks @Bisaloo) * Remove middle wildcard support in rules.js (#17715) * reduce runtime overhead (lookup all_rules) significantly - [x] Triviailize rulesets with right-wildcard targets and trivialize rewrites (#17855, #18068) (2019.6.27) * Removed around 1600+ wildcards target, improve lookup speed and memory usage - [x] Simplify shouldSecureCookie and safeToSecureCookie (#17742) (2019.6.27) - [x] Refactor code for the browser session storage (#18153) (2019.11.7) - [ ] Async addFromJson, parseOneJsonRuleset * avoid blocking code to improve performance - [ ] Abstraction for Rule and Exclusion * avoid redundant array of similar objects * better API (?) ### UI - [x] Improve popup page performance and reduce memory usage (#15532) (2018.6.21) * Avoid overhead with `document.createElement` * Avoid unnecessary listeners with event delegations ## PENDING FIX - [ ] Point RuleSets.targets.get(host) to a Ruleset instead of Array of Ruleset * REQUIRE forbid and remove duplicated targets (#11440) * improve heap performance and simplify lookup operations - [ ] Use a Radix Trie instead of Map for RuleSets.targets with reversed hostname * REQUIRE forbid and remove wildcards at the right (#11203) * efficient memory structure ## WON'T FIX - [x] Compile RegExp only when it is neccessary * RegExp are already lazily compiled on Chromium and Firefox ~improve browser startup overhead~ - [x] Update rules.js to limit cache size to 256 entries (#13328) * Caching has a small memory overhead as compared to the extension memory usage - [x] Avoid using chrome.runtime.sendMessage() whenever possible * Explained in https://github.com/EFForg/https-everywhere/issues/12232#issuecomment-348048311 * ~REF gorhill/httpswitchboard/issues/345~ * REF https://bugs.chromium.org/p/chromium/issues/detail?id=320723 * REF https://github.com/gorhill/uBlock/blob/master/src/js/messaging.js## MISC ISSUES - [x] Use ES6 generator functions to reduce run-time overhead in search & lookup (~#16951~) * Show only rulesets which performed an upgrade (#17047) Bugs or unexpected features found when reading through the code - [x] Credentials in URLs are not restored upon rewrites (#12377, #12380) - [x] Clear domainBlacklist and urlBlacklist when all Incognito sessions are destroyed (#12452) - [x] Inconsistent behavior for .onion and .onion. (with tailing dot) hosts (#13568, #13569) - [x] Disabled site (with/ without tailing dots) are treated differently (#18451, #18452)
Type: other
Re-open of #1775, based on #1775 (comment) ordered by priority (personal)
GOAL
???
PROPOSAL
Proof of concept PRs, may or may not be get implemented for various reasons. Discussions should be made in their respective PRs.
Try using a LRU Cache for caching (WIP: Try using a LRU Cache for caching #12591)See Simplify caching using ES6 Map() #3952TODO
Core
securecookie, thanks @RReverser (Detect static securecookies to trivialize more rules #16029, Batch trivialize rulesets with static securecookies #16378) (2018.9.19)*in the middle of the target host #4369, Remove support for wildcard in the middle #12319 thanks @Bisaloo)UI
document.createElementPENDING FIX
WON'T FIX
improve browser startup overheadREF Avoid using chrome.runtime.sendMessage() wherever possible gorhill/httpswitchboard#345Use ES6 generator functions to reduce run-time overhead in search & lookup #16951)Bugs or unexpected features found when reading through the code