An unopinionated SwiftNIO based asynchronous I/O framework
Macro
A small, unopinionated "don't get into my way" / "I don't wanna wait" asynchronous web framework for Swift. With a strong focus on replicating the Node APIs in Swift. But in a typesafe, and fast way.
Macro is a more capable variant of µExpress. The goal is still to keep a small core, but add some Noze.io modules and concepts.
Eventually it might evolve into Noze.io v2 (once backpressure enabled streams are fully working).
The companion MacroExpress package adds Express.js-like middleware processing and functions, as well as templates. MacroLambda has the bits to directly deploy Macro applications on AWS Lambda.
What does it look like?
The Macro Examples package contains a few examples which all can run straight from the source as swift-sh scripts.
The most basic HTTP server:
#!/usr/bin/swift sh
import Macro // @Macro-swift ~> 0.8.0
http
.createServer { req, res in
res.writeHead(200, [ "Content-Type": "text/html" ])
res.write("<h1>Hello Client: \(req.url)</h1>")
res.end()
}
.listen(1337)
Macro also provides additional Node-like modules, such as:
fs
path
jsonfile
JSON
basicAuth
querystring
Environment Variables
macro.core.numthreads
macro.core.iothreads
macro.core.retain.debug
macro.concat.maxsize
macro.streams.debug.rc