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.