Lisp Web Toolkit
Object-Oriented Reactive Lisp Systems for Rapid Web Application Development
Status
Layer 1: (Work in Progress) Rich set of features for fundamental Web-related technologies
HTTP, WebSocket, URI, JSON, DOM, HTML, CSS, JavaScript
Layer 2: (Experimeltal) Component abstraction and reactive behavior
Component, Live
Layer 3: (Planning) Integration with enterprise-class vendor libraries
Systems
WT.HTTP provides HTTP functionality based on RFC 7231 Hypertext Transfer Protocol (HTTP/1.1), together with implementation of server and client.
WT.WEBSOCKET provides WebSocket functionality based on RFC 6455 The WebSocket Protocol, with interface inspired by JSR 356, Java API for WebSocket. The system is tested against the Autobahn WebSocket Testsuite.
WT.HTML implements HTML constructor, parser and serializer. The parser is designed to conform to the WHATWG HTML Specification, as is implemented by all major web browsers. It uses the Document Object Model (DOM) provided by WT.DOM.
WT.JSON implements JSON encoder and decoder based on ECMA-404 The JSON Data Interchange Standard. It distinguishes null, false and [] from Lisp's NIL thus supports identical transformation between JSON values. It provides object constructor and accessor to build and access nesting JSON objects. The system is tested against JSONTestSuite.
WT.URI provides URI parser, render and constructor with support for UTF-8 characters, IPv6 addresses and query parameters handling. It utilizes recursive descent parser combinators to provide a concise implementation that is close to the definition in RFC 3986 Uniform Resource Identifier (URI): Generic Syntax.
WT.CSS implements CSS constructor, parser and serializer based on specifications introduced in CSS Snapshot 2018.
WT.JAVASCRIPT implements JavaScript parser and serializer based on ECMAScript 2016 Language Specification (ECMA-262 7th Edition) with support for JSX syntax extension. It utilizes syntax tree components from the ESTree project.
WT.DOM implements Document Object Model (DOM) based on recent version of DOM Living Standard, it covers chapters on Nodes and Traversal.
WT.COMPONENT provices component abstraction, it combines Web Components style strong encapsulation and React style declarative DOM synchronization.
Roadmap
Overall
Use in production environments
Carefully design conditions and errors
Write more tests
Add project build status graph
Add code coverage informataion
HTTP
Abandon usocket & bordeaux-threads, write implementation-dependent code
Implement server statistics and metrics monitoring
Implement traffic throttling and message size limiting
Implement authentication, authorization and access control
Implement static file serving
Implement cache control
Implement compression
Implement logging
Implement HTTP/2
Implement common handlers
Implement virtual host
(Client) Support HTTPS
(Client) Support compression and decompression
(Client) Support HTTP Proxy
(Client) Support SOCKS Proxy
(Client) Support Basic Auth
(Client) Implement Cookie store
(Client) Support caching
WebSocket
Implement server statistics and metrics monitoring
Implement traffic throttling and message size limiting
Support WSS for both client and server
HTML
Implement parser
Implement pretty print(?) (NO)
Refine element constractor error report
Implement DOM, abandon CXML's DOM implementation
JSON
Implement accessors for object
Implement identical transformation for JSON values (null, false, [])
DOM
Implement common used functions
Implement namespace
Implement XPath
JavaScript
Implement JavaScript <=> S-expression code transformer
CSS
Parse common used property values and implement CSSOM
Author
License
Copyright 2018-2020 Xiangyu He. Released under the 3-Clause BSD License.