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