SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
CODEFLOW
an advanced IDE for Lua
L U A W O R K S H O P 2 0 1 5
October 16, 2015
Jean-Luc Jumpertz @JLJump
founder celedev @celedev
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
Instant feedback
on real devices
full SDK scope powerful dev tools
Faster development cycle
Easier experimentation, higher creativity
Better App UX
Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
CodeFlow
IDE
iOS App
Lua
CodeFlow
Runtime
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
CodeFlow
IDE
iOS App
Lua
CodeFlow
Runtime
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015Lua Workshop 2015 - Stockholm - October 16, 2015
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
• Code editor common features: code coloring,
indentation, completion…
• Standard editors manage code purely as text
➡ The editor has no real knowledge of the
program structure!
➡ Limited features set
Lua code editor
• 1 file / language
• regex, list of keywords…
xml, json
Lua
mode
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Syntax-driven Lua code editor
• The Lua Abstract Syntax Tree represents the syntax of a given Lua
source file
• Each AST node stores the associated char range in the source file
• The AST must be kept in sync with the source code (asynchronously)
➡ All syntax-related actions in the editor use the corresponding AST
➡ Much more powerful and accurate than text-based processing
.lua
Source code Lua AST
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Syntax-driven Lua code editor
• Demo
➡ An advanced syntax-aware Lua editor can be a true help for
the developer!
• Under the hood: building the AST
• Many possible strategies
• In CodeFlow, Lua AST generation is based on the standard
Lua parser (llex.c, lparser.c)
➡ very good performance
➡ same language understanding as the Lua runtime
• Source available at bitbucket.org/jean_luc/luasyntaxer
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Lua debugger
• For many developers, prints in the console is still the
primary debug tool. !
• A good debugger makes bug fixing much easier!
• The ideal debugger should be…
➡ Easy to use and well-integrated with the rest of the IDE
➡ Fast, low overhead
➡ Transparent to use 

i.e not forcing you to change your program code to make it
debug-compliant
Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
Debugger features
• step-by-step execution
and breakpoints
• runtime errors analysis 

(+ make them recoverable)
• variable inspector / editor
• stack-context-aware
command console
• multi-thread debugging
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Lua Modules in CodeFlow
• Managing modules is a classic role of an IDE
• A logical choice for Lua modules interaction: use the
require function
• In CodeFlow, Lua modules are in 

the IDE space; but require is called 

from the app on the device
➡ Custom require function in the 

CodeFlow Runtime
• Behavior changes
• Enable multiple return values
• Reload a module if syntactically changed in the IDE
CodeFlow
IDE
iOS App
Lua
CodeFlow
Runtime
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Automatic Bindings generation
• In the target apps, Lua code interacts heavily with C / ObjC APIs
• May needs to call the System SDK, but also custom APIs defined by the
target app
• CodeFlow automatically generates project bindings for custom APIs
defined in the app’s Xcode project.
• Integration in the IDE
➡ auto-completion of project bindings APIs in the editor
➡ inspection of project bindings types in the debugger
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
As a conclusion
• The real value of an IDE comes from integration of
its components
• A dynamic language like Lua comes with specific
challenges for the developer, that a dedicated IDE
can help to address.
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Questions?
Jean-Luc Jumpertz
@JLJump
www.celedev.com
bitbucket.org/jean_luc/luasyntaxer
Want to try? Download CodeFlow at celedev.com/en/support
github.com/celedev contact@celedev.com

Contenu connexe

Tendances

Hacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeHacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeSean P. Floyd
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon IndiaAtul Jha
 
Functional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersFunctional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersDiego Freniche Brito
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Codemotion
 
Building next gen android library with gradle
Building next gen android library with gradleBuilding next gen android library with gradle
Building next gen android library with gradleAnton Rutkevich
 
Scala and its Ecosystem
Scala and its EcosystemScala and its Ecosystem
Scala and its EcosystemPetr Hošek
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using SwiftDiego Freniche Brito
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present futurelolopetit
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using ScalaNgoc Dao
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonDomingo Suarez Torres
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIssparkfabrik
 
Presentation on Core java
Presentation on Core javaPresentation on Core java
Presentation on Core javamahir jain
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015jbandi
 
Run-time of Node.js : V8 JavaScript Engine
Run-time of Node.js: V8 JavaScript EngineRun-time of Node.js: V8 JavaScript Engine
Run-time of Node.js : V8 JavaScript EngineGary Yeh
 
Android talks #08 decompiling android applications
Android talks #08   decompiling android applicationsAndroid talks #08   decompiling android applications
Android talks #08 decompiling android applicationsInfinum
 
Core Java
Core JavaCore Java
Core JavaNA
 

Tendances (20)

Hacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeHacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or Runtime
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
 
Functional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersFunctional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented Programmers
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
 
Building next gen android library with gradle
Building next gen android library with gradleBuilding next gen android library with gradle
Building next gen android library with gradle
 
Scala and its Ecosystem
Scala and its EcosystemScala and its Ecosystem
Scala and its Ecosystem
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Presentation on Core java
Presentation on Core javaPresentation on Core java
Presentation on Core java
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015
 
Introduction to Core Java Programming
Introduction to Core Java ProgrammingIntroduction to Core Java Programming
Introduction to Core Java Programming
 
History of java
History of javaHistory of java
History of java
 
Run-time of Node.js : V8 JavaScript Engine
Run-time of Node.js: V8 JavaScript EngineRun-time of Node.js: V8 JavaScript Engine
Run-time of Node.js : V8 JavaScript Engine
 
Turbo charging v8 engine
Turbo charging v8 engineTurbo charging v8 engine
Turbo charging v8 engine
 
Android talks #08 decompiling android applications
Android talks #08   decompiling android applicationsAndroid talks #08   decompiling android applications
Android talks #08 decompiling android applications
 
Core Java
Core JavaCore Java
Core Java
 

Similaire à CodeFlow, an advanced IDE for Lua

API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)Tom Johnson
 
Code in the cloud with eclipse che and docker / snowcamp.io 2017
Code in the cloud with eclipse che and docker /  snowcamp.io 2017Code in the cloud with eclipse che and docker /  snowcamp.io 2017
Code in the cloud with eclipse che and docker / snowcamp.io 2017Florent BENOIT
 
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Florent BENOIT
 
Code in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and DockerCode in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and DockerFlorent BENOIT
 
Programming tools for developers
Programming tools for developersProgramming tools for developers
Programming tools for developersBBVA API Market
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Red Hat Developers
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bagJamie Coleman
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIArnaud Tournier
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Mandi Walls
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Luciano Resende
 
Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Dmitry Kartsev
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDEFlorent BENOIT
 
Flutter vs react native – from developer point
Flutter vs react native – from developer pointFlutter vs react native – from developer point
Flutter vs react native – from developer pointBOSC Tech Labs
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangriaJorge Morales
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyAjeet Singh Raina
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshCodefresh
 

Similaire à CodeFlow, an advanced IDE for Lua (20)

API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
Code in the cloud with eclipse che and docker / snowcamp.io 2017
Code in the cloud with eclipse che and docker /  snowcamp.io 2017Code in the cloud with eclipse che and docker /  snowcamp.io 2017
Code in the cloud with eclipse che and docker / snowcamp.io 2017
 
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
 
Ide
IdeIde
Ide
 
Code in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and DockerCode in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and Docker
 
Programming tools for developers
Programming tools for developersProgramming tools for developers
Programming tools for developers
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing API
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
 
Flutter vs react native – from developer point
Flutter vs react native – from developer pointFlutter vs react native – from developer point
Flutter vs react native – from developer point
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangria
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of Technology
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 

Dernier

Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfAnna Loughnan Colquhoun
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncObject Automation
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdfJamie (Taka) Wang
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 

Dernier (20)

Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdf
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation Inc
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 

CodeFlow, an advanced IDE for Lua

  • 1. CODEFLOW an advanced IDE for Lua L U A W O R K S H O P 2 0 1 5 October 16, 2015 Jean-Luc Jumpertz @JLJump founder celedev @celedev
  • 2. CodeFlow Interactive Development of iOS / OS X Apps in Lua Instant feedback on real devices full SDK scope powerful dev tools Faster development cycle Easier experimentation, higher creativity Better App UX Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
  • 3. CodeFlow Interactive Development of iOS / OS X Apps in Lua CodeFlow IDE iOS App Lua CodeFlow Runtime CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 4. CodeFlow Interactive Development of iOS / OS X Apps in Lua CodeFlow IDE iOS App Lua CodeFlow Runtime CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015Lua Workshop 2015 - Stockholm - October 16, 2015
  • 5. CodeFlow Interactive Development of iOS / OS X Apps in Lua CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 6. • Code editor common features: code coloring, indentation, completion… • Standard editors manage code purely as text ➡ The editor has no real knowledge of the program structure! ➡ Limited features set Lua code editor • 1 file / language • regex, list of keywords… xml, json Lua mode CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 7. Syntax-driven Lua code editor • The Lua Abstract Syntax Tree represents the syntax of a given Lua source file • Each AST node stores the associated char range in the source file • The AST must be kept in sync with the source code (asynchronously) ➡ All syntax-related actions in the editor use the corresponding AST ➡ Much more powerful and accurate than text-based processing .lua Source code Lua AST CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 8. Syntax-driven Lua code editor • Demo ➡ An advanced syntax-aware Lua editor can be a true help for the developer! • Under the hood: building the AST • Many possible strategies • In CodeFlow, Lua AST generation is based on the standard Lua parser (llex.c, lparser.c) ➡ very good performance ➡ same language understanding as the Lua runtime • Source available at bitbucket.org/jean_luc/luasyntaxer CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 9. Lua debugger • For many developers, prints in the console is still the primary debug tool. ! • A good debugger makes bug fixing much easier! • The ideal debugger should be… ➡ Easy to use and well-integrated with the rest of the IDE ➡ Fast, low overhead ➡ Transparent to use 
 i.e not forcing you to change your program code to make it debug-compliant Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
  • 10. Debugger features • step-by-step execution and breakpoints • runtime errors analysis 
 (+ make them recoverable) • variable inspector / editor • stack-context-aware command console • multi-thread debugging CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 11. Lua Modules in CodeFlow • Managing modules is a classic role of an IDE • A logical choice for Lua modules interaction: use the require function • In CodeFlow, Lua modules are in 
 the IDE space; but require is called 
 from the app on the device ➡ Custom require function in the 
 CodeFlow Runtime • Behavior changes • Enable multiple return values • Reload a module if syntactically changed in the IDE CodeFlow IDE iOS App Lua CodeFlow Runtime CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 12. Automatic Bindings generation • In the target apps, Lua code interacts heavily with C / ObjC APIs • May needs to call the System SDK, but also custom APIs defined by the target app • CodeFlow automatically generates project bindings for custom APIs defined in the app’s Xcode project. • Integration in the IDE ➡ auto-completion of project bindings APIs in the editor ➡ inspection of project bindings types in the debugger CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 13. As a conclusion • The real value of an IDE comes from integration of its components • A dynamic language like Lua comes with specific challenges for the developer, that a dedicated IDE can help to address. CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 14. Questions? Jean-Luc Jumpertz @JLJump www.celedev.com bitbucket.org/jean_luc/luasyntaxer Want to try? Download CodeFlow at celedev.com/en/support github.com/celedev contact@celedev.com