Ox
Safe direct-style concurrency and resiliency for Scala on the JVM. Requires JDK 21 & Scala 3.
To start using Ox, add the core
dependency as described below. Then, follow one of the topics listed in the menu
to get to know Ox’s API.
In addition to this documentation, ScalaDocs can be browsed at https://javadoc.io.
Start here
Adding Ox to your project
// sbt dependency
"com.softwaremill.ox" %% "core" % "0.5.2"
// scala-cli dependency
//> using dep com.softwaremill.ox::core:0.5.2
Scope of the Ox project
The areas that we’d like to cover with Ox are:
concurrency: developer-friendly structured concurrency, high-level concurrency operators, safe low-level primitives, communication between concurrently running computations
error management: retries, timeouts, a safe approach to error propagation, safe resource management
scheduling & timers
resiliency: circuit breakers, bulkheads, rate limiters, backpressure
All of the above should allow for observability of the orchestrated business logic. We aim to enable writing simple, expression-oriented code in functional style. We’d like to keep the syntax overhead to a minimum, preserving developer-friendly stack traces, and without compromising performance.
Some of the above are already addressed in the API, some are coming up in the future. We’d love your help in shaping the project!
Community
If you’d have feedback, development ideas or critique, please head to our community forum! Alternatively, you can create an issue or submit a pull request on GitHub.
Sponsors
Development and maintenance of Ox is sponsored by SoftwareMill, a software development and consulting company. We help clients scale their business through software. Our areas of expertise include backends, distributed systems, machine learning and data analytics.
Commercial Support
We offer commercial support for Ox and related technologies, as well as development services. Contact us to learn more about our offer!