The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
2010-11-26 0.79 - H.Merijn Brand   <h.m.brand@xs4all.nl>
    * Use correct type for STRLEN (HP-UX/PA-RISC/32)
    * More code coverage
    * EOF unreliable when line-end missing at eof

2010-11-26 0.78 - H.Merijn Brand   <h.m.brand@xs4all.nl>
    * Version 0.77 broke MacOS exported CSV files with only \r

2010-10-23 0.77 - H.Merijn Brand   <h.m.brand@xs4all.nl>
    * Internals now use warn () instead of (void)fprintf (stderr, ...)
      Now the test in t/80_diag also passes on Windows
    * Better parsing for eol = \r and set as such (RT#61525)
    * Workaround for AIX cpp bug (RT#62388, Jan Dubois)

2010-10-09 0.76 - H.Merijn Brand   <h.m.brand@xs4all.nl>
    * Windows doesn't support STDERR redirection as used in t/80_diag

2010-10-05 0.75 - H.Merijn Brand   <h.m.brand@xs4all.nl>
    * Fixed undefinedness of $\ in print (RT#61880)

2010-09-29 0.74 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Spelling fixes
    * Real eol support for parsing streams (beyond \n, \r and \r\n)
    * Clarify doc for always_quote to not quote undef fields
    * Clarify UTF8 process for print () and combine ()

2010-05-03 0.73 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Improve date conversion in examples/csv2xls
      new option -D allows column selection for date conversions
    * Tested under perl-5.12.0 (and 21 other versions of perl)
    * Added a note about EBCDIC data files
    * Test suite is now safe for parallel test (prove --shuffle -j6)

2010-03-16 0.72 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Introduce quote_null attribute (RT#55200)
    * examples/csv-check can be used for Text::CSV_PP
    * examples/csv-check more options for sep_, escape_ and quote_char
    * examples/csv2xls more options for sep_, escape_ and quote_char
    * examples/csv2xls added auto_diag and verbosity
    * Dropped YAML spec to 1.0

2010-02-15 0.71 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Upped copyright to 2010
    * Prevent double encoding: make Text::CSV_XS streams behave just
      like perl would (thanks ikegami for the test cases)
    * Text::CSV_XS->error_diag () in void context now warns instead of
      doing nothing
    * auto_diag also used for new () itself

2009-12-02 0.70 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Add quote_space attribute
    * Forbid \r and \n in sep_char, quote_char, and escape_char

2009-10-10 0.69 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Missing end quotes in error code docs
    * examples/csv-check now shows detected eol
    * Auto detection of eol => "\r" in streams
    * Optimized caching. All cache changes now in XS

2009-10-04 0.68 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Attribute auto_diag now localizes to +1 if autodie is active
    * Output name generation in csv2xls (RT#48954)
    * Added csvdiff to examples/
    * Reordered docs. Rewrote SYNOPSIS to be more like a real-world
      code example

2009-08-08 0.67 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Fix empty_diag typo for attribute handler
    * Fix AUTOMATED_TESTING erroneous skip

2009-08-07 0.66 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Reordered examples in doc to show best method first
    * Documentation grammatical fix (John P. Linderman, RT#46411)
    * Fail if first arg to new () is not a hash ref
    * Implement empty_is_undef on request of Evan Carroll
    * Typo in documentation (Herwin Weststrate, RT#47613)
    * error_diag () uses warn () in void context instead of STDERR
    * Add auto_diag attribute (still under construction)
    * FIX: reset attributes (after they have been set) with accessor

2009-05-14 0.65 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Initial known errors can now be checked on number (1002)
    * More tests for illegal combinations
    * Added -u option to examples/csv-check to validate utf-8 encoding
    * Correct documentation for error_diag () return value in case of
      constructor failure (Slaven, RT#46076)
    * All error_diag () returns should now be dual-var (both numeric
      and string context valid)
    * Remove (3) from L<..> links (Slaven, RT#46078)

2009-04-03 0.64 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Skip perlio tests for perl older than 5.8, as perlio
      was experimental in 5.6
    * Up Devel::PPPort to 3.17
    * Fix initialization of eol => undef (could cause core dump)
    * Added configure_require to META.yml

2009-03-20 0.63 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Fixed allow_whitespace with sep_char = TAB (RT#44402)

2009-03-13 0.62 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Prevent warnings in older perls (without utf8)
    * All known errors are covered and/or documented. TODO dropped
    * Unicode TODO dropped. All covered, or use Text::CSV::Encoded
    * Documented the examples

2009-03-08 0.61 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * valgrind found a possible uninitialized value
    * Restriction in print () was only for really old perls
    * Fix for bind_columns () initialization (vincent, RT#43927)

2009-01-27 0.60 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Optimize for threaded perls. (Goro Fuji, RT#42517)
      Non-threaded perls won't notice

2009-01-23 0.59 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Wrong e-mail in META.yml
    * Missing $IO argument in bind_columns example (docs only)
    * Upped Copyright notices to 2009
    * Added warning for parse () (RT#42261)
    * Small optimizations (Goro Fuji, RT#42517)
    * ppport.h updated to 3.15
    * Added git clone command to README
    * ppport.h updated to 3.16-pre
    * Optimize getline/print method calls (Goro Fuji, RT#42517)
    * Decode *_char attributes for perl 5.8.2 and up

2008-10-30 0.58 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Small typo in test message (RT#40410, JPL)
    * Parse error test on "\0 (RT#40507)
    * Fixed allow_loose_escapes bug disclosed by RT#40507

2008-10-21 0.57 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Don't bootstrap twice. Don't know how/when it came in there

2008-10-21 0.56 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Update to ppport.h 3.14_01
    * Updated docs (Unicode, TODO, Release Plan)
    * As Text::CSV::Encoded is about to be released, refer to it
      in the documentation
    * Default for eol is "", undef now treated as ""
    * Don't print $\ twice (eol prevails over $\ in ->print ())
      Fix only works in perl5.8 and up
    * Undef treated as 0 for boolean attributes
    * Trailing whitespace in pod removed
    * Sync up doc with latest Text::CSV::Encoded
    * YAML declared 1.4 (META.yml) instead of 1.1 (YAML)

2008-10-15 0.55 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Improve documentation on eol
    * Unicode on perl-5.8.[0-2] sucks. Don't use it!
    * Test error codes in expected IO failures
    * Allow SetDiag to be used as class method
    * Document the MS/Excel separation character
    * Hint that eof is not an error per se (RT#40047)

2008-09-04 0.54 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * IO failure in print () was not propagated (ilmari, RT#38960)

2008-09-01 0.53 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * SvUPGRADE is a safer choice than sv_upgrade (Lubomir Rintel, RT#38890)
    * bring docs in sync with reality for msg 2023
    * Default eol for print is $\
    * examples/csv-check should default to CSV , not to ;
    * Tests for SetDiag (0)
    * Tests for error 2030
    * Code cleanup (Devel::Cover++)

2008-06-28  0.52 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Using undef for hash keys is a bad plan
    * Fix, tests, and documentation for column_names ()

2008-06-17  0.51 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Allow UTF8 even without binary => 1
    * Fixed a few pod typo's
    * Lifted the max of 255 for bind_columns

2008-06-04  0.50 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Skip a few tests in automated testing, as they confuse
      reports. This is important for the automated sites that
      mark modules as fail if it is not an obvious full PASS
    * 0.46 caused the last still open RT bug to be closed!
    * Tested on 5.11.0, 5.10.0, 5.8.8, 5.6.2, and 5.005_04,
      Strawberry and Cygwin

2008-06-04  0.46 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * In examples add die on failed close calls
    * Use Test::MinimumVersion (not distributed)
    * Added option -F to examples/csv2xls
    * More source code cleanup
    * Nailed the UTF8 issues for parsing
    * Nailed the UTF8 issues for combining

2008-04-23  0.45 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Forgot to pack examples/parser-xs.pl

2008-04-23  0.44 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Fixed the error position returned as third arg in error_diag ()
    * Made examples/csv-check use this even more vebose
    * Removed double-double quote from TODO
    * Added examples/parse-xs.pl (attempt to fix bad CSV)

2008-04-21  0.43 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * parse errors try to remember failing position
    * used valgrind to test for leaks (devel-only)
    * used Test::Valgrind as alternative leak check (devel-only)
    * improve documentation for error 2023
    * nailed the loose quotes in quoted fields

2008-04-16  0.42 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Generate META.yml myself. I won't use Build.PL
    * Array-refs now accept scalars with magic:
      $csv->print (*STDOUT, $sth->{NAME_lc});
    * More/better examples
    * Added t/76_magic.t

2008-04-11  0.41 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * error_diag () subclassable
    * typo in bind_columns () docs
    * examples/csv2xls now uses getline ()
    * better test for getline in t/75_hashref.t (makamata)
    * document return value of getline () with bind_columns ()
    * add perl version prereq to META.yml

2008-04-07  0.40 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Implemented getline_hr () and column_names () (RT#34474)
      (suggestions accepted from Mark Stosberg)
    * Corrected misspelled variable names in XS
    * Functions are now =head2 type doc entries (Mark Stosberg)
    * Make SetDiag () available to the perl level, so errors can
      be centralized and consistent
    * Integrate the non-XS errors into XS
    * Add t/75_hashref.t
    * Testcase for error 2023 (Michael P Randall)
    * Completely refactored the XS part of parse/getline, which
      is now up to 6% faster. YMMV
    * Completed bind_columns. On straight fetches now up to three
      times as fast as normal fetches (both using getline ())

2008-03-11  0.37 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Copied GIT repo to public mirror
    * Fix leak / make meta info available to getline () + tests

2008-03-06  0.36 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Updated ppport.h
    * auto-load IO::Handle when needed
    * Tested with all available perl builds, including a fresh
      threaded 5.11 (blead)

2008-03-01  0.35 (Valloire) - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * use warnings/$^W = 1
    * Tested on 5.10.0, 5.8.8, 5.6.2, and 5.005_04, Strawberry and Cygwin
    * Diagnostics for failed new ()
    * New 'blank_is_undef' option
    * Updated docs
    * Extended the DIAGNOSTICS a bit
    * Updated TODO
    * Fixed allow_whitespace issue, revealed by blank_is_undef
    * Re-enabled some tests
    * Fixed parse error that passed for q{1, "bar",2} with escape_char +
    * Reversed an erroneous test result in the funny combo section
    * Extended diagnostics tests
    * Extended XS coverage
    * Removed error 2033

2008-01-04  0.34 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * No change, but 0.33 was shipped with an old META.yml

2008-01-02  0.33 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Text-CSV_XS now under git
    * Upped copyright to 2008
    * Added all prereq's to Makefile.PL
    * Tested under perl 5.10

2007-10-24  0.32 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Added $csv->error_diag () to SYNOPSIS
    * Added need for diag when new () fails to TODO
    * Fixed a sneaked-in defined or in examples/csv2xls
    * Plugged a 32byte memory leak in the cache code (valgrind++)
    * Some perlcritic level1 changes

2007-07-23  0.31 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Removed prototypes in examples/csv2xls
    * Improved usage for examples/csv2xls (GetOpt::Long now does --help/-?)
    * Extended examples/csv2xls to deal with Unicode (-u)
    * Serious bug in Text::CSV_XS::NV () type setting, causing the
      resulting field to be truncated to IV

2007-06-21  0.30 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * ,\rx, is definitely an error without binary (used to HANG!)
    * Fixed bug in attribute caching for undefined eol
    * Cleaned up some code after -W*** warnings
    * Added verbatim.
    * More test to cover the really dark corners and edge cases
    * Even more typo fixes in the docs
    * Added error_diag ()
    * Added t/80_diag.t - Will not be mirrored by Text::CSV_PP
    * Added DIAGNOSTICS section to pod - Will grow
    * Small pod niot (abeltje)
    * Doc fix in TODO (Miller Hall)

2007-06-08  0.29 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Removed an unused 'use Data::Dumper'
    * Added $csv->eof () (RT#27424)
    * Two typo's in the doc's (Amsterdam.pm)
    * Modified examples/speed.pl to better show the diffs between versions
    * Cache attribute settings and regain speed of 0.23! and beyond
      Relative overall speeds (YMMV, use examples/speed.pl to check),
      the 1.0x versions are from Text::CSV_PP.

		    0.23 0.25 0.26 0.27 0.28 0.29 1.00 1.02 1.05
		    ==== ==== ==== ==== ==== ==== ==== ==== ====
	combine   1   62   61   61   60   58  100   14   14   14
	combine  10   41   41   41   42   42  100    6    6    6
	combine 100   35   35   36   36   36  100    5    5    5
	parse     1  100   92   87   90   81   96   19   19   17
	parse    10   95  100   86   97   94   94   15   16   14
	parse   100   90   95   84   94   92  100   16   16   14
	print    io   93   89   91   91   95  100    0    0    6
	getline  io   90   92   84   87   89  100    0    0   13
		    ---- ---- ---- ---- ---- ---- ---- ---- ----
	average       75   75   71   74   73   98    9    9   11

    * Removed prototypes
    * Added a SPECIFICATION section to the pod
    * Safe caching of eol, and a warning in the docs
    * Rewrote t/20_file.t do do actual file IO instead of IO_Scalar fake
    * Small optimization for parse (juerd)
    * Added make target test_speed
    * Merged the items from CAVEAT to SPECIFICATION
    * Updated the TODO and Release Plan sections
    * Speed up internals by using references instead of copies (juerd)
    * Reworked error_input, which also had an undetected internal error
    * Added IO tests for lexical IO handles and perlio IO to/from scalars

2007-06-03  0.28 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * IMPORTANT CHANGE: new () returns undef if it gets unsupported
      attributes. Until now, new ({ esc_char => "\\" }) was just
      silently ignored. Rejecting it and failing is better than
      continuing with false assumptions.
    * Added allow_loose_quotes  (see doc)
    * Added t/65_allow.t
    * Added allow_loose_escapes (see doc) (RT#15076)
    * More code cleanup in XS
    * Added allow_whitespace    (see doc)

2007-05-31  0.27 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * checked with perlcritic (still works under 5.00504)
      so 3-arg open cannot be used (except in the docs)
    * 3-arg open in docs too
    * Added a lot to the TODO list
    * Some more info on using escape character (jZed)
    * Mention Text::CSV_PP in README
    * Added t/45_eol.t, eol tests
    * Added a section about embedded newlines in the pod
    * Allow \r as eol ($/) for parsing
    * More docs for eol
    * More eol = \r fixes, tfrayner's test case added to t/45_eol.t

2007-05-15  0.26 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Add $csv->allow_undef (1) suggestion in TODO
      Still have to find the best spot to document
      the difference between empty string and undef
    * Spell-checked the pod and fixed some typo's
    * Added t/70_rt.t
      - Regression         for RT#24386: \t doesn't work (WFM)
      - Regression and fix for RT#21530: getline () return at eof
	This one still passes under perl 5.00504
      - Regression         for RT#18703: Fails to use quote_char of '~'
    * Added t/55_combi.t for most combinations of always_quote,
      sep_char, quote_char, and escape_char
    * Added docs about sep_char not allowed to be either quote_char
      or escape_char
    * Both combine () and parse () now return FALSE id sep_char is
      equal to either quote_char or escape_char. Done in XS, as it
      was a slowdown of 10% when done in perl.

2007-05-07  0.25 - H.Merijn Brand   <h.m.brand@xs4all.nl>

    * Merijn got the maintainership
    - code reformat and code cleanup
    - renamed internal (Encode, Decode) to (Combine, Parse) to
      prevent misinterpretation with upcoming Unicode changes
      and possible name clashes
    - added pod check (and fixed pod)
    - added pod coverage and small additions to the pod.
      More to do in this area
    - renamed test to fixate the sequence
    - Added t/50_utf8.t
    - tests now use Test::More
      . Makefile.PL requires Test::More
    - checked proclaimed version compatibility
      . 5.9.x-64int     works @31159
      . 5.8.x-64int-dor works @31162
      . 5.8.0-dor       works
      . 5.6.2           works
      . 5.005.04        works
      . 5.004.05        fails
    - 5.005 is now prerequisite
    - Added missing info in docs for new ()
    - Added meta_info () method and docs
    - Added keep_meta_info in new ()
    - Added t/15_flags.t
    - Added test_cover make target
    - Added test for error_input ()
    - Added tests for fields () and meta_info () before parse ()
    - Added tests for ->types () as method
    - Added tests for deleting types (coverage now over 99%)
    - Added is_quoted (), is_binary () and tests
    - Added COPYRIGHT section to pod
    - Added the parse example from the pod to test.pl
    - Added accessor methods for internals: quote_char () et all
    - Added tests for the new accessor methods
    - Added always_quote to the missing places in the doc and in new ()
    - Changed the tests to use the accessors instead of the hash keys
      except for the ->{types} and ->{_types}
    - Moved test.pl to examples/speed.pl

2001-10-10  Jochen Wiedmann  <joe@ispsoft.de> (0.23)

    * Changed "char" to "unsigned char" in CSV_XS.xs.
      Matthew Graham <MGraham@pacificaccess.com.au>

2000-12-22  Jochen Wiedmann  <joe@ispsoft.de> (0.22)

    * CSV_XS.xs: Added the handling of escape characters
      outside of quotes. Kirill Paliy <kpaliy@aaanet.ru>

2000-08-18  Jochen Wiedmann  <joe@ispsoft.de> (0.21)

    * CSV_XS.pm (parse): Minor bugfix in the parse method.
      Norikatsu Shigemura (nork@cityfujisawa.ne.jp)

1999-06-28  Jochen Wiedmann  <joe@ispsoft.de> (0.20)

    * CSV_XS.xs: Fixed a bug in the decoder where escapeChar wasn't
      handled right. Pavel Kotala <pkotala@logis.cz>

1999-05-01  Jochen Wiedmann  <joe@ispsoft.de> (0.19)

    * CSV_XS.xs: Setting escape_char => undef should now work.
      Requested by Syed Muhammad Nayeem <smnayeem@dhaka.agni.com>

1999-04-05  Jochen Wiedmann  <joe@ispsoft.de> (0.18)

    * CSV_XS.pm: Portability fixes (sv_undef => PL_sv_undef
      and the like.

1999-03-04  Jochen Wiedmann  <joe@ispsoft.de> (0.17)

    * CSV_XS.pm: Added always_quote attribute. 
      (Ken Williams <kwilliam@DigitalRiver.com>)
    * The types method is now implemented in Perl.

1999-02-11  Jochen Wiedmann  <joe@ispsoft.de> (0.16)

    * CSV_XS.pm: PV, IV and NV are no longer exportable, so that I
      need not inherit from Exporter any longer. (This caused trying
      to autoload DESTROY without any reason. Seems to me to be a
      serious performance penalty.)
    * CSV_XS.pm: Being a little bit less strict now: If quoteChar and
      escapeChar are different, then the quote char may be part of
      the field. (Not at the fields start, of course.)

1998-08-21  Jochen Wiedmann  <joe@ispsoft.de> (0.15)

    * CSV_XS.pm: Moved print () and getline () to XS.

1998-08-13  Jochen Wiedmann  <joe@ispsoft.de> (0.14)

    * CSV_XS.xs: Forgot to escape sepchar; patched by Paul Walmsley,
      <shag@nicar.org>.

1998-07-20  Jochen Wiedmann  <joe@ispsoft.de> (0.13)

    * CSV_XS.xs (Encode): Strings qre quoted only if required. 
    * CSV_XS.xs: Added support for $csv->{types}.

1998-06-11  Jochen Wiedmann  <joe@ispsoft.de> (0.12)

    * CSV_XS.xs (Encode): Integers and Reals are no longer quoted.

    * Added $csv->{types}.

1998-05-12  Jochen Wiedmann  <joe@ispsoft.de> (0.11)

    * Added $csv->{eol}

    * Added $csv->{quote_char} = undef

1998-05-05  Jochen Wiedmann  <joe@ispsoft.de> (0.10)

    * Moved encoding and decoding to XS; added binary mode; added
      print () and getline () methods.

1998-06-05  Alan Citterman  <alan@mfgrtl.com>

    * Initial version