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