~~Title: About EFL~~ ==== EFL ==== [[download|Download EFL Here]] Code quality - [[https://scan.coverity.com/projects/552|EFL Coverity scan status]] - [[https://scan.coverity.com/projects/553|Elementary Coverity scan status]] {{:efl-core.png?nolink |}} EFL is made up of quite a few libraries that build on top of each other in layers, steadily becoming higher-level, yet allowing access to each level as they go. The higher up you go, the less you have to do yourself. Elementary is about as high up as you get, while you still access layers below it for day to day things as there is no need for it to wrap things that work perfectly well as-is. All of EFL exposes its APIs by default in C, with several bindings available. We are now also working on supporting bindings for various language as first-class-citizens in EFL by auto-generating the bindings directly from our new object orientation infrastructure for C. We stick to C mostly because the libraries have been around for a long time, were originally written in C and the developers who write the libraries prefer C. We add OO features in C with tools and infrastructure where needed. Also moving from C would limit the audience. C programmers won't be able to access a %%C++%% API (whereas a %%C++%% programmer can access both C and %%C++%%). That is partly why we aim to auto-generate bindings so programmers of various languages can get native-like APIs for their chose language from the same core EFL API set. Our components are divided into named libraries or projects. Core EFL components are: ^Component ^ Description ^ |Evas |Core scene graph and rendering | |Eina |Data structures and low level helpers | |Edje |UI layout & animation data files for themes | |Eet |Data (de)serialization and storage | |Ecore |Core loop and system abstractions like X11 | |Efreet |Freedesktop.org standards handling | |Eldbus |D-Bus glue and handling | |Embryo |Tiny VM and compiler based on Pawn | |Eeze |Device enumeration and access library | |Emotion |Video decode wrapping, glue and abstraction | |Ethumb |Thumbnailing handler | |Ephysics |Physics (bullet) wrapper and Evas glue | |EIO |Asynchronous I/O handling | |Evas Generic Loaders |Extra image loaders for complex image types | |Emotion Generic Players |Extra video decoders (for VLC) | |Elementary |Widgets and high level abstractions | Binding support exists for several languages such as: * Python * Javascript * %%C++%% * Ruby * Lua EFL was originally intended to provide the core for Enlightenment, but has grown to do much more. In trying to keep EFL lean, it has found a use for embedded devices all the way up to powerful desktop behemoths. These libraries already power millions of systems, from mobile phones to set top boxes, desktops, laptops, game systems and more. It is only now being recognized for its forward-thinking approaches, as products and designers want to do more than the boring functional user experiences of the past. This is where EFL excels. [[http://www.free.fr|Free.fr]] has shipped millions of set top boxes in France, powered by EFL. The [[http://wiki.openmoko.org/wiki/Neo_FreeRunner|Openmoko Freerunner]] sold thousands of devices with EFL and Enlightenment on them. [[http://www.yellowdoglinux.com/|Yellow Dog Linux]] for the Sony PS3 ships with Enlightenment as the default. EFL has been used on printers, netbooks and more. It powers the [[http://www.samsung.com/us/mobile/wearable-tech|Samsung Galaxy Gear]] watches, is behind the [[http://www.samsung.com/in/consumer/mobile-phone/mobile-phone/dual-sim-phone/SM-Z130HZKDINS|Samsung Z1 Phone]] and the [[http://www.samsung.com/us/video/4k-suhd-tv|Samsung SUHD Smart TVs]] that run Tizen. Cameras also use Enlightenment and EFL such as the [[http://www.samsung.com/uk/discover/camera/find-your-signature-with-samsung-nx1/|Samsung NX1]] and the [[http://www.samsung.com/global/nx/nx300m/|Samsung NX300M]] smart Camera. Also GPS units such as models from [[https://www.moncoyote.com/|Coyote]] Run EFL on a lean and mean RTOS. Also Web conference cameras such as [[https://www.biscotti.com/|Biscotti]] use EFL to do their work.