Ring is a great foundation for building HTTP servers in Clojure. However, Ring fails to solve many problems that high-performance and transactional HTTP servers must solve:
- What does the server do when it can't handle the request rate?
- How can the server dedicate more or fewer resources to different requests?
- How can long-running HTTP requests be easily developed, without blocking threads?
Spiral attempts to solve these problems by introducing a core.async based API that is backwards compatible with Ring and popular Ring servers, so that you don't need to rewrite your app to take advantage of these techniques.