Object-Oriented Reactive Lisp Systems for Rapid Web Application Development
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
Ant Design, Ant Vision, ...
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.
- Overall
- Use in production environments
- Write documentation
- Carefully design conditions and errors
- Write more tests
Add project build status graph- Add code coverage informataion
- HTTP
- Use Asynchronous I/O in LispWorks
- Use Recursive Event Dispatching (SERVE-EVENT) in SBCL
- 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
- Use Asynchronous I/O in LispWorks
- Use Recursive Event Dispatching (SERVE-EVENT) in SBCL
- Implement server statistics and metrics monitoring
- Implement traffic throttling and message size limiting
- Support Compression Extensions
- Support WSS for both client and server
- URI
- Test against Web Platform Tests
- HTML
Implement parserImplement pretty print(?) (NO)- Refine element constractor error report
Implement DOM, abandon CXML's DOM implementation- Test against Web Platform Tests
- JSON
Test against JSONTestSuiteImplement accessors for objectImplement 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
Copyright 2018-2020 Xiangyu He. Released under the 3-Clause BSD License.