An unopinionated SwiftNIO based asynchronous I/O framework, Node.js like.
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.
Checkout Noze.io for people who don’t know Node,
most things apply to Macro as well.
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
macro.core.numthreads
macro.core.iothreads
macro.core.retain.debug
macro.concat.maxsize
macro.streams.debug.rc
This intentionally doesn’t support async
/await
yet as proper streaming
would require custom executors. Which are not yet available.
Macro is brought to you by
Helge Heß / ZeeZide.
We like feedback, GitHub stars, cool contract work,
presumably any form of praise you can think of.
There is a #microexpress
channel on the
Noze.io Slack. Feel free to join!