All Projects → Zewo → Zewo

Zewo / Zewo

Licence: mit
Lightweight library for web server applications in Swift on macOS and Linux powered by coroutines.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Zewo

Venice
Coroutines, structured concurrency and CSP for Swift on macOS and Linux.
Stars: ✭ 1,501 (-19.13%)
Mutual labels:  coroutines, non-blocking, fibers, server-side-swift, swiftpm, green-threads
Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (-83.41%)
Mutual labels:  concurrency, coroutines, fibers
Boson
A C++14 framework for asynchronous I/O, cooperative multitasking and green threads scheduling
Stars: ✭ 154 (-91.7%)
Mutual labels:  coroutines, fibers
Pulsar
Fibers, Channels and Actors for Clojure
Stars: ✭ 885 (-52.32%)
Mutual labels:  concurrency, fibers
Vibe Core
Repository for the next generation of vibe.d's core package.
Stars: ✭ 56 (-96.98%)
Mutual labels:  concurrency, fibers
Sockets
🔌 Non-blocking TCP socket layer, with event-driven server and client.
Stars: ✭ 559 (-69.88%)
Mutual labels:  non-blocking, server-side-swift
Reflection
DEPRECATED
Stars: ✭ 592 (-68.1%)
Mutual labels:  server-side-swift, swiftpm
Slackkit
Build Slack apps, in Swift
Stars: ✭ 977 (-47.36%)
Mutual labels:  server-side-swift, slack
Dokku
A docker-powered PaaS that helps you build and manage the lifecycle of applications
Stars: ✭ 22,155 (+1093.7%)
Mutual labels:  heroku, buildpack
Materialactivityindicator
Material Activity Indicator
Stars: ✭ 109 (-94.13%)
Mutual labels:  xcode, swiftpm
Slack Sql
🎉 Bring SQL console to Slack
Stars: ✭ 115 (-93.8%)
Mutual labels:  heroku, slack
Slacker
Slack Bot Framework
Stars: ✭ 495 (-73.33%)
Mutual labels:  concurrency, slack
Elle
The Elle coroutine-based asynchronous C++ development framework.
Stars: ✭ 459 (-75.27%)
Mutual labels:  coroutines, fibers
Fibertaskinglib
A library for enabling task-based multi-threading. It allows execution of task graphs with arbitrary dependencies.
Stars: ✭ 679 (-63.42%)
Mutual labels:  coroutines, fibers
Quasar
Fibers, Channels and Actors for the JVM
Stars: ✭ 4,349 (+134.32%)
Mutual labels:  concurrency, fibers
May
rust stackful coroutine library
Stars: ✭ 909 (-51.02%)
Mutual labels:  coroutines, fibers
Mioco
[no longer maintained] Scalable, coroutine-based, fibers/green-threads for Rust. (aka MIO COroutines).
Stars: ✭ 125 (-93.27%)
Mutual labels:  coroutines, fibers
Themer
themer is inspired by trevordmiller/nova and chriskempson/base16.
Stars: ✭ 4,483 (+141.54%)
Mutual labels:  xcode, slack
Hero
Elegant transition library for iOS & tvOS
Stars: ✭ 20,547 (+1007.06%)
Mutual labels:  xcode, swiftpm
Jonsnow
App Store/Google Play review watcher, deliver new reviews to slack channel
Stars: ✭ 65 (-96.5%)
Mutual labels:  heroku, slack

Zewo

Swift License Slack Codebeat

Why Zewo?SupportCommunityContributing

Zewo

Zewo is a lightweight library for web applications in Swift.

What sets Zewo apart?

Zewo is not a web framework. Zewo is a lightweight library for web applications in Swift. Most server-side Swift projects use Grand Central Dispatch (GCD) as the concurrency library of choice. The drawback of using GCD is that its APIs are asynchronous. With async code comes callback hell and we all know it, it's no fun.

Node.js is the best example of how callbacks can be frustrating. Express.js creator TJ Holowaychuk wrote a blog post about Callback vs Coroutines in 2013 and one year later left the Node.js community in favor of Go. There were many reasons for that but one of the main reasons was the concurrency model. Sure we have futures and promises and functional reactive programming. They all mitigate the problem, but the async nature of the code will always be there.

At Zewo we use coroutines. Coroutines allow concurrency while maintaining synchronous APIs. We all learn how to program with synchronous code. We're used to reason about our code synchronously. Being able to use synchronous APIs makes the code much more readable and understandable. Coroutines are also faster than threads, because they live in user-space, unlike threads which are managed by the kernel.

Our implementation of coroutines (which is based on libdill) is single-threaded. This means that you don't have to worry about locks or race conditions. So your code is safer by default. To use all the CPU power available all you have to do is to replicate the work according to the number of logical CPUs available. As an example, this could mean running as many processes of your server as cores in your machine. Rob Pike, one of the creators of Go had a talk called Concurrency is not Parallelism that explains this concept very well. Go also has the philosophy:

Don't communicate by sharing memory. Share memory by communicating.

Like Go, instead of sharing memory and handling state we promote the use of CSP-style concurrency using channels. This pattern brings the abstractions used on the development of distributed systems closer to the way we're used to think about communication. It also aligns well with Swift's mindset of immutability and value types. All of these things contributes to a distinct experince on the server-side Swift.

With Zewo you get:

  • Go-style concurrency
  • Synchronous APIs
  • Incredible performance
  • Safer applications
  • Scalable systems
  • Cleaner code
  • Proper error handling
  • No callback hell
  • No race conditions

Support

If you have any trouble create a Github issue and we'll do everything we can to help you. When stating your issue be sure to add enough details and reproduction steps so we can help you faster. If you prefer you can join our Slack and go to the #help channel too.

Community

We have an amazing community of open and welcoming developers. Join us on Slack to get to know us!

License

All Zewo modules are released under the MIT license. See LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].