Карстен Хайцлер (Carsten Haitzler, Rasterman), основатель и лидер проекта Enlightenment, представил релиз набора библиотек EFL (Enlightenment Foundation Library) 1.1, который начиная с данного выпуска получил статус альфа-версии (ранее у библиотек был статус экспериментальных выпусков). Входящие в состав EFL библиотеки составляют основу проекта Enlightenment 17, дискуссия о выпуске первого релиза которого недавно развернулась в списке рассылки разработчиков проекта. Перевод EFL на стадию альфа-тестирования означает, что в ближайшее время можно ждать появление первой альфа версии для оконного менеджера и других компонентов пользовательской оболочки Enlightenment 17.
Библиотеки EFL позволяют создавать визуально привлекательные графические интерфейсы, отличающиеся компактностью, низким потреблением ресурсов и высокой производительностью. Данные качества делают EFL привлекательным решением для построения интерфейсов потребительской электроники и мобильных устройств. Например, системы на базе EFL уже используются в продуктах компаний Electrolux, Samsung, ProFUSION, Free.fr и Calaos.
Характеристики основных компонентов EFL:
- Eina 1.1.0 - библиотека с реализацией различных типов данных (массив, хэш, список, дерево) и полезных инструментов (работа с логами, оценка производительности, преобразование форматов и т.д.).
В новой версии добавлены следующие новшества: функции преобразования для UTF8, функция eina_list_move для прямого перемещения узлов между списками, API для парсинга SAX XML, API для вставки отсортированных значений, API для перепаковки mempool,
eina_file API для переносимого маппинга памяти, обвязка вокруг средств блокировки нитей, prefix API для определения базового пути к приложению или библиотеке, refcount macro API, binbuf с реализацией бинарных буферов, eina_hash_free_cb_set API, eina_main_loop_is API, eina_strbuf_manage_new/eina_ustrbuf_manage_new APIs, eina_xattr API и eina_hash_murmur3 API;
- Eet 1.5.0 - библиотека для записи произвольного набора блоков данных в файл и их последующего частого чтения в произвольном порядке.
В новой версии проведены дополнительные оптимизации потребления памяти и производительности, добавлен API EET_DATA_DESCRIPTOR_ADD_LIST_STRING для работы со списками строк, API eet_node для манипулирования узлами, eet_alias_get API, eet_data_xattr_cipher_get/eet_data_xattr_cipher_set API и EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY API;
- Evas 1.1.0 - система рендеринга для организации вывода на экран. Evas оперирует содержимым экрана как сценой, на которой размещаются определенные объекты, состояние которых в последующем отслеживается. Подобный подход, абстрагированный от размещения экранных элементов, позволяет разрабатывать интерфейс пользователя с точки зрения дизайнера, а не программиста (в коде достаточно определить только логику и не думать о прорисовке и выводе на экран). Evas также абстрагирует метод вывода, что позволяет использовать один и тот же код в сочетании как с программным рендерингом, так и с OpenGL. При этом над сценой можно проделывать такие операции как масштабирование, вращение и 3D-трансформации. Evas обеспечивает замечательную производительность даже при использовании программных методов рендеринга, без задействования аппаратной акселерации вывода.
В новой версии реализовано около 60 улучшений, среди которых: поддержка движка GL Cocoa, API для работы с очень большими изображениями, поддержка цветовых схем NV12 и MT12 для объектов с изображениями, дополнительные параметры управления шрифтами, поддержка кэширования GL-шейдеров и текстур на диске, поддержка внешнего процесса-загрузчика для такого контента, как xcf, pdf и видео, загрузчики для ICO, WBMP и PSD, увеличена скорость кодирвоания и декодирования JPEG, проведены оптимизации производительности для различных компонентов. Расширениы возможности, связанные с блоками для работы с текстом: поддержка спецсмволов, вертикального выравнивания, автовыравнивание, формы для паролей, различные режимы переноса, оптимизация производительности;
- Ecore 1.1.0 - библиотека для организации цикла обработки событий, имеющая в своем арсенале набор модулей для упрощения связанных с обработкой событий задач, таких как работа с X, Evas, нитями, сетевыми соединениями и т.п.
В новой версии добавлено около 40 новых функций, улучшена поддержка IPv6, проведена оптимизация потребления памяти, улучшена поддержка платформ Windows и Mac OS X;
- Embryo 1.1.0 - библиотека для написания небольших компилируемых приложений для встраиваемых устройств.
В новой версии улучшена поддержка платформы Windows;
- Edje 1.1.0 - графическая библиотека, отделяющая внешний вид от кода (оформление задается в виде загружаемого из файла шаблона). По своей сути Edje занимает нишу где-то между HTML+CSS и Flash/PSD/SVG. При помощи данной библиотеки можно сформировать насыщенный пользовательский интерфейс, снабженный анимированными визуальными эффектами и поддерживающий динамическое оформление (внешний вид можно полностью поменять просто сменив EDJ-шаблон и не трогая код, при этом, в отличие от визуальных тем, порядок расположения элементов может быть произвольно изменен).
В новой версии добавлен эффект зеркала, автоматическое выравнивание текста, расширенные опции управления курсором, возможность управления направлением теней, новые виды интерполяции (ACCEL_FAC, DECEL_FAC, SIN_FAC, DIVIS, BOUNCE, SPRING), дополнительные сигналы для обработки событий, связанных с буфером обмена, API для управления параметрами шаблонов панелей ввода данных. Значительно расширен API для скриптов на языке Lua;
- Efreet 1.1.0 - библиотека, позволяющая использовать в приложениях некоторые специфкации Freedesktop.org по работе с пиктограммами, Desktop-файлами и меню.
В новой версии добавлена поддержка кэширования в памяти eet-файлов, постоянное кэширование иконок, ускорение операций по обработке строк, ускорение работы с маской "*" в именах файлов;
- E_Dbus 1.1.0 - надстройка над DBus API, позволяющая использовать его в EFL-приложениях и интегрировать в основной цикл обработки событий Ecore/main.
В новой версии добавлена поддержка API connman-0.7x, обеспечена поддержка протокола нотификации 1.2, добавлены функции e_notification_action_id_get, e_notification_action_name_get и e_notification_image_init;
- Eeze 1.1.0 - библиотека для организации взаимодействия с внешними устройствами через udev, hal и другие механизмы.
В новой версии добавлен API для монтирования дисковых разделов, увеличено число функций, связанных с получением информации о дисках, добавлена утилита eeze_scanner;
- Expedite 1.1.0 - инструментарий для измерения производительности, который может тестировать различные движки Evas, такие как X11, XRender, OpenGL, SDL и DirectFB. Методика тестирования максимально приближена к реальным условиям.
Дополнительные компоненты, развиваемые в рамках проекта Enlightenment:
- Elementary - набор виджетов с готовой реализацией разнообразных графических элементов (от кнопок и элементов управления, до календаря и модуля редактирования текста);
- Enlightenment - оконный менеджер, на базе которого, в сочетании с такими компонентами, как файловый менеджер, набор виджетов и рабочий стол, формируется десктоп-окружение;
- Ephoto - менеджер для управления коллекцией фотографий;
- Eve - web-браузер на базе движка WebKit (используется библиотека EFLWebKit);
- Editje - визуальный редактор для проектирования пользовательского интерфейса, оперирующий файлами .edc и .edj;
- Eio - абстрактный интерфейс для доступа к файловой системе;
- Efreet - библиотека, позволяющая использовать в приложениях некоторые специфкации Freedesktop.org по работе с пиктограммами, Desktop-файлами и меню;
- Ethumb - библиотека для формирования эскизов изображений;
- Биндинги для языков Python, Javascript, Vala, C++, Perl и Ruby;
Отдельно отмечаются первые успехи отрисовки интерфейса Enlightenment E17 c использованием дисплейного сервера Wayland:
|