README.md in celluloid-0.18.0.pre vs README.md in celluloid-0.18.0.pre2

- old
+ new

@@ -1,22 +1,39 @@ -![Celluloid](https://raw.github.com/celluloid/celluloid-logos/master/celluloid/celluloid.png) -========= -[![Gem Version](https://badge.fury.io/rb/celluloid.svg)](http://rubygems.org/gems/celluloid) -[![Build Status](https://secure.travis-ci.org/celluloid/celluloid.svg?branch=master)](http://travis-ci.org/celluloid/celluloid) -[![Code Climate](https://codeclimate.com/github/celluloid/celluloid.svg)](https://codeclimate.com/github/celluloid/celluloid) -[![Coverage Status](https://coveralls.io/repos/celluloid/celluloid/badge.svg?branch=master)](https://coveralls.io/r/celluloid/celluloid) +# ![Celluloid][celluloid-logo-image-raw] +[![Gem Version][gem-image]][gem-link] +[![MIT licensed][license-image]][license-link] +[![Build Status][build-image]][build-link] +[![Maintained: no][maintained-image]][maintained-link] + +[celluloid-logo-image-raw]: https://raw.github.com/celluloid/celluloid-logos/master/celluloid/celluloid.png +[gem-image]: https://badge.fury.io/rb/celluloid.svg +[gem-link]: http://rubygems.org/gems/celluloid +[build-image]: https://secure.travis-ci.org/celluloid/celluloid.svg?branch=master +[build-link]: http://travis-ci.org/celluloid/celluloid +[license-image]: https://img.shields.io/badge/license-MIT-blue.svg +[license-link]: https://github.com/celluloid/celluloid/blob/master/LICENSE.txt +[maintained-image]: https://img.shields.io/maintenance/no/2016.svg +[maintained-link]: https://github.com/celluloid/celluloid/issues/779 + +_NOTE: This is the 0.18.x **development** branch of Celluloid. For the 0.17.x +**stable** branch, please see:_ + +https://github.com/celluloid/celluloid/tree/0-17-stable + > "I thought of objects being like biological cells and/or individual > computers on a network, only able to communicate with messages" > _--Alan Kay, creator of Smalltalk, on the meaning of "object oriented programming"_ Celluloid provides a simple and natural way to build fault-tolerant concurrent programs in Ruby. With Celluloid, you can build systems out of concurrent objects just as easily as you build sequential programs out of regular objects. Recommended for any developer, including novices, Celluloid should help ease your worries about building multithreaded Ruby programs. +## Motivation + Much of the difficulty with building concurrent programs in Ruby arises because the object-oriented mechanisms for structuring code, such as classes and inheritance, are separate from the concurrency mechanisms, such as threads and locks. Celluloid combines these into a single structure, an active object running within a thread, called an "actor", or in Celluloid vernacular, a "cell". @@ -67,38 +84,38 @@ [sister project DCell](https://github.com/celluloid/dcell). Evented IO similar to EventMachine (with a synchronous API instead of callback/deferrable soup) is available through the [Celluloid::IO](https://github.com/celluloid/celluloid-io) library. -Like Celluloid? [Join the mailing list/Google Group](http://groups.google.com/group/celluloid-ruby) -or visit us on IRC at #celluloid on freenode - ### Is it any good? [Yes](http://news.ycombinator.com/item?id=3067434) ### Is It "Production Ready™"? Yes, many users are now running Celluloid in production. * **See:** [Projects Using Celluloid](https://github.com/celluloid/celluloid/wiki/Projects-Using-Celluloid) -Documentation -------------- +## Discussion +Like Celluloid? [Join the mailing list/Google Group](http://groups.google.com/group/celluloid-ruby) +or visit us on IRC at #celluloid on freenode + +## Documentation + [Please see the Celluloid Wiki](https://github.com/celluloid/celluloid/wiki) for more detailed documentation and usage notes. The following API documentation is also available: * [YARD API documentation](http://rubydoc.info/gems/celluloid/frames) * [Celluloid module (primary API)](http://rubydoc.info/gems/celluloid/Celluloid) * [Celluloid class methods](http://rubydoc.info/gems/celluloid/Celluloid/ClassMethods) * [All Celluloid classes](http://rubydoc.info/gems/celluloid/index) -Related Projects ----------------- +## Related Projects Celluloid is the parent project of a related ecosystem of other projects. If you like Celluloid we definitely recommend you check them out: * [Reel][reel]: An "evented" web server based on `Celluloid::IO` @@ -121,80 +138,67 @@ [celluloid-smtp]: https://github.com/celluloid/celluloid-smtp/ [lattice]: https://github.com/celluloid/lattice/ [nio4r]: https://github.com/celluloid/nio4r/ [timers]: https://github.com/celluloid/timers/ -Installation ------------- +## Installation Add this line to your application's Gemfile: -```ruby -gem 'celluloid' -``` + gem 'celluloid' And then execute: $ bundle Or install it yourself as: $ gem install celluloid -Inside of your Ruby program, require Celluloid with [newest API](https://github.com/celluloid/celluloid/wiki/DEPRECATION-WARNING): +Require Celluloid with: -```ruby -require 'celluloid/current' -``` + require 'celluloid' -Or to support the old API, use: +## Supported Platforms -```ruby -require 'celluloid/backported' -``` +This library aims to support and is [tested against][travis] the following Ruby +versions: -###Cloning via GitHub +* Ruby 2.2.6+ +* Ruby 2.3.0+ +* JRuby 9.1.6.0+ -Right now `Celluloid` has a [submodule](https://github.com/celluloid/culture). To install the framework via GitHub, you need to clone the submodules as well. +If something doesn't work on one of these versions, it's a bug. -__Clone from scratch:__ +This library may inadvertently work (or seem to work) on other Ruby versions, +however support will only be provided for the versions listed above. - $ git clone --recursive https://github.com/celluloid/celluloid - -__If you already cloned `Celluloid` without submodules:__ +If you would like this library to support another Ruby version or +implementation, you may volunteer to be a maintainer. Being a maintainer +entails making sure all tests run and pass on that implementation. When +something breaks on your implementation, you will be responsible for providing +patches in a timely fashion. If critical issues for a particular implementation +exist at the time of a major release, support for that Ruby version may be +dropped. -Run the following command in the directory containing `Celluloid`: +[travis]: http://travis-ci.org/celluloid/celluloid/ - git submodule update --init --recursive +## Additional Reading -Supported Platforms -------------------- - -Celluloid works on Ruby 2.0+, JRuby 1.7+, and Rubinius 2.0. - -JRuby or Rubinius are the preferred platforms as they support true thread-level -parallelism when executing Ruby code, whereas MRI/YARV is constrained by a global -interpreter lock (GIL) and can only execute one thread at a time. - -Celluloid requires Ruby 1.9 mode or higher on all interpreters. - -Additional Reading ------------------- - -* [Concurrent Object-Oriented Programming in Python with - ATOM](http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=11A3EACE78AAFF6D6D62A64118AFCA7C?doi=10.1.1.47.5074&rep=rep1&type=pdf): +* [Concurrent Object-Oriented Programming in Python with ATOM][ATOM] a similar system to Celluloid written in Python -Contributing to Celluloid -------------------------- +[ATOM]: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=11A3EACE78AAFF6D6D62A64118AFCA7C?doi=10.1.1.47.5074&rep=rep1&type=pdf +## Contributing to Celluloid + * Fork this repository on github * Make your changes and send us a pull request * If we like them we'll merge them * If we've accepted a patch, feel free to ask for commit access -License -------- +## License Copyright (c) 2011-2016 Tony Arcieri, Donovan Keme. -Distributed under the MIT License. See [LICENSE.txt](https://github.com/celluloid/celluloid/blob/master/LICENSE.txt) for further details. +Distributed under the MIT License. See [LICENSE.txt](https://github.com/celluloid/celluloid/blob/master/LICENSE.txt) +for further details.