README.md in polyphony-0.28 vs README.md in polyphony-0.29

- old
+ new

@@ -1,43 +1,45 @@ -# Polyphony - Easy Concurrency for Ruby +# Polyphony - Fine-Grained Concurrency for Ruby -[DOCS](https://dfab.gitbook.io/polyphony) | +[DOCS](https://digital-fabric.github.io/polyphony/) | [EXAMPLES](examples) -> Polyphony \| pəˈlɪf\(ə\)ni \| _Music_ - the style of simultaneously combining a number of parts, each forming an individual melody and harmonizing with each other. +> Polyphony \| pəˈlɪf\(ə\)ni \| +> 1. _Music_ the style of simultaneously combining a number of parts, each +> forming an individual melody and harmonizing with each other. +> 2. _Programming_ a Ruby gem for concurrent programming focusing on performance +> and developer happiness. ## What is Polyphony -Polyphony is a library for building concurrent applications in Ruby. Polyphony harnesses the power of [Ruby fibers](https://ruby-doc.org/core-2.5.1/Fiber.html) to provide a cooperative, sequential coprocess-based concurrency model. Under the hood, Polyphony uses [libev](https://github.com/enki/libev) as a high-performance event reactor that provides timers, I/O watchers and other asynchronous event primitives. +Polyphony is a library for building concurrent applications in Ruby. Polyphony +harnesses the power of [Ruby fibers](https://ruby-doc.org/core-2.5.1/Fiber.html) +to provide a cooperative, sequential coroutine-based concurrency model. Under +the hood, Polyphony uses [libev](https://github.com/enki/libev) as a +high-performance event reactor that provides timers, I/O watchers and other +asynchronous event primitives. -Polyphony makes it possible to use normal Ruby built-in classes like `IO`, and `Socket` in a concurrent fashion without having to resort to threads. Polyphony takes care of context-switching automatically whenever a blocking call like `Socket#accept` or `IO#read` is issued. - ## Features * Co-operative scheduling of concurrent tasks using Ruby fibers. * High-performance event reactor for handling I/O events and timers. * Natural, sequential programming style that makes it easy to reason about concurrent code. * Abstractions and constructs for controlling the execution of concurrent code: - coprocesses, supervisors, cancel scopes, throttling, resource pools etc. + supervisors, cancel scopes, throttling, resource pools etc. * Code can use native networking classes and libraries, growing support for third-party gems such as `pg` and `redis`. -* Use stdlib classes such as `TCPServer`, `TCPSocket` and +* Use stdlib classes such as `TCPServer`, `TCPSocket` and + `OpenSSL::SSL::SSLSocket`. * Competitive performance and scalability characteristics, in terms of both throughput and memory consumption. -## Prior Art - -Polyphony draws inspiration from the following, in no particular order: - -* [nio4r](https://github.com/socketry/nio4r/) and [async](https://github.com/socketry/async) - (Polyphony's C-extension code is largely a spinoff of - [nio4r's](https://github.com/socketry/nio4r/tree/master/ext)) -* [EventMachine](https://github.com/eventmachine/eventmachine) -* [Trio](https://trio.readthedocs.io/) -* [Erlang supervisors](http://erlang.org/doc/man/supervisor.html) (and actually, - Erlang in general) - ## Documentation The complete documentation for Polyphony could be found on the -[Polyphony website](https://dfab.gitbook.io/polyphony). +[Polyphony website](https://digital-fabric.github.io/polyphony). + +## Contributing to Polyphony + +Issues and pull requests will be gladly accepted. Please use the [Polyphony git +repository](https://github.com/digital-fabric/polyphony) as your primary point +of departure for contributing. \ No newline at end of file