[HTTPS-Everywhere] "make uncommitted" becoming obsolete; new XML format, and other goodies
Peter Eckersley
pde at eff.org
Wed Jul 13 14:38:44 PDT 2011
Until now, HTTPS Everywhere's .xpi files have contained a separate .xml file
for each ruleset. That was quite inefficient, for a couple of reasons:
1. The ZIP archiver used for .xpi files resets its dictionary for
each file, making its compression nearly useless for the rulesets.
2. On startup, Firefox has to read 1000+ inodes, which is not optimal.
3. Depending on your filesytem, the rulesets take up 5-15MB of space just
because of all the blocks allocated to them.
A recent series of commits to master and 1.0 fixes this. It does the
following:
- Lets HTTPS Everywhere accept either traditional XML rule files that contain one
<ruleset> as the root, or a new kind that contains a <rulesetlibrary> root
and multiple <rulesets> as children below that.
- During build it cats all the files into a single XML file
("default.rulesets") and only includes that one XML file in the .xpi.
This shrinks our 1.0.0 .xpi file sizes from ~370kB to ~120kB.
- In order to achieve this, I had to stop using git archive to make the .xpi
files; the semantics of make and makexpi.sh will now always be the semantics
of "make uncommitted". So in the future, for re-building past releases,
you should expect to always do "git checkout <tag> ; make" and will need to
have a clean tree.
- Fixes a performance bug that was probably adding ~1 second to Firefox's
startup time.
I'm going to make a 1.0.0development.5 release to test all of this in a
moment.
--
Peter Eckersley pde at eff.org
Senior Staff Technologist Tel +1 415 436 9333 x131
Electronic Frontier Foundation Fax +1 415 436 9993
More information about the HTTPS-everywhere
mailing list