Fetching contributors…
Cannot retrieve contributors at this time
274 lines (211 sloc) 12.7 KB

Ripple Release Notes

0.9.4 Patch Release – 2011-05-10

Release 0.9.4 is a minor bugfix release.

Full notes:

  • Allow global JSON options to be set so that deeply nested objects can be serialized.
  • Set TCP_NODELAY on PBC sockets and send messages in a single write to reduce latency. [Technorama, Dan Hodge]
  • X510 should be X509 in OpenSSL. [Adam Hunter]

0.9.3 Patch Release – 2011-04-18

Release 0.9.3 is a minor bugfix release.

Full notes:

  • Make YAML serialization spec immune to engine differences. [Jeff Pollard]
  • Key-streaming over HTTP are immune to JSON objects that cross chunk boundaries.
  • Require ‘yaml’ so we can read the config file.
  • Require ‘erb’ so we can eval the config. [Myron Marston]
  • Move definition of validates_associated back into the validator. [Myron Marston]
  • Require ‘set’ before Set is extended. [André Silva]

0.9.2 Patch Release – 2011-04-11

Release 0.9.2 is a minor bugfix release.

Full notes:

  • Remove usage of autoload from all projects to reduce thread-safety problems.
  • Fix Excon backend to properly initialize response headers under error conditions. [Jeff Pollard, Myron Marston]
  • Excon yields multiple arguments to the streaming block.

0.9.1 Patch Release – 2011-04-07

Release 0.9.1 is a minor bugfix release.

Full notes:

  • Fix strange encoding problems on Ruby 1.9 when using Protocol Buffers.
  • Use http_port rather than port in the generated TestServer. [Myron Marston]

0.9.0 Feature Release – 2011-04-03

Release 0.9.0 is a huge step forward from the 0.8 series, including support for Riak 0.14.x features, Protocol Buffers transport, and many bugfixes.

Following this release, the code will be branched into a 0.9-stable branch, which will only receive critical bugfixes. Development of 1.0 features will occur on the master branch.

Full notes:

  • Fixed some client semantics: separate ports for protocols, client ID responsibility.
  • Add definition of EmbeddedDocument#==. [Myron Marston]
  • Allow a many-linked doc to be removed from an association. [Myron Marston]
  • Fix one-linked association to return nil appropriately. [Myron Marston]
  • Added external JSON serialization for Ripple documents.
  • Fixed validates_associated. [Myron Marston]
  • Fixed assignment bug in one-embedded associations. [Myron Marston]
  • Added integration tests that work across all client backends.
  • Added support for Protocol Buffers transport with Beefcake library.
  • Added HTTP Basic authorization support. [Adam Hunter]
  • Added HTTPS support. [Adam Hunter]
  • Normalized project Gemfiles.
  • Extracted stream-isolating pump pattern from client backends.
  • Improve speed and reliability of test server.
  • Bubble up errors when saving a document. [Duff OMelia]
  • Add automatic expiration to Rack session store.
  • Use ISO8601 datetime format in stored documents (configurable). [Nicolas Fouché]
  • Access document attributes that do not have a declared property. [Duff OMelia]
  • Fix document callback ordering. [Nathaniel Talbott]
  • Consolidate setting of the object key when link-walking. [Kyle Kingsbury]
  • Added support for streaming MapReduce.
  • Bucket instances are now memoized in the Client. [Woody Peterson]
  • Client backends were refactored so that higher layers are not concerned with transport semantics.
  • Fix false.present? bug.
  • Riak 0.14 features:
    • MapReduce has support for key-filters.
    • Add list_buckets operation.
    • HTTP resources prefixes can be discovered from the root URL.
  • Added document observers using ActiveModel::Observer. [Stefan Sprenger]
  • :key is a protected attribute on Document models. [Adam Hunter]

0.8.3 Patch/Minor Feature Release – 2010-12-13

Release 0.8.3 includes new generators for Rails 3 projects, a new HTTP backend based on Wesley Beary’s Excon library, and significant bugfixes for Document models.

riak-client is now also completely independent of ActiveSupport, and all three libraries have better support for JRuby.

Full notes:

  • Fix edge case where NetHTTPBackend would not #to_i the response code.
  • Improve handling of Time properties, including ActiveSupport::TimeWithZone. [Duff O’Melia]
  • Don’t cast empty string for Numeric property types. [Marco Campana]
  • Add MapReduce built-ins generator.
  • Add generators to help with Riak::TestServer and initial Rails 3 setup. [Duff O’Melia, Sean Cribbs]
  • Improve handling of Document properties we don’t know about.
  • Refactored RequestHeaders so it can be used by multiple backends.
  • Add Excon HTTP backend.
  • Control mock HTTP server via DRb so as to avoid deadlocks.
  • Monkeypatch #present? seperately from #blank?. [Kyle Kingsbury]
  • Improved RObject#inspect output. [Jay Adkisson]
  • Fix Bucket#keys raising exceptions on rare occasions. [Kyle Kingsbury]
  • Add support for mass-assignment security on Document models.
  • Moved ActiveSupport version check into CacheStore.
  • Added example TestServer config files.
  • Allow document assignment even if the value is a proxy. [Duff O’Melia]
  • Remove “install curb” warnings.
  • Improve JRuby compatibility.
  • Resolve Hash-ordering differences between 1.9 and 1.8 in specs.
  • Fix 1.8.x issue with Open3 returning a nil waitthread in the TestServer.
  • Removed riak-client dependency on ActiveSupport. [Kyle Kingsbury]
  • Report a changed attribute only if its value changes. [Duff O’Melia]
  • Reloading a Ripple::Document now casts property values. [Duff O’Melia]

0.8.2 Patch/Minor Feature Release – 2010-10-22

Release 0.8.2 includes significant additions to support features in Riak 0.13, including Riak Search and Luwak.

Simply require 'riak/search' to add Search-related features to riak-client.

Full notes:

  • Fixed bug in embedded associations where associated validators would be added every time the association was instantiated. [Adam Hunter]
  • Update and loosen dependencies to Rails 3.0.1 and RSpec 2.
  • Add support for file-existence check in Luwak. [John Axel Eriksson]
  • Avoid clobbering an existing Boolean class or module.
  • Add Luwak support.
  • Add Search features. [Sean Cribbs, Rusty Klophaus]

0.8.1 Patch/Minor Feature Release – 2010-10-11

Release 0.8.1 includes several new features and bugfixes.

Full notes:

  • Riak::TestServer makes it easier and faster to run automated tests that need to store data in Riak. It includes an in-memory Riak backend that quickly clears its contents at the end of a test/example. All included integration tests now use this.
  • Headers are turned into strings before splitting into 8KB chunks. [Nicolas Fouché]
  • Riak::RObject#prevent_stale_writes option allows conditional PUT semantics, matching on ETag. [Lee Jensen]
  • Riak::RObject#raw_data gives access to the object data before deserialization. [Lee Jensen]
  • Boolean properties on Ripple documents now allow a default value of false. [Duff O’Melia]
  • Ripple documents now support accepts_nested_attributes_for. [Brian Kaney]

0.8.0 Feature Release – 2010-08-31

The 0.8.0 release is packed full of new features and bugfixes. Of particular note are:

  • Rails 3 final support
  • Session stores
  • Linked associations
  • Riak 0.12 support

Full notes:

  • Ripple::Document classes can define their desired quorum parameters.
  • ripple and riak-sessions use Rails 3 final. riak-client is still compatible with active_support >= 2.3.5.
  • Keys are not loaded by default when requesting a Riak::Bucket. This matches the default for Riak 0.12.
  • Ripple::Document now supports update_attributes and update_attribute.
  • Inspection output has been improved for Ripple documents.
  • Ripple::Document classes can now have associations that use links.
  • Property-casting patches are now eagerly loaded.
  • Certain responses from MapReduce can be converted into Riak::RObjects. [Misha Gorodnitzky]
  • Key/bucket (un)escaping has been improved. [Nicolas Fouché]
  • Riak::CacheStore sets and uses bucket-default quorums instead of per-request parameters.
  • Riak::Bucket supports new quorum defaults.
  • The default configuration file for Ripple is now config/ripple.yml. [Ashley Woodard]
  • Added a Rails 3 model generator. [Ashley Woodard]
  • Serializing RObject data via Marshal is now simpler, using “application/x-ruby-marshal” content-type.
  • Large HTTP headers (Link tends to be one) are split into 8KB chunks for both backends.
  • Added session stores for Rack and Rails 3.
  • Document#find returns nil when all arguments are blank.
  • CurbBackend now properly handles IO objects as the request body data.
  • Ripple::Document classes that have the same bucket/key are equivalent using ==.
  • Ripple::Document classes can use a property as the key, as long as it’s a String.

0.7.1 Patch Release – 2010-06-08

This release has no new features but includes bug fixes and some internal refactoring of the Ripple::Document hierarchy.

  • The Net::HTTP backend should handle streamed keys better (although
    still not perfectly).
  • The Riak::MapReduce#timeout method now returns self, allowing
  • The Ripple::Document and Ripple::EmbeddedDocument are less coupled
    from one another so numerous internal confusions about calling order
    are fixed.
  • When using Riak::RObject#to_link, a blank tag is no longer allowed.

0.7.0 Feature Release – 2010-05-06

This release includes a number of new features. The largest change is that the library is now split into two gems, ‘riak-client’ and ‘ripple’. ‘riak-client’ supports ActiveSupport 2.3.5, ‘ripple’ only supports 3.0.0.beta3.

A big kudos goes to Adam Hunter who contributed the majority of the new associations code.

In addition, these changes were made:

  • Keys should stream properly now from Bucket#keys (the “stream” option was left off).
  • Deletes can be issued directly from a Bucket without instantiating an RObject.
  • Added a ActiveSupport 3.0-compatible Cache Store. [Shay Frendt]
  • Added Bucket#exists?
  • A provisionally complete implementation of embedded document associations. [Adam Hunter]
  • Ripple::Document passes ActiveModel::Lint tests.
  • Updated Rails 3 dependencies to beta3 and RSpec to 2.0.0.beta6
  • Ripple::Document handles nil keys better. [John Lynch]

0.6.1 Patch Release – 2010-03-17

This is a minor release with fixes for a few issues:

  • Riak::Link objects will now be unique when added to RObject#links
    Set. [John Lynch]
  • Attributes on Ripple::Document classes are no longer clone, which had
    prevented non-scalar properties from being modified directly (e.g. Array).
  • Buckets, keys, and walk specs are properly escaped in URLs
    (including slashes).
  • Time-related properties properly convert to string formats in JSON that
    they will work in the context of MapReduce jobs.

0.6.0 Feature Release – 2010-03-05

This release contains enhancements and bugfixes in preparation for the
Riak 0.9 release.

  • The CurbBackend now uses fibers to prevent curl-handle corruption when
    a block is given to streaming operations.
  • The default prefix is now “/riak/” to match the latest version of Riak.
  • The client configuration for Ripple is now used.
  • Added Bucket#new and Bucket#get_or_new for easily creating new objects.
  • Added Bucket#allow_mult and Bucket#n_value accessors for more easily setting
    bucket properties.
  • Added timestamps! method for easily adding created_at/updated_at to documents.
    [Adam Hunter]
  • The ‘links’ collection on RObject is now a Set instead of an Array.
  • All literal messages are now stored in YAML localization files.
  • Object siblings (caused by concurrent updates when allow_mult is true) can now
    be accessed directly.
  • Map-reduce jobs now have timeouts (in parity with Riak).

0.5.1 Patch Release – 2010-02-22

This is a minor release with fixes for Ruby 1.9, bundler/edge Rails,
and a minor feature addition. Changes:

  • Qualify namespaces for Ruby 1.9.
  • Decoupled a few specs that gave the appearance of failure.
  • Added “bucket” and “key” properties on Riak::Link objects. [John Lynch]
  • Fully-qualify the JSON constant, using ActiveSupport::JSON instead.
  • Adjusted gem specification to accommodate edge Rails. [Preston Marshall]

0.5 Initial Release – 2010-02-10

This is the first release of Ripple, which would not have been possible
without the generous support of Sonian and Basho Technologies. Many thanks.
It includes:

  • A robust basic client, Riak, with:
    • multiple HTTP backends (curb, net/http)
    • sensible client defaults (local, default port)
    • bucket access and manipulation, including key-streaming
    • object reading, storing, deleting and reloading
    • automatic de-serialization of JSON, YAML, and Marshal (when given the right content type)
    • streaming POST/PUT bodies (when given an IO)
    • method-chained map-reduce job construction
  • A document-style modeling library, Ripple, with:
    • ActiveModel 3.0 compatibility
    • Property/attribute definition with automatic type-casting
    • Bucket selection based on class name, with single-bucket inheritance (configurable)
    • Validations
    • Dirty-tracking
    • Simple finders – all documents, by key
    • Reloading