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