140 lines
2.6 KiB
Markdown
140 lines
2.6 KiB
Markdown
%title: Beyond .\*Script
|
|
%author: hellerve
|
|
%date: 2017-01-15
|
|
|
|
-> # Beyond .\*Script
|
|
|
|
-> ## Implementing A Language For The Web
|
|
|
|
-> Veit Heller
|
|
-> Bachelor examination
|
|
|
|
---
|
|
|
|
-> # Introduction
|
|
|
|
- JavaScript is _the_ language of the Web
|
|
- It is not always the right tool for the job
|
|
- Many approaches have been taken to change it
|
|
to fit the users needs
|
|
|
|
---
|
|
|
|
-> # Introduction
|
|
|
|
- Mitigations fall into two categories
|
|
- Preprocessors
|
|
- Transpilers
|
|
- Caveat: thin wrapper around JavaScript
|
|
|
|
---
|
|
|
|
-> # Introduction
|
|
|
|
- zepto-js attempts to build a runtime that is
|
|
foreign to JavaScript while still being compatible
|
|
- Features: Functional, Lisp, Macros, Continuations
|
|
|
|
---
|
|
|
|
-> # Related Work
|
|
|
|
-> ## Existing Projects
|
|
|
|
- Roughly two categories: transpilers and abstraction languages
|
|
- transpilers: compiles one high level language into another
|
|
- GHCJS
|
|
- Emscripten
|
|
- ClojureScript
|
|
- abstraction languages: add features to JavaScript, do not change semantics
|
|
- CoffeeScript
|
|
- Elm
|
|
- PureScript
|
|
|
|
---
|
|
|
|
-> # Related Work
|
|
|
|
-> ## Existing Standards
|
|
|
|
- Lisp pretty well standardized, but conflicting standards
|
|
- Scheme was chosen, so Scheme Requests for Implementation are relevant
|
|
- Unix: development artifact that affects zepto
|
|
|
|
---
|
|
|
|
-> # Concept Design
|
|
|
|
---
|
|
|
|
-> # System Design
|
|
|
|
- modifications of zepto for browser necessary
|
|
|
|
---
|
|
|
|
-> # System Design
|
|
|
|
- web ecosystem
|
|
- content delivery
|
|
- integration into websites (HTML, CSS, JavaScript, zepto)
|
|
|
|
---
|
|
|
|
-> # System Design
|
|
|
|
- API availability
|
|
- WebGL, WebAudio (through FFI)
|
|
- build tools (natively)
|
|
|
|
---
|
|
|
|
-> # Implementation
|
|
|
|
---
|
|
|
|
-> # Evaluation of the Prototype
|
|
|
|
- zepto is primarily a platform for prototyping
|
|
- Usability was measured during an introductory workshop
|
|
- Generally favorable feedback, questions mostly around tooling
|
|
|
|
---
|
|
|
|
-> # Evaluation of the Prototype
|
|
|
|
- Addition of the FFI solves performance problems
|
|
- suboptimal, but deemed acceptable for this particular use case
|
|
- Features missing affect the compatibility with existing zepto libraries
|
|
|
|
---
|
|
|
|
-> # Evaluation of the Prototype
|
|
|
|
- marginally slower than zepto reference in most use cases
|
|
- much slower than native JavaScript
|
|
- calling into FFI for performance optimization still necessary
|
|
|
|
---
|
|
|
|
-> # Summary and Outlook
|
|
|
|
- zepto-js is as experimental as zepto itself
|
|
- with the maturation of zepto and zeps, zepto-js can grow
|
|
- tooling still not on par with JavaScript
|
|
|
|
---
|
|
|
|
-> # Summary and Outlook
|
|
|
|
- since thesis was written:
|
|
- compiler backend to JavaScript in zepto (node)
|
|
- first stable release of zepto (version 0.9.6)
|
|
- zepto-js development stunted
|
|
|
|
---
|
|
|
|
-> # Thank you for listening.
|
|
|
|
-> I am now ready to take questions.
|