this post was submitted on 18 Sep 2023
3 points (100.0% liked)

Electronic & Software

1 readers
1 users here now

Раздел для обсуждения софта и комплетующих. Языки программирование, интересные программы операцицонные системы, интересные железяки - это всё сюда.

founded 1 year ago
MODERATORS
 

В пользовательском окружении GNOME 45, релиз которого намечен на 25 сентября, изменена организация загрузки модулей в дополнениях к GNOME Shell, что приведёт к нарушению обратной совместимости и потребует внесения изменений в дополнения. Дополнения, разработанные для прошлых версий GNOME, не смогут работать в выпуске GNOME 45, а дополнения, адаптированные для работы в GNOME 45, не смогут устанавливаться в прошлых версиях GNOME. Для сохранения совместимости с разными выпусками GNOME разработчикам дополнений необходимо загрузить в каталог extensions.gnome.org два варианта дополнения: один для GNOME 45 и следующих за ним выпусков, а другой для старых выпусков GNOME.

Нарушение совместимости вызвано переходом GNOME Shell с собственной системы импорта модулей, специфичной для JavaScript runtime GJS (GNOME JavaScript на базе движка SpiderMonkey от проекта Mozilla), на стандартный механизм импорта, JavaScript-модулей (ESM), описанный в спецификации ECMAScript 6 и применяемый в web-приложениях. Отличия сводятся к тому, что ранее в дополнениях к GNOME Shell для подключения JavaScript-модулей и GObject-обвязок применялся объект "imports", а теперь должен использоваться оператор "import".

   // Было
   const GLib = imports.gi.GLib;
   const Main = imports.ui.main;

   imports.gi.versions.Soup = '3.0';
   const Soup = imports.gi.Soup;

   // Стало
   import GLib from 'gi://GLib';
   import * as Main from 'resource:///org/gnome/shell/ui/main.js';

   import Soup from 'gi://Soup?version=3.0';

Для работы в GNOME 45 и более новых выпусках в дополнениях необходимо изменить код, связанный с загрузкой библиотек, обеспечить присутствие в файле extension.js методов enable()/disable() в классе default и при использовании prefs.js определить подкласс ExtensionPreferences с методом fillPreferencesWindow. Изменённую версию дополнения следует привязать к новыми выпускам GNOME Shell через параметр '"shell-version": [ "45" ]' в metadata.json. Для GNOME до выпуска 45 можно сформировать отдельные варианты дополнений, также обеспечив в них привязку к старым версиям через параметр shell-version в metadata.json. Протестировать изменённые дополнения можно воспользовавшись сборками GNOME OS.

top 2 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 1 year ago (1 children)

Стабильность — признак мастерства.

[–] [email protected] 1 points 1 year ago

Тащемта, как обычно. Видишь новую версию гнома - не обновляешься пару месяцев :roflanebalo: