The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Data-DPath

0.45      2012-04-11 10:14:02 Europe/Berlin
  * 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
	* Fix regression that sneaked in with the //KEY-look-ahead
	optimization

	* testsuite maintenance

	* documentation maintenance
	- comparison with Data::Path reworked
	- more verbose array semantics described

0.32 2009-09-25
	* 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
	* 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.

	* 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'

	* 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
	* 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 can now contain slashes (just as you would
	naturally expect)

0.15 2009-08-11
	* 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