Revision history for Data-DPath

0.46      2012-04-11
  [micro fixes only]
  - fix broken links
  - changelog conforms to CPAN::Changes::Spec

0.45      2012-04-11
  [Maintenance]
  - use Dist::Zilla for building
  - xt/ benchmarks without Safe.pm
  - small optimizations [by Alexei Znamensky]

  [Bugfixes]
  - RT#69042: use module Sys::CPU to figure # of processors
    (but deactivated completely for now)
  - RT#72059: incorrect POD syntax : =item * <text>
  - RT#76016: Please depend on Safe 2.30

0.44      2011-06-22
  - fix RT#68882 - the value() filter function worked odd
	  [reported by Alexei "RUSSOZ" Znamensky]

0.43      2011-04-16
  [Mainly a maintenance release]

  [Bugfixes]
	- allow "too many" parent(/..) steps
	- Avoid clobbering $_ [contributed by FLORA]
	- fix bug with dpathr()
	- Code Æsthetics

  [Speed]
	- some speed improvement
	- docs: hint to more slowness with Safe.pm
	- run xt/ benchmarks without Safe.pm

0.42      2011-01-04
	- dependency to Safe.pm raised

0.41      2010-10-01
  [Incompatible changes:]
	- restrict filter expression syntax with Safe.pm
	- set local $Data::DPath::USE_SAFE = 0 to enable old eval again

  [Bugfixes:]
	- The optimization for '//' (ANYWHERE) had skipped ARRAYs that
	  were blessed. It now checks them, too.
	- Hash entry values of 0 or undef were filtered away. Now
	  fixed. (spotted by Dirk Melchers)

  [Refactoring for easier code and later hopefully easier]
	parallelization. Currently slightly slower.

0.40      2010-07-13
  [Incompatible API changes!]

  [Cleanup iterator style API and document it. It now consists of:]
	- dpathi()    ... initialize iterator
	- isearch()   ... incremental search
	- deref()     ... get actual value
	- ref()       ... get reference to actual value

  [Several methods now internal (prefixed with underscore) to make]
	the public API more clear.

  [Make accessing internal point attributes ("attrs") a public API]

0.37      2010-07-10
  [Introduce Iterator style context usage]
	- dpathi($data, $path_str) returns an iterator on which you can
	  do incremental searches using isearch($path_str)
	- API still experimental

0.36      2010-07-09
  [New axis ::ancestor]
  - selects all ancestors (parent, grandparent, etc.) of the current node

  [New axis ::ancestor-or-self]
  - selects all ancestors (parent, grandparent, etc.) of the current node and the current node itself

  [Code refactoring]
	- more readable internal data structure to ease debugging
	- factored out subs
	- this might make the code a bit slower again, but I hope it helps
	  profiling and optimizing on encapsulated small parts in the long run

0.35      2010-04-07
  - Bummer! Fixed stupid perl version checking in tests.

0.34      2010-03-27
  - solve some CPAN testing issues

0.33      2010-03-24
  [bugfixes]
  - Fix regression that sneaked in with the //KEY-look-ahead optimization

  [maintenance]
  - testsuite maintenance
  - documentation maintenance
	- comparison with Data::Path reworked
	- more verbose array semantics described

0.32      2009-09-25
  [maintenance]
  - I cannot believe that I forgot to define the dependency to
    Text::Balanced! Let's see if this fixes some FAIL reports.

0.31      2009-09-22
  [maintenance]
  - fix docs and changelog of 0.30 which appeared rather incomplete

0.30      2009-09-22
  [Yet more speed optimizations]
	- switch from Object::Tiny::RW to Class::XSAccessor::Array
	- try fast ref() before falling back to slower reftype()
	- use constants
  - We are now at 3.2sec runtime for my benchmark, compared to
    original 65sec v0.17, so we are now 20 times faster.

  [maintenance]
  - Backported code to Perl 5.8

  [Enable 5.10 features by default if Perl >= 5.10 available]
	- in particular the overloading of the smartmatch '~~' operator
	- cloned and backported large parts of the test suite to only
    use 5.8 features and skip 5.10 specific suite on 5.8
	- drop some redundant test scripts

  [INCOMPATIBLE CHANGE]
	Filter functions are now hard prototyped, no more behaviour
	depending on optional params. You now have to use explicit
	check functions for this, like this:
	- //ZOMTEC[ reftype eq "Foo::Bar"  ]   # reftype just returns value
	- //ZOMTEC[ is_reftype("Foo::Bar") ]   # is_reftype checks against arg

0.21      2009-09-17
  [even more aggressive speed optimizations:]
  - dropped Moose and MX::Declare completely in favor of
    Object::Tiny::RW and classical old school subs

  [cleaned up dirty code by partially using]
	- no strict 'refs'
	- no warnings 'uninitialized'

  [benchmarks]
  - the overall speed improvement for my "xt/large_data.t"
	  benchmark is an improved runtime from originally
    - 65s   (v0.17) to
	  -  4.2s (v0.21)
  	on my netbook. Yes, 15 times faster.
  - thanks to Devel::NYTProf which helped a lot profiling this

0.20      2009-09-16
  [aggressive speed optimizations, needed @ work]
  - the ANYSTEP "//" not looks ahead to the following step and
	  reduces the intermediate point sets if it is a hash key, like in
	  "//AFFE"
  - remove Moose type constraints
  - more array references instead of arrays
  - partially this led to more dirty code, I try to fix this later

0.17      2009-08-11
  [filter expressions]
  - understand even more strange perl'oid filter expressions by
	  using extract_codeblock instead of extract_bracketed
  - tests for this

0.16      2009-08-11
  [filter expressions]
  - filter expressions can now contain slashes (just as you would
	  naturally expect)

0.15      2009-08-11
  [filter expressions]
  - fix semantics of filter function key(). It now provides the key
    under which the value is associated.
  - many more and fixed tests
  - doc cleanups and fixes
  - moved distro and development tests under xt/

0.14      2009-07-14
  - The overloaded smartmatch "~~" does not work commutative anymore
	  in bleadperl and Perl 5.10.1.
  - cleanup for bleadperl smartmatch warnings with undefined $_
  - minor additions to the comparison section

0.13      2009-07-14
  - comparison matrix Data::DPath vs. Data::Path, requested in
	  RT#47540, http://rt.cpan.org/Public/Bug/Display.html?id=47540

0.12      2009-06-26
  - allow returning references into original data structure via new
	  frontend function "dpathr" instead of "dpath"

0.11      2009-05-15
  - Dependencies raised to current MooseX stuff

0.10      2009-04-16
  - new path step: nostep "." (for filter chaining and on difficult
	  elements, like root node)
  - documentation improvements

0.09      2009-02-12
  - Quoted special chars ("*", "//", "..") now work as keys
  - compatibility with newest MooseX::Method::Signatures on class
    methods [Florian Ragwitz]

0.08      2009-02-11
  - Fix missing dependency to Test::Deep. Thanks, CPAN testers.
  [v0.07]
  - use Scalar::Util::reftype instead of ref. This enables blessed
    data structures to work.
  - Provide "reftype" and "isa" as filter functions.
  [v0.06]
  - "package" statements to help the CPAN indexer.

0.05      2009-02-10
  - more docs
  - tests for negative array indexes

0.04      2009-02-10
  - Fix $VERSION inside MoosX::Declare'd class not recognized by
    CPAN indexer

0.03      2009-02-09
  - The first useful release, see test suite for many examples!
  - much improved path tokenizer
  - new path steps: parent "..", anywhere "//", anystep "*"
  - implemented filter conditions (in brackets after path step)
  - filter condition type "just index": *[1]
  - filter condition type "eval": *[idx == 3], *[ key =~ m(foo) ]
  - cleaner semantics for STEP[filter] vs. STEP/*[filter]
  - cleaner semantics for combinations of "//", "..", "*", and filters
  - provide filter functions: size, idx, key, value
  - many more tests
  - more clean export behaviour [rafl++]
  - uniq results if found via multiple ways
  - overloaded '~~' smartmatch
  - switch to Module::Install
  - tests do not depend on result order

0.01      2008-11-26
  - initial CPAN version
  - basic paths, parents, placeholders
