The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Gedcom.pm history

Release 1.22 - 15th November 2019
 - Clarify licence in MYMETA files (Tina Müller) (github 25)

Release 1.21 - 14th November 2019
 - Add relationship method between two individuals (Nigel Horne) (github 12)
 - Fix "flush" output (Dabrien 'Dabe' Murphy) (github 24)
 - Modernise infrastructure
 - Improve documentation

Release 1.20 - 17th September 2016
 - Tidy up Makefile (Alberto Simões) (github 17)
 - Correct WebServices version (pauloscustodio) (github 9)
 - Fix AGE_AT_EVENT in 5.5.1 grammar (pauloscustodio) (github 8)
 - Work around Date::Manip API change (Tudor Constantin) (github 7)
 - Don't warn on using user-defined tags (Nigel Horne) (github 16)
 - Handle a star at the end of a value (Erin Spiceland) (github 6)
 - Validation error when there should be no value (Nigel Horne) (github 13)

Release 1.19 - 18th August 2013
 - Allow CONC and CONT on PAGE (Ken Williams) (github 2)
 - Make default grammar more lax but also include strict grammar file
 - Make Text::Soundex a prerequisite

Release 1.18 - 24th January 2013
 - Get dmake on Windows running again

Release 1.17 - 29th December 2012
 - Lots of clean-ups (Brian Cassidy)
 - POD fixes (Brian Cassidy) (rt 31321)
 - Add half-sibling/-brothers/-sisters (Michael H. Ionescu) (github 1)
 - Make sex() tolerant of missing information (Michael H. Ionescu) (github 1)
 - Select correct grammar when adding items (rt 82196)
 - Some doc fixes (rt 76519)
 - Change and document method for specifying a top-level xref
 - Always use correct grammar for notes (based on code from Jonathan Kamens)
   (rt 45391)
 - Clean up Makefile.PL (rt 6681)
 - Handle UTF-8 encoded files and BOMs (rt 79507)
 - Add grammar for version 5.5.1

Release 1.16 - 24th April 2009
 - Allow family to be undef in children_statement in lines2perl
 - Add basic web services

Release 1.15 - 3rd May 2005
 - Update mailing list information

Release 1.14 - 5th April 2004
 - Fix the test routine.  Oops
 - Don't lose the first line of level zero notes

Release 1.13 - 6th December 2003
 - Add get_ functions to Gedcom.pm, and some tests for them
 - Gedcom::Individual::surname returns "" when no surname is found
 - Spell Gedcom::Lifelines::getstrmsg correctly
 - Use maniread() to read manifest
 - Add Gedcom::Comparison and gedcom_compare (unfinished)
 - Add gedcom-5.5.aft.grammar for Ancestry Family Tree (Brad Rubenstein)

Release 1.12 - 2nd February 2003
 - Ignore CRLF differences in tests
 - Tighten up and improve XML output
 - Add some missing functions to lines2perl (John S. Quarterman)

Release 1.11 - 7th April 2002
 - Improvements to the algorithm in Gedcom::Grammar::item()

Release 1.10 - 5th March 2002
 - Correct write_xml() documentation
 - Make Gedcom::Grammar::item() return a list of valid items, not just one
 - Pick the correct item from the list returned by Gedcom::Grammar::item()
 - Make Gedcom::Individual::given_names() strip and normalise whitespace
 - Don't assume another file won't be read while we are reading files by
   providing an argument to tell()
 - Fix Gedcom::Lifelines::parents()
 - Tidy Gedcom::get_individual() and return all matches from all
   categories in list context
 - Let Gedcom::Item::write() output 0 values correctly
 - Let various functions in Gedcom::Record deal with 0 values correctly
 - Add a pointer flag to Gedcom::Item along with the corresponding function
 - Gedcom::new without a gedcom_file argument will create an empty
   Gedcom object with mandatory fields filled in
 - Add methods to add, delete and change records
 - Add functions to:
     Gedcom.pm:
       add_record()
       add_header()
       add_submitter()
       add_individual()
       add_family()
       add_note()
       add_repository()
       add_source()
       add_trailer()
     Item.pm:
       parent()
       delete()
       pointer()
     Record.pm:
       add_record()
       add()
       set()
       get_and_create()
     Family.pm:
       add_husband()
       add_wife()
       add_child()
 - Add t/ged_create.t
 - Change Gedcom::Record::resolve() so that unresolved xrefs do not return
   undef in list context
 - Establish the convention that SUBM xrefs start with SUBM to avoid
   clashes with SOUR
 - Some reorganisation of the AUTOLOAD functions
 - Add baptism and endowment information as default to Gedcom::CGI::indi()
 - Ensure a grammar knows its version number
 - Always add headers and trailers to a Gedcom file if necessary
 - Change get_individual to return all matching individuals rather than
   just those which match in the same category
 - A number of fixes to Gedcom::Lifelines.pm, some of which are based on
   work by Tim Lanfear
 - Update copyright
 - A little work on the documentation
 - Some general tidying up
 - A couple of workarounds for bleadperl bugs that are fixed now

Release 1.09 - 12th February 2001
 - Improve XML output especially with respect to notes
 - Quieten some spurious warnings
 - Fix some bugs reported by users that I don't recall at the moment
 - Add index file to speed up read_only option
 - Read files with binmode - keeps Windows happy
 - Correct line numbers of errors
 - Use File::Spec so tests pass under Windows
 - Allow for creation of ppms
 - Add Gedcom::CGI and cgi-bin/gedcom.cgi

Release 1.08 - 8th May 2000
 - Allow xrefs to match .+ instead of \w+\d+
 - Make XML output valid
 - Allow extra sub-items of a grammar structure

Release 1.07 - 14th March 2000
 - Add functions to:
     Item.pm:
       item()
       full_value()
 - Get parse_grammar working again
 - Add a test for parse_grammar

Release 1.06 - 13th February 2000
 - Add functions to:
     Item.pm:
       get_item()
     Record.pm:
       record()
       get_record()
       get_value()
       tag_record()
       tag_value()
       delete_record()
 - Deprecate use of Item::get_child()      - use Item::get_item()    instead
 - Deprecate use of Item::get_children()   - use Item::get_item()    instead
 - Deprecate use of Record::child_value()  - use Record::tag_value() instead
 - Deprecate use of Record::child_values() - use Record::tag_value() instead
 - Complete Lifelines::roman() using Roman.pm
 - Add check for Roman.pm to Makefile.PL
 - Add read_only option for lazy parsing
 - Rename ged.vim to gedcom.vim and package it up for inclusion with Vim
 - Restructure and abstract away some of the basic tests
 - Add tests:
     t/Engine.pm
     t/Basic.pm
     t/read_only.t
     t/resolve.t
     t/resolve_read_only.t
     t/birthdates.t
     t/Lines.pm
     t/lines.t
     t/lines/lines.ll
     t/bias.t
     t/lines/bias.ll
 - Use "item" instaed of "child" to represent Gedcom hierarchies
 - Raname Gedcom::Item::add_children()      to Gedcom::Item::add_items()
          Gedcom::Item::skip_children()        Gedcom::Item::skip_items()
          Gedcom::Item::delete_child()         Gedcom::Item::delete_item()
          Gedcom::Item::delete_children()      Gedcom::Item::delete_items()
          Gedcom::Item::next_record()          Gedcom::Item::next_item()
          Gedcom::Grammar::child()             Gedcom::Grammar::item()
          Gedcom::Grammar::children()          Gedcom::Grammar::items()
          Gedcom::Grammar::valid_children()    Gedcom::Grammar::valid_items()
 - Allow accessor functions in Gedcom::Item to set data too
 - Bless appropriate objects into Gedcom::Event
 - Add an experimental write_xml()
 - Add tutorial section to documentation

Release 1.05 - 20th July 1999
 - Add LifeLines.pm
 - Add Event.pm
 - Add functions to:
     Gedcom.pm:
       soundex()
     Item.pm:
       level()
       xref()
       tag()
       value()
       min()
       max()
       gedcom()
       file()
       line()
     Individual.pm:
       name()
       cased_name()
       surname()
       given_names()
       soundex()
       sex()
       older_siblings()
       younger_siblings()
     Family.pm:
       parents()
       number_of_children()
 - Change most functions in Individual and Family to check wantarray
 - Have get_individual check xrefs and soundex
 - Fix renumber error - xrefs are now calculated and then changed
 - Change basic.t to reflect renumber fix
 - Move normalise_dates from Item.pm to Record.pm
 - Add AUTOLOAD function to Record.pm to provide access based on tag
   name or description
 - Change lines2perl to use references to arrays and hashes
 - Other major changes to lines2perl to increase functionality
 - Change require 5.004 to require 5.005
 - Add check for Text/Soundex.pm to Makefile.PL

Release 1.04 - 29th May 1999
 - Improve default sort subroutine
 - Include mailing list information
 - Add lines2perl
 - Improve Makefile.PL environment tests
 - Work around IO::Handle::input_line_number bug

Release 1.03 - 13th May 1999
 - Add Grammar::child() and Grammar::structure()
 - Make valid_children more efficient and include min and max information
 - Add validate_syntax() to Gedcom::Record.pm
 - Rename Record::validate() to Record::validate_semantics()
 - Add min(), max() and children() to Gedcom::Grammar.pm
 - Add GEDC and SUBM to royal.ged to accommodate validate_syntax()
 - Fix bug which prevented writing of @s around xref values

Release 1.02 - 5th May 1999
 - Add RIN numbers to royal.ged
 - Move test.pl to t/basic.t
 - Make basic.t "use Test"
 - Add many tests to basic.t
 - Add pre-parsed grammar files
 - Add grammar target to Makefile.PL
 - Add functions to Family.pm and change Individual.pm to use them
 - Improve error messages reading top level children
 - Change the profile of renumber()
 - Internally, remove leading and trailing @ in xrefs
 - Change order of renumber() to match documentation
 - Get renumber() to call collect_xrefs()
 - Add resolve_xref() to Gedcom.pm
 - Add next_xref() to Gedcom.pm
 - Add unresolve_xrefs() to compliment resolve_xrefs()

Release 1.01 - 27th April 1999
 - Add some documentation
 - Add Individual.pm and Family.pm
 - Remove get_records() - use get_children() instead
 - Change get_children() and children() to return a list, rather than a
   reference to one
 - Add resolve_xref() and resolve()
 - Change the profile of collect_xrefs(), resolve_xrefs() and validate()
 - Add get_individual()
 - Remove redundant Gedcom::Item::renumber()
 - Rename child() to child_value() and children() to child_values()
 - Improve testsuite
 - Make Date::Manip.pm optional

Release 1.00 - Initial release - 8th March 1999