[e-dev-day 2015][1/4] eolian - past year experiences and the future (daniel kolesa)

82
Eolian - Past year experiences and the future Shaping up our binding generation infrastructure Daniel Kolesa Samsung Open Source Group [email protected] @octaforge EFL Developer Day 2015

Upload: enlightenmentproject

Post on 24-Jan-2018

344 views

Category:

Software


4 download

TRANSCRIPT

Eolian - Past year experiences andthe future

Shaping up our binding generation infrastructure

Daniel KolesaSamsung Open Source Group

[email protected]@octaforge

EFL Developer Day 2015

IntroductionFor those living under a rock

What is Eolian?

I Most people are probably already aware of it

I It’s several things

I It’s a declarative format for describing APIs

I It’s a C library to deal with these declarations

I It’s a generator for the core C API

What is Eolian?

I Most people are probably already aware of it

I It’s several things

I It’s a declarative format for describing APIs

I It’s a C library to deal with these declarations

I It’s a generator for the core C API

What is Eolian?

I Most people are probably already aware of it

I It’s several things

I It’s a declarative format for describing APIs

I It’s a C library to deal with these declarations

I It’s a generator for the core C API

What is Eolian?

I Most people are probably already aware of it

I It’s several things

I It’s a declarative format for describing APIs

I It’s a C library to deal with these declarations

I It’s a generator for the core C API

What is Eolian?

I Most people are probably already aware of it

I It’s several things

I It’s a declarative format for describing APIs

I It’s a C library to deal with these declarations

I It’s a generator for the core C API

What is Eolian?

I Most people are probably already aware of it

I It’s several things

I It’s a declarative format for describing APIs

I It’s a C library to deal with these declarations

I It’s a generator for the core C API

Why is Eolian useful?

I Language independent API descriptions

I Automatic generation of bindings for any language

I Improved documentation possibilities

I Better tooling

I The possibilities are endless

Why is Eolian useful?

I Language independent API descriptions

I Automatic generation of bindings for any language

I Improved documentation possibilities

I Better tooling

I The possibilities are endless

Why is Eolian useful?

I Language independent API descriptions

I Automatic generation of bindings for any language

I Improved documentation possibilities

I Better tooling

I The possibilities are endless

Why is Eolian useful?

I Language independent API descriptions

I Automatic generation of bindings for any language

I Improved documentation possibilities

I Better tooling

I The possibilities are endless

Why is Eolian useful?

I Language independent API descriptions

I Automatic generation of bindings for any language

I Improved documentation possibilities

I Better tooling

I The possibilities are endless

Why is Eolian useful?

I Language independent API descriptions

I Automatic generation of bindings for any language

I Improved documentation possibilities

I Better tooling

I The possibilities are endless

Past and presentHow was Eolian and how is it now?

Last year Eolian

How was it?

I Very basic

I Supported C generation and nothing else

I A messy parser/lexer created with a generator

I A lot of design problems

How was it?

I Very basic

I Supported C generation and nothing else

I A messy parser/lexer created with a generator

I A lot of design problems

How was it?

I Very basic

I Supported C generation and nothing else

I A messy parser/lexer created with a generator

I A lot of design problems

How was it?

I Very basic

I Supported C generation and nothing else

I A messy parser/lexer created with a generator

I A lot of design problems

How was it?

I Very basic

I Supported C generation and nothing else

I A messy parser/lexer created with a generator

I A lot of design problems

How did we fix it?

I First project: write a new parser from scratch

I Gradual rewrite of Eolian from ground up

I Fixed design problems one by one

I Through iterative approach, we got where we are currently

How did we fix it?

I First project: write a new parser from scratch

I Gradual rewrite of Eolian from ground up

I Fixed design problems one by one

I Through iterative approach, we got where we are currently

How did we fix it?

I First project: write a new parser from scratch

I Gradual rewrite of Eolian from ground up

I Fixed design problems one by one

I Through iterative approach, we got where we are currently

How did we fix it?

I First project: write a new parser from scratch

I Gradual rewrite of Eolian from ground up

I Fixed design problems one by one

I Through iterative approach, we got where we are currently

How did we fix it?

I First project: write a new parser from scratch

I Gradual rewrite of Eolian from ground up

I Fixed design problems one by one

I Through iterative approach, we got where we are currently

Main challenges of last year and thepresent

Eolian type system

I Old Eolian used C strings to do types

I No verification

I Not suitable for other languages

I We needed our own type system

Eolian type system

I Old Eolian used C strings to do types

I No verification

I Not suitable for other languages

I We needed our own type system

Eolian type system

I Old Eolian used C strings to do types

I No verification

I Not suitable for other languages

I We needed our own type system

Eolian type system

I Old Eolian used C strings to do types

I No verification

I Not suitable for other languages

I We needed our own type system

Eolian type system

I Old Eolian used C strings to do types

I No verification

I Not suitable for other languages

I We needed our own type system

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

I Real types represented in our in-memory database

I Basic type checking/verification (usage contexts etc.)

I Integration with variables/constants

I Structures and enumerations

I Type aliases

I Extern types and other smaller features

Custom constructors

I Old Eolian supported custom constructors for classes

I We decided this is a bad idea

I We generate constructors using constructing functions now

Custom constructors

I Old Eolian supported custom constructors for classes

I We decided this is a bad idea

I We generate constructors using constructing functions now

Custom constructors

I Old Eolian supported custom constructors for classes

I We decided this is a bad idea

I We generate constructors using constructing functions now

Custom constructors

I Old Eolian supported custom constructors for classes

I We decided this is a bad idea

I We generate constructors using constructing functions now

Syntax revision

I Old syntax was very messy and inconsistent

I Complete refactoring of syntax was done

I Unification and stricter parsing

I Focus on consistency

Syntax revision

I Old syntax was very messy and inconsistent

I Complete refactoring of syntax was done

I Unification and stricter parsing

I Focus on consistency

Syntax revision

I Old syntax was very messy and inconsistent

I Complete refactoring of syntax was done

I Unification and stricter parsing

I Focus on consistency

Syntax revision

I Old syntax was very messy and inconsistent

I Complete refactoring of syntax was done

I Unification and stricter parsing

I Focus on consistency

Syntax revision

I Old syntax was very messy and inconsistent

I Complete refactoring of syntax was done

I Unification and stricter parsing

I Focus on consistency

Complex types

I At first, we had generalized complex types

I This proved to be a bad idea

I Provided several built-in complex types (array, hash etc.)

I Greatly simplfied generation and syntax

Complex types

I At first, we had generalized complex types

I This proved to be a bad idea

I Provided several built-in complex types (array, hash etc.)

I Greatly simplfied generation and syntax

Complex types

I At first, we had generalized complex types

I This proved to be a bad idea

I Provided several built-in complex types (array, hash etc.)

I Greatly simplfied generation and syntax

Complex types

I At first, we had generalized complex types

I This proved to be a bad idea

I Provided several built-in complex types (array, hash etc.)

I Greatly simplfied generation and syntax

Complex types

I At first, we had generalized complex types

I This proved to be a bad idea

I Provided several built-in complex types (array, hash etc.)

I Greatly simplfied generation and syntax

Data sharing

I We needed to share typedefs etc. between several classes

I Introduced .eot (eo type) files

I And introduced an import statement

Data sharing

I We needed to share typedefs etc. between several classes

I Introduced .eot (eo type) files

I And introduced an import statement

Data sharing

I We needed to share typedefs etc. between several classes

I Introduced .eot (eo type) files

I And introduced an import statement

Data sharing

I We needed to share typedefs etc. between several classes

I Introduced .eot (eo type) files

I And introduced an import statement

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Documentation

I Ongoing issue

I Doxygen will no longer cut it (specific to C/C++)

I Designed a custom format

I Removed documentation comments, introduced special syntax

I Converted all EFL/Elementary docs to the new format

I Still being extended and improved

Current situation

I We’re mostly done

I API is nice and clean

I All major issues are solved

I Documentation still ongoing

I Ownership handling still ongoing

Current situation

I We’re mostly done

I API is nice and clean

I All major issues are solved

I Documentation still ongoing

I Ownership handling still ongoing

Current situation

I We’re mostly done

I API is nice and clean

I All major issues are solved

I Documentation still ongoing

I Ownership handling still ongoing

Current situation

I We’re mostly done

I API is nice and clean

I All major issues are solved

I Documentation still ongoing

I Ownership handling still ongoing

Current situation

I We’re mostly done

I API is nice and clean

I All major issues are solved

I Documentation still ongoing

I Ownership handling still ongoing

Current situation

I We’re mostly done

I API is nice and clean

I All major issues are solved

I Documentation still ongoing

I Ownership handling still ongoing

The futureWhat are we going to do now?

Stabilize!

I Stabilization is the primary goal

I Not happening for a few more releases

I We need to finalize documentation

I We need to handle ownership

I Refactor the implementation and fix all quirks

Stabilize!

I Stabilization is the primary goal

I Not happening for a few more releases

I We need to finalize documentation

I We need to handle ownership

I Refactor the implementation and fix all quirks

Stabilize!

I Stabilization is the primary goal

I Not happening for a few more releases

I We need to finalize documentation

I We need to handle ownership

I Refactor the implementation and fix all quirks

Stabilize!

I Stabilization is the primary goal

I Not happening for a few more releases

I We need to finalize documentation

I We need to handle ownership

I Refactor the implementation and fix all quirks

Stabilize!

I Stabilization is the primary goal

I Not happening for a few more releases

I We need to finalize documentation

I We need to handle ownership

I Refactor the implementation and fix all quirks

Stabilize!

I Stabilization is the primary goal

I Not happening for a few more releases

I We need to finalize documentation

I We need to handle ownership

I Refactor the implementation and fix all quirks

More testing and changes

I We need more generators to help us test

I We also need to update all of EFL eo files

I This should help uncover any potential problems

More testing and changes

I We need more generators to help us test

I We also need to update all of EFL eo files

I This should help uncover any potential problems

More testing and changes

I We need more generators to help us test

I We also need to update all of EFL eo files

I This should help uncover any potential problems

More testing and changes

I We need more generators to help us test

I We also need to update all of EFL eo files

I This should help uncover any potential problems

Thank you.

Daniel KolesaSamsung Open Source [email protected]

@octaforgeEFL Developer Day 2015