1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-11-22 02:12:44 +01:00
Go to file
Raymond Hill ed7e34fb07
Refactor selfie generation into a more flexible persistence mechanism
The motivation is to address the higher peak memory usage at launch
time with 3rd-gen HNTrie when a selfie was present.

The selfie generation prior to this change was to collect all
filtering data into a single data structure, and then to serialize
that whole structure at once into storage (using JSON.stringify).

However, HNTrie serialization requires that a large UintArray32 be
converted into a plain JS array, which itslef would be indirectly
converted into a JSON string. This was the main reason why peak
memory usage would be higher at launch from selfie, since the JSON
string would need to be wholly unserialized into JS objects, which
themselves would need to be converted into more specialized data
structures (like that Uint32Array one).

The solution to lower peak memory usage at launch is to refactor
selfie generation to allow a more piecemeal approach: each filtering
component is given the ability to serialize itself rather than to be
forced to be embedded in the master selfie. With this approach, the
HNTrie buffer can now serialize to its own storage by converting the
buffer data directly into a string which can be directly sent to
storage. This avoiding expensive intermediate steps such as
converting into a JS array and then to a JSON string.

As part of the refactoring, there was also opportunistic code
upgrade to ES6 and Promise (eventually all of uBO's code will be
proper ES6).

Additionally, the polyfill to bring getBytesInUse() to Firefox has
been revisited to replace the rather expensive previous
implementation with an implementation with virtually no overhead.
2019-02-14 13:33:55 -05:00
.github Update ISSUE_TEMPLATE.md 2018-04-15 13:55:07 -04:00
assets Remove JPN-0 from stock lists 2019-02-12 10:23:48 -05:00
dist Make Firefox dev build auto-update 2019-02-10 12:31:18 -05:00
doc Update CPU chart image with name ublock instead of μblock (#3566) 2018-03-02 06:47:47 -05:00
docs fix title 2018-12-08 10:05:45 -05:00
platform Refactor selfie generation into a more flexible persistence mechanism 2019-02-14 13:33:55 -05:00
src Refactor selfie generation into a more flexible persistence mechanism 2019-02-14 13:33:55 -05:00
tools Fix Promise chain of WASM module load operations 2019-02-01 08:20:43 -05:00
.gitignore git ignore ./tmp/ 2016-04-05 07:55:22 -04:00
.jshintrc Refactor selfie generation into a more flexible persistence mechanism 2019-02-14 13:33:55 -05:00
.travis.yml Experimental Thunderbird 65+ support: experimental 2019-01-20 12:22:40 -05:00
CONTRIBUTING.md Update CONTRIBUTING.md 2018-04-15 11:52:41 -04:00
LICENSE.txt first commit 2014-06-23 18:42:43 -04:00
MANIFESTO.md Update MANIFESTO.md 2015-03-12 23:22:30 +00:00
README.md Removing section which uses material which is years-old 2019-01-26 12:32:43 -05:00

Build Crowdin License


uBlock Origin

pronounced you-block origin (/ˈjuːˌblɒk/) — you decide what enters your browser.
English, Chinese (中文), Korean (한국어), Português (Brasil)

BEWARE! uBlock Origin is (and has always been) COMPLETELY UNRELATED to the web site ublock.org.


An efficient blocker add-on for various browsers. Fast, potent, and lean.

uBlock Origin is NOT an "ad blocker": it is a wide-spectrum blocker -- which happens to be able to function as a mere "ad blocker". The default behavior of uBlock Origin when newly installed is to block ads, trackers and malware sites -- through EasyList, EasyPrivacy, Peter Lowes ad/tracking/malware servers, various lists of malware sites, and uBlock Origin's own filter lists.

Documentation

Basic mode Advanced-user mode
Popup user interface A point-and-click firewall which can be configured on a per-site basis

.
.

Configure as you wish:
picture shows 3rd-party scripts and frames blocked by default everywhere

Visit the uBlock Origin's wiki for documentation.

For support/questions/help, there is /r/uBlockOrigin on Reddit.

Philosophy

uBlock Origin (or uBlock₀) is not an ad blocker; it's a general-purpose blocker. uBlock Origin blocks ads through its support of the Adblock Plus filter syntax. uBlock Origin extends the syntax and is designed to work with custom rules and filters. Furthermore, advanced mode allows uBlock Origin to work in default-deny mode, which mode will cause all 3rd-party network requests to be blocked by default, unless allowed by the user.

That said, it's important to note that using a blocker is NOT theft. Don't fall for this creepy idea. The ultimate logical consequence of blocking = theft is the criminalisation of the inalienable right to privacy.

Ads, "unintrusive" or not, are just the visible portions of privacy-invading apparatus entering your browser when you visit most sites nowadays. uBlock Origin's main goal is to help users neutralize such privacy-invading apparatus — in a way that welcomes those users who don't wish to use more technical, involved means (such as uMatrix).

EasyList, Peter Lowe's Adservers, EasyPrivacy and Malware domains are enabled by default when you install uBlock Origin. Many more lists are readily available to block trackers, analytics, and more. Hosts files are also supported.

Once you install uBlock Origin, you may easily un-select any of the pre-selected filter lists if you think uBlock Origin blocks too much. For reference, Adblock Plus installs with only EasyList enabled by default.

Installation

Feel free to read about the extension's required permissions.

Chromium

You can install the latest version manually, from the Chrome Web Store, or from the Opera add-ons.

There is also a development version in the Chrome Web Store if you want to test uBlock Origin with the latest changes: see uBlock Origin dev build.

It is expected that uBlock Origin is compatible with any Chromium-based browsers.

Firefox / Firefox for Android

Firefox Add-ons web site.

There is also a development version if you want to test uBlock Origin with the latest changes: for installation, see Install / Firefox webext / For beta version

uBlock Origin is compatible with SeaMonkey, Pale Moon, and possibly other browsers based on Firefox: for installation, see Install / Firefox legacy.

Thanks to Debian contributor Sean Whitton, users of Debian 9 or later or Ubuntu 16.04 or later may simply apt-get install xul-ext-ublock-origin.

Microsoft Edge

Developer: @nikrolls.

Stable version available in Microsoft Store.

Development version available at https://github.com/nikrolls/uBlock-Edge#edge.

Note that issues specific to the Edge fork are the responsibility of the current maintainer, I have no control over the code base of the fork.

Safari (macOS)

Developer: @el1t.

Development version available at https://github.com/el1t/uBlock-Safari#ublock-originfor-safari.

Note that issues specific to the Safari fork are the responsibility of the current maintainer, I have no control over the code base of the fork.

Note for all browsers

To benefit from uBlock Origin's higher efficiency, it's advised that you don't use other inefficient blockers at the same time (such as AdBlock or Adblock Plus). uBlock Origin will do as well or better than most popular ad blockers. Other blockers can also prevent uBlock Origin's privacy or anti-blocker features from working properly.

Deploying

Below is documentation to assist administrators in deploying uBlock Origin:

Release History

See the releases pages for a history of releases and highlights for each release.

About

uBlock Origin's manifesto.

Free. Open source. For users by users. No donations sought.

Without the preset lists of filters, this extension is nothing. So if ever you really do want to contribute something, think about the people working hard to maintain the filter lists you are using, which were made available to use by all for free.

You can contribute by helping translate uBlock Origin on Crowdin.

License

GPLv3.