Facets Release History

2.9.3 / 2011-12-31

Happy New Year! Ruby Facets kicks off the year with a 2.9.x release. This release adds a number of new methods, a few general improvements and bug fixes, a couple of deprecations and finally settles the project down to a two-part core/standard project organization.

Changes:

2.9.2 / 2011-08-23

The main purpose of this release is a fix for Module#redefine_method, so it will not conflict with ActiveSupport. Beyond that a handful of new methods have been added. This release also marks the start of using a src/ directory to generate the lib/ directory.

Changes:

2.9.1 / 2011-01-30

Primarily this release fixes a couple of small issues. But also a handful of new methods have been added.

Changes:

2.9.0 / 2010-09-01

This release is fairly extensive as it was originally intended to be v3.0. After further consideration it was decided to reserve v3.0 for the polish of real world feedback and more progressive changes. The primary focus of this release has been the completion of migrating Facets into a true extensions library. With this release almost all add-on classes and mixins have now been spun-off to other projects. Only the most general purposes add-on classes and mixins remain.

A new TOUR library division has also been added to complement CORE and MORE. This division houses purely optional extensions. The new division serves a couple of useful purposes. In particular, it helps separates the standard library extensions from optional core extension in the RDocs and thus makes the perfect place to vet new extension ideas.

One important change that will effect anyone using Facets along side ActiveSupport is that Facets no longer tries to conditionally avoid method overlaps with ActiveSupport. This is fine for the upcoming ActiveSupport 3.0 library which extends core classes directly instead of using mixins. One need only require ‘facets’ in the Rails config/preinitializer.rb file and ActiveSupport will take precedence over Facets. For older versions of ActiveSupport, the best approach is to cherry pick from Facets just the extensions you want, thus avoiding any conflicts. There are actually only a dozen or so overlaps and all are intended to compatible, but it doesn’t hurt to be sure.

Lastly, it is worth mentioning that this release has been more thuroughly tested than any version of Facets to date. Thanks to RVM this release runs green on Ruby 1.8.6, 1.8.7 and 1.9.2.

Changes:

2.8.4 / 2010-04-27

A minor point release just to get a few improvements out there before endeavering into more extensive work for the next major release.

2.8.3 / 2010-04-10

New release which makes a few adjustments in Kernel core extensions, adds a few new extensions and additions, plus other small improvements. The biggest change is the addition of Recusor, which is created via Enumerable#recursive. This class is somewhat like Enumerator and provides a number of recursive methods.

Changes:

2.8.2 / 2010-02-22

This release fixes a bug by removing Numeric#size. Turns out that was a core method already. It includes an “auditing” of the core enumerable method which has led to a few modifications most noteable amoung them renaming map_detect to find_yield and compact_map to purge.

Changes:

2.8.1 / 2009-12-25

This release simply fixes a few minor issues.

Changes:

2.8.0 / 2009-11-05

Facets 2.8 effectively completes the MORE library clean-up which peaked with the previous 2.7 release. Another eight libraries have been deprecated, a few of them spun-off to a separate project. However, this verison also reverts a few of the deprecations made in the last version. These libs will remain in Facets's MORE library for the forseeable future.

This version effectively concludes the MORE library clean-up. The next, and last version before Facets 3.0, will focus on “auditing” the CORE library.

Changes:

2.7.0 / 2009-08-01

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:

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

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

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

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.

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.

2.6.0 / 2009-07-03

Facets 2.6.0 removes htmlfilter.rb and cssfilter.rb due to licensing incompatability. These scripts are now available as a separate package called 'htmlfilter'. Also removed are a few MORE libs that were too expiremental and/or not robust enough. Effectively this finishes up the "spring cleaning" of the MORE lib mentioned a few releases back.

But it also marks a new start in trimming MORE down further. We have decided to do this for three reasons 1) Some of the MORE libs would be better served as separate projects. 2) Facets will become a tighter library, primarily focused on extensions. And 3) all libraries involved will become easier to maintain and thus more robust in the long run.

This release also fixes an important arity bug with the recently added Module#extend method –one of the very few actual core overrides in Facets.

Changes:

2.5.2 / 2009-04-07

Facets 2.5.2 is a simple maintentance release which fixed a few issues in the new to_hash.rb library. This release also added String#lowercase and String#uppercae.

Changes:

2.5.1 / 2009-03-05

Facets 2.5.1 fixes a few bugs, makes some small but nice additions and improves 1.9 compatibility.

The most important addition to make note of is Object#extend, which has been overridden to allow a block parameter. This is one of only two or three actual “monkey patches” in all of Facets. The block, when provided, is used to create an annonymous module which then extends the reciever. This is a “good practice” way to extend objects, rather than using class_eval on the singleton class.

Special thanks to Erik Veenstra, Pit Capitan and especially Sandor Szücs for their contributions to this release.

Changes:

2.5.0 / 2008-11-23

Facets 2.5.0 is an important milestone in the development of Facets.

This release has been tested against Rails’ ActiveSupport library. As long as Facets is loaded after ActiveSupport, everything should work fine. Of course, there’s no counting for real world trials, but all ActiveSupport testcases pass under this scenario.

Secondly, this release is the first of two (or three) down-scaling releases intended to remove all the remaining “excess” from the library. This is being done for a variety of reasons. Some scripts are substantial enough to be one their own and have been spun-off into separate largely compatible projects. In this release:

If you were using...   Use this project instead...

  annotations.rb         Anise

  bytes.rb               RichUnits
  times.rb

  command.rb             Clio
  consoleutils.rb

A few others scripts have been deprecated, without an alternative recourse, simply because they were too weak, such as uploadutils.rb, or highly experimental, such as chain.rb and eventhook.rb.

Although this release constitutes an over all slimming down of Facets, two excellent new libraries have been added.

1) ini.rb by Jeena Paradies. While YAML is frequently used by Rubyists for configuration files, a full-on serializer like YAML is often overkill. INI files provide a lightweight solution specifically geared for configuration.

2) filter.rb by Brian Candler offers lazy evaluation chains of Enumerable methods. This is an elegant way to optimize contiguous maps, selections, etc. –effective even on infinite enumerators. (Note, the name of this library may be changed in the next release.)

While work remains to be done, I am happy to say, Facets is finally beginning to approach the level of solidity I set out to achieve just over a year ago. Thank the Maker!

Special thanks to Brian Candler, Jeena Paradies and Tyler Rick.

Changes:

2.4.5 / 2008-10-02

Facets 2.4.5 is a maintaince release. This release is notable however in that it will likely be the last that to use SVN. Facets will be switching to Git. Also, some libraries that have been flagged "to be deprecated" for some time will finally be so.

Changes:

2.4.4 / 2008-09-01

Facets 2.4.4 includes a major bug fix that caused Facets not to load properly, having to do with a Time extension. The problem has been fixed. In addition, this release put Facets only a few pending adjustments away from full Rails/ActiveSupport compatibility.

Changes:

2.4.3 / 2008-08-14

Facets is almost fully interoperable with ActiveSupport and Ruby 1.9. We will continue to improve this interoperability in upcoming releases.

As a REMINDER, Facets 2.4+ now encourages:

require 'facets'

This is better than cherry-picking methods. It may seem counter-intuitive, but it actually proves more advantages to do this for the sake of improved interoperability. The practice of cherry-picking can become problematic if other dependent libraries have cherry-picked different methods. In those cases these distinctions go unaccounted and untested.

Note that this release does not include a setup.rb script. We are working on a new version of this script, which we plan to include in the next release.

This release give special thanks to the following people for their contributions: Ken Bloom, Nick Caruso, Evgeniy Dolzhenko, Andy Freeman, Tomasz Muras and Dave Myron. And of course, to anyone else I failed to mention that has contributed.

(NOTE: 2.4.3’s changes may actually be long to 2.4.2. Notice the releases are only two days apart. There was an issue with 2.4.2 and it had to be replaced immediately. So take the distinct with a grain of salt.)

Changes:

2.4.2 / 2008-08-12

Just some more of those great old work your ass off changes.

Changes:

2.4.1 / 2008-04-03

This release takes aim at improving compatability with ActiveSupport. It also reintroduces an improved paramix.rb.

Changes:

2.4.0 / 2008-03-24

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:

2.3.0 / 2008-02-01

Amoung other changes with this release, cloneable.rb is now a true deep dup/clone mixin; tracepoint.rb returns to the library.

Changes:

2.2.1 / 2007-12-22

This release get rid of the underlying methods subdir. All method redirects are now in core, to ensure there are no more name clashes.

Changes:

2.2.0 / 2007-12-13

This release provides improved rdocs and prepares facets for use with Ruby 1.9. It also adds Matthew Harris’ duration.rb library. Bug thanks to Matthew!

Changes:

2.1.3 / 2007-11-28

This release fixes four bugs –one being fairly serious, as it prevented require ‘facets’ from working at all.

Changes:

2.1.2 / 2007-11-22

Changes:

2.1.1 / 2007-11-16

Changes:

2.1.0 / 2007-11-10

Major changes include a new and much-improved command.rb, a new BiCrypt class for simple two-way crypotgraphy, as well as attr_reader!, attr_writer! and attr_accessor! for flag attributes, plus alias_xxx methods for all attr_xxx methods.

Changes:

2.0.5 / 2007-11-07

Minor release that fixes a couple of bugs and adds the last of adopted methods from Gavin Sinclair’s Extensions project.

Also, renamed p to q, because of multiple args problem. I don’t know how Ruby 1.9 plans to handle multiple args. Will deprecate for 1.9 anyway so doesn’t matter much.

Changes:

2.0.4 / 2007-11-04

Changes:

2.0.3 / 2007-11-02

Changes:

2007-11-01 transami

Changes:

2.0.2 / 2007-10-08

Changes:

2.0.1 / 2007-10-06

Changes:

2.0.0 / 2007-10-02

Changes:

1.8.54 / 2007-03-21

The following list of changes also includes changes from intrim releases, `1.8.51 / 2007-02-19`, `1.8.49 / 2007-02-16`, `1.8.20 / 2007-02-06` and `1.8.8 / 2007-01-31`. Unfortuantely the transition form darcs to git, led to some information loss in this regard.

Changes:

1.8.0 / 2007-01-24

The list of changes also includes intrim releases `1.7.46 September 8, 2006`, `1.7.38 August 31, 2006`, and `1.7.30 August 23, 2006`.

Changes:

1.7.0 / 2006-07-25

Changes:

1.6.0 / 2006-07-20

Changes:

* PrivateAccess expiremental class

1.4.5 / 2006-07-05

Changes:

1.4.4 / 2006-07-03

Changes:

1.4.3 / 2006-06-27

1.4.2 / 2006-06-21

This release makes adjustments to BasicObject, further reducing unhidden methods. Among them __object__, __method__ and as. Also added `method_missing` that detects shadow methods and rebinds them to Object. Keep in mind that woun’t help you if you override method_missing which is typical for this class.

This release also marks the first use of Darcs version control manager!

Changes:

1.4.0 / 2006-05-05

Changes:

1.3.1 / 2006-04-17

Changes:

1.3.0 / 2006-04-05

Changes:

1.2.1 / 2006-03-29

Changes:

1.2.0 / 2006-03-24

Changes:

1.0.3 / 2006-02-10

Changes:

1.0.0 / 2005-12-04

Okay. Now we’ve finally hit our 1.0.0 relase. Yea! Does it desrve 1.0 at this point? Ah, well close enough. Mainly there won’t be anymore silly development names ;)

Changes:

[Validate]

Generated with the Darkfish Rdoc Generator 2.