Top Banner
High level application scripting with Enlightenment Foundation Libraries and LuaJIT Daniel Kolesa Samsung Open Source Group [email protected] @octaforge Lua Workshop 2015 Stockholm
241

High Level Application Scripting With EFL and LuaJIT

Apr 16, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: High Level Application Scripting With EFL and LuaJIT

High level application scripting

with Enlightenment Foundation Libraries and LuaJIT

Daniel KolesaSamsung Open Source Group

[email protected]@octaforge

Lua Workshop 2015 Stockholm

Page 2: High Level Application Scripting With EFL and LuaJIT

The ProblemWhat are we dealing with?

Page 3: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 4: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 5: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 6: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 7: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 8: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 9: High Level Application Scripting With EFL and LuaJIT

What is the EFL?

I A suite of graphics (and other) libraries

I A widget toolkit

I Originally written for the Enlightenment window manager

I Scalable to both embedded and desktop systems

I Lightweight, written in C

I Significant usage includes Samsung’s Tizen platform

Page 10: High Level Application Scripting With EFL and LuaJIT

EFL components

I Historically, several projects with individual build systems

I Merged in version 1.8

I EFL - the core library set

I ELementary - the widget toolkit built on the EFL

I Some others still separate - Evas generic loaders etc.

Page 11: High Level Application Scripting With EFL and LuaJIT

EFL components

I Historically, several projects with individual build systems

I Merged in version 1.8

I EFL - the core library set

I ELementary - the widget toolkit built on the EFL

I Some others still separate - Evas generic loaders etc.

Page 12: High Level Application Scripting With EFL and LuaJIT

EFL components

I Historically, several projects with individual build systems

I Merged in version 1.8

I EFL - the core library set

I ELementary - the widget toolkit built on the EFL

I Some others still separate - Evas generic loaders etc.

Page 13: High Level Application Scripting With EFL and LuaJIT

EFL components

I Historically, several projects with individual build systems

I Merged in version 1.8

I EFL - the core library set

I ELementary - the widget toolkit built on the EFL

I Some others still separate - Evas generic loaders etc.

Page 14: High Level Application Scripting With EFL and LuaJIT

EFL components

I Historically, several projects with individual build systems

I Merged in version 1.8

I EFL - the core library set

I ELementary - the widget toolkit built on the EFL

I Some others still separate - Evas generic loaders etc.

Page 15: High Level Application Scripting With EFL and LuaJIT

EFL components

I Historically, several projects with individual build systems

I Merged in version 1.8

I EFL - the core library set

I ELementary - the widget toolkit built on the EFL

I Some others still separate - Evas generic loaders etc.

Page 16: High Level Application Scripting With EFL and LuaJIT

Evas

I The oldest EFL component

I A scene graph canvas

I Represents the canvas as state with Evas objects

I Provides several core primitives (rectangles, images etc.)

I Widgets provided by other libraries are Evas objects

Page 17: High Level Application Scripting With EFL and LuaJIT

Evas

I The oldest EFL component

I A scene graph canvas

I Represents the canvas as state with Evas objects

I Provides several core primitives (rectangles, images etc.)

I Widgets provided by other libraries are Evas objects

Page 18: High Level Application Scripting With EFL and LuaJIT

Evas

I The oldest EFL component

I A scene graph canvas

I Represents the canvas as state with Evas objects

I Provides several core primitives (rectangles, images etc.)

I Widgets provided by other libraries are Evas objects

Page 19: High Level Application Scripting With EFL and LuaJIT

Evas

I The oldest EFL component

I A scene graph canvas

I Represents the canvas as state with Evas objects

I Provides several core primitives (rectangles, images etc.)

I Widgets provided by other libraries are Evas objects

Page 20: High Level Application Scripting With EFL and LuaJIT

Evas

I The oldest EFL component

I A scene graph canvas

I Represents the canvas as state with Evas objects

I Provides several core primitives (rectangles, images etc.)

I Widgets provided by other libraries are Evas objects

Page 21: High Level Application Scripting With EFL and LuaJIT

Evas

I The oldest EFL component

I A scene graph canvas

I Represents the canvas as state with Evas objects

I Provides several core primitives (rectangles, images etc.)

I Widgets provided by other libraries are Evas objects

Page 22: High Level Application Scripting With EFL and LuaJIT

Ecore

I Provides the interface between the OS and the rest of the EFL

I Interaction with X11, Wayland, SDL, Cocoa, DirectX etc.

I Provides a main loop for applications

I Also several other unrelated things

Page 23: High Level Application Scripting With EFL and LuaJIT

Ecore

I Provides the interface between the OS and the rest of the EFL

I Interaction with X11, Wayland, SDL, Cocoa, DirectX etc.

I Provides a main loop for applications

I Also several other unrelated things

Page 24: High Level Application Scripting With EFL and LuaJIT

Ecore

I Provides the interface between the OS and the rest of the EFL

I Interaction with X11, Wayland, SDL, Cocoa, DirectX etc.

I Provides a main loop for applications

I Also several other unrelated things

Page 25: High Level Application Scripting With EFL and LuaJIT

Ecore

I Provides the interface between the OS and the rest of the EFL

I Interaction with X11, Wayland, SDL, Cocoa, DirectX etc.

I Provides a main loop for applications

I Also several other unrelated things

Page 26: High Level Application Scripting With EFL and LuaJIT

Ecore

I Provides the interface between the OS and the rest of the EFL

I Interaction with X11, Wayland, SDL, Cocoa, DirectX etc.

I Provides a main loop for applications

I Also several other unrelated things

Page 27: High Level Application Scripting With EFL and LuaJIT

Edje

I Edje is a layout/UI description language

I It is also a way to compile said language together with data

I The result can be loaded from the application and used as UI

I Separation of UI/layout and application logic

I Widgets provided by libs can be embedded in Edje

Page 28: High Level Application Scripting With EFL and LuaJIT

Edje

I Edje is a layout/UI description language

I It is also a way to compile said language together with data

I The result can be loaded from the application and used as UI

I Separation of UI/layout and application logic

I Widgets provided by libs can be embedded in Edje

Page 29: High Level Application Scripting With EFL and LuaJIT

Edje

I Edje is a layout/UI description language

I It is also a way to compile said language together with data

I The result can be loaded from the application and used as UI

I Separation of UI/layout and application logic

I Widgets provided by libs can be embedded in Edje

Page 30: High Level Application Scripting With EFL and LuaJIT

Edje

I Edje is a layout/UI description language

I It is also a way to compile said language together with data

I The result can be loaded from the application and used as UI

I Separation of UI/layout and application logic

I Widgets provided by libs can be embedded in Edje

Page 31: High Level Application Scripting With EFL and LuaJIT

Edje

I Edje is a layout/UI description language

I It is also a way to compile said language together with data

I The result can be loaded from the application and used as UI

I Separation of UI/layout and application logic

I Widgets provided by libs can be embedded in Edje

Page 32: High Level Application Scripting With EFL and LuaJIT

Edje

I Edje is a layout/UI description language

I It is also a way to compile said language together with data

I The result can be loaded from the application and used as UI

I Separation of UI/layout and application logic

I Widgets provided by libs can be embedded in Edje

Page 33: High Level Application Scripting With EFL and LuaJIT

Elementary

I A widget toolkit

I Provides a large set of widgets as Evas objects

I Can be used standalone (boxed style layouting defined from C)

I Can be used with Edje (Elementary widgets, Edje layout)

Page 34: High Level Application Scripting With EFL and LuaJIT

Elementary

I A widget toolkit

I Provides a large set of widgets as Evas objects

I Can be used standalone (boxed style layouting defined from C)

I Can be used with Edje (Elementary widgets, Edje layout)

Page 35: High Level Application Scripting With EFL and LuaJIT

Elementary

I A widget toolkit

I Provides a large set of widgets as Evas objects

I Can be used standalone (boxed style layouting defined from C)

I Can be used with Edje (Elementary widgets, Edje layout)

Page 36: High Level Application Scripting With EFL and LuaJIT

Elementary

I A widget toolkit

I Provides a large set of widgets as Evas objects

I Can be used standalone (boxed style layouting defined from C)

I Can be used with Edje (Elementary widgets, Edje layout)

Page 37: High Level Application Scripting With EFL and LuaJIT

Elementary

I A widget toolkit

I Provides a large set of widgets as Evas objects

I Can be used standalone (boxed style layouting defined from C)

I Can be used with Edje (Elementary widgets, Edje layout)

Page 38: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 39: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 40: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 41: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 42: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 43: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 44: High Level Application Scripting With EFL and LuaJIT

Eo

I An object system for the EFL

I The base for everything EFL 2.0

I Allows for backwards compatible legacy APIs

I Provides everything one would expect from an object system

I Much of EFL 2.0 API is interfaces

I We aim for API and ABI stability

Page 45: High Level Application Scripting With EFL and LuaJIT

Overview

I Sick and tired of writing apps in C

I There has to be a better way

I Scripting languages?

I They kind of suck

Page 46: High Level Application Scripting With EFL and LuaJIT

Overview

I Sick and tired of writing apps in C

I There has to be a better way

I Scripting languages?

I They kind of suck

Page 47: High Level Application Scripting With EFL and LuaJIT

Overview

I Sick and tired of writing apps in C

I There has to be a better way

I Scripting languages?

I They kind of suck

Page 48: High Level Application Scripting With EFL and LuaJIT

Overview

I Sick and tired of writing apps in C

I There has to be a better way

I Scripting languages?

I They kind of suck

Page 49: High Level Application Scripting With EFL and LuaJIT

Overview

I Sick and tired of writing apps in C

I There has to be a better way

I Scripting languages?

I They kind of suck

Page 50: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 51: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 52: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 53: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 54: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 55: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 56: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 57: High Level Application Scripting With EFL and LuaJIT

Why is that?

I Slow

I Lack of a proper type system

I Tons of bloat we don’t need

I Inconvenient binding

I Resource heavy

I Battery eating

I Could there be a solution?

Page 58: High Level Application Scripting With EFL and LuaJIT

Scripting language overview

Page 59: High Level Application Scripting With EFL and LuaJIT

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

Page 60: High Level Application Scripting With EFL and LuaJIT

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

Page 61: High Level Application Scripting With EFL and LuaJIT

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

Page 62: High Level Application Scripting With EFL and LuaJIT

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

Page 63: High Level Application Scripting With EFL and LuaJIT

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

Page 64: High Level Application Scripting With EFL and LuaJIT

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

Page 65: High Level Application Scripting With EFL and LuaJIT

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

Page 66: High Level Application Scripting With EFL and LuaJIT

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

Page 67: High Level Application Scripting With EFL and LuaJIT

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

Page 68: High Level Application Scripting With EFL and LuaJIT

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

Page 69: High Level Application Scripting With EFL and LuaJIT

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

Page 70: High Level Application Scripting With EFL and LuaJIT

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

Page 71: High Level Application Scripting With EFL and LuaJIT

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

Page 72: High Level Application Scripting With EFL and LuaJIT

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

Page 73: High Level Application Scripting With EFL and LuaJIT

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

Page 74: High Level Application Scripting With EFL and LuaJIT

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

Page 75: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 76: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 77: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 78: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 79: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 80: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 81: High Level Application Scripting With EFL and LuaJIT

Perl

I You serious?

I Tons of problems

I Slooooow

I Bloated

I No decent unified API

I Hard to... ok that’s enough

Page 82: High Level Application Scripting With EFL and LuaJIT

JavaScript

I Popular these days

I Fairly decent quality JIT implementations

I Each implementation has its own weird API

I Language is pretty bad

I But probably a better choice than the above

Page 83: High Level Application Scripting With EFL and LuaJIT

JavaScript

I Popular these days

I Fairly decent quality JIT implementations

I Each implementation has its own weird API

I Language is pretty bad

I But probably a better choice than the above

Page 84: High Level Application Scripting With EFL and LuaJIT

JavaScript

I Popular these days

I Fairly decent quality JIT implementations

I Each implementation has its own weird API

I Language is pretty bad

I But probably a better choice than the above

Page 85: High Level Application Scripting With EFL and LuaJIT

JavaScript

I Popular these days

I Fairly decent quality JIT implementations

I Each implementation has its own weird API

I Language is pretty bad

I But probably a better choice than the above

Page 86: High Level Application Scripting With EFL and LuaJIT

JavaScript

I Popular these days

I Fairly decent quality JIT implementations

I Each implementation has its own weird API

I Language is pretty bad

I But probably a better choice than the above

Page 87: High Level Application Scripting With EFL and LuaJIT

JavaScript

I Popular these days

I Fairly decent quality JIT implementations

I Each implementation has its own weird API

I Language is pretty bad

I But probably a better choice than the above

Page 88: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 89: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 90: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 91: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 92: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 93: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 94: High Level Application Scripting With EFL and LuaJIT

Io, Self, Squirrel etc.

I Many different choices

I Mostly slow interpreters

I Some are decent languages

I Mostly fairly light on resources

I Not good enough

I People would look at us weird

Page 95: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 96: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 97: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 98: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 99: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 100: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 101: High Level Application Scripting With EFL and LuaJIT

Lua

I A popular scripting language

I Good language with a few quirks

I Light on resources

I Great embedding API

I Interpreted... :(

I LuaJIT saves the day

Page 102: High Level Application Scripting With EFL and LuaJIT

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

Page 103: High Level Application Scripting With EFL and LuaJIT

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

Page 104: High Level Application Scripting With EFL and LuaJIT

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

Page 105: High Level Application Scripting With EFL and LuaJIT

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

Page 106: High Level Application Scripting With EFL and LuaJIT

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

Page 107: High Level Application Scripting With EFL and LuaJIT

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

Page 108: High Level Application Scripting With EFL and LuaJIT

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

Page 109: High Level Application Scripting With EFL and LuaJIT

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

Page 110: High Level Application Scripting With EFL and LuaJIT

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

Page 111: High Level Application Scripting With EFL and LuaJIT

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

Page 112: High Level Application Scripting With EFL and LuaJIT

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

Page 113: High Level Application Scripting With EFL and LuaJIT

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

Page 114: High Level Application Scripting With EFL and LuaJIT

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

Page 115: High Level Application Scripting With EFL and LuaJIT

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

Page 116: High Level Application Scripting With EFL and LuaJIT

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

Page 117: High Level Application Scripting With EFL and LuaJIT

Elua

Page 118: High Level Application Scripting With EFL and LuaJIT

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 119: High Level Application Scripting With EFL and LuaJIT

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 120: High Level Application Scripting With EFL and LuaJIT

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 121: High Level Application Scripting With EFL and LuaJIT

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 122: High Level Application Scripting With EFL and LuaJIT

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 123: High Level Application Scripting With EFL and LuaJIT

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.)

Page 124: High Level Application Scripting With EFL and LuaJIT

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.)

Page 125: High Level Application Scripting With EFL and LuaJIT

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.)

Page 126: High Level Application Scripting With EFL and LuaJIT

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.)

Page 127: High Level Application Scripting With EFL and LuaJIT

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.)

Page 128: High Level Application Scripting With EFL and LuaJIT

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.)

Page 129: High Level Application Scripting With EFL and LuaJIT

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

Page 130: High Level Application Scripting With EFL and LuaJIT

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

Page 131: High Level Application Scripting With EFL and LuaJIT

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

Page 132: High Level Application Scripting With EFL and LuaJIT

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

Page 133: High Level Application Scripting With EFL and LuaJIT

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

Page 134: High Level Application Scripting With EFL and LuaJIT

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

Page 135: High Level Application Scripting With EFL and LuaJIT

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?

Page 136: High Level Application Scripting With EFL and LuaJIT

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?

Page 137: High Level Application Scripting With EFL and LuaJIT

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?

Page 138: High Level Application Scripting With EFL and LuaJIT

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?

Page 139: High Level Application Scripting With EFL and LuaJIT

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?

Page 140: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 141: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 142: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 143: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 144: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 145: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 146: High Level Application Scripting With EFL and LuaJIT

Eolian

I Two things

I An API description language we invented

I A library to parse this language and expose the informationvia API

I We describe our EFL APIs in it

I We can reuse it to generate bindings

I No maintenance burden

Page 147: High Level Application Scripting With EFL and LuaJIT

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

Page 148: High Level Application Scripting With EFL and LuaJIT

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

Page 149: High Level Application Scripting With EFL and LuaJIT

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

Page 150: High Level Application Scripting With EFL and LuaJIT

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

Page 151: High Level Application Scripting With EFL and LuaJIT

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

Page 152: High Level Application Scripting With EFL and LuaJIT

How do our bindings work?

I LuaJIT provides a foreign function interface (FFI)

I This allows us to directly access C APIs

I Lualian generates FFI-powered bindings

Page 153: High Level Application Scripting With EFL and LuaJIT

How do our bindings work?

I LuaJIT provides a foreign function interface (FFI)

I This allows us to directly access C APIs

I Lualian generates FFI-powered bindings

Page 154: High Level Application Scripting With EFL and LuaJIT

How do our bindings work?

I LuaJIT provides a foreign function interface (FFI)

I This allows us to directly access C APIs

I Lualian generates FFI-powered bindings

Page 155: High Level Application Scripting With EFL and LuaJIT

How do our bindings work?

I LuaJIT provides a foreign function interface (FFI)

I This allows us to directly access C APIs

I Lualian generates FFI-powered bindings

Page 156: High Level Application Scripting With EFL and LuaJIT

Eo and Elua

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!

Page 157: High Level Application Scripting With EFL and LuaJIT

Eo and Elua

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!

Page 158: High Level Application Scripting With EFL and LuaJIT

Eo and Elua

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!

Page 159: High Level Application Scripting With EFL and LuaJIT

Eo and Elua

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!

Page 160: High Level Application Scripting With EFL and LuaJIT

Eo and Elua

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!

Page 161: High Level Application Scripting With EFL and LuaJIT

Eo and Elua

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!

Page 162: High Level Application Scripting With EFL and LuaJIT

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

Page 163: High Level Application Scripting With EFL and LuaJIT

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

Page 164: High Level Application Scripting With EFL and LuaJIT

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

Page 165: High Level Application Scripting With EFL and LuaJIT

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

Page 166: High Level Application Scripting With EFL and LuaJIT

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

Page 167: High Level Application Scripting With EFL and LuaJIT

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

Page 168: High Level Application Scripting With EFL and LuaJIT

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

Page 169: High Level Application Scripting With EFL and LuaJIT

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?

Page 170: High Level Application Scripting With EFL and LuaJIT

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?

Page 171: High Level Application Scripting With EFL and LuaJIT

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?

Page 172: High Level Application Scripting With EFL and LuaJIT

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?

Page 173: High Level Application Scripting With EFL and LuaJIT

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?

Page 174: High Level Application Scripting With EFL and LuaJIT

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?

Page 175: High Level Application Scripting With EFL and LuaJIT

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?

Page 176: High Level Application Scripting With EFL and LuaJIT

Status

Page 177: High Level Application Scripting With EFL and LuaJIT

Where are we?

I Working, solid base

I Binding generator needs some work

I Elua library needs a lot of work

I EFL interfaces

Page 178: High Level Application Scripting With EFL and LuaJIT

Where are we?

I Working, solid base

I Binding generator needs some work

I Elua library needs a lot of work

I EFL interfaces

Page 179: High Level Application Scripting With EFL and LuaJIT

Where are we?

I Working, solid base

I Binding generator needs some work

I Elua library needs a lot of work

I EFL interfaces

Page 180: High Level Application Scripting With EFL and LuaJIT

Where are we?

I Working, solid base

I Binding generator needs some work

I Elua library needs a lot of work

I EFL interfaces

Page 181: High Level Application Scripting With EFL and LuaJIT

Where are we?

I Working, solid base

I Binding generator needs some work

I Elua library needs a lot of work

I EFL interfaces

Page 182: High Level Application Scripting With EFL and LuaJIT

EFL interfaces

I A linked project

I Design and implement EFL 2.0 APIs

I Eo based

I Why is this relevant to bindings?

Page 183: High Level Application Scripting With EFL and LuaJIT

EFL interfaces

I A linked project

I Design and implement EFL 2.0 APIs

I Eo based

I Why is this relevant to bindings?

Page 184: High Level Application Scripting With EFL and LuaJIT

EFL interfaces

I A linked project

I Design and implement EFL 2.0 APIs

I Eo based

I Why is this relevant to bindings?

Page 185: High Level Application Scripting With EFL and LuaJIT

EFL interfaces

I A linked project

I Design and implement EFL 2.0 APIs

I Eo based

I Why is this relevant to bindings?

Page 186: High Level Application Scripting With EFL and LuaJIT

EFL interfaces

I A linked project

I Design and implement EFL 2.0 APIs

I Eo based

I Why is this relevant to bindings?

Page 187: High Level Application Scripting With EFL and LuaJIT

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

Page 188: High Level Application Scripting With EFL and LuaJIT

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

Page 189: High Level Application Scripting With EFL and LuaJIT

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

Page 190: High Level Application Scripting With EFL and LuaJIT

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

Page 191: High Level Application Scripting With EFL and LuaJIT

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

Page 192: High Level Application Scripting With EFL and LuaJIT

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

Page 193: High Level Application Scripting With EFL and LuaJIT

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

Page 194: High Level Application Scripting With EFL and LuaJIT

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

Page 195: High Level Application Scripting With EFL and LuaJIT

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

Page 196: High Level Application Scripting With EFL and LuaJIT

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

Page 197: High Level Application Scripting With EFL and LuaJIT

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

Page 198: High Level Application Scripting With EFL and LuaJIT

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

Page 199: High Level Application Scripting With EFL and LuaJIT

Other issues

I Internationalization and localization

I Seamless VFS integrated with Lua IO streams

I Sandboxing

I Startup time minimization

I Portable bytecode loading

Page 200: High Level Application Scripting With EFL and LuaJIT

Other issues

I Internationalization and localization

I Seamless VFS integrated with Lua IO streams

I Sandboxing

I Startup time minimization

I Portable bytecode loading

Page 201: High Level Application Scripting With EFL and LuaJIT

Other issues

I Internationalization and localization

I Seamless VFS integrated with Lua IO streams

I Sandboxing

I Startup time minimization

I Portable bytecode loading

Page 202: High Level Application Scripting With EFL and LuaJIT

Other issues

I Internationalization and localization

I Seamless VFS integrated with Lua IO streams

I Sandboxing

I Startup time minimization

I Portable bytecode loading

Page 203: High Level Application Scripting With EFL and LuaJIT

Other issues

I Internationalization and localization

I Seamless VFS integrated with Lua IO streams

I Sandboxing

I Startup time minimization

I Portable bytecode loading

Page 204: High Level Application Scripting With EFL and LuaJIT

Other issues

I Internationalization and localization

I Seamless VFS integrated with Lua IO streams

I Sandboxing

I Startup time minimization

I Portable bytecode loading

Page 205: High Level Application Scripting With EFL and LuaJIT

Code breakdown

Page 206: High Level Application Scripting With EFL and LuaJIT

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

Page 207: High Level Application Scripting With EFL and LuaJIT

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

Page 208: High Level Application Scripting With EFL and LuaJIT

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

Page 209: High Level Application Scripting With EFL and LuaJIT

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

Page 210: High Level Application Scripting With EFL and LuaJIT

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

Page 211: High Level Application Scripting With EFL and LuaJIT

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

Page 212: High Level Application Scripting With EFL and LuaJIT

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

Page 213: High Level Application Scripting With EFL and LuaJIT

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

Page 214: High Level Application Scripting With EFL and LuaJIT

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

Page 215: High Level Application Scripting With EFL and LuaJIT

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

Page 216: High Level Application Scripting With EFL and LuaJIT

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

Page 217: High Level Application Scripting With EFL and LuaJIT

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)

Page 218: High Level Application Scripting With EFL and LuaJIT

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)

Page 219: High Level Application Scripting With EFL and LuaJIT

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)

Page 220: High Level Application Scripting With EFL and LuaJIT

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)

Page 221: High Level Application Scripting With EFL and LuaJIT

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)

Page 222: High Level Application Scripting With EFL and LuaJIT

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)

Page 223: High Level Application Scripting With EFL and LuaJIT

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

Page 224: High Level Application Scripting With EFL and LuaJIT

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

Page 225: High Level Application Scripting With EFL and LuaJIT

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

Page 226: High Level Application Scripting With EFL and LuaJIT

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

Page 227: High Level Application Scripting With EFL and LuaJIT

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

Page 228: High Level Application Scripting With EFL and LuaJIT

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

Page 229: High Level Application Scripting With EFL and LuaJIT

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

Page 230: High Level Application Scripting With EFL and LuaJIT

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

Page 231: High Level Application Scripting With EFL and LuaJIT

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

Page 232: High Level Application Scripting With EFL and LuaJIT

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

Page 233: High Level Application Scripting With EFL and LuaJIT

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

Page 234: High Level Application Scripting With EFL and LuaJIT

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

Page 235: High Level Application Scripting With EFL and LuaJIT

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

Page 236: High Level Application Scripting With EFL and LuaJIT

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

Page 237: High Level Application Scripting With EFL and LuaJIT

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

Page 238: High Level Application Scripting With EFL and LuaJIT

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

Page 239: High Level Application Scripting With EFL and LuaJIT

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

Page 240: High Level Application Scripting With EFL and LuaJIT

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

Page 241: High Level Application Scripting With EFL and LuaJIT

Thank you.

Daniel KolesaSamsung Open Source [email protected]

@octaforgeLua Workshop 2015 Stockholm