Top Banner
High Level Application Development with Elua ... or what happens when C sucks too much Daniel Kolesa Samsung Open Source Group [email protected] @octaforge EFL Developer Day US 2015
224

[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Jul 18, 2015

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: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 2: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

The ProblemWhat are we dealing with?

Page 3: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 4: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 5: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 6: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 7: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 8: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 9: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 10: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 11: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 12: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 13: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 14: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 15: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 16: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Scripting language overview

Page 17: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 18: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 19: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 20: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 21: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 22: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 23: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 24: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 25: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 26: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 27: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 28: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 29: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 30: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 31: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 32: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 33: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 34: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 35: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 36: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 37: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 38: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 39: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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?

Page 40: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 41: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 42: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 43: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 44: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 45: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 46: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 47: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 48: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 49: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 50: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 51: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 52: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 53: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 54: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 55: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 56: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 57: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 58: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 59: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 60: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 61: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 62: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 63: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 64: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 65: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 66: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 67: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 68: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 69: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 70: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 71: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 72: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 73: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 74: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 75: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Elua

Page 76: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 77: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 78: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 79: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 80: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

What is it?

I An application runtime

I Ships with the EFL

I Lightweight

I Reusable

Page 81: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 82: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 83: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 84: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 85: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 86: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 87: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 88: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 89: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 90: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 91: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 92: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 93: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 94: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 95: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 96: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 97: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 98: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 99: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 100: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 101: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 102: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 103: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 104: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 105: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 106: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 107: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 108: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 109: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 110: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 111: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 112: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 113: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 114: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 115: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 116: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 117: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 118: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 119: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 120: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 121: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 122: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 123: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 124: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 125: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 126: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 127: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 128: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 129: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 130: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 131: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Status

Page 132: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 133: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 134: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 135: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 136: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 137: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 138: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 139: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 140: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 141: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 142: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 143: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 144: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 145: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 146: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 147: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 148: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 149: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 150: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 151: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 152: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 153: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 154: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 155: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 156: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 157: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 158: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 159: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 160: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Roadmap

Page 161: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

EFL 1.14

I Steady progress on Eo files

I Basic interfaces done

I Design issues resolved

Page 162: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

EFL 1.14

I Steady progress on Eo files

I Basic interfaces done

I Design issues resolved

Page 163: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

EFL 1.14

I Steady progress on Eo files

I Basic interfaces done

I Design issues resolved

Page 164: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

EFL 1.14

I Steady progress on Eo files

I Basic interfaces done

I Design issues resolved

Page 165: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 166: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 167: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 168: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 169: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 170: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 171: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 172: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 173: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 174: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 175: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 176: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 177: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 178: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 179: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 180: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 181: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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!

Page 182: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 183: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 184: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 185: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 186: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 187: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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

Page 188: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Code breakdown

Page 189: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 190: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 191: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 192: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 193: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 194: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 195: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 196: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 197: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 198: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 199: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 200: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 201: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 202: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 203: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 204: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 205: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 206: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 207: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 208: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 209: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 210: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 211: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 212: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 213: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 214: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 215: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 216: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 217: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 218: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 219: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 220: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 221: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 222: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 223: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

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 224: [E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel Kolesa)

Thank you.

Daniel KolesaSamsung Open Source Group

[email protected]@octaforge

EFL Developer Day US 2015