Files
bachelor-presentation/presentation.md
2017-01-17 15:48:25 +01:00

2.6 KiB

%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.