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.