= Version history

== 1.0.3 (2022-03-28)
* *Fix* a number of memory leaks by freeing allocated liblzma data structures
  (Issue Quintus#20 reported by xTRiM, PR win93#7 by Alex Gittemeier)

== 1.0.2 (2021-11-28)
* *Fix* a deprecation warning and some other gemspec concerns
  (Issue win93#5, PR win93#6 by Alex Gittemeier)

== 1.0.1 (2021-11-13)
* *Fix* a buffer overflow error in XZ::Stream (PR Quintus#17 by genail)
* *Fix* an issue with transcode_options that was introduced by Ruby 3
  (PR win93#1 by Alex Gittemeier)
* Update project README, gemspec, and other metadata to reflect a change in
  maintainership. All prior releases were released by Marvin Gülker.

== 1.0.0 (2018-05-20)

* *BreakingChange* The XZ module's methods now take any parameters
  beyond the IO object as real Ruby keyword arguments rather than
  a long argument list.
* *BreakingChange* XZ.decompress_stream now honours Ruby's
  external and internal encoding concept instead of just
  returning BINARY-tagged strings.
* *BreakingChange* Remove deprecated API on stream reader/writer
  class and instead sync the API with Ruby's zlib library
  (Ticket Quintus#12 by Quintus).
* *BreakingChange* StreamWriter.new and StreamReader.new do not accept
  a block anymore. This is part of syncing with Ruby's zlib API.
* *BreakingChange* StreamReader.open and StreamWriter.open always
  return the new instance, even if a block is given to the method
  (previous behaviour was to return the return value of the block).
  This is part of the syncing with Ruby's zlib API.
* *BreakingChange* StreamReader.new and StreamWriter.new as well as
  the ::open variants take additional arguments as real Ruby keyword
  arguments now instead of a long parameter list plus options hash.
  This is different from Ruby's own zlib API as that one takes both
  a long parameter list and a hash of additional options. ruby-xz
  is meant to follow zlib's semantics mostly, but not as a drop-in
  replacement, so this divergence from zlib's API is okay (also
  given that it isn't possible to replicate all possible options
  1:1 anyway, since liblzma simply accepts different options as
  libz). If you've never used these methods' optional arguments,
  you should be fine.
* *BreakingChange* Stream#close now returns nil instead of the
  number of bytes written. This syncs Stream#close with Ruby's
  own IO#close, which also returns nil.
* *BreakingChange* Remove Stream#pos=, Stream#seek, Stream#stat. These
  methods irritated the minitar gem, which doesn't expect them to
  raise NotImplementedError, but directly to be missing if the object
  does not support seeking.
* *BreakingChange* StreamReader and StreamWriter now honour Ruby's
  encoding system instead of returning only BINARY-tagged strings.
* *Dependency* Remove dependency on ffi. ruby-xz now uses fiddle from
  the stdlib instead.
* *Dependency* Remove dependency on io-like. ruby-xz now implements
  all the IO mechanics itself. (Ticket Quintus#10 by Quintus)
* *Dependency* Bump required Ruby version to 2.3.0.
* *Fix* libzlma.dylib not being found on OS X (Ticket Quintus#15 by
  s0nspark).

== 0.2.3 (2015-12-29)

* *Fix* documentation of XZ module (a :nodoc: was causing havoc
  in the XZ module so it appeared to have no methods).
* No other changes this release.

== 0.2.2 (2015-12-27)

* *Add* XZ.disable_deprecation_notices
* *Deprecate* use of XZ::StreamReader.open with an IO argument
* *Deprecate* use of XZ::StreamReader.new with a filename argument
* *Deprecate* use of XZ::StreamWriter.open with an IO argument
* *Deprecate* use of XZ::StreamWriter.new with a filename argument
* *Deprecate* nonautomatic IO close in XZ::StreamReader#close
* *Deprecate* nonautomatic IO close in XZ::StreamWriter#close
* *Fix* incompatibility with Resolv.getaddress() in Ruby 2.2 (Ticket Quintus#13
  by Ken Simon)
* Goal of these deprecations is to sync the API with Ruby’s own
  Zlib::GzipWriter and Zlib::GzipReader mostly.
* Add required versions to gemspec.
* Comment format cleanup, results in better docs.
* Internal code cleanup
* Add more tests.

== 0.2.1 (2014-02-08)

* Build the gem properly on Ruby 2.0+ (PR Quintus#8 by Nana Sakisaka (saki7))
* Release the GIL when interfacing with liblzma (PR Quintus#7 by Lars Christensen (larsch))

== 0.2.0 (2013-06-23)

* Fix Quintus#6 (errors on JRuby) by Ben Nagy
* <b>Remove 1.8 compatibility</b>

== 0.1.0 (2013-02-17)

* <b>Add XZ::StreamReader and XZ::StreamWriter for io-like behaviour.</b>
* New dependency on the +io-like+ gem.
* <b>Add Ruby 1.8 compatibility.</b> Thanks to Christoph Plank.
* We now have proper unit tests.
