lisp meet up #36, common lisp script: isomorphism in common lisp
TRANSCRIPT
![Page 1: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/1.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/2.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/3.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/4.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/5.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/6.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/7.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/8.jpg)
Demo 1 - Based on jscl
localhost:5000/demo1
© Masayuki Takagi 8
![Page 9: Lisp Meet Up #36, Common Lisp Script: isomorphism in Common Lisp](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/9.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022100423/5889be8c1a28abca448b4999/html5/thumbnails/10.jpg)
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