Page MenuHomePhabricator

Efl 1 18 Release Announcement
Updated 2,296 Days AgoPublic

Enlightenment Foundation Libraries 1.18 Release

After six months of development work we are proud to announce the release of
version 1.18 of the Enlightenment Foundation Libraries. In these six months we got
over 3300 commits from 105 authors. Around 2300 more compared to the last release
(which took half the time, to be fair). Great job everyone! Some highlights are listed below.



What's New

Even if we had only six months a lot has happened during the 1.18 release cycle.
We only cover some highlights here. For the full list please look at the NEWS file,
if you are interested in the details. As usual we have been working on fixing bugs,
optimising our code for speed and memory footprint and adding new features.

Library Merges

The biggest item from a user perspective is the merge of all our remaining libraries into
EFL. We started this effort with the 1.8 and now concluding it in the 1.18 release cycle
a few years later.
We merged the Elementary widget toolkit as well as our evas generic loaders and
emotion generic players packages into the EFL source tree and will from 1.18 onwards
provide one git tree and one set of tarball releases only.

Interfaces Ground Work for a New API

All the work going into Eo and Eolian have been the ground work for our new API. Based
on the Eo object system and using abstracted eo files to generate C code and bindings
with Eolian.
The last big missing piece is defining the interfaces and API's in these eo files. A lot of work
have been done in this regard during this release cycle. A lot interfaces and API's have
been designed and common code shared between the current and upcoming API's.
Its not fully ready yet so it is still hidden as EO or beta API.

Wayland, DRM and Input

With Elput we introduced a new library for input handling based on libinput. Elput is
mainly used by the Wayland backend right now. The Wayland drag & drop supported
received cancel as well as multi-layer support and was updated to version 3 of the protocol.
Ecore_Drm2 was introduced to overcome the shortcomings of ecore_drm and our internal
code as well as Enlightenment have already been ported over.
Furthermore we implemented an extension to support session recovery in Wayland that allows
EFL applications to survive a compositor restart.

EO and Eolian

Together with the work on EFL interfaces Eolian and Eo gained some new functionality.
Eolian got a new typesystem API and added support for static and terminated arrays, a
stringshare builtin and hot events.
Eo had some more syntax changes but should hopefully be settled down now. We kept it
in beta for this release only to allow for flexibility regarding our unfinished EFL interface work.


EFL gained a virtual path subsystem to handle paths like ~/file.jpg
or in the future also paths like to be looked up.


With efl-js we now have JavaScript eolian bindings available. These allows us to run
with Node.JS, libv8 or libuv.


Elementary saw a lot of smaller fixes and improvements during this cycle. Real-time file name
search in entries in the file selector, animated and accelerated wheel in scroller and a
colorclass editor.
But we also added two new widgets. Elm code, which is very useful for code editing in IDEs
like EDI, and the nstate widget which re-factors some existing code like the check widget.

FDO Icon Theme

On the visual side a lot work has gone into providing a complient icon theme.
We had to fill some gaps on and updated existing icons as well. This should give a more
pleasant visual experience on the desktop and in applications.

Portability (Windows, MacOSX, OpenBSD)

To further improve our Windows support we added Windows specific copy & paste
as well as cursor support during this release.
The Cocoa backend for MacOSX received various fixes and was marked as stable to be used.
We also improved our thread and semaphore usage for OpenBSD which fixed a few problems
on these systems e.g. with edje_cc.


Together with this release we are happy to announce that the EWebkit team is doing a
release with their work matching the efl 1.18.
It contains various webkit core as well as EWebkit specific enhancements. See the
NEWS file for details and the page for further instructions on
building. We hope to keep future releases of EWebkit aligned with the EFL release schedule.


We found a consistency bug with swallows where the *pass_events* property (which is the
inverse of the *mouse_events* flag) was controlled by the theme correctly (explicitly) but
*repeat_events* was only "ad-hoc" controlled, not as it should be. It was only set to TRUE
*IF* the Edje file set it to TRUE, but was otherwise left alone. This inconsistency was not
intended nor is it obvious behavior given the behavior of all other properties of a swallowed
object that are now controlled FULLY by Edje (visibility, pass events, geometry, stacking, ...).
So this has changed in 1.18 and now the *repeat_events* property is fully controlled by the
Edje file (it's EDC source), with of course the default being FALSE.


(git log --since="Tue Feb 2 10:24:12 2016 +0100" --pretty=oneline v1.17.0..v1.18.0 | wc -l)
Number of commits in 1.18: 3364
Number of commits in 1.17: 1026

(git shortlog --since="Tue Feb 2 10:24:12 2016 +0100" -ns v1.17.0..v1.18.0 | wc -l)
Number of authors in 1.18: 105
Number of authors in 1.17: 74

The next one is not very useful for this release as it includes the files from the merges of
the three other repos we did during this cycle.
(git diff --stat v1.17.0..v1.18.0 | tail -1)
5072 files changed, 1149591 insertions(+), 87002 deletions(-) in 1.18
930 files changed, 112975 insertions(+), 64377 deletions(-) in 1.17

Building and Dependencies

If you have an existing EFL or Elementary install, you may wish to delete its header files and libraries before compiling and installing to avoid possible conflicts during compilation. Please refer to the README for a full list of dependencies, explanations on configure flags and other relevant information. Default dependencies are:

  • bullet
  • libpng
  • libjpeg
  • gstreamer (1.x, 0.10 support optional. Ensure all codecs you want are installed.)
  • zlib
  • luajit (lua 5.1 or 5.2 support optional)
  • libtiff
  • openssl
  • curl
  • dbus
  • libc
  • fontconfig
  • freetype2
  • fribidi
  • libpulse
  • libsndfile
  • libx11
  • libxau
  • libxcomposite
  • libxdamage
  • libxdmcp
  • libxext
  • libxfixes
  • libxinerama
  • libxrandr
  • libxrender
  • libxss
  • libxtst
  • libxcursor
  • libxp
  • libxi (2.2 or newer)
  • libgl (opengl/glx or opengl-es2/egl)
  • giflib
  • util-linux (limbount + libblkid)
  • systemd / libudev
  • poppler / poppler-cpp
  • libraw
  • libspectre
  • librsvg

Recommended requirements (highly recommended):

  • harfbuzz
  • systemd
  • libwebp
  • liblz4
  • vlc (libvlc)

Enable these with configure options:

--enable-xinput22 \
--enable-systemd \
--enable-image-loader-webp \
--enable-harfbuzz \
--enable-multisense \

On linux to get framebuffer support you may want to also do:

If you want wayland support also add:

At runtime if you want thumbnailing for DOC/PPT/XLS etc. files also provide:

Last Author
Last Edited
Aug 16 2016, 6:58 AM