lisp meet up #36, common lisp script: isomorphism in common lisp

10

Click here to load reader

Upload: masayukitakagi

Post on 26-Jan-2017

1.020 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Common Lisp Script: isomorphism in Common Lisp2016.1.26 Masayuki Takagi

Lisp Meet Up presented by Shibuya.lisp #36

Page 2: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

About me

● Masayuki Takagi

● Common Lisp

● cl-cuda at Lisp Meet Up #19

● PIC compiler at Lisp Meet Up #25 and #27

● lake at Lisp Meet Up #31

© Masayuki Takagi 2

Page 3: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Motivation 1

● Isomorphism between browser side and server side in web applications.

● Mismatch of semantics as well as syntax.

© Masayuki Takagi 3

javascript

javascript

Common Lisp

javascript

node.js

ClojureScript

Clojure

Clojure Common Lisp

Browser side

Server side

Page 4: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Motivation 2

● jscl - A Lisp-to-Javascript compiler bootstrapped from Common Lisp

● davazp.net/jscl/jscl.html

© Masayuki Takagi 4

Page 5: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Scoping

Common Lisp Script targets the second of following considerable scopes:

● Abstraction including HTML and CSS, not only javascript.

● Isomorphism in Common Lisp between browser and server sides.

● Expressing javascript in S-expression. (Parenscript)

© Masayuki Takagi 5

Page 6: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

To be achieved

● Isomorphism in Common Lisp.

● Proper inter-bridging between Common Lisp and javascript.

● Separate compilation and dependency management.

● Integration management into HTML files.

● Ease of debugging including source map.

● Profiling.

● Documentation.

© Masayuki Takagi 6

Page 7: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Considerable approaches

1) Based on jscl (Demo 1)○ The browser loads jscl compiler as a javascript source file.○ The jscl on javascript VM compiles jscl Lisp codes.

2) Pre-compiling with jscl (Demo 2)○ With some hack, pre-compile jscl Lisp codes in server side.

3) Another Common Lisp to javascript compiler○ A bit tough.

4) ECL + Emscripten○ ECL compiles Common Lisp to C source files.○ Emscripten compiles C to javascript via LLVM IR.○ Full spec Common Lisp, though lacking CL-js FFI.

© Masayuki Takagi 7

Page 8: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Demo 1 - Based on jscl

localhost:5000/demo1

© Masayuki Takagi 8

Page 9: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Demo 2 - Pre-compiling with jscl

localhost:5001/demo2

© Masayuki Takagi 9

Page 10: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp

Want to contribute?

● GitHub repository github.com/takagi/common-lisp-script

● Mailing List groups.google.com/forum/#!forum/common-lisp-script-dev

© Masayuki Takagi 10