Несколько дней назад было объявлено информация об изменении что может не понравиться всем пользователям Gnome, и это в новой версии GNOME 45. Были внесены некоторые изменения, затрагивающие плагины окружения.
В частности, упоминается, что Изменена организация загрузки модулей в плагинах для GNOME Shell., что приведет к нарушению обратной совместимости и потребует внесения изменений в плагины.
Упоминается, что:
JavaScript зародился в веб-браузерах, чтобы добавить немного интерактивности к статичным страницам. Небольшие фрагменты кода не нужно было разбивать на несколько файлов, поэтому в языке не было механизма для этого.
Это стало проблемой, когда люди начали писать более крупные программы на JavaScript, поэтому в такие среды, как node.js и GJS, были добавлены собственные системы импорта для организации кода в несколько файлов. В результате разработчикам и инструментам было трудно перейти из одной среды в другую.
Как таковой, проблема, с которой будут иметься плагины разработан для предыдущих версий GNOME и что Они не смогут работать в следующей версии GNOME 45. происходит из-за нарушения совместимости при переключении с собственной системы импорта модулей, специфичной для среды выполнения JavaScript GJS (JavaScript GNOME на основе движка SpiderMonkey проекта Mozilla), на стандартный механизм импорта модуля JavaScript (ESM), описанный в ECMAScript.
Импорт устаревших версий по-прежнему поддерживается на Extensions.gnome.org, но вам нужно будет загрузить поддержку до и после GNOME 45 для поддержки как LTS, так и обычных дистрибутивов.
Кроме того, упоминается, что Различия сводятся к тому, что что ранее, помимо GNOME Shell, был использован объект «импорт»» для подключения модулей JavaScript и ссылок GObject, но теперь необходимо использовать оператор «импорт».
С другой стороны, также упоминается, что плагины, адаптированные для работы в GNOME 45, не смогут быть установлены в более старых версиях GNOME и что для обеспечения совместимости с различными версиями GNOME разработчики плагинов должны загружать два варианта плагинов в расширения. gnome.org — один для GNOME 45 и более поздних версий, а другой — для более старых версий GNOME.
Ну, есть небольшая загвоздка: модули и устаревший импорт на практике несовместимы.
Модули загружаются иначе, чем скрипты, и некоторые операторы, а именно импорт и экспорт, действительны только в модулях. Это означает, что попытка импортировать модуль с устаревшей системой приведет к синтаксической ошибке, если модуль использует одно из этих объявлений (примерно так же, как если бы Папа был католиком).
Модули также скрывают извне все, что не экспортируется явно. Таким образом, хотя технически возможно импортировать скрипт как модуль, это примерно так же полезно, как импорт пустого файла.
В конце концов разработчики упоминают, что для работы над GNOME 45 и более новые версии, расширения должны изменить код, связанный с загрузкой библиотек, убедитесь, что файл Extension.js содержит методы Enable()/disable() в классе по умолчанию, и при использовании prefs.js определите ExtensionPreferences. подкласс с методом fillPreferencesWindow.
Модифицированную версию плагина следует связать с новыми версиями GNOME Shell через параметр «shell-version»: [ «45» ]» в файле Metadata.json. Для GNOME более ранней версии, чем версия 45, вы можете создавать отдельные версии плагинов, также гарантируя, что они связаны с более старыми версиями через параметр оболочки-версии в файле метаданных.json. Вы можете протестировать измененные дополнения, используя сборки ОС GNOME.
Кроме того, предоставляется руководство по переносимости, с которым можно ознакомиться на странице следующую ссылку. И последнее, но не менее важное: стоит отметить, что запуск новой версии Gnome 45 запланирован на 20 сентября. (на завтра).
Если вы интересно узнать о нем больше, вы можете проверить детали в по следующей ссылке.