[e-dev-day-us-2015][9/9] high level application development with elua (daniel kolesa)
TRANSCRIPT
High Level Application Developmentwith Elua
... or what happens when C sucks too much
Daniel KolesaSamsung Open Source Group
[email protected]@octaforge
EFL Developer Day US 2015
Overview
I Sick and tired of writing apps in C
I There has to be a better way
I Scripting languages?
I They mostly suck
Overview
I Sick and tired of writing apps in C
I There has to be a better way
I Scripting languages?
I They mostly suck
Overview
I Sick and tired of writing apps in C
I There has to be a better way
I Scripting languages?
I They mostly suck
Overview
I Sick and tired of writing apps in C
I There has to be a better way
I Scripting languages?
I They mostly suck
Overview
I Sick and tired of writing apps in C
I There has to be a better way
I Scripting languages?
I They mostly suck
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Why do most scripting languages suck?
I Slow
I Lack of a proper type system
I Tons of useless bloat we don’t need
I Inherently sucky to bind
I Resource heavy
I Battery eating
I Let’s still give them a shot
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Python
I An obvious choice at first
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Ruby
I A not so obvious choice
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to embed
I Language design issues
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
Perl
I You serious?
I Tons of problems
I Slooooow
I Bloated
I No decent unified API
I Hard to... ok, that’s enough, see the pattern?
JavaScript
I Popular these days
I Fairly decent quality JIT implementations
I Weird APIs
I Language is pretty bad
I But probably a better choice than the above
JavaScript
I Popular these days
I Fairly decent quality JIT implementations
I Weird APIs
I Language is pretty bad
I But probably a better choice than the above
JavaScript
I Popular these days
I Fairly decent quality JIT implementations
I Weird APIs
I Language is pretty bad
I But probably a better choice than the above
JavaScript
I Popular these days
I Fairly decent quality JIT implementations
I Weird APIs
I Language is pretty bad
I But probably a better choice than the above
JavaScript
I Popular these days
I Fairly decent quality JIT implementations
I Weird APIs
I Language is pretty bad
I But probably a better choice than the above
JavaScript
I Popular these days
I Fairly decent quality JIT implementations
I Weird APIs
I Language is pretty bad
I But probably a better choice than the above
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Io, Self, Squirrel etc.
I Many different choices
I Mostly slow interpreters
I Some are decent-ish languages
I Mostly fairly light on resources
I Not good enough
I People would look at us weird
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Lua
I A popular scripting language
I Fairly good language with a few quirks
I Light on resources
I Great embedding API
I Interpreted... :(
I LuaJIT saves the day
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why is LuaJIT awesome?
I One of the fastest JIT compilers around
I Very light on resources
I Performance close to C for real world scenarios
I The exact same API as Lua!
I API and ABI compatible with Lua 5.1
I Portable bytecode
I We have a winner
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
Why LuaJIT sucks
I VM written in assembly - only a handful of architectures
I OTOH, it’s good enough
I Classic Lua C API is not JITed
I A handful of other things not JITed
I No multithreading support
I LuaJIT 2.1 significantly improves the situation
What is it supposed to achieve?
I Rapid application development
I Clean, high level code
I Lightweight, good performance
I Easier app distribution (app store model)
I More safety (memory etc.)
What is it supposed to achieve?
I Rapid application development
I Clean, high level code
I Lightweight, good performance
I Easier app distribution (app store model)
I More safety (memory etc.)
What is it supposed to achieve?
I Rapid application development
I Clean, high level code
I Lightweight, good performance
I Easier app distribution (app store model)
I More safety (memory etc.)
What is it supposed to achieve?
I Rapid application development
I Clean, high level code
I Lightweight, good performance
I Easier app distribution (app store model)
I More safety (memory etc.)
What is it supposed to achieve?
I Rapid application development
I Clean, high level code
I Lightweight, good performance
I Easier app distribution (app store model)
I More safety (memory etc.)
What is it supposed to achieve?
I Rapid application development
I Clean, high level code
I Lightweight, good performance
I Easier app distribution (app store model)
I More safety (memory etc.)
How does it work?
I Elua library and binary
I Library provides Elua-related C utilities for the Lua state
I Binary is a minimal application launcher
I Together they set up Lua state + ecore main loop
I Most of Elua is written in Lua itself
How does it work?
I Elua library and binary
I Library provides Elua-related C utilities for the Lua state
I Binary is a minimal application launcher
I Together they set up Lua state + ecore main loop
I Most of Elua is written in Lua itself
How does it work?
I Elua library and binary
I Library provides Elua-related C utilities for the Lua state
I Binary is a minimal application launcher
I Together they set up Lua state + ecore main loop
I Most of Elua is written in Lua itself
How does it work?
I Elua library and binary
I Library provides Elua-related C utilities for the Lua state
I Binary is a minimal application launcher
I Together they set up Lua state + ecore main loop
I Most of Elua is written in Lua itself
How does it work?
I Elua library and binary
I Library provides Elua-related C utilities for the Lua state
I Binary is a minimal application launcher
I Together they set up Lua state + ecore main loop
I Most of Elua is written in Lua itself
How does it work?
I Elua library and binary
I Library provides Elua-related C utilities for the Lua state
I Binary is a minimal application launcher
I Together they set up Lua state + ecore main loop
I Most of Elua is written in Lua itself
Bindings
I Any decent application runtime needs APIs
I Writing bindings is a pain in the ass
I Maintaining bindings is a bigger pain in the ass
I What do?
Bindings
I Any decent application runtime needs APIs
I Writing bindings is a pain in the ass
I Maintaining bindings is a bigger pain in the ass
I What do?
Bindings
I Any decent application runtime needs APIs
I Writing bindings is a pain in the ass
I Maintaining bindings is a bigger pain in the ass
I What do?
Bindings
I Any decent application runtime needs APIs
I Writing bindings is a pain in the ass
I Maintaining bindings is a bigger pain in the ass
I What do?
Bindings
I Any decent application runtime needs APIs
I Writing bindings is a pain in the ass
I Maintaining bindings is a bigger pain in the ass
I What do?
Eolian
I Eolian parses our API definitions
I We can reuse Eolian data to generate correct Lua bindings
I No maintenance burden except the generator itself
Eolian
I Eolian parses our API definitions
I We can reuse Eolian data to generate correct Lua bindings
I No maintenance burden except the generator itself
Eolian
I Eolian parses our API definitions
I We can reuse Eolian data to generate correct Lua bindings
I No maintenance burden except the generator itself
Eolian
I Eolian parses our API definitions
I We can reuse Eolian data to generate correct Lua bindings
I No maintenance burden except the generator itself
Lualian
I Lualian is the Elua binding generator
I Itself a Lua application powered by Elua
I Easy to maintain and high level
I Bindings generated at EFL build time
Lualian
I Lualian is the Elua binding generator
I Itself a Lua application powered by Elua
I Easy to maintain and high level
I Bindings generated at EFL build time
Lualian
I Lualian is the Elua binding generator
I Itself a Lua application powered by Elua
I Easy to maintain and high level
I Bindings generated at EFL build time
Lualian
I Lualian is the Elua binding generator
I Itself a Lua application powered by Elua
I Easy to maintain and high level
I Bindings generated at EFL build time
Lualian
I Lualian is the Elua binding generator
I Itself a Lua application powered by Elua
I Easy to maintain and high level
I Bindings generated at EFL build time
How do our bindings work?
I LuaJIT provides a FFI interface
I This allows us to directly access C APIs
I Lualian generates a FFI-powered binding layer
How do our bindings work?
I LuaJIT provides a FFI interface
I This allows us to directly access C APIs
I Lualian generates a FFI-powered binding layer
How do our bindings work?
I LuaJIT provides a FFI interface
I This allows us to directly access C APIs
I Lualian generates a FFI-powered binding layer
How do our bindings work?
I LuaJIT provides a FFI interface
I This allows us to directly access C APIs
I Lualian generates a FFI-powered binding layer
Eo
I We have a Lua Eo layer
I This provides a native-feeling Eo Lua core
I Handles callbacks, method resolution and other things
I Generated bindings properly register bound classes with this
I Native-feeling APIs!
Eo
I We have a Lua Eo layer
I This provides a native-feeling Eo Lua core
I Handles callbacks, method resolution and other things
I Generated bindings properly register bound classes with this
I Native-feeling APIs!
Eo
I We have a Lua Eo layer
I This provides a native-feeling Eo Lua core
I Handles callbacks, method resolution and other things
I Generated bindings properly register bound classes with this
I Native-feeling APIs!
Eo
I We have a Lua Eo layer
I This provides a native-feeling Eo Lua core
I Handles callbacks, method resolution and other things
I Generated bindings properly register bound classes with this
I Native-feeling APIs!
Eo
I We have a Lua Eo layer
I This provides a native-feeling Eo Lua core
I Handles callbacks, method resolution and other things
I Generated bindings properly register bound classes with this
I Native-feeling APIs!
Eo
I We have a Lua Eo layer
I This provides a native-feeling Eo Lua core
I Handles callbacks, method resolution and other things
I Generated bindings properly register bound classes with this
I Native-feeling APIs!
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Other Elua APIs
I Elua also provides a collection of Lua utilities
I This includes a Lua-side object system
I Also bindings to most relevant Eina components
I Used by bindings
I Eo interacts with our Lua-side object system
I Completely transparent
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Distribution
I Bundled with EFL → always available
I App store to promote development and distribution of apps
I Well supported - encouraging people to write apps
I Closely matching EFL APIs → free documentation
I Needs self-contained package format (use eet?)
I Make it possible to run Elua apps on Tizen?
Where are we?
I Working, solid base
I Binding generator needs some work
I Elua library needs a lot of work
I EFL interfaces
Where are we?
I Working, solid base
I Binding generator needs some work
I Elua library needs a lot of work
I EFL interfaces
Where are we?
I Working, solid base
I Binding generator needs some work
I Elua library needs a lot of work
I EFL interfaces
Where are we?
I Working, solid base
I Binding generator needs some work
I Elua library needs a lot of work
I EFL interfaces
Where are we?
I Working, solid base
I Binding generator needs some work
I Elua library needs a lot of work
I EFL interfaces
EFL interfaces
I A linked project
I Design and implement EFL 2.0 APIs
I Eo based
I Why is this relevant to bindings?
EFL interfaces
I A linked project
I Design and implement EFL 2.0 APIs
I Eo based
I Why is this relevant to bindings?
EFL interfaces
I A linked project
I Design and implement EFL 2.0 APIs
I Eo based
I Why is this relevant to bindings?
EFL interfaces
I A linked project
I Design and implement EFL 2.0 APIs
I Eo based
I Why is this relevant to bindings?
EFL interfaces
I A linked project
I Design and implement EFL 2.0 APIs
I Eo based
I Why is this relevant to bindings?
Eo files
I Our current Eo files are not complete
I Missing enum definitions, structs etc.
I Complete Eo files → validation is possible
I Guaranteed definitions for types etc.
I Allows for proper binding generation
Eo files
I Our current Eo files are not complete
I Missing enum definitions, structs etc.
I Complete Eo files → validation is possible
I Guaranteed definitions for types etc.
I Allows for proper binding generation
Eo files
I Our current Eo files are not complete
I Missing enum definitions, structs etc.
I Complete Eo files → validation is possible
I Guaranteed definitions for types etc.
I Allows for proper binding generation
Eo files
I Our current Eo files are not complete
I Missing enum definitions, structs etc.
I Complete Eo files → validation is possible
I Guaranteed definitions for types etc.
I Allows for proper binding generation
Eo files
I Our current Eo files are not complete
I Missing enum definitions, structs etc.
I Complete Eo files → validation is possible
I Guaranteed definitions for types etc.
I Allows for proper binding generation
Eo files
I Our current Eo files are not complete
I Missing enum definitions, structs etc.
I Complete Eo files → validation is possible
I Guaranteed definitions for types etc.
I Allows for proper binding generation
What does this all mean?
I Our bindings are currently not fully functional
I Many will fail to load because of missing type definitions
I Dependencies are not correctly handled
I Elementary is not handled at all
I Our demos work with what we have + manually adjustedbindings
What does this all mean?
I Our bindings are currently not fully functional
I Many will fail to load because of missing type definitions
I Dependencies are not correctly handled
I Elementary is not handled at all
I Our demos work with what we have + manually adjustedbindings
What does this all mean?
I Our bindings are currently not fully functional
I Many will fail to load because of missing type definitions
I Dependencies are not correctly handled
I Elementary is not handled at all
I Our demos work with what we have + manually adjustedbindings
What does this all mean?
I Our bindings are currently not fully functional
I Many will fail to load because of missing type definitions
I Dependencies are not correctly handled
I Elementary is not handled at all
I Our demos work with what we have + manually adjustedbindings
What does this all mean?
I Our bindings are currently not fully functional
I Many will fail to load because of missing type definitions
I Dependencies are not correctly handled
I Elementary is not handled at all
I Our demos work with what we have + manually adjustedbindings
What does this all mean?
I Our bindings are currently not fully functional
I Many will fail to load because of missing type definitions
I Dependencies are not correctly handled
I Elementary is not handled at all
I Our demos work with what we have + manually adjustedbindings
Other issues
I Internationalization and localization
I Loading files from VFS/Eet and seamless API for that
I Sandboxing
I Startup time minimization
I Portable bytecode loading
Other issues
I Internationalization and localization
I Loading files from VFS/Eet and seamless API for that
I Sandboxing
I Startup time minimization
I Portable bytecode loading
Other issues
I Internationalization and localization
I Loading files from VFS/Eet and seamless API for that
I Sandboxing
I Startup time minimization
I Portable bytecode loading
Other issues
I Internationalization and localization
I Loading files from VFS/Eet and seamless API for that
I Sandboxing
I Startup time minimization
I Portable bytecode loading
Other issues
I Internationalization and localization
I Loading files from VFS/Eet and seamless API for that
I Sandboxing
I Startup time minimization
I Portable bytecode loading
Other issues
I Internationalization and localization
I Loading files from VFS/Eet and seamless API for that
I Sandboxing
I Startup time minimization
I Portable bytecode loading
EFL 1.15
I Correctly working bindings without manual modifications
I Maybe just wishful thinking
I Gotta get as close as possible
I EFL interfaces should be mostly designed
I Properly validating Eo files
EFL 1.15
I Correctly working bindings without manual modifications
I Maybe just wishful thinking
I Gotta get as close as possible
I EFL interfaces should be mostly designed
I Properly validating Eo files
EFL 1.15
I Correctly working bindings without manual modifications
I Maybe just wishful thinking
I Gotta get as close as possible
I EFL interfaces should be mostly designed
I Properly validating Eo files
EFL 1.15
I Correctly working bindings without manual modifications
I Maybe just wishful thinking
I Gotta get as close as possible
I EFL interfaces should be mostly designed
I Properly validating Eo files
EFL 1.15
I Correctly working bindings without manual modifications
I Maybe just wishful thinking
I Gotta get as close as possible
I EFL interfaces should be mostly designed
I Properly validating Eo files
EFL 1.15
I Correctly working bindings without manual modifications
I Maybe just wishful thinking
I Gotta get as close as possible
I EFL interfaces should be mostly designed
I Properly validating Eo files
EFL 1.16
I Initial proof-of-concept implementation of Bob
I Further stabilized Lua bindings
I Eoifying further EFL libraries
I Production-ready bindings
EFL 1.16
I Initial proof-of-concept implementation of Bob
I Further stabilized Lua bindings
I Eoifying further EFL libraries
I Production-ready bindings
EFL 1.16
I Initial proof-of-concept implementation of Bob
I Further stabilized Lua bindings
I Eoifying further EFL libraries
I Production-ready bindings
EFL 1.16
I Initial proof-of-concept implementation of Bob
I Further stabilized Lua bindings
I Eoifying further EFL libraries
I Production-ready bindings
EFL 1.16
I Initial proof-of-concept implementation of Bob
I Further stabilized Lua bindings
I Eoifying further EFL libraries
I Production-ready bindings
EFL 1.17
I Further Bob work
I Bob should start matching Edje in functionality
I Deprecation of non-luajit EFL builds
I Wider testing of Elua/Bob
I Initial Elua based applications!
EFL 1.17
I Further Bob work
I Bob should start matching Edje in functionality
I Deprecation of non-luajit EFL builds
I Wider testing of Elua/Bob
I Initial Elua based applications!
EFL 1.17
I Further Bob work
I Bob should start matching Edje in functionality
I Deprecation of non-luajit EFL builds
I Wider testing of Elua/Bob
I Initial Elua based applications!
EFL 1.17
I Further Bob work
I Bob should start matching Edje in functionality
I Deprecation of non-luajit EFL builds
I Wider testing of Elua/Bob
I Initial Elua based applications!
EFL 1.17
I Further Bob work
I Bob should start matching Edje in functionality
I Deprecation of non-luajit EFL builds
I Wider testing of Elua/Bob
I Initial Elua based applications!
EFL 1.17
I Further Bob work
I Bob should start matching Edje in functionality
I Deprecation of non-luajit EFL builds
I Wider testing of Elua/Bob
I Initial Elua based applications!
EFL 2.0
I Will take a while (several 1.x releases before that)
I Things have to be rock solid by then
I A lot of work
I Bob will be a thing
I Deprecation of Edje
EFL 2.0
I Will take a while (several 1.x releases before that)
I Things have to be rock solid by then
I A lot of work
I Bob will be a thing
I Deprecation of Edje
EFL 2.0
I Will take a while (several 1.x releases before that)
I Things have to be rock solid by then
I A lot of work
I Bob will be a thing
I Deprecation of Edje
EFL 2.0
I Will take a while (several 1.x releases before that)
I Things have to be rock solid by then
I A lot of work
I Bob will be a thing
I Deprecation of Edje
EFL 2.0
I Will take a while (several 1.x releases before that)
I Things have to be rock solid by then
I A lot of work
I Bob will be a thing
I Deprecation of Edje
EFL 2.0
I Will take a while (several 1.x releases before that)
I Things have to be rock solid by then
I A lot of work
I Bob will be a thing
I Deprecation of Edje
Entry point
I Everything starts in the Elua launcher
I Lua state gets initialized
I Elua supports application lookup path
I Apps get executed
I Ecore main loop is started
Entry point
I Everything starts in the Elua launcher
I Lua state gets initialized
I Elua supports application lookup path
I Apps get executed
I Ecore main loop is started
Entry point
I Everything starts in the Elua launcher
I Lua state gets initialized
I Elua supports application lookup path
I Apps get executed
I Ecore main loop is started
Entry point
I Everything starts in the Elua launcher
I Lua state gets initialized
I Elua supports application lookup path
I Apps get executed
I Ecore main loop is started
Entry point
I Everything starts in the Elua launcher
I Lua state gets initialized
I Elua supports application lookup path
I Apps get executed
I Ecore main loop is started
Entry point
I Everything starts in the Elua launcher
I Lua state gets initialized
I Elua supports application lookup path
I Apps get executed
I Ecore main loop is started
Module system
I Elua provides a custom module system that works outside ofLua’s
I Seamless (replaces require)
I Modules support init/shutdown callbacks
I Those take care of opening and closing the appropriate libs
Module system
I Elua provides a custom module system that works outside ofLua’s
I Seamless (replaces require)
I Modules support init/shutdown callbacks
I Those take care of opening and closing the appropriate libs
Module system
I Elua provides a custom module system that works outside ofLua’s
I Seamless (replaces require)
I Modules support init/shutdown callbacks
I Those take care of opening and closing the appropriate libs
Module system
I Elua provides a custom module system that works outside ofLua’s
I Seamless (replaces require)
I Modules support init/shutdown callbacks
I Those take care of opening and closing the appropriate libs
Module system
I Elua provides a custom module system that works outside ofLua’s
I Seamless (replaces require)
I Modules support init/shutdown callbacks
I Those take care of opening and closing the appropriate libs
Library system
I C libraries are opened and initialized as necessary
I Opened C libraries are cached and reference counted
I Eolian-generated bindings use this
I Symbols are retrieved and bound using C FFI
I This is wrapped in high level API (no FFI exposed to apps)
Library system
I C libraries are opened and initialized as necessary
I Opened C libraries are cached and reference counted
I Eolian-generated bindings use this
I Symbols are retrieved and bound using C FFI
I This is wrapped in high level API (no FFI exposed to apps)
Library system
I C libraries are opened and initialized as necessary
I Opened C libraries are cached and reference counted
I Eolian-generated bindings use this
I Symbols are retrieved and bound using C FFI
I This is wrapped in high level API (no FFI exposed to apps)
Library system
I C libraries are opened and initialized as necessary
I Opened C libraries are cached and reference counted
I Eolian-generated bindings use this
I Symbols are retrieved and bound using C FFI
I This is wrapped in high level API (no FFI exposed to apps)
Library system
I C libraries are opened and initialized as necessary
I Opened C libraries are cached and reference counted
I Eolian-generated bindings use this
I Symbols are retrieved and bound using C FFI
I This is wrapped in high level API (no FFI exposed to apps)
Library system
I C libraries are opened and initialized as necessary
I Opened C libraries are cached and reference counted
I Eolian-generated bindings use this
I Symbols are retrieved and bound using C FFI
I This is wrapped in high level API (no FFI exposed to apps)
Eina bindings
I Elua provides hand-bound APIs from Eina
I Containers are read only
I Provides APIs to convert them to Lua values
I Various modules like accessor, iterator, list, log, file etc.
I Will be further expanded as necessary
Eina bindings
I Elua provides hand-bound APIs from Eina
I Containers are read only
I Provides APIs to convert them to Lua values
I Various modules like accessor, iterator, list, log, file etc.
I Will be further expanded as necessary
Eina bindings
I Elua provides hand-bound APIs from Eina
I Containers are read only
I Provides APIs to convert them to Lua values
I Various modules like accessor, iterator, list, log, file etc.
I Will be further expanded as necessary
Eina bindings
I Elua provides hand-bound APIs from Eina
I Containers are read only
I Provides APIs to convert them to Lua values
I Various modules like accessor, iterator, list, log, file etc.
I Will be further expanded as necessary
Eina bindings
I Elua provides hand-bound APIs from Eina
I Containers are read only
I Provides APIs to convert them to Lua values
I Various modules like accessor, iterator, list, log, file etc.
I Will be further expanded as necessary
Eina bindings
I Elua provides hand-bound APIs from Eina
I Containers are read only
I Provides APIs to convert them to Lua values
I Various modules like accessor, iterator, list, log, file etc.
I Will be further expanded as necessary
Other modules
I Elua includes a benchmarking module in core
I Also features a powerful command line argument parser
I Lualian is included
I A custom module system implementation
I Util module provides an object system, library system, stringbuffer implementation and other utils
Other modules
I Elua includes a benchmarking module in core
I Also features a powerful command line argument parser
I Lualian is included
I A custom module system implementation
I Util module provides an object system, library system, stringbuffer implementation and other utils
Other modules
I Elua includes a benchmarking module in core
I Also features a powerful command line argument parser
I Lualian is included
I A custom module system implementation
I Util module provides an object system, library system, stringbuffer implementation and other utils
Other modules
I Elua includes a benchmarking module in core
I Also features a powerful command line argument parser
I Lualian is included
I A custom module system implementation
I Util module provides an object system, library system, stringbuffer implementation and other utils
Other modules
I Elua includes a benchmarking module in core
I Also features a powerful command line argument parser
I Lualian is included
I A custom module system implementation
I Util module provides an object system, library system, stringbuffer implementation and other utils
Other modules
I Elua includes a benchmarking module in core
I Also features a powerful command line argument parser
I Lualian is included
I A custom module system implementation
I Util module provides an object system, library system, stringbuffer implementation and other utils
Conclusion
I Still largely incomplete
I Getting there
I Eo files need work
I Eolian validator needs to be fully enabled
I Lua APIs need plenty of work
Conclusion
I Still largely incomplete
I Getting there
I Eo files need work
I Eolian validator needs to be fully enabled
I Lua APIs need plenty of work
Conclusion
I Still largely incomplete
I Getting there
I Eo files need work
I Eolian validator needs to be fully enabled
I Lua APIs need plenty of work
Conclusion
I Still largely incomplete
I Getting there
I Eo files need work
I Eolian validator needs to be fully enabled
I Lua APIs need plenty of work
Conclusion
I Still largely incomplete
I Getting there
I Eo files need work
I Eolian validator needs to be fully enabled
I Lua APIs need plenty of work
Conclusion
I Still largely incomplete
I Getting there
I Eo files need work
I Eolian validator needs to be fully enabled
I Lua APIs need plenty of work
Thank you.
Daniel KolesaSamsung Open Source Group
[email protected]@octaforge
EFL Developer Day US 2015