В преддверии выпуска пользовательского окружения Enlightenment 18 увидел свет стабильный релиз набора библиотек EFL 1.8 (Enlightenment Foundation Library). Библиотеки EFL позволяют создавать визуально привлекательные графические интерфейсы, отличающиеся компактностью, низким потреблением ресурсов и высокой производительностью. Несмотря на изначальное развитие в качестве базиса для окружения Enlightenment, компоненты EFL часто используются для построения интерфейсов потребительской электроники и мобильных устройств. Например, EFL является составной частью мобильной платформы Tizen, используются в бытовой технике Electrolux, телефонах Samsung, а также в продуктах компаний ProFUSION, Free.fr и Calaos.

Выпуск EFL 1.8 примечателен уходом от практики разрозненной поставки компонентов EFL в форме набора отдельно поставляемых архивов библиотек. Отныне библиотеки Ecore, Edje, Eet, Eeze, Efreet, Eina, Eio, Embryo, Emotion, Ethumb, Evas и Evil объединены в одно дерево исходных текстов и доступны для загрузки в одном архиве. В отдельные архивы вынесены только виджеты Elementary, набор Emotion Generic Players с реализацией базовых компонентов для проигрывания медиаконтента (в настоящее время доступна только одна реализация на основе libvlc) и коллекция модулей Evas Generic Loaders, позволяющих организовать загрузку форматов svg, xcf, pdf, ps, ppt, doc, docx, xls, avi, mkv, wmv и т.д. Модули из состава Emotion Generic Players и Evas Generic Loaders выполнены в форме обособленных процессов, взаимодействующих с базовой программой через разделяемую память и неименованные каналы, что позволяет обеспечить продолжение работы программы на базе EFL, даже в случае краха обработчика медиаконтента.

Другие изменения:

  • Обеспечена полная поддержка Wayland 1.3. Работа в роли клиента, функционирующего поверх Wayland, доведена до готовности к применению в повседневной практике;
  • Новая библиотека Eldbus, выступающая надстройкой над DBus API и заменившая собой ранее доступный модуль E_Dbus. Поддержка E_dbus пока сохранена, но данная библиотека больше не будет обновляться;
  • Новая библиотека Ephysics, предоставляющая средства для использования движка симуляции физических процессов Bullet Physics Engine в приложениях на базе EFL. Ephysics обеспечивает связку Bullet с библиотеками Ecore и Evas;
  • Новая библиотека Ecore Audio, предоставляющая API для работы со звуком. API пока носит экспериментальный характер, но сама библиотека достаточно стабильна и уже используется в Edje для обработки звуковых эффектов в темах оформления;
  • Добавлена новая тема оформления виджетов Elementary, которая напоминает тёмное оформление, ранее используемое в первых выпусках Enlightenment 0.7, но имеет заметно более высокое качество и уровень проработки. Новой темой в том числе поддерживаются все элементы окружения Enlightenment, что позволяет использовать её как для EFL, так и для Enlightenment;
  • В Evas Generic Loaders добавлена обвязка для использования LibreOffice для генерации миниатюр типовых офисных форматов документов;
  • Cистема программного рендеринга в Evas переведена на асинхронный механизм работы, что позволило обеспечить возможность параллельного выполнения операций отрисовки во время выполнения основной логики работы приложения. Рендеринг выполняется в отдельной фоновой нити. Указанное изменение позволяет избежать задержек в отрисовке и более полно использовать ресурсы многоядерных систем.
  • Представлена новая объектная модель Eo, унифицирующая доступ ко всем объектам EFL и позволяющая уйти от прямого использования указателей на объекты EFL в пользу вызова по таблице с идентификаторами объектов. В настоящее время унификация ещё не завершена и API носит экспериментальный характер. Полнофункциональная реализация Eo ожидается в выпуске EFL 2.0, в котором будут предоставлены соответствующие интерфейсы, множественное наследование, унифицированные callback-прототипы, интроспекция.

Состав EFL:

  • Eina - библиотека с реализацией различных типов данных (массив, хэш, список, дерево) и полезных инструментов (работа с логами, оценка производительности, преобразование форматов и т.д.).
  • Eet - библиотека для записи произвольного набора блоков данных в файл и их последующего частого чтения в произвольном порядке.
  • Evas - система рендеринга для организации вывода на экран. Evas оперирует содержимым экрана как сценой, на которой размещаются определённые объекты, состояние которых в последующем отслеживается. Подобный подход, абстрагированный от размещения экранных элементов, позволяет разрабатывать интерфейс пользователя с точки зрения дизайнера, а не программиста (в коде достаточно определить только логику и не думать о прорисовке и выводе на экран). Evas также абстрагирует метод вывода, что позволяет использовать один и тот же код в сочетании как с программным рендерингом, так и с OpenGL. При этом над сценой можно проделывать такие операции как масштабирование, вращение и 3D-трансформации. Evas обеспечивает замечательную производительность даже при использовании программных методов рендеринга, без задействования аппаратной акселерации вывода.
  • Ecore - библиотека для организации цикла обработки событий, имеющая в своем арсенале набор модулей для упрощения связанных с обработкой событий задач, таких как работа с X, Evas, нитями, сетевыми соединениями и т.п.
  • Embryo - библиотека для написания небольших компилируемых приложений для встраиваемых устройств.
  • Edje - графическая библиотека, отделяющая внешний вид от кода (оформление задаётся в виде загружаемого из файла шаблона). По своей сути Edje занимает нишу где-то между HTML+CSS и Flash/PSD/SVG. При помощи данной библиотеки можно сформировать насыщенный пользовательский интерфейс, снабжённый анимированными визуальными эффектами и поддерживающий динамическое оформление (внешний вид можно полностью поменять просто сменив EDJ-шаблон и не трогая код, при этом, в отличие от визуальных тем, порядок расположения элементов может быть произвольно изменён).
  • Efreet - библиотека, позволяющая использовать в приложениях некоторые спецификации Freedesktop.org по работе с пиктограммами, Desktop-файлами и меню.
  • Eldbus - надстройка над DBus API, позволяющая использовать его в EFL-приложениях и интегрировать в основной цикл обработки событий Ecore/main.
  • Eeze - библиотека для организации взаимодействия с внешними устройствами через udev, hal и другие механизмы.
  • Expedite - инструментарий для измерения производительности, который может тестировать различные движки Evas, такие как X11, XRender, OpenGL, SDL и DirectFB. Методика тестирования максимально приближена к реальным условиям.
  • Evil - реализация уровня совместимости для работы на платформе Windows.
  • Eio - абстрактный интерфейс для доступа к файловой системе и реализации асинхронного ввода/вывода;
  • Emotion - библиотека для интеграции в EFL-приложения поддержки проигрывания аудио и видео контента. Проигрывание видео может осуществляться с использованием Gstreamer, Xine или других внешних плагинов (например, VLC), при этом видео отображается как стандартный объект в Evas.
  • Ethumb - библиотека для формирования эскизов изображений, соответствующих стандартам freedesktop.org. Ethumb реализован в виде сервиса dbus и клиентской библиотеки, взаимодействующей с данным сервисом.
  • Elementary - набор виджетов с готовой реализацией разнообразных графических элементов (от кнопок и элементов управления, до календаря и модуля редактирования текста).


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