Changelog for PyCdlib

1.14.0 (2023-01-14)
-------------------
* Fix Python 2 compatibility
* Fix iteration over deep directories
* Relax some error checking to allow non-standards-compliant ISOs to be read
* Fix year rollover in the Australia timezone

1.13.0 (2022-06-20)
-------------------
* Fix the use of inspect for modern Python 3
* Add in pycdlib-explorer functionality for modify-in-place
* Add full support for Windows raw block devices
* Fix UDF entries for large files
* Allow some UDF errors to print a warning instead of throwing
* Search for UDF anchors in additional locations
* Fix UDF partition map parsing

1.12.0 (2021-08-10)
-------------------
* Several fixes to work with raw Windows devices
* Fix ISOs with missing Apple partition map entries
* Relax restrictions on dates hundredthsofseconds
* Fix MBR boot code sector size
* More UDF cleanups

1.11.0 (2020-10-07)
-------------------
* Add many more unit tests to get test coverage > 95%
* Preserve boot record contents when moving it
* Make sure to allocate an extent for the boot_catalog in all cases
* Fix deep directory depths with ISO level 4
* Rewrite XA handling
* Improve performance of filename checking
* Add support for the AL record

1.10.0 (2020-05-24)
-------------------
* Much improved IsoHybrid support for EFI/GTP
* Fix large, multi-extent files
* Fix support for very large ISOs
* Remove the unused and unloved pycdlib-compare tool
* Fix ISO9660 date hundredths of second

1.9.0 (2019-12-20)
------------------
* Much improved support for UDF
* Switch to read-only open by default for the open() call
* Fixes to work on big-endian machines
* APIs added:
  * file_mode
* APIs removed:
  None
* APIs deprecated:
  None

1.8.0 (2019-08-10)
------------------
* Addition of "facades" for using PyCdlib in simpler ways
* Make iso_path optional for UDF when using add_symlink
* Make iso_path optional when using rm_file()
* Make iso_path optional when using add_fp()/add_file()
* Create symlinks appropriately in pycdlib-extract-files
* Fix copy_data on macOS
* Support more of the UDF standard
* Cleanup documentation
* Allow UEFI El Torito identifier
* Add an 'auto' mode for pycdlib-extract-files
* Add an '-extract-to' option for pycdlib-extract-files
* APIs added:
  * get_iso9660_facade
  * get_joliet_facade
  * get_rock_ridge_facade
  * get_udf_facade
  * has_rockridge
  * has_joliet
  * has_udf
* APIs removed:
  None
* APIs deprecated:
  None

1.7.0 (2019-02-27)
------------------
* Better UDF compatibility
* Add a tool to extract files with pycdlib
* Greatly improve performance of pycdlib-genisoimage duplicate detection
* Add a design document to the documentation
* Better support for Rock Ridge SF records
* Add type annotation to the entire codebase
* Fix a bug with UDF directory sorting
* Many more unit tests added
* APIs added:
  * walk()
  * open_file_from_iso()
* APIs removed:
  None
* APIs deprecated:
  None

1.6.0 (2018-07-29)
------------------
* More fixes for better UDF compatibility
* Internal revamp of UDF to move some functionality into the classes
* Share more code internally
* More tests
* Better UDF support in pycdlib-explorer
* More documentation, mostly in pycdlib-explorer
* Python 3.4 compatibility
* APIs added:
  None
* APIs removed:
  None
* APIs deprecated:
  None

1.5.0 (2018-06-23)
------------------
* Many more fixes for UDF compatibility
* Support for arbitrarily many hard-links between El Torito, Joliet, ISO9660, and UDF
* Increase test coverage
* Add support for duplicate file detection in pycdlib-genisoimage
* Add support for Rock Ridge version 1.10
* Fix up unicode handling of filenames
* Minor performance optimizations
* APIs added:
  None
* APIs removed:
  None
* APIs deprecated:
  None

1.4.0 (2018-05-04)
------------------
* Lots more updates to pycdlib-genisoimage
* Support for absolute Rock Ridge symlinks
* Initial UDF support
* Documentation updates
* Performance optimizations
* Increase test coverage
* Deprecate a bunch of methods
* Support ISOs that report incorrect PVD sizes
* Initial UDF support
* APIs added:
  * get_file_from_iso()
  * get_file_from_iso_fp()
  * list_children()
  * get_record()
  * set_relocated_name()
* APIs removed:
  None
* APIs deprecated:
  * get_and_write()
  * get_and_write_fp()
  * add_joliet_directory()
  * rm_joliet_directory()
  * list_dir()
  * get_entry()

1.3.2 (2017-11-20)
------------------
* Switch to python3 for the tools
* Small man page fixes
* APIs added:
  None
* APIs removed:
  None
* APIs deprecated:
  None

1.3.1 (2017-11-20)
------------------
* Small fixes to fix up RPM packaging
* APIs added:
  None
* APIs removed:
  None
* APIs deprecated:
  None

1.3.0 (2017-11-19)
------------------
* Performance optimizations
* Support for Joliet levels 1, 2, and 3
* Very large file support (>4GB)
* Increase test coverage
* Add high-level documentation, hosted at https://clalancette.github.io/pycdlib/
* Make API documentation available
* APIs added:
  * add_joliet_directory()
  * rm_joliet_directory()
* APIs removed:
  None
* APIs deprecated:
  None

1.2.0 (2017-09-07)
------------------
* First version of pycdlib-genisoimage, a drop in replacement for genisoimage
* Fixes to allow pycdlib to deal with a lot more files
* Support for floppy and HD booting in El Torito
* Add in an exception hierarchy: PyCdlibException -> PyCdlibInvalidInput, PyCdlibInvalidISO, PyCdlibInternalError
* "Lazy" metadata updating makes this release much faster than previous ones
* Support for more types of ISOs, including those that don't fully conform to standards
* Increase test coverage
* Add lots more functionality to pycdlib-genisoimage
* Lots of optimizations all over the tree
* APIs added:
  * set_hidden()
  * clear_hidden()
  * force_consistency()
* APIs removed:
  None
* APIs deprecated:
  None

1.1.0 (2017-01-31)
------------------
* Better documentation
* Fix up isohybrid and tests
* Start of isohybrid MAC support
* Fix compatibility with Python3 < 3.5
* Cleanup RPM spec file
* Add man pages for the tools
* Add support for very long Rock Ridge filenames
* Lots of fixes to Rock Ridge symlink handling
* Increase test coverage
* APIs added:
  * None
* APIs removed:
  * add_isohybrid_fp()
* APIs deprecated:
  None

1.0.0 (2016-10-25)
------------------
* First stable release with API guarantees
* Rename library to PyCdlib to avoid name clashes
* Many fixes to El Torito handling
* Performance fixes
* Compatibility fixes for ISO9660
* Add an API to allow modifying files in place
* More testing all over the tree
* Add support for ISO9660 interchange level 4
* Add support for "hard-links" between files
* Add support for Rock Ridge 1.12
* Dual Python2/Python3 support
* APIs added:
  * open_fp()
  * get_and_write_fp()
  * write_fp()
  * add_file()
  * modify_file_in_place()
  * add_hard_link()
  * rm_hard_link()
  * add_isohybrid_fp()
  * full_path_from_dirrecord()
  * duplicate_pvd()
* APIs removed:
  * print_tree()
* APIs deprecated:
  None

0.5.0 (2016-01-27)
------------------
* First release of PyCdlib (still called PyISO at the time)
* Initial support for ISO9660, interchange levels 1, 2, and 3
* Initial support for Joliet
* Initial support for Rock Ridge
* Initial support for El Torito
* Initial support for isohybrid
* Created pyiso-compare tool for comparing two ISOs
* Created pyiso-explorer tool for examining ISOs
* APIs added:
  * new()
  * open()
  * print_tree()
  * get_and_write()
  * write()
  * add_fp()
  * add_directory()
  * rm_file()
  * rm_directory()
  * add_eltorito()
  * rm_eltorito()
  * add_symlink()
  * list_dir()
  * get_entry()
  * add_isohybrid()
  * rm_isohybrid()
  * close()
* APIs removed:
  None
* APIs deprecated:
  None
