Начиная с Firefox 40, выпуск которого запланирован на август, в дополнениях будет прекращена поддержка бинарных XPCOM-компонентов.

XPCOM представляет собой похожую на CORBA систему, предоставляющую слой для включения библиотек, разработанных на различных языках программирования.

Отмечается, что XPCOM устарел и испытывает проблемы со стабильностью, так как интеграции в дополнения бинарных библиотек, загружаемых в единое адресное пространство основного процесса, может использоваться для манипуляции внутренними структурами Firefox.

Вместо XPCOM для обращения к бинарным библиотекам из дополнений предложено использовать предоставляемый в SDK API s/system_child_process system/child_process, основанный на запуске отдельного дочернего процесса для внешнего кода.

Источник: http://www.opennet.ru/opennews/art.shtml?num=42164

а нам это чем грозит?
опять куча полезных дополнений поотлетает?

okkamas_knife
Конечно извиняюсь, но это например какие?

На самом деле большинство расширений с бинарными XPCOM-компонентами сломалось еще в Firefox 4.0, когда разморозили все интерфейсы и стало необходимо пересобирать под каждую версию. А с точки зрения реализации функционала с бинарниками, js-ctypes пока не выкидывают.

Зачем вебкит? Есть Серво.

DreamC пишет

например какие?

Из используемого мной зоопарка только FlashGot, вроде. Переживу, хоть это и будет большая потеря.
Впрочем, Giorgio Maone, весьма активный и незаурядный разработчик, думаю, выкрутится.


okkamas_knife пишет

ну когда ж они уже выкинут xul

OpenNews: Демонстрация Browser.html, экспериментального браузера с HTML5-интерфейсом
тьфу-тьфу-тьфу...

05-05-2015 15:09:50

Kuja пишет

Есть Серво.

Он есть лишь чуть более, чем его нет.

turbot пишет

Из используемого мной зоопарка только FlashGot, вроде.

Вряд ли. У FlashGot как раз используется отдельный процесс, а не бинарные библиотеки, под которыми скорее всего понимаются DLL. Иначе при чем тут "... загружаемых в единое адресное пространство основного процесса, может использоваться для манипуляции внутренними структурами Firefox.". Так что - нет. Еще будут варианты? ;)

Dzirt
Может и так. Потому и написал: "вроде". :)
Сужу исключительно по наличию:
screenshot%2525202015-05-05%252520002.png

05-05-2015 15:47:04

Dzirt пишет

Еще будут варианты?

У LastPass есть версия с бинарными компонентами. Но есть и без. В чем разница, когда пользовался, - не уловил.

Ну то есть "новость" звучит примерно так - "мы прекращаем поддержку расширений с бинарными библиотеками, потому что они не совместимы с 64-х битным Firefox'ом и ... потому что нам не известно ни одного такого расширения, работу с которыми мы все равно сломали еще в версии 4.0, а починить ни ума, ни времени не хватило, надо было было пилить рюшечки". Ну ок. Суперновость. Так и запишем.

Ну если только в дополнениях, то в полном масштабе не критично. А если дополнениями, например передача ссылки приложению, запуск приложения или кнопки Custom Buttons для запуска приложений., это действительно огорчит.

Очередной вопрос:

Вместо XPCOM для обращения к бинарным библиотекам из дополнений предложено использовать предоставляемый в SDK API s/system_child_process system/child_process, основанный на запуске отдельного дочернего процесса для внешнего кода.

А чем это будет хуже? Я то не особо разбираюсь в этом.

turbot, Яндекс уже запилил подобное :)

Крошка Ру
До дизайнерских выс... кхе-кхе... "революционных идей" Яндекса мне как-то фиолетово. Как и до Эппловских (с чьих тот и был беззастенчиво содран). :rolleyes:
Да и Мозилловские меня не беспокоят. Слава богу, тут гвоздями все не приколочено, всегда можно стилями поправить (в случае, если вместо xul'а будет html, это даже проще будет сделать). А вот совместимость расширений... Тут вон только треть из используемых мной работает в e10s (и то криво-косо). А он-то уже совсем близко. Что будет, если они внезапно и остальным своим идеям дадут жизнь, во главе с Серво?
Оно может и хорошо, и работать будет быстрее/лучшее/безопаснее, но без аддонов будет ничем не полезнее IE.

turbot
А тогда что по вашему они должны делать?

DreamC
Ключевое слово у меня - "внезапно".
Пусть пилят. Я только за. Но только как отдельный продукт. Вот когда доведут до ума, сподвигнут какое-то кол-во разработчиков аддонов, хоть наиболее востребованных, переделать под новый движок, и тогда, по достижении какой-то критической массы, если продукт и впрямь толковым выйдет, пользователи и остальные разработчики и сами потянутся.

turbot
Так сколько e10s в ночнушках висит то уже? У них в багах по нему даже совместимость наиболее востребованных аддонов висит.

По поводу XPCOM в этой ветке только 1 (!!!) человек смог назвать один аддон, которым он пользуется с внешним процессом. И то я (может конечно я просто чайник) не понимаю, что помешает реализовать тоже самое через SDK.

DreamC
Тут людей скорее тенденция беспокоит (и небезосновательно) по выпиливанию чего-либо, что, по мнению разработчиков, мало кому нужно (а подавляющей массе пользователей, кроме возможности просматривать фоточки котиков, ничего и не нужно), а не данный конкретный случай.

Я вот с Хрома ушел, когда из него выпилили custom.css (аналог userChrome.css) (за малой востребованностью). Там это была единственная возможность хоть как-то перекроить интерфейс, так как у расширений не было api для этого (они вроде как обещали подумать, о добавлении подобного, но для меня это была последняя капля, не знаю, чем дело кончилось).

DreamC пишет

человек смог назвать один аддон, которым он пользуется с внешним процессом.

С внешним процессом (FlashGot, да?) как раз не страшно, не попадает. Это не "бинарная библиотека". А вот в LastPass действительно есть две DLL для x86 и x64. Этот скорее всего перестанет работать.

turbot
Просто, по-моему, данный шаг (про XPCOM) был единственным "резким". Т.е. его обсуждали только в не особо популярных дев-рассылках.

Про интерфейс - да, вынужден согласиться, что есть некоторые вещи, которые не нравятся, но ИМЕННО интерфейс должен идти за хомячками (не на все 100%, конечно).

А что еще выпиливается?

Dzirt
На сколкьо я понял из https://blog.mozilla.org/addons/2015/05 … omponents/ (но еще раз повторюсь, что я в этом не особо разбираюсь), то практически все тоже самое можно сделать при помощи SDK?

Dzirt пишет

А вот в LastPass действительно есть две DLL для x86 и x64. Этот скорее всего перестанет работать.

Кстати, скоре всего нет. Только они там код обфусцировали, неудобно смотреть. А так, вроде, там тоже js-ctypes:

components/lastpass.js

Выделить код

Код:

Components.utils["import"]("resource://gre/modules/ctypes.jsm");
var g = __LOCATION__.parent.parent;
g.append("platform");
for(var h = d ? 2 : 1, d = d ? 0 : -1; d < h; d++) try {
    var l = g.clone();
    c ? (l.append(0 == d ? "WINNT_x86_64-msvc" : "WINNT_x86-msvc"), l.append("components"), l.append(0 == d ? "lpxpcom_x86_64.dll" : "lpxpcom.dll")) : e ? (l.append(0 == d ? "Darwin_x86_64-gcc3" :
        "Darwin"), l.append("components"), l.append(0 == d ? "lpxpcom_x86_64.dylib" : "lpxpcom.dylib")) : f && (l.append(0 == d ? "Linux_x86_64-gcc3" : "Linux_x86-gcc3"), l.append("components"), l.append(0 == d ? "lpxpcom_x86_64.so" : "lpxpcom.so"));
    if(l.exists()) {
        ka = ctypes.open(l.path);
        la = c && 0 != d ? ctypes.winapi_abi : ctypes.default_abi;
        Or = l.path;
        break
    }
}


Тут больше беспокоит навязывание этого их нового SDK. Мол, вы перепишите, а уж эти API мы не удалим. Верится слабо. :)

DreamC пишет

А что еще выпиливается?

Затруднюсь конкретно сказать, ибо сам никакого отношения к разработке не имею. Но всякие раздраженные высказывания на эту тему встречались. Думаю тут лучше спросить вот, например, Infocatcher'а. :)

turbot
Даже на mozillazine практически ничего не найти по этому поводу.
И только в гугл-ргуппе было пару коментариев в стиле "вывесили бы новость пораньше".
Такое ощущение, что это мало кого беспокоит как раз.
Большинство шагов Мозилы мне нравятся, хоть некоторые из них и можно пообсуждать. (наверное из моих постов это и так ясно ;) )

Infocatcher
А мне идея с SDK как раз больше нравится.
Это ведь заодно все уйдет и в B2G с их телефонами.

DreamC
Ну вот, из недавнего. Весьма раздраженно. :)

turbot
Я не говорил, что подобных вещей нет ;)
А вот этот баг - да, согласен, что они могли бы сделать и по-другому.
Но подобные моменты я уверен, что заканчиваются нормально.

DreamC пишет

А мне идея с SDK как раз больше нравится.

В идее ничего плохого, просто новые фишки чаще ломают, чем старые.
Ладно хоть старые генераторы пока работают (только документация уже обновлена), а это Firefox 2.0+, совсем старье. Зато более древнее уже так просто не сломать – и старые интернеты рухнут, и множество расширений.
Как-то вот пока выходит, что об обратной совместимости заботятся слабо, достаточно сложные расширения надо постоянно поддерживать.

DreamC пишет

Но подобные моменты я уверен, что заканчиваются нормально.

Обычно это заканчивается тем, что разработчик правит свое расширение. Альтернативы-то особой нет.

Infocatcher пишет

Обычно это заканчивается тем, что разработчик правит свое расширение

Немало было примеров, когда разработчик просто бросал дальнейшую поддержку расширения и оно благополучно умирало.

Infocatcher
Так ведь, по-моему, они SDK и делают для того, чтобы меньше ломать, нет?
А про постоянную поддержку расширений - так с обычными программами все ровно также протекает.

DreamC пишет

Так ведь, по-моему, они SDK и делают для того, чтобы меньше ломать, нет?

Ну, по идее, да. Я не пользуюсь, мне не очень удобно, там код мудреный, самодокументированность не особо, надо лезть в документацию, а она не всегда актуальная.

DreamC пишет

А про постоянную поддержку расширений - так с обычными программами все ровно также протекает.

Все же в операционной системе ничего кардинально не обновляют каждый полтора месяца.

Infocatcher
Согласен. НО ведь они как раз и выпускают ос v0.1 =)

Также, на сколько я понимаю много переработок сегодня у них связано с постепенным переходом на Rust.

Наверняка отвалятся те дополнения, которые заточены под конкретную ось (когда заходишь на страницу дополнения, пишет, несовместима с вашей платформой). Из того, что пользую я, наверняка отвалится минимайз ту трей.

Wave
Может отвалится, если автор не переделает, воспользовавшись SDK.

Уважаемые господа!
А нет ли какого-нибудь простого алгоритма для идиотов (вроде меня), который бы позволил проверить дополнения  на вшивость наличие этих самых бинарных компонент? Типа "открыть то-то и убедиться в присутствии/отсутствии такой-то конструкции".

По идее, над искать «binary-component» в chrome.manifest. Правда, XPCOM-компоненты на JavaScript можно регистрировать из restartless расширений на лету, возможно, тут тоже можно, но примеров я не видел.

Infocatcher пишет

По идее, над искать «binary-component» в chrome.manifest. Правда, XPCOM-компоненты на JavaScript можно регистрировать из restartless расширений на лету, возможно, тут тоже можно, но примеров я не видел.

Спасибо. Выберу время - обревизую своё любимое старьё, которым до сих пор пользуюсь, невзирая на давным-давно прекращенную поддержку.