Facets is a single largest collection of core extension methods and standard class additions available for the Ruby programming language.
= Release Notes
Facets 2.4 is a major step forward for Facets. It is perhaps the release that 2.0 should have been, but of course it took the actual 2.0 release to make 2.4 possible. Some annoyances you may have encountered in updating your code to 2.0 are now fixed. And from 2.4 on, Facets will now be settling down into simple refinement release cycles.
The main change under the hood is to bring everything up to the top lib/facets/ directory. No longer are the libraries sorted by category. I had done so for a long time to make it easier to track the various libs, but in the end it was only making it more diffcult to deal with build tools and packaging.
For the end-user, the largest change is a new emphisis on:
require 'facets'
This is better than cherry-picking methods. It may seem counter- intuitive, but it actually proves more advantantages to do this for the sake of interoperability than the practice of cherry-picking. The reason is simply because others may have cherry-picked different methods, and those distinctions go unaccounted and untested.
Also with this release, to bolster the use of require 'facets', some lack-luster extensions have been deprecated and namespace usage has been improved. In addition, we are getting very close to full ActiveSupport, and Ruby 1.9, interoperability. Expect this to be complete in the next minor release or two.
= Previous Notes
(2.3.0) Amoung other changes with this release, cloneable.rb is now a true deep dup/clone mixin; tracepoint.rb returns to the library.
(2.2.1) This release get rid of the underlying methods subdir. All method redirects are now in core, to ensure there are no more name clashes.
(2.2.0) This release provides improved rdocs and prepares facets for use with RUby 1.9. It also adds Matthew Harris' duration.rb library. Bug thanks to Matthew!
(2.1.0) Major changes include a new and much-improved command.rb, a new BiCrypt class for simple two-way crypotgraphy, as well as attr_reader!, attr_writer! and attr_accessor! for flag attributes, plus alias_xxx methods for all attr_xxx methods.
= Change History
== 2.4.1 / 2008-04-03
* Comparing to ActiveSupport, found 63 extension clashes, but mos are due to 1.9 features and the rest should be compatible.
* A much imporoved paramix.rb has been returned to the library; but please note it's not quite finished yet.
* Reatomized a number of Kernel and String methods. Reatomization is nearly complete.
* Deprecated behavior.rb. It was not robust.
* Added basex.rb, library for working in any encoding base using any character set (base62 is the default).
== 2.4.0 / 2008-03-24
* String#to_re and String#to_rx have swapped default behaviors. #to_rx escapes, #to_re does not.
* The Console namespace is being deprecated. command.rb and arguments.rb now use CLI naemspace.
* #compare_on and #equate_on are now "mixin methods" Comparable() and Equateable().
* Enumerable#product, #combintations and #permutations have change to be Ruby 1.9 compatible.
* thread.rb, map_send, et al, block is passed to send instead of yielding on result.
* namespace.rb has been renamed to methodspace.rb.
* Ruby 1.9 defined a new Proc#curry method, so Facets version has been made compatible.
* The old curry method is now called #partial, as in "partial application".
* Deprecated interface.rb. Perhaps a better approach but nonetheless extraneous.
* Deprecated paramix.rb. A better way is to use a capitialized methods. (Perhaps a lib for that?)
* Brought back a few web related libs, htmlfilter.rb and cssfilter.rb in particular.