项目作者: Macro-swift

项目描述 :
An unopinionated SwiftNIO based asynchronous I/O framework, Node.js like.
高级语言: Swift
项目地址: git://github.com/Macro-swift/Macro.git
创建时间: 2020-01-07T14:40:42Z
项目社区:https://github.com/Macro-swift/Macro

开源协议:Apache License 2.0

下载


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.

Streams

Checkout Noze.io for people who don’t know Node,
most things apply to Macro as well.

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:

  1. #!/usr/bin/swift sh
  2. import Macro // @Macro-swift ~> 0.8.0
  3. http
  4. .createServer { req, res in
  5. res.writeHead(200, [ "Content-Type": "text/html" ])
  6. res.write("<h1>Hello Client: \(req.url)</h1>")
  7. res.end()
  8. }
  9. .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

Async/Await

This intentionally doesn’t support async/await yet as proper streaming
would require custom executors. Which are not yet available.

Who

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!