--- 
layout: post
title: Facets 2.7 is a Significant Release
author: Trans
tags: 
- Release
---

Facets 2.7 is most significant 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 available 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?.

## Spun-Off Projects

These libraries have been deprecated 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
    macther.rb            language
    basex.rb              radix
    minitar.rb            archive-tar-minitar, 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, openhash
    openobject.rb         openhash
    opencollection.rb     openhash
    opencascade.rb        openhash
    openhash.rb           openhash
    openmodule.rb         openmodule
    fileable.rb           fileable
    expirable.rb          expirable
    enumerablepass.rb     enumargs


## Deprecations Without Current Replacement

The libraries have been deprecated but do not yet have replacements.
Separate 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.

In addition to all this we've also taken some time to ensure Ruby Facets is more compatible
with Ruby 1.9 --indeed, at this point, it should be very close to fully compatibility. In
the process of doing this, btw, it has become clear that Ruby 1.9 picked up a good number
of methods already supported by Facets (some with the same exact names and some with
changed names). There's no way to know if Facets had any influence in these additions
to 1.9, but at the very least we can be sure that Facets contributed to "airing the field"
that led to their addition. That's a great thing, as it means Facets is directly contributing
to Ruby's future. I hope that will continue.

