Ruby Facets v2.7.0 Release Notes
Release Date: 2009-08-01 // almost 15 years ago-
๐ Facets 2.7 is the biggest release of Facets since 2.4. Rather then trickle-release these ๐ changes over the course of the 2.6.x series, I made the decision to let 2.7 have them ๐ all at once. In so doing this release nearly completes the process of trimming down the MORE library to its essentials. Over 40 high-level libraries have been spun-off ๐ as separate gems and/or deprecated. No doubt this is a big change for Facets, and the transition may be a bit bumpy over the short-term, but I am certain that in the long-run ๐ everyone involved will be better served. To help, I have listed the effected libraries and the alternate gems availble to take their place.
๐ A few other changes have also been made in the release that may also effect your code. In particular you should note that #class_extension has been renamed to #class_extend (require 'facets/class_extend'). In addition we have added a few new core methods such ๐ป as Exception#raised? and Symbol#thrown?.
๐ Changes:
- Spun-Off Projects
These libraries have been deprectated from Facets entirely, but are available as separate gems (or soon will be).
LIBRARY GEM -------------------- ------------------------------ overload.rb overload binreadable.rb binaryio downloader.rb downloader xoxo.rb xoxo bicrypt.rb bicrypt typecast.rb typecast association.rb association syncarray.rb sync synchash.rb sync paramix.rb paramix crypt.rb crypt3 lrucache.rb lrucache net/smtp_tls.rb smtp_tls advisable.rb advisable buildable.rb buildable memoizer.rb memoizer harray.rb sparray sparse_array.rb sparray iteration.rb iteration interval.rb stick infinity.rb stick pool.rb pool linkedlist.rb linkedlist semaphore.rb semaphore pqueue.rb pqueue censor.rb language matcher.rb language basex.rb radix minitar.rb archive-tar-minitar -or- folio
- Spun-Off But Still Available
These libraries have been spun-off into stand-alone gems, but remain ๐ available via Facets too. Ultimately some of these will be removed from Facets too (in particular the ansi libraries).
LIBRARY GEM -------------------- ------------------------------ ansicode.rb ansi progressbar.rb ansi logger.rb ansi tracepoint.rb tracepoint dictionary.rb dictionary recorder.rb recorder ostructable.rb ostructable -or- openhash openobject.rb openhash opencollection.rb openhash opencascade.rb openhash openhash.rb openhash openmodule.rb openmodule fileable.rb fileable enumerablepass.rb enumargs
- ๐ Deprecations Without Current Replacement
๐ The libraries have been deprecated but do not yet have replacements. Seperate gems for these are planned though.
bbcode.rb ini.rb settings.rb xmlhash.rb
- ๐ Deprecations Merged Into CORE
๐ These libraries have been deprecated because their functionality was merged into the CORE library and/or made available in some another way.
1stclassmethod.rb #method! and #instance_method! are now part of CORE. elementor.rb #per has been added to CORE. elementwise.rb #ewise has been added to CORE. consoleutils.rb #ask is in CORE, for the rest see Ansi or Clio project. attr.rb Added Module#attr_setter to CORE, and separated the rest in MORE.
- ๐ General Deprecations
๐ These libraries have simply been deprecated because they were found lacking in some significant fashion.
nilstatus.rb Poved rather useless, not to mention trivial. heap.rb Heap was just an alias for PQueue anyway. Use 'pqueue' instead. dependency.rb Other solutions exist that are much better (like Advisable). classmethods.rb #class_extend solution is more robust. ziputils.rb Have a look at Folio (gem install folio) for replacement. unheritable.rb Implementation is trivial and usefulness questionable. instantise.rb Replaced by instance_function.rb.
Other Enhancements
- Fixed Proc#curry to work with #define_method (Thanks to R.Potter)
- Module#class_extension has been renamed to #class_extend (require 'facets/class_extend').
- kernel#instance is no longer in core; now it is an extra monkey patch for #instance_eval.
- Kernel#this has been removed. It is equivalent to 'method(method)'.
- BlankSlate is now an alias for BasicObject, and will be deprecated in the future.
- Kernel#method! and Module#instance_method! now use a global variable for their cache.
- #object_state (old name was #state) has been added to core.