1Revision history for Perl extension PPI 2 31.270 2019-07-09 15:14:57Z 4 Summary: 5 - attempt to handle new blead binary/hexadecimal parsing behavior in tests 6 71.269 2019-05-17 18:36:46Z 8 Summary: 9 - many small documentation improvements 10 111.268 2019-05-16 10:00:39Z 12 Summary: 13 - fix a broken link in the pod 14 151.267 2019-05-16 09:22:34Z 16 Summary: 17 - make PPI::Test::Run more OS-agnostic 18 191.266 2019-05-15 16:17:49Z 20 Summary: 21 - keep heredoc terminator detection from triggering regex errors 22 - small cleanups 23 24 Details: 25 - make the output of PPI::Test::Run more useful 26 - remove a superfluous import 27 281.265 2019-05-14 12:39:51Z 29 Summary: 30 - simplified a code construct 31 321.264 2019-04-28 14:56:28Z 33 Summary: 34 - keep vstring processing from swallowing underscores 35 361.262 2019-04-28 11:41:54Z 37 Summary: 38 - convert newlines in some raw test files from win32 to unix 39 401.260 2019-04-28 11:10:02Z 41 Summary: 42 - allow underscores in vstrings 43 441.258 2019-04-27 17:05:33Z 45 Summary: 46 - remove accidentally included Test::InDistDir 47 481.256 2019-04-26 16:40:01Z 49 Summary: 50 - allow all PPI::Document instances to have a filename attribute 51 521.254 2019-04-26 16:23:21Z 53 Summary: 54 - recognize `for (;<$foo>;) {}` as containing a readline operator 55 561.252 2019-04-26 14:21:36Z 57 Summary: 58 - add support for the double diamond (<<>>) input operator 59 - adjust position of a todo marker to not catch a passing test 60 611.250 2019-04-25 16:43:32Z 62 Summary: 63 - various smaller releng changes 64 65 Details: 66 - removed dependency on File::Remove 67 - add some tests including a TODO test for misparse bug on '(1)-1' 68 - allow tests to run without pre-determined module versions 69 - add travis-perl helper to be run before install 70 - update versions of Perl Travis tests on 71 721.248 2019-04-25 16:08:08Z 73 Summary: 74 - parse list-embedded curlies as hash constructors 75 761.246 2019-04-25 15:33:48Z 77 Summary: 78 - support indented here-docs 79 - fixed some typos 80 811.244 2019-04-25 15:21:51Z 82 Summary: 83 - support key-value and index-value slices in PPI::Token::Symbol symbol method 84 851.242 2019-04-25 14:33:56Z 86 Summary: 87 - keep exponents of 2 or more zeroes from trapping PPI in an endless loop 88 891.240 2019-04-25 14:09:24Z 90 Summary: 91 - add support for lexical subroutines from perl-5.26 92 931.238 2019-04-25 12:03:37Z 94 Summary: 95 - only release engineering, moved to Dist::Zilla, straightened out 96 dependencies and fixed some formatting in Changes 97 981.237_001 Wed 15 Nov 2017 99 Summary: 100 - support postfix dereference 101 - remove dependencies on vars, base and List::MoreUtils 102 - reduce globals and cross-package variables 103 - make xt/api.t skip/run properly 104 105 Details: 106 - convert many cross-package var accesses to var imports 107 - convert several unnecessary globals to local variables 108 1091.236 Thu 22 June 2017 110 Summary: 111 - prevent Node->child from proceeding without a valid argument 112 - make test pragma warning code enable -w to match warnings policy 113 1141.234 Wed 21 June 2017 115 Summary: 116 - Prevent sub names like v10 from being version strings 117 (GitHub #65) (MOREGAN) 118 1191.232 Wed 21 June 2017 120 Summary: 121 - add Changes entries forgotten in 1.230 122 1231.230 Wed 21 June 2017 124 Summary: 125 - remove temporary fix introduced in 1.226 126 - prevent possible regex on undefined scalar in 127 __current_token_is_forced_word 128 1291.228 Tue 20 June 2017 130 Summary: 131 - keep PPI::Dumper from breaking Perl::Critic under cperl 5.27 132 (RURBAN) 133 1341.226 Tue 20 June 2017 135 Summary: 136 - Fix test reliance on '.' in @INC (KENTNL) 137 - temporary fix to keep an untested combination from blocking 138 Perl::Critic (https://github.com/chriscapaci) 139 1401.224 Sun 14 May 2017 141 Summary: 142 - updating an out-of-date meta.yml caused by Module::Install 143 1441.222 Sun 14 May 2017 145 Summary: 146 - unit tests for many parts, both passing and TODO 147 - many documentation fixes 148 - add ->version method to PPI::Statement::Package (WOLFSAGE) 149 - remove unused PPI::Document->new timeout feature 150 - do not expect '.' in @INC (PLICEASE) 151 - many parsing fixes 152 - various fixes to the behaviors of methods 153 - removal of problematic dependencies 154 155 Details: 156 - Remove undocumented, non-working 'timeout' attribute to 157 Document->new, including HAVE_ALARM and 158 PPI::Exception::ParserTimeout. (GitHub #140) (MOREGAN) 159 - first cut of a travis configuration 160 - do hex number matching with [[:xdigit:]] 161 - some readability improvements on the code of HereDoc.pm 162 - recognize heredoc even if they have no newline at the end (AUBERTG) 163 - parse left side of => as bareword even if it looks like a keyword or 164 op (MOREGAN) 165 - remove source code escapes in the output of QuoteLike::Words->literal 166 (MOREGAN) 167 - removal of Test::NoWarnings 168 - less uses of List::MoreUtils in favor of List::Util 169 - expand $'x to $::main::x in Symbol->canonical as with $::x 170 (MOREGAN) 171 - fixed parsing of large numbers in Number::Exp on Solaris 80 (JMASLAK) 172 - make remove_child actually return undef on failure to find child to 173 remove 174 - higher accuracy when deciding whether certain characters are operators 175 or variable type casts (*&% etc.) (MOREGAN) 176 - parse x as the first element of code as a word, not an operator 177 (MOREGAN) 178 - recognize the implied end of a package statement that includes a block 179 (MOREGAN) 180 - parse package names that look like operators as strings, not ops 181 (MOREGAN) 182 - parse package names that look like v10 as strings, not versions 183 (MOREGAN) 184 - parse things like v49use as a single bareword, not v-string + keyword 185 (MOREGAN) 186 - parse x64 as a word, not x operator + number (MOREGAN) 187 - parse 1.eq 1 as float + op, not concatenation 188 - parse subroutine attributes correctly (MOREGAN) 189 1901.220 Tue 11 Nov 2014 191 Summary: 192 - incompatible behavior fixes on PPI::Statement::Sub->prototype 193 - improved parsing of various syntax elements 194 - code quality improvements 195 - various small documentation fixes 196 197 Details: 198 - {} is now recognized as anonymous hash constructor instead of a code 199 block after these operators: &&= //= || && // ? : 200 (GitHub #36) (MOREGAN) 201 - regex capture variables greater than $9 are now parsed completely, 202 instead of being parsed as single digit captures with numbers after 203 them (GitHub #38) (MOREGAN) 204 - DESTROY and AUTOLOAD subs are now parsed even without the sub 205 keyword (GitHub #39) (MOREGAN) 206 - PPI::Statement::Sub->prototype behavior now matches its 207 documentation, instead of returning the prototype string 208 unchanged and still including the parens (GitHub #56) (MOREGAN) 209 - PPI::Statement::Sub->prototype now returns undef on subs without a 210 prototype, instead of returning an empty string 211 (GitHub #56) (MOREGAN) 212 - list of keywords which are not parsed as packages when followed by 213 the Perl4 package separator ' has been increased 214 (GitHub #77) (MOREGAN) 215 - application of a number of Perl::Critic policies and documentation 216 fixes (GitHub #53) (MOREGAN, MITHALDU) 217 - automation of README.md generation for git (GitHub #86) (COWENS) 218 - various small documentation fixes (Github #96) (MOREGAN) 219 2201.218 Sat 16 Aug 2014 221 Summary: 222 - Fixes for various parsing and documentation bugs 223 - 1MB limit on input document size removed 224 - Moved repository to GitHub: https://github.com/adamkennedy/PPI 225 226 Details: 227 - Stop directing bugs to rt.cpan.org (GitHub #40) (MOREGAN) 228 - Fix documentation reference to List::Util (RT #75308) (RWSTAUNER) 229 - Improve scalability of parsing long lines, and remove the size 230 limit on documents PPI will parse (GitHub #5) (MITHALDU) 231 - Speed up adding an element to an unlabeled statement. 232 Allow inlining of some methods. (WOLFSAGE) 233 - Expanded test coverage (DOLMEN, MOREGAN) 234 - Convert inline tests to standalone tests (GitHub #12) (MOREGAN) 235 - Fix for '1=>x' being parsed as x operator (GitHub #46) (MOREGAN) 236 - Recognize that '1 x3' is the x operator followed by a 3 237 (RT #37892, GitHub #27) (MOREGAN) 238 - Support all augmented assignment operators (<<=, ||=, etc.) 239 (RT #68176, 71705) (MOREGAN) 240 - Stop upper-case "=CUT" from terminating POD (RT #75039) (JAE) 241 - Support upper-case digits in hex and binary numbers, including 242 in the leading '0X' and '0B'. (RT #36540) (KRYDE, MOREGAN) 243 - Fix float argument to range operator misparsed as version 244 string (RT #45014) (MOREGAN) 245 - Fix POD markup in PPI::Find (RT #51693) (FWIE) 246 - Fix spelling of "Tom Christiansen" (RT #67264) (TADMC) 247 - Fix a large raft of spelling and grammar errors (RT #85049) (David 248 Steinbrunner, DOLMEN, MOREGAN) 249 - Fix errors in documentation of the PPI::Element class hierarchy 250 (RT #30863, 69026) (SJQUINNEY) 251 - Prevent PPI::XSAccessor packages from hiding corresponding PPI 252 packages in CPAN (RT #90792) (MITHALDU) 253 - Recognize the formfeed character as whitespace (RT #67517) (WYANT) 254 - Recognize regex match following 'return' (RT #27475) (ADAMK) 255 - Fix missing dereference, length called on reference (RT #40103) 256 (ADAMK) 257 2581.215 Sat 26 Feb 2011 259 Summary: 260 - No changes 261 262 Details: 263 - Confirmed new Perl::Critic works with 1.214_02, so we 264 can release a new PPI now. 265 2661.214_02 Mon 31 Jan 2011 267 Summary: 268 - More minor fixes, preparing for production release 269 270 Details: 271 - Updated copyright year to 2011 (ADAMK) 272 - Fixed RT #64247 bless {} probably contains a hash constructor (WYANT) 273 - Backed out glob fix (WYANT) 274 - Fixed RT #65199 Cast can trump braces in 275 PPI::Token::Symbol->symbol (WYANT) 276 2771.214_01 Thu 16 Dec 2010 278 Summary: 279 - General fix release 280 281 Details: 282 - index_locations on an empty document no longer warns (WYANT) 283 - Corrected a bug in line-spanning attribute support (WYANT) 284 - Regression test for line-spanning attribute support (ADAMK) 285 - Fixed #61305 return { foo => 1 } should parse curlys as hash 286 constructor, not block (WYANT) 287 - Fixed #63943 map and regexp confuse PPI? (ADAMK) 288 2891.213 Tue 6 Jul 2010 290 Summary: 291 - Targetted bug fix, no changes to parsing or normal usage 292 293 Details: 294 - Updated to Module::Install 1.00 295 - Updated module depednencies in xt author tests 296 - Fixed extremely broken PPI::Token::Pod::merge and added test case 297 2981.212 Sun 9 May 2010 299 Summary: 300 - Minor bug fixes and development support 301 302 Details: 303 - Fixed #48819: Bug in ForLoop back-compatilbilty warning 304 - Added support for $ENV{X_TOKENIZER} --> $PPI::Lexer::X_TOKENIZER 305 3061.211_01 Sun 21 Feb 2010 307 Summary: 308 - Experimentation support and bug fixes 309 310 Details: 311 - Upgraded to Module::Install 0.93 312 - Added support for $PPI::Lexer::X_TOKENIZER, so that alternate 313 experimentatal tokenizers can be swapped in for testing. 314 - Added an extra 14_charsets.t case to validate we handle byte 315 order marks properly. 316 - Moved author tests from t to xt to reduce spurious test failures 317 in CPAN Testers, when the testing modules change across versions 318 - Fixed #26082: scalar { %x } is misparsed 319 - Fixed #26591: VMS patch for PPI 1.118 320 - Fixed #44862: PPI cannot parse "package Foo::100;" correctly 321 - Fixed #54208: PPI::Token::Quote::Literal::literal is missing due 322 to case-sensitivity error 323 3241.210 Mon 15 Feb 2010 325 Summary: 326 - Packaging fixes 327 328 Details: 329 - No functional changes 330 - Upgrading to Module::Install 0.93 331 - Added missing test_requires dependency for Class::Inspector 332 3331.209 Sat 6 Feb 2010 334 Summary: 335 - Small optimisation release 336 337 Details: 338 - No functional changes 339 - Upgrading to Module::Install 0.92 340 - Moved the Test::ClassAPI test to only run during RELEASE_TESTING 341 to reduce the dependency load (and occasionally Test::ClassAPI seems 342 to FAIL on CPAN Testers. 343 3441.208 Thu 14 Jan 2010 345 Summary: 346 - THIS IS THE 100TH RELEASE OF PPI! 347 - Fixes some tiny issues, otherwise unchanged from 1.207_01 348 349 Details: 350 - Don't assign '' to $^W, it generates a warning on Gentoo 351 - Added missing PPI::Token::Regexp fix to Changes file 352 - Updating Copyright to the new year (yet again) 353 3541.207_01 Thu 10 Dec 2009 355 Summary: 356 - This is a general bug fix and accuracy release 357 358 Details: 359 - Fixed #50309: literal() wrong result on "qw (a b c)" 360 - PPI::Dumper no longer causes Elements to flush location data. 361 Also it no longer disables location information for non-Documents. 362 - +{ package => 1 } doesn't create a PPI::Statement::Package 363 - PPI::Token::Regexp and PPI::Token::QuoteLike::Regexp how have methods 364 for getting at the various components (delimiters, modifiers, match & 365 substitution strings). 366 3671.206 Sun 9 Aug 2009 368 Summary: 369 - This is an optimisation release (1-2% speed up) 370 (Using information uncovered by a Devel::NYTProf 3 alpha) 371 372 Details: 373 - Removing som superfluous 1; returns 374 - Using defined and ref to avoid highly excessive calls 375 to PPI::Util::TRUE 376 3771.205 Mon 3 Aug 2009 378 Summary: 379 - This is a production release 380 381 Details: 382 - No changes from 1.204_07 383 3841.204_07 Fri 31 Jul 2009 385 Summary: 386 - Minor tweaks 387 388 Details: 389 - Allow ::For and ::List to return true to ->isa(::ForLoop) 390 and do a once-per-process warning when we do. 391 - Fixed a bug in Class::XSAccessor prototype. 392 3931.204_06 Wed 22 Jul 2009 394 Summary: 395 - API Change 396 397 Details: 398 - Changing PPI::Structure::ForLoop to PPI::Structure::For 399 4001.204_05 Tue 21 Jul 2009 401 Summary: 402 - Bug fixes in preparation for production release 403 404 Details: 405 - There is no longer any real reason to bundle the testing modules 406 except as a potential source of more bugs. 407 - Removed quantifier ? on zero-length ^ in /^?for(?:each)?\z/ 408 - Run-time load PPI::Document instal of compile-time loading it 409 - Tweak a few load orders to get PPI::Util loaded earlier. 410 - Fixed location access methods on PPI::Element 411 - New PPI::Statement::Include::version_literal() method. 412 4131.204_04 Thu 16 Jul 2009 414 Summary: 415 - Dependency tweaks 416 417 Details: 418 - Because we bundle Test::ClassAPI, we need to explicitly match its 419 dependencies. Bumped Params::Util to 1.00. 420 - Bumped a couple of deps a couple of revisions to get better XS. 421 4221.204_03 Tue 14 Jul 2009 423 Summary: 424 - More bug fixing, clean up, and optimisation 425 - Cleaning up contributed APIs 426 - Adding some demonstration classes 427 428 Details: 429 - Implemented PPI::Transform::UpdateCopyright 430 - Removed the use of 'use base' 431 - Various minor simplifications 432 - Renamed PPI::Statement::Switch to ::Given 433 - Renamed PPI::Structure::WhenMatch to ::When 434 - Converted the Lexer internals to use exception-based error 435 handling. 436 - Take advantage of the removal of all those "or return undef" 437 to simplify the Lexer code, remove variable declarations, and 438 inline calls to several hot-code-path functions. The Lexer 439 should be significantly faster (FSDO "significant"). 440 - The v6 key on Tokenizer broke support for Perl 5.6 441 (perl thought it was a numeric v-string) 442 4431.204_02 Sun 10 May 2009 444 Summary: 445 - Various bug fixing and stabilisation work 446 - It's a perl 5.10 extravaganza! 447 448 Details: 449 - Updated Module::Install to 0.87 450 - Added Test::NoWarnings to the test suite 451 - Added support for qw{foo} in addition to for ('foo') 452 - Added support for vstrings again 453 - Now supports the 5.10 "state" keyword. 454 (As far as PPI is concerned it's a synonym for "my") 455 - Now supports switch statements. 456 - Now supports the smart match operator (~~). 457 - Now supports keeping track of line numbers and file names as 458 affected by the #line directive. 459 - Now supports UNITCHECK blocks. 460 - Statement::Include::module_version() implemented. 461 - Statement::Include::arguments() implemented. 462 - Statement::Variable::symbols() implemented. 463 - Token::QuoteLike::Words::literal() implemented. 464 - Token::Quote::Double::simplify() fixed. 465 - Element line_number(), column_number(), visual_column_number(), 466 logical_line_number(), and logical_filename() implemented. 467 - Support for Unicode byte order marks (PPI::Token::BOM) added. 468 - Token::Word::method_call() implemented. 469 - Element::descendant_of() and Element::ancestor_of() implemented. 470 - Statement::specialized() implemented. 471 - Now can handle files named "0". 472 (Perl::Critic got a complaint about this) 473 - foreach loop variables can be declared using "our". 474 - Much more comprehensive testing of compound statement detection. 475 4761.204_01 Sun 18 May 2008 477 Summary: 478 - Unicode cleanup and bug fixing 479 - Taking the opportunity to do some house cleaning while the 480 code base is relatively stable, before things get crazy again. 481 482 Details: 483 - For completeness sake, add support for empty documents 484 - Moved capability detection into PPI::Util 485 - POD test script now skips on install properly 486 - Removed 200 lines of old dead "rawinput" code from PPI::Tokenizer 487 - 100% of PPI::Tokenizer is now exception-driven 488 - Workaround for "RT#35917 - charsets.t eats all available VM" 489 (unicode bug in 5.8.6, works in 5.8.8) 490 - Temporarily disable round-trip testing of 14_charset.t 491 492 4931.203 Wed 14 May 2008 494 Summary: 495 - No change, switching to production version 496 4971.202_03 Wed 14 May 2008 498 Summary: 499 - Initial Perl 6 support 500 - Bug fixes and final 1.203 release candidate 501 - I finally catch up with all the failing test cases 502 that Chris Dolan keeps commiting :) 503 504 Details: 505 - Adding initial support for "use v6-alpha;" 506 - Adding new class Perl::Statement::Include::Perl6 507 - Adding a test on the KindaPerl6::Grammar, 508 which triggered a bug in the tokenizer during 509 CPAN::Metrics tinderboxing. 510 - All open() calls now use three-argument form 511 - Upgrading explicit Perl dependency to 5.006, 512 because of the previous item. 513 - Better support for labels, including tricky ones like "BEGIN : { ... }" 514 5151.202_02 Wed 2 Jan 2008 516 Summary: 517 - Back-compatibility and 1.203 release candidate 518 519 Details: 520 - Removing the use of use base 'Exporter'; 521 - Updating Test::SubCalls dep to 1.07 to get 522 the use base 'Exporter' fix for that too. 523 5241.202_01 Tue 20 Nov 2007 525 Summary: 526 - Minor bug fix release 527 528 Details: 529 - RT #30469: calling length() on PPI::Token gives error 530 - 14_charsets.t was incorrectly skipping in situations 531 that it should have been running. 532 5331.201 Mon 22 Oct 2007 534 Summary: 535 - Minor bug fix release 536 537 Details: 538 - The internal exception class PPI::Exception::ParserTimeout was 539 inheriting from itself. 540 5411.200 Mon 15 Oct 2007 542 Summary: 543 - Production Release 544 545 Details: 546 - Zero changes from 1.199_07 547 - Updated version from 1.199_07 to 1.200 548 5491.199_07 Fri 12 Oct 2007 550 Summary: 551 - This is the third release candidate for 1.200 552 - Minor tweak 553 554 Details: 555 - Changed the way to detect Perl 5.6 to ignore the 1_0e1_0 failure 556 5571.199_06 Wed 10 Oct 2007 558 Summary: 559 - This is the second release candidate for 1.200 560 - Some small bug fixes 561 562 Details: 563 - Remove -w from test scripts to allow taint'enabled testing 564 - Skip the failing 1_0e1_0 test on Perl 5.6.2 565 5661.199_05 Tue 9 Oct 2007 567 Summary: 568 - This is the first release candidate for 1.200 569 - Fix some parser corner cases 570 571 Details: 572 - Fixed parsing of %!, $^\w, and %^H 573 - Fixed parsing of @{$foo}-1 574 - Fixed parsing of <$fh1>, <$fh2> 575 5761.199_04 577 Summary: 578 - Build tweaks 579 - More regression changes 580 581 Details: 582 - Increasing List::Util dependency to 1.19 583 (Removes a memory leak on Win32) 584 5851.199_03 Thu 12 Jul 2007 586 Summary: 587 - Support for a few more rare/legacy Perl syntax 588 - Tokenizer simplification, optimization and exception'ification 589 590 Details: 591 - Added support for the <<\EOF heredoc style 592 - Always create ->{type} in full-quote sections 593 - Converted more of the Tokenizer to use exceptions 594 - Optimized away a bunch of now-unneeded "or return undef" 595 - Optimized _set_token_class down to a single statement 596 - Inlined _set_token_class out of existence 597 - Cache and fast-clone PPI::Token::Whitespace->null 598 - Removed some superfluous parameter checks on private methods, 599 for conditions that would cause explosions and be noticed anyway. 600 - Removed the fancy options from PPI::Token::new 601 - More consistent structure of incomplete quotes 602 6031.199_02 Mon 5 Mar 2007 604 Summary: 605 - Added parser timeout support 606 - Fixing various regression cases 607 - Adding some housekeeping tweaks 608 609 Details: 610 - Created PPI::Exception with an eye to moving towards 611 using exceptions more for error handling (for speed). 612 The goal is to get rid of the "or return undef"s. 613 - Added the timeout param to the PPI::Document constructor 614 which uses alarm to implement basic timeout support. 615 This should help when parsing a large corpus on Unix. 616 (Not available on Win32) 617 - Fixed incorrect location() for PPI::Structure instances. 618 - Adding better parsing of hash constructors. 619 - Pushing Clone dependency to 0.22 to get closer to taint support) 620 - Pushing deps on bundled test modules to prevent accidentally 621 bundling old versions. 622 6231.199_01 Tue 31 Oct 2006 624 Summary: 625 - Improved lexing correctness 626 - Partial implementation of literal 627 - Initial implementation of Number classes (Chris Dolan) 628 629 Details: 630 - Split out PPI::Token::Number subclasses 631 - Implement numbers with exponential notation 632 - Implement literal() for ::Number classes (except ::Version) 633 - Implement literal() for ::Token::Quote::Single 634 - Added -T for inline tests 635 - Add tests for nested statements and nested structures 636 - Fixed some bugs as a result 637 - Improved detection of the correct curly brace structure types 638 6391.118 Fri 22 Sep 2006 640 Summary: 641 - Better 5.10 support 642 - Fixing various (mostly parsing) bugs 643 644 Details: 645 - Upgraded to Module::Install 0.64 646 - Improving support for dor and added //= operators 647 - Fixed parsing of binary, octal and hex numbers 648 - Fixed parsing of /= and *= 649 - Fixed #21571 symbol() returns just sigil with adjacent braces 650 - Fixed #21575 variables() chokes on list with whitespace 651 - Fixed #20480 (Misparse of some floating-point numbers.) 652 - Fixed #19999: Make test fails (undeclared global variable $document) under Perl 5.6.2 653 (or at least, I think I have. This needs double-checking on Perl 5.6.2) 654 - Partially Fixed #16952: [PATCH] Speed up tokenizer char-by-char 655 (Did not apply the patch, but fixed a bug noted as an aside in the report) 656 - PPI::Document::File was returning a plain PPI::Document object, fixed. 657 - FINALLY added some basic POD for PPI::Structure, the one class I somehow 658 keep forgetting to do. 659 6601.117 Sat 02 Sep 2006 661 Summary: 662 - Fixing bugs introduced in 1.116 663 664 Details: 665 - Simple compound statements "{ 1 }" were not end-detecting properly 666 - The new handling for the "-" character was shortcutting naively 667 - Labelled compound statements were not end-detecting properly 668 - { package => 1 } was treating package incorrectly 669 - Fixed bugs in test cases submitted by the Perl::Critic team 670 - Added a number of extra test cases, and introduced Test::Object 671 based testing for PPI::Document objects. 672 6731.116 Thu 31 Aug 2006 674 Summary: 675 - PPI::Document::File first release 676 - Adding readonly attribute 677 - Fixed various accumulated bugs 678 679 Details: 680 - Upgraded to Module::Install 0.63 681 - Add a new file-only subclass of PPI::Document 682 - Added the readonly attribute to the PPI::Document->new constructor 683 - Added method PPI::Document->readonly method 684 - 'goto' is a PPI::Statement::Break 685 - Re-fixed #19629: End of list mistakenly seen as end of statement 686 - Applied #16892: [PATCH] docs and comments 687 - Fixed #16815 (location of Structure::List is not defined.) 688 - Fixed misparsing of C< 1-1 > 689 - Fixed #18413: PPI::Node prune() implementation broken 690 - Fixed #20428 (minor doc bug in PPI::Token::Symbol) 691 - Resolved NOTABUG #20031 (PPI installation) 692 - Resolved NOTABUG #20038 (PPI installation) 693 - Fixed #19883: 'package' bareword used as hash key is detected as package statement 694 - Fixed #19629: End of list mistakenly seen as end of statement 695 - Fixed #15043: (no description) # He wanted PPI::Document::File 696 6971.115 Sat 03 Jun 2006 698 Summary: 699 - Fixing rt.cpan.org bugs 700 701 Details: 702 - Fixed #19614: Suspicious code in PPI::Structure 703 - Fixed #16831: until () { } not parsed as compound statement 704 - NOTABUG #16834: "$a = 1 if ($a == 2)" vs "$a = 1 if $a == 2" 705 - Fixed #19629: End of list mistakenly seen as end of statement 706 - Fixed #18413: PPI::Node prune() implementation broken 707 7081.114 Thu 25 May 2006 709 Summary: 710 - This release addresses only dependency issues 711 712 Details: 713 - Changed over from IO::Scalar to IO::String 714 - Added a dependency on Task::Weaken so that we can make 715 various not-so-clueful downstream packagers play nicely. 716 7171.113 Wed 10 May 2006 718 Summary: 719 - This release contains only build-time changes 720 721 Details: 722 - Upgraded to Module::Install 0.62 723 - No features() used in this dist, so removing auto_install 724 7251.112 Mon 24 Apr 2006 726 Summary: 727 - Emergency release to fix a bug that prevents install on perl > 5.8.4 728 729 Details: 730 - Small typo in the unicode-specific section of 14_charsets.t 731 prevents tests passing for anyone with a unicode-sane Perl version. 732 - Added a test for strange locales that can't handle unicode, 733 and skip the unicode tests. 734 7351.111 Sat 22 Apr 2006 736 General 737 - Moved from SourceForge CVS to new collaborative SVN repository 738 - Fixed regressions other people had added since 1.110 739 - Upgraded to Module::Install 0.62 740 741 Details: 742 - SourceForge was too hard to get into, so moved to specially designed 743 new SVN repository to make it easy for others to help out. 744 - Moved t.data to t/data in line with current style and to reduce complexity. 745 - Fixed t/data/08_regression/11_multiply_vs_glob_cast (added by unknown) 746 - Fixed t/data/08_regression/12_pow (added by unknown) 747 - Removed every use of UNIVERSAL::isa in the tests 748 - Upgraded to Module::Install 0.62 (my private prerelease) 749 7501.110 Fri Jan 27 2005 751 General 752 - Added test support for the third location component (Arjen Laarhoven) 753 - Various bug fixes 754 (Releasing early with only small changes at the request of Perl::Critic) 755 756 Details: 757 - Fixed CPAN #16924: PPI::Statement::Sub.pm fix to use Params::Util line to resolve _INSTANCE error 758 - Fixed CPAN #16837: typo in PPI::Statement::Expression POD 759 - Fixed CPAN #16973: PPI 1.109 shouldn't require List::Util 1.18 760 (We do need 1.18 to avoid a leak, but it doesn't work everywhere) 761 - Fixed CPAN #16814: _INSTANCE method not defined in PPI::Statement::Sub (dupe) 762 - Arjen Laarhoven added to CVS committers 763 - Added a third element to ->location return arrayref that contains the visual 764 starting column of the token, taking into account tabbing. 765 7661.109 Fri Dec 30 2005 767 Summary: 768 - Various bug fixes 769 - Minor structural cleanup 770 771 Details: 772 - Removed every single use of UNIVERSAL::isa 773 - PPI::Normal was quite broken, cleaned it up 774 - Fixed PPI::Normal::Standard::remove_statement_separator 775 - Fixed CPAN #16674 PPI::Token::Quote::Double->interpolations 776 (awigley) 777 - Fixed CPAN #15131 PPI::Node->find() behavior not completely 778 documented (Jeffrey Thalhammer) 779 - Fixed CPAN 13743 PPI::Statement::Scheduled api (johanl) 780 - PPI::Statement::Scheduled is now a subclass of PPI::Statement::Sub 781 - Removed breaking circular include in PPI::Util 782 - Removed an 'our' variable in t/04_element.t that created a 5.6.0 dependency 783 - Only do the PPI::Cache tests that use Test::SubCalls if >= 5.006 784 - (Except for File::Remove, we should ACTUALLY depend on 5.005 now) 785 - Fixed CPAN #16671 $_ is not localized (JPIERCE) 786 (I missed an unlocaled $_ hiding in the Node object destructor) 787 7881.108 Thu Dec 15 2005 789 Summary: 790 - Fixing of some very minor bugs 791 792 Details: 793 - 8 wasn't an illegal character in an octal number (fixed) 794 - Two <<heredocs with no content on the final line didn't round-trip (fixed) 795 7961.107 Wed Dec 14 2005 797 Summary: 798 - PPI is now Editor-compatible. 799 - You can create a PPI::Document from random ASCII line noise! 800 801 Details: 802 - Added a dozen various patches to complete round-trip Tokenizer 803 and Lexer support for absolutely anything (i.e. line noise) 804 inside the normal set of ASCII characters used in Perl programs. 805 - Does not include Latin-1 and Unicode line noise (yet). 806 - Completely the 21_exhaustive.t test script. 807 - Tested 21_exhaustive.t against 500,000 x 120-character 808 completely random line noise Perl programs. 809 (Apparently I'm still leaking 1k per document somewhere) 810 8111.106 Sun Dec 11 2005 812 Summary: 813 - More changes to support all possible 4-character programs 814 815 Details: 816 - Various fixes to weird things like *::' 817 8181.105 Sat Dec 10 2005 819 Summary: 820 - Improvements driven by Audrey Tang's pugs wishlist. 821 (So pugs can parse Perl 5, eep) 822 - Latin-1/Unicode improvements (but now requires perl >= 5.8.5) 823 (not pre-checked and enforced yet, but will be) 824 - Starting new generation of "exhaustive" testing 825 826 Details: 827 - Added 20_tokenizer_regressions, which tests all 828 detectably-failing 3-or-less character long Perl programs 829 (not inclusive of latin-1 or Unicode). (Audrey Tang) 830 - Fixed bug for incomplete <READLINE> quotes at EOF 831 (there may be a few more similar cases) 832 - Fixed bug with $'0 (where 0 is only legal after ::) 833 - No longer die for illegal chars in hex/bin number types 834 (Attach the error to $token->{_warning} instead) 835 - Caught a number of cases with trailing colons for $things 836 (Both at EOF and end of token) 837 - Convert [^\W\d]\w* to (?!\d)\w+ to improve unicode support 838 in symbols etc (Audrey Tang) 839 - Miscellaneous doc bugs in the SYNOPSIS (Audrey Tang) 840 8411.104 Thu Nov 10 2005 842 General 843 - No change to code 844 - Both List::Util and List::MoreUtil contain memory leaks, 845 and we use them extensively. Pushed the dependencies up 846 to versions with the memory leaks fixed. 847 8481.103 Thu Oct 6 2005 849 General 850 - Small bug fix that shouldn't have escaped 851 852 Details: 853 - Changed md5hex_file to act more like the PPI::Documeny way. 854 That is, localise and THEN convert to \015 855 8561.102 Wed Oct 5 2005 857 General 858 - Small things to support Perl::Metrics 859 860 Details: 861 - Added undocumented PPI::Util::md5hex_file function 862 8631.101 Thu Sep 29 2005 864 General 865 - Bug fix release 866 867 Details: 868 - Fixed CPAN bug #14436 and #14440, misparse for my ($foo) ... 869 - Added an self-analysis test script for PPI-testable problems 870 - Fixed some minor bugs it threw up. 871 8721.100_03 873 General 874 - Major bug fixing 875 - Some additions to help simplify Perl::Metrics 876 877 Details: 878 - A whole bunch (practically all) of the sibling code was breaking 879 under non-trivial use. Fixed, with a number of new tests added. 880 - Added function PPI::Util::md5hex 881 - Added method PPI::Document::hex_id 882 8831.100_02 884 General 885 - Various bug fixes 886 - Completed the first version of PPI::Cache 887 888 Details: 889 - Expanded round-trip testing coverage to all the lexer and 890 regression test files 891 - 06_round_trip.t wasn't doing the round-trip test properly. 892 Fortunately, this only resulted in false failures, so no 893 actual damage was done as a result of this. 894 8951.100_01 Sat Sep 03 2005 896 Summary: 897 - Added integrated cache support 898 899 Details: 900 - Added PPI::Cache class 901 - Removed warning in 99_pod.t 902 - Added a common PPI::Util::_slurp function 903 - PPI::Document can be given a cache to use 904 9051.003 Tue Aug 18 2005 906 Summary: 907 - Bug fix release 908 909 Details: 910 - Add support for 'for $foo () {}' 911 - Add support for 'for my $foo () {}' 912 - Fixed bug where "'Hello..." crashed the Tokenizer 913 - Fixed bug where '"Hello...' crashed the Tokenizer 914 - Fixed bug where 's' crashed the Tokenizer 915 9161.002 Thu Jul 14 2005 917 Summary: 918 - Bug fix release 919 920 Details: 921 - Fixed CPAN #13655 - insert_before and insert_after broken. 922 9231.001 Tue Jul 12 2005 924 Summary: 925 - Turning on Test::Inline scripts 926 927 Details: 928 - Bug fix: ->string returns wrong for qq <foo> and all braced quotes 929 - Added Test::Inline 2.100-type inline2test.conf and inline2test.tpl files 930 - Added t/ppi_token__quoteengine_full.t 931 - Added t/ppi_token_quote_single.t 932 - Added t/ppi_token_quote_double.t 933 - Added t/ppi_token_quote_literal.t 934 - Added t/ppi_token_quote_interpolate.t 935 9361.000 Sat Jul 9 2005 937 Summary: 938 - FIRST PRODUCTION RELEASE 939 - Finalising POD, corrected the Copyright dates 940 - Rewrote much of the main PPI.pm docs 941 - Removing more unneeded dependencies 942 - Added native Storable support 943 944 Details: 945 - Removed dependency on Class::Inspector 946 - Added build dependency on Class::Inspector and include() it 947 (although it's still needed at build time, this still does manage to 948 reduce the number of files to download by one more) 949 - Added PPI::Document::STORABLE_freeze and PPI::Document::STORABLE_thaw 950 9510.996 Fri Jul 8 2005 952 Summary: 953 - RELEASE CANDIDATE 2 954 - Clearing all remaining RT bugs 955 - Removing and inlining dependencies 956 957 Details: 958 - Resolved PDOM bug CPAN #13454 ( while ( $s = $s->sprevious_sibling ) infinite loops ) 959 Mental Note: Doing an auto-decrement in an array subscript is BAD 960 - Resolved Lexer bug CPAN #13425 ( $p{package} creates a PPI::Statement::Package ) 961 Added smarts to resolve word-started statements as ::Expression in subscripts 962 - Resolved PDOM bug CPAN #13326 ( problems in index_locations ) 963 Patch and comprehensive additional tests provided by johanl[ÄT]DarSerMan.com 964 - Removed dependency on Class::Autouse. Just load Tokenizer and Lexer up front. 965 - Removed dependency on File::Slurp. Only use it 3 times and it's not worth it 966 when almost all the files we will read are under 50k. 967 9680.995 Sun Jul 3 2005 969 Summary: 970 - RELEASE CANDIDATE 1 971 - Added some internals to help with XML compatibility 972 - Completed primary POD docs 973 - Completed first versions of insert_before and insert_after 974 - Removed last uses of _isa 975 - Added final missing POD docs 976 977 Details: 978 - Added convenience method PPI::Element::class 979 - Added docs for all PPI::Structure classes 980 - Added additional tests to check for ::Unknown classes 981 - Added PPI::Document::insert_before to return an error 982 - Added PPI::Document::insert_after to return an error 983 - Added PPI::Document::replace to return an error 984 - Removed a number of unneeded UNIVERSAL::isa imports 985 - Removed PPI::Token::_isa before anyone starts using it. 986 It was hacky and unsuitable to a production release 987 9880.994 skipped 989 9900.993 Tue Jun 21 2005 991 Summary: 992 - Various minor code, packaging and POD cleanups 993 994 Details: 995 - Corrected a POD bug in PPI::Dumper 996 - Upgraded PPI::Dumper param checking to Params::Util 997 - Restored PPI::Element->clone to using Clone::clone ( 0.17+ ) 998 - Removed dependency on Storable 999 - Until it fixes the problem, explicitly include ExtUtils::AutoInstall 1000 10010.992 Sun Jun 12 2005 1002 Summary: 1003 - Added the PPI::Transform API 1004 10050.991 Fri Jun 10 2005 1006 - Typo. I wasn't dieing on newlines to PPI::Document->new( string ) 1007 correctly, and thus dieing without the API CHANGE message. 1008 This was confusing people as to why. 1009 10100.990 Wed Jun 8 2005 1011 Summary: 1012 - Last version (hopefully) to make API changes 1013 - Slight API shuffle in the constructors 1014 - Completed all PPI::Statement::* API documentation 1015 - Enabled latin-1 support in the appropriate places 1016 10170.906 Thu Apr 28 2005 1018 Summary: 1019 - Completed location support and added related unit tests 1020 - Added API for future support of tab widths 1021 1022 Details: 1023 - Removed PPI::Element::_line 1024 - Removed PPI::Element::_col 1025 - Fixed bugs in PPI::Document::index_location 1026 - Fixed bugs in PPI::Element::location 1027 - Added 12_location.t unit test 1028 - Added PPI::Document::tab_width method 1029 - Added PPI::Normal::Standard::remove_useless_attributes 1030 (to remove the ->{tab_width} attributes and later other things) 1031 10320.905 Wed Apr 20 2005 1033 Summary: 1034 - Completely forgot to write unit tests for PPI::Util, 1035 and a bug slipped in. Fixed and added tests 1036 1037 Details: 1038 - Fixed bug in PPI::Util::_Document 1039 - Added 11_util.t 1040 10410.904 Wed Apr 20 2005 1042 Summary: 1043 - Improvements to PPI::Normal 1044 - Method renaming to parse-time PDOM private methods 1045 - Various bug fixes and POD tweaks 1046 - Added PPI::Util 1047 1048 Details: 1049 - Partly added Layer 2 to PPI::Normal 1050 - Added function PPI::Normal::Standard::remove_useless_pragma 1051 - Added function PPI::Normal::Standard::remove_statement_separator 1052 - Added function PPI::Normal::Standard::remove_useless_return 1053 - Renamed _on_line_start to __TOKENIZER__on_line_start 1054 - Renamed _on_line_end to __TOKENIZER__on_line_end 1055 - Renamed _on_char to __TOKENIZER__on_char 1056 - Renamed _scan_for_end to __TOKENIZER__scan_for_end 1057 - Renamed _commit to __TOKENIZER__commit 1058 - Renamed _is_an_attribute to __TOKENIZER__is_an_attribute 1059 - Renamed _literal to __TOKENIZER__literal 1060 - Renamed _opposite to __LEXER__opposite 1061 - Fixed bug in PPI::Statement::Package::namespace 1062 - Added unit tests for PPI::Statement::Package 1063 - Added (currently mostly internal) PPI::Util 1064 - Added exportable function PPI::Util::_Document 1065 10660.903 Fri Mar 25 2005 1067 Summary: 1068 - PPI::Document and other PPI::Node-subclasses will now implicitly 1069 DESTROY correctly. 1070 - Now that PPI.pm is just a module loader, merge the main 1071 documentation from PPI::Manual back into it again. 1072 1073 Details: 1074 - Added use of Scalar::Util::weaken for all %_PARENT writes 1075 - Uncovered critical bug in Clone, so we use Storable::dclone 1076 for now, until Clone is fixed. 1077 This resolves rt.cpan.org #11552 1078 - Added dependency on Storable 1.13 1079 - Moved all PPI::Manual content to PPI and relinked 1080 This resolves rt.cpan.org #11803 1081 - Removed lib/PPI/Manual.pod 1082 - Added the standard 99_pod.t to check POD 1083 - Fixed a POD bug in Element.pm 1084 10850.902 Sun Feb 6 2005 1086 Summary: 1087 - Added Document Normalization functions from old Perl::Compare 1088 (although it is very very limited in function at this point) 1089 1090 Details: 1091 - Added class PPI::Normal 1092 - Added class PPI::Normal::Standard 1093 - Added class PPI::Document::Normalized 1094 - Added method PPI::Document->normalize 1095 - Bug: ->clone was going to all the trouble to build a clone, 1096 but then returning the original :( Fixed 1097 10980.901 Sat Jan 29 2005 1099 Summary: 1100 - Moved all up-to-date code over to SourceForge 1101 - Various fixes to allow the release of File::Find::Rule::PPI 1102 1103 Details: 1104 - Got all modules synchronising their versions correctly 1105 - Moved to SourceForge CVS repository 1106 - Changed all files over to the new CVS directory layout 1107 - Fixed bug in PPI::Node::find_first 1108 - Added unit tests for PPI::Node::find_first 1109 - Added unit tests for PPI::Node::find_any 1110 - Added a stub and docs for PPI::Statement::stable 1111 11120.900 Mon Jan 17 2005 1113 Summary: 1114 - Final removal of PPI::Base 1115 - Completed majority of crash bugs in the Tokenizer 1116 1117 Details: 1118 - Fixed Tokenizer Bug C< @foo = <<EOF; > seen as ::Readline 1119 - Fixed Tokenizer Bug C< (<<EOF) > seen as ::Readline 1120 - Fixed Tokenizer Bug C< q'foo bar' > parsed incorrectly 1121 - Fixed bug in PPI::Token::_QuoteEngine::_scan_quote_like_operator_gap 1122 - Fixed Tokenizer Bug C< $foo:'<undef>' > sees symbol $foo:' 1123 - Fixed Tokenizer Bug C< $#arrayindex > was seen as a Symbol 1124 - Fixed Tokenizer Bug C< %2 > was seen as a Symbol 1125 - Fixed Tokenizer Bug C< &64 > was seen as a Symbol 1126 - Fixed Tokenizer Bug C< $::| > is actually a Magic 1127 - Fixed Tokenizer Bug C< @0 > is a Magic 1128 - Deleted PPI::Base 1129 - Added $PPI::Element::errstr 1130 - Added basic private error methods to PPI::Element 1131 - PPI::Element::significant now returns '' as false 1132 - PPI::XS - Added all C<significant> methods 1133 11340.846 Mon Jan 17 2005 1135 Summary: 1136 - Added proper support for <FILE> 1137 - Last release before beta 1 if all looks good 1138 1139 Details: 1140 - Added class PPI::Token::QuoteLike::Readline 1141 - Added t.data/05_lexer_practical/10_readline.code/dump 1142 - Added support for <> 1143 - A few other minor bug fixes 1144 11450.845 Sat Jan 15 2005 1146 Summary: 1147 - Adding integration with PPI::XS, autoloading if installed 1148 1149 Details: 1150 - Added $PPI::XS_COMPATIBLE and $PPI::XS_EXCLUDE variables to guide integration 1151 - Don't autoload PPI::Document, always load 1152 - Load in PPI::XS whenever it is installed 1153 - Loading and depending on Class::Inspector 1154 - PPI::Element::significant implemented in XS (as a trial) 1155 11560.844 Fri Jan 14 2005 1157 Summary: 1158 - Found a massive performance bug when parsing large perl constructs 1159 - Fixed some install problems 1160 1161 Details: 1162 - PPI::Node::schild was copying the entirety of its child array each call. 1163 This was causing massive slowdowns when ->{children} got large. Fixed. 1164 - The core tests still expect Transform to be in the core. Fixed. 1165 11660.843 Tue Jan 12 2005 1167 Summary: 1168 - Starting the process of removing PPI::Base. 1169 It only does does error handling now, which will be split up. 1170 - Fixing some packaging and "play well with others" issues 1171 1172 Details: 1173 - Randal Schwartz pointed out t/06... wouldn't working for him. 1174 It appears when Test::More bug CPAN #8385 was fixed, we broke. 1175 - We now include build-time-only dependencies in the installer 1176 - Although unusable, PPI::Document::Normalized's version fell out 1177 of sync with the rest of the distribution. Fixed. 1178 - PPI::Tokenizer no longer inherits from PPI::Base 1179 - Added class variable $PPI::Tokenizer::errstr 1180 - Added class method PPI::Tokenizer->errstr 1181 - Fixed Tokenizer Bug: C< y => 1 > was being seen as a regex 1182 - Fixed Tokenizer Bug: C< <<''; > was dying because I expected at 1183 least one character 1184 - Fixed Tokenizer Bug: C< $foo->{s} > was being seen as a regex 1185 11860.842 Tue Jan 11 2005 1187 Summary: 1188 - Lots of debugging based on Tinderbox results 1189 1190 Details: 1191 - Fixed MANIFEST.SKIP to removed PPI::Transform and PPI::Tinderbox 1192 from the core PPI distribution (like they should be) 1193 - Optimised the previous #9582 to not have to run for EVERY word, 1194 only those where it might be needed. 1195 - Corrected a use of QuoteLike::Execute to QuoteLike::Backtick 1196 - Fixed CPAN #9598 Tokenizer Bug: C< qx( $command ) > 1197 - Fixed CPAN #9614 Tokenizer Bug: C< $foo << 16 > 1198 - Set the properly includive regex for << '...' here-doc 1199 - Added an very early filter to prevent non-basic chars going in 1200 12010.841 Mon Jan 10 2005 1202 Summary: 1203 - Completed much more documentation on the core classes 1204 - PPI::Tester back in sync again (separate distribution) 1205 - PPI::Processor and PPI::Tinderbox completed (separate distribution) 1206 1207 Details: 1208 - Documented PPI::Tokenizer 1209 - PPI::Document->new( $source ) added as a convenience 1210 - PPI::Lexer::lex_file can now be called statically 1211 - PPI::Lexer::lex_source can now be called statically 1212 - PPI::Lexer::lex_tokenizer can now be called statically 1213 - Fixed a small bug in PPI::Dumper::print 1214 - Fixed CPAN #9582 Tokenizer Bug: C< sub y { } # Comment > 1215 - Fixed similar case with C< foo->y() > 1216 12170.840 Thu Dec 21 2004 1218 Summary: 1219 - Changed the PPI summary to no longer use the devisive word "parse" 1220 Now: "PPI - Analyze and manipulate Perl code without using perl itself" 1221 - Total rewrite of all the ->location code 1222 - Upgrading MakeFile.PL to Module::Install 1223 - Fixed #CPAN 8752 (a round-trip edge case bug) 1224 - Added 08_regression.t to do code/dump regression testing for lexer bugs 1225 - Completed (hopefully) HereDocs conversion to a single complex token 1226 - PPI is now compatible with prefork.pm (although not dependant) 1227 1228 Details: 1229 - Added PPI::Node::find_first object method 1230 - Changed PPI::Node::find_any to just call PPI::Node::find_first 1231 - Added PPI::Element::first_token object method 1232 - Added PPI::Element::last_token object method 1233 - Made a partial-removal-capable PPI::Element::_flush_locations 1234 - PPI::Document::flush_locations uses PPI::Element::_flush_locations 1235 - PPI::Document::index_locations is here-doc sane 1236 - Added PPI::Token::HereDoc::heredoc object method 1237 - Added PPI::Token::HereDoc::terminator object method 1238 - Documented PPI::Token::HereDoc 1239 - Added a HereDoc code/dump test to 05_lexer_practical.t 1240 - Added PPI::Document::serialize, which replaces the use of 1241 ->content for generating the actual string to write out to 1242 files when saving Documents. 1243 - File::Spec reduced from dependency to build dependency 1244 - Updated Test::ClassAPI dependency to newest version 1245 - Enabled API collision detection in 02_api.t 1246 - Updated Class::Autouse dependency to newest version 1247 12480.840_01 Tue Dec 21 2004 1249 Summary: 1250 - Perl Foundation Funding Commences 1251 - Changes separated into General and Details from here on 1252 - Complete re-organisation of the quote-like token classes. 1253 Any and all code that works with quotes will be broken. 1254 - Gave up on the old PPI::Query code and wrote a complete new and 1255 much thinner implementation based roughly on the API of 1256 File::Find::Rule. 1257 PPI::Find uses the &wanted function (which also has a slightly 1258 different API to the old one) but has the ->in style search methods. 1259 It should be relatively easy for someone to write PPI::Find::Rule 1260 on top of it. 1261 - PPI::Transform is thus temporarily stale 1262 1263 Details: 1264 - Introduced a bug for C< foreach $foo () > and caught/fixed it 1265 during the changeover. 1266 - Changed PPI::Lexer::Dump to PPI::Dumper 1267 - API Freeze PPI::Find 1268 - API Freeze PPI::Dumper 1269 - Documented PPI::Find 1270 - Documented PPI::Dumper 1271 12720.831 Fri Nov 5 2004 1273 - Overloaded PPI::Document bool => true 1274 - Overloaded PPI::Document "" => content 1275 (That is, ::Documents stringify to their content) 1276 - Fixed PPI::Document::save 1277 - Merged Leon Brocard's docs patch 1278 - Cleaned up PPI::Node::_condition and documented conditions better (fixed #7799) 1279 - Allow dropping of the initial PPI:: in class search conditions 1280 - Fixed two instances of File::Slurp::read_file being called as a method 1281 12820.830 Mon Sep 27 2004 1283 - Added PPI::Statement::Package::file_scoped object method 1284 - Handle potentially dangerous C< sub foo ($$ > safer 1285 - Resolve C< sub BEGIN { } > to PPI::Statement::Scheduled correctly 1286 - Resolve C< sub () { 1 }; > to PPI::Statement correctly 1287 - API Freeze PPI::Statement::Package 1288 - API Freeze PPI::Statement::Scheduled 1289 - API Freeze PPI::Statement::Sub 1290 - Documented PPI::Statement 1291 - Documented PPI::Statement::Package 1292 - Documented PPI::Statement::Scheduled 1293 - Documented PPI::Statement::Sub 1294 - Documented PPI::Document::Fragment 1295 12960.829 Sat Sep 25 2004 1297 - BREAKS API COMPATIBILITY 1298 - Changed PPI::Token::SubPrototype to PPI::Token::Prototype 1299 - Added PPI::Token::Prototype::prototype object method 1300 - Added PPI::Statement::Sub::prototype object method 1301 - Added PPI::Statement::Sub::block object method 1302 - Fixed PPI::Statement::Include::version 1303 13040.828 Sun Aug 8 2004 1305 - BREAKS API COMPATIBILITY 1306 - Changed PPI::Token::DashedBareword to PPI::Token::Quote::Dashed 1307 - Changed PPI::Token::Bareword to PPI::Token::Word 1308 - Vastly improved PPI::Manual 1309 13100.827 Thu Aug 5 2004 1311 - Added PPI::Token::Separator class ( for __DATA__ and __END__ ) 1312 - Added better Tokenizer handling of __DATA__ and __END__ 1313 - Added better Lexer handling of __DATA__ and __END__ 1314 - Fixed some version inconsistencies 1315 13160.826 Sat Jul 31 2004 1317 - Added PPI::Element::statement object method 1318 - Added PPI::Transform abstract class 1319 - Sped up the 'bool' overload for PPI::Element 1320 - Added PPI::Element::snext_sibling object method 1321 - Added PPI::Element::sprevious_sibling object method 1322 - Added PPI::Element::insert_before object method placeholder 1323 - Added PPI::Element::insert_after object method placeholder 1324 - Changed {elements} to {children} to match PPI::Node definitions 1325 - Added PPI::Node::first_element object method 1326 - Added PPI::Node::last_element object method 1327 - Added PPI::Element::next_token object method 1328 - Added PPI::Element::previous_token object method 1329 - Added PPI::Token::Symbol::symbol object method 1330 13310.825 Mon Jul 26 2004 1332 - Added PPI::Statement::Include::type object method 1333 - Added PPI::Statement::Include::module object method 1334 - Added PPI::Statement::Include::pragma object method 1335 - Added PPI::Statement::Include::version object method 1336 - Overloaded == as "the same object" for PPI::Element 1337 - Overloaded eq as "->content is the same" for PPI::Element 1338 - Overloaded bool as always true, to prevent an error 1339 - Added PPI::Statement::Package::namespace object method 1340 - 100% round-trip safe. What goes in, will come out. 1341 - Reduced leaks by 95%. Process size 30meg after 5000 files. 1342 Still some leaks remaining when Lexing errors out. 1343 - Separated largest Tokens into their own files. 1344 This aligns token class structure with that of ::Statement and ::Structure 1345 - Rewrote PPI::Node::DESTROY several times while hunting down more leaks 1346 - Fixed Tokenizer crash on empty subroutine prototypes such as C< sub foo() {} > 1347 - Treat unexpected braces as an implicit close, to make the lexer more resilient 1348 - Added PPI::Statement::UnmatchedBrace (name suggested by Abhijit Menon-Sen) 1349 to handle closing braces found at the base of a Document. 1350 - Enabled foo'bar package notation again. 1351 - Getting close to the first 0.900 series beta release 1352 13530.824 Wed Jul 21 2004 1354 - Removed a 6 meg tmon.out file I accidentally bundled 1355 13560.823 Wed Jul 21 2004 1357 - Added PPI::Document::Fragment class 1358 - Added PPI::Node::schildren object method 1359 - Completed compound statement parsing 1360 - Lexer is now officially feature complete 1361 13620.822 Wed Jul 21 2004 1363 - Filling out the API test as much as possible 1364 - Added PPI::Statement::label object method 1365 - Moved PPI::Structure::elements object method to PPI::Node::elements 1366 - Re-organised statement parsing to better implement ::Compound statements 1367 - Added PPI::Statement::Data class 1368 - Added PPI::Statement::End class 1369 - Re-organised the _lex_statement, _statement_continues stuff, ready for while 1370 - Added PPI::Lexer::_lex_statement_end to handle PPI::Statement::End properly 1371 - Organising 02_api.t was getting hard, so added implicit Module=class to Test::ClassAPI 1372 13730.821 Mon Jul 19 2004 1374 - Cleaned up test data files directories 1375 - Added PPI::Statement::Variable::type object method 1376 - Added PPI::Statement::Variable::variables object method 1377 - Added some more classes to the API testing 1378 - Started 07_tokens.t for testing particular token classes 1379 - Added PPI::Token::Symbol::canonical object method (and tests) 1380 - PPI::Token::Magic now ISA PPI::Token::Symbol 1381 - PPI::Element::clone now fixes _PARENT links for Nodes 1382 13830.820 Mon Jul 19 2004 1384 - Added Round-Trip-Safe testing for all PPI files 1385 - Added PPI::Node::find_any object method 1386 - Added PPI::Node::contains object method 1387 - Continuing the never ending addition of tests 1388 - Structure open and close brace tokens now see the Structure as their parent 1389 - Removed the sample application, to streamline the core install 1390 - Removed dependencies for the sample application 1391 - Removed custom META.yml, as now no longer needed 1392 13930.819 Mon Jul 14 2004 1394 - Many parts of PPI are VASTLY changed in this revision 1395 - Breaks API compatibility heavily 1396 - Adds dependency on List::MoreUtils 1397 - Added PPI::Lexer support for CHECK blocks 1398 - Added PPI::Document::load method 1399 - Added PPI::Document::save method 1400 - Added PPI::Document::index_locations method 1401 - Added PPI::Document::flush_locations method 1402 - Added PPI::Element::top method 1403 - Added PPI::Element::document method 1404 - Renamed PPI::Element::extract -> PPI::Element::remove 1405 - Added test script for element-y stuff 1406 - Optimisation across the board using List::Any 1407 - Added PPI::Node::first_child method 1408 - Added PPI::Node::last_child method 1409 - Added PPI::Element::clone method 1410 - Removed Filehandle support from PPI::Tokenizer, to allow the 1411 ability to rollback source lines into the buffer if needed. 1412 - Added POD documentation for PPI::Element 1413 - Added POD documentation for PPI::Node 1414 - Added POD documentation for PPI::Document 1415 14160.818 Mon Jul 5 2004 1417 - Changed lib/PPI/Manual.pm to lib/PPI/Manual.pod 1418 - Added documentation for PPI::Lexer 1419 - Fixed the misparsing of s{//}{\} 1420 - More clues added for deciding "slash or regex" 1421 - Removed PPI::Batch from the default distribution 1422 - Replaced File::Flat with File::Slurp to reduce dependencies 1423 14240.817 Thu Jul 1 2004 1425 - Fixed the misparsing of $#{ } 1426 - Changed PPI::ParentElement to PPI::Node and moved it to its own file 1427 - Changed PPI::Common to PPI::Base 1428 - Fixed PPI::Node::find 1429 - Added PPI::Node::prune 1430 - Started to add a little more class structure documentation 1431 - Tried to make the DESTROY sequence of events work better 1432 14330.816 Tue Jun 29 2004 1434 - Solved the "last token in file parses wrong" bug 1435 14360.815 Sun Jun 27 2004 1437 - Fixed a bug with the detection of @- and @+ 1438 - Added support for @* 1439 - Added missing classmap entry for ^ to ::Token::WhiteSpace 1440 - Added support for arcane "foo"x10 idiosyncracy 1441 14420.814 Sat Jun 26 2004 1443 - Added the PPI tester, a desktop-based interactive debugger, which 1444 should greatly accelerate finding and fixing both ::Tokenizer 1445 and ::Lexer bugs. This will probably end up as a separate 1446 distribution though, as it has a dependency on wxPerl. 1447 1448 - Fixed the misparsing of Foo::Bar::Baz 1449 - Fixed the misparsing of *100 1450 - Fixed the misparsing of Class::->method properly, or rather Foo:: 1451 - Tokenizer correctly identifies labels 1452 - Changed PPI::Statement::Flow to PPI::Statement::Compound 1453 - Removed the extra null whitespace token appearing after a bareword 1454 at the end of a file. 1455 - -X operator are recognised correctly, although not at end of file 1456 - Lexer detects subroutine and if () statement ends correctly 1457 14580.813 Sat Jun 26 2004 1459 - PPI::Lexer is now structurally complete 1460 14610.812 Tue Jun 22 2004 1462 - No changes to PPI itself. 1463 - With the addition of Test::ClassAPI 'complete' support, 1464 upgraded 02_api.t to use it. Fixed a few small house-keeping bugs. 1465 14660.811 Mon Jun 21 2004 1467 - Added support for subroutine attributes 1468 - Fixed some problems with anonymous subroutines and prototypes 1469 - $#$foo parses as (Cast,Symbol) now, not (Magic,Symbol) 1470 14710.810 Mon Jun 14 2004 1472 - Recognise the _ magic filehandle 1473 14740.809 Sat Apr 17 2004 1475 - No changes to PPI itself. 1476 Set the correct number of tests to match changes to Test::ClassAPI 1477 14780.808 Sat Apr 17 2004 1479 - No changes to PPI itself. 1480 Upgraded 02_api.t to match changes to Test::ClassAPI 1481 14820.807 Sat Apr 3 2004 1483 - Added a manual META.yml file to stop the bundled private AppLib 1484 library from being indexed by CPAN 1485 14860.806 Mon Mar 22 2004 1487 - The $} magic variable is now supported 1488 - Fixed a "tight sub property" bug ( sub foo:lvalue ) 1489 14900.805 Sun Sep 28 2003 1491 - The maximum line length regressed, reseting it to 5000. 1492 - In PPI::Format::HTML, not any parsing error causing a 1493 premature end of tokenizer by adding it in a comment at 1494 the end of the file. 1495 14960.804 Sat Sep 06 2003 1497 - Statement and Structure resolution preliminarily work. 1498 Some basic types of statements and structures are identified. 1499 - PPI::Format::Apache has been separated into a different module 1500 15010.803 Sat Sep 06 2003 1502 - Added very long line protection support. 1503 Maximum line length is now 5000. 1504 - Added bug fixes to the Lexer so that block tree building works 1505 mostly OK again, without adding broken duplicate tokens. 1506 - Added the PPI::Lexer::Dump module, to do Lexer object dumps. 1507 15080.802 Sat Aug 23 2003 1509 - PPI::Format::HTML sends the correct content headers 1510 15110.801 Fri Aug 22 2003 1512 - Moved to a new numbering scheme to get more room before 1.0 1513 - Always fully load when called under mod_perl 1514 - Add mod_perl hook to PPI::Format::HTML 1515 15160.8 Fixes to the quote parsing engine 1517 15180.7 Fixed some minor bugs 1519 15200.6 Fixed POD, fixed version number, included $'a as a symbol 1521 15220.5 Missing 1523 15240.4 Mon Dec 23 10:24:21 1525 - Some more minor parsing fixes in Tokenizer 1526 - Completely changed the API from doThis to do_this style 1527 - Changed API to indicate private methods properly 1528 15290.3 Tue Dec 17 10:29:27 1530 - Restructured a little bit 1531 - Fixed some mis-parsing cases 1532 15330.2 Unknown 1534 - Added test script 1535 15360.1 Thu Dec 06 16:50:23 2002 1537 - original version 1538