[e-dev-day 2015][1/4] eolian - past year experiences and the future (daniel kolesa)
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
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
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
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
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