ΠΠΎΡΠ°Π΄ΠΈ Π½Π΅ΡΡΠ³Π»Π°ΡΠΈΠ΅ Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Mozilla ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΈΡΠ΅ Π΄Π° Π½Π΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ Π½Π° Firefox, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π½Π΅Π·Π°Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API WebExtensions Experiments, Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Firefox Π² Π²Π°ΡΠΈΠ°Π½Ρ "Developer Edition", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π±Π΅Π· ΡΠΈΡΡΠΎΠ²ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅.
Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΅ ΡΠ»Π΅ΡΠ½Π΅Π½ΠΎ ΠΎΡ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π² Firefox Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π² ΠΊΠΎΠ΄Π° Π½Π° ECMAScript ΠΈ Π΅ ΡΠ°ΡΡ ΠΎΡ Π²ΡΡΠΊΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Firefox, Π½ΠΎ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅. ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΊΠ°ΡΠΎ "MOZ_DEV_EDITION" ΠΈ "MOZ_REQUIRE_SIGNING" ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» ("modules/addons/AddonSettings.jsm"), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² zip-Π°ΡΡ ΠΈΠ²Π° "\/usr\/lib\/firefox\/omni.ja".
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΠ°ΡΡΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° esprima-python, ΠΏΠ°ΡΡΠΈ AST ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° jscodegen.py. Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ ΡΠΎΡΠΌΠ°ΡΠ° zip ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΡ libzip.py β Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ Π·Π° libzip. ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΡΠ½ΠΎ ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΡΠΊΡΠΈΠΏΡΡΡ unpin.py, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° "{" , "==" ΠΈ "~=" Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π² ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ wheel, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π±ΡΠ³Π²Π°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅Π½ Π΄Π°ΡΠ½Π³ΡΠ΅ΠΉΠ΄ ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΡΠ΅Π· pip Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
