Ruby Facets v2.4.0 Release Notes
Release Date: 2008-03-24 // about 16 years ago-
๐ 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 for a while.
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.
๐ Changes:
โจ Enhancements
- 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.
- camelcase and snakecase are core extensions. For specialized styles use String#style in style.rb.
- Renamed ArgVector to CLI::Arguments
- Moved one_nine.rb to ruby.rb
- Moved test/test_one_nine.rb to test/test_ruby.rb.
- Updated requires for "one_nine" to just "ruby" b/c of backports to 1.8.7.
- Added warning to Rick Kilmers's unit system.
- Moving Rich Kilmers's units system to it's own package.
- Three are alternate unit systems available and Facets should work with any of them.
- Will keep a fair amount of the Time extensions though.
- Moved nil/status.rb to nilstatus.rb
- Got rid of Method#curry and Method#partial since they just convert to Procs.
- Made op_esc.rb a separate module rather thanan extension.
- Deprecated with_reader, with_writer and with_accessor for attr_singleton_reader, &c.
- Deprecated Hash#pairs_at. Use Hash#slice instead from core.
- Fixed the namespaces of some extensions.
- Added prime directory and files.
- Removed all "prime" extension files.
- Move mattr to module.
- Fixed require bug in time methods.
- Reverted memomize.rb back to original code --will come back to later.
- Added stylizer.rb to replace stylize.rb
- Array #recursively is not only called #traverse.
- Added case/stylize methods to more/facets/string.
- Renamed more/string/facets/titlecase to captialize_all.
- Added uri and xoxo tests.
- Progressive work on memoize and elementor.
- Functor no longer privatizes =, == and =~.
- Properly split conversion.rb.
- Some string methods extracted from stylize.rb.
- Moved random.rb to more/.
- Renamed namespace.eb to methodspace.rb.
- Moved autoreload to more/facets/kernel.
- Removed old curry.rb.
- Added cgi.rb with some standard extensions.
- Deprecated paramix.rb.
- Added xmlhash.rb and returned uri.rb extensions to the library.
- Added #method_name to Date class.
- Remove cut-bases AOP, now in it's own library.
- Converted compare_on.rb to Paramtric Mixins.
- Split fileutils up into individual methods.
- Renamed console.rb to what it should be consoleutils.rb.
- Update to command.rb integrating MasterCommand and Command into a single class.
- Added options back into multiglob_r.
- Improved cloneable.rb to be a true deep dup/clone mixin using Ken Bloom's suggestion.
- Added tasksystem.rb.
- Added enumerable/combinations.
- Added openhash and tracepoint.
๐ Bug Fixes
- Fixed bug with #peek in stackable.
- Fixed bug in Kernel#object_hexid.
- Fixed bug in multiglob_r so it will NOT follow symlinks.
- Fixed test_keyize.rb.
Adminstrative Changes
- This was a fairly large and fast-paced update, so unfortunately not all changes are listed this time.
- Added ri generation to setup.rb.
- Updated README and allowed doc/ to be included in package.
- Finally completed removal of all embedded tests.
- Organized all libs between core, more, class and mixin.