Skip to content

v0.3.0-rc

Pre-release
Pre-release
Compare
Choose a tag to compare
@arteymix arteymix released this 18 Nov 15:51
· 176 commits to master since this release
v0.3.0-rc
All APIs are annotated with '[Version]' to mark experimental and stable
symbols.

On VSGI:

 - modularize implementations and load them dynamically with 'GLib.Module'
 - rewrite 'Server' listen API upon 'GLib.SocketAddress'
 - add 'Server.uris' to introspect listening interfaces
 - support graceful shutdown on 'SIGTERM' via 'Server.stop'
 - use an abstract class for representing handlers and provide a module for
   loading custom handlers
 - add 'expand' utilities to produce fixed-size body
 - add 'convert' to apply transformation on request and response bodies
 - add 'tee' to tee the response body stream
 - add 'Authentication' and 'Authorization' to represent headers involved in
   HTTP authentication
 - support the 'Basic' authentication scheme

Internally

 - uniform CGI environment interpretation across CGI, FastCGI and SCGI server
   backends
 - async I/O for FastCGI
 - async netstring processing for SCGI

On Valum

 - improve rules with groups, optional and any semantics
 - use flags instead of strings for HTTP methods
 - add 'Router.asterisk', 'Router.path' and 'Router.once'
 - split 'Route' into abstract class and implementations
 - add parameter types via 'register_type'
 - drop CTPL integration due to conflicting license issue, but document
   existing templating solutions

In term of middlewares

 - add 'negotiate', 'accept', 'accept_encoding', ... to negotiate resource
   representation via HTTP headers
 - add 'authenticate' to perform basic HTTP authentication
 - add 'stream_events' for Server-Sent Events protocol
 - add 'basepath' to deal with path prefix
 - add 'decode' to unapply various 'Content-Encoding'
 - add 'serve_from_file', 'serve_from_resource' and more middlewares to deliver
   static resources
 - add 'subdomain' to branch based on a domain pattern
 - add 'sequence' to compose middlewares
 - add 'safely' to handle errors locally