0.49 2018-08-02
-make 0.48_01 official

0.48_01 2019-07-31
-bugfix: calling query_keyset with a zero-length key could result in a
 malformed query string
-bugfix: calling set_param with an array containing a zero-length string could
 result in a malformed query string

0.48 2019-07-09
-make 0.47_01 official

0.47_01 2019-07-06
-bugfix: fix dynamically set $VERSION in URI::Fast::IRI

0.47 2019-07-05
-bugfix: escape_tree and unescape_tree die when called with non-reference
-workaround: an older release had a versioned URI::Fast::IRI, requiring that it
 remains versioned to keep the cpan indexer happy; this change works around
 that by linking it to $URI::Fast::VERSION.
-bugfix: path([]) caused infinite loop, because why would av_top_index return 0
 for an empty array anyway?

0.46 2019-01-03
-feature: new routines escape_tree() and unescape_tree() added

0.45 2018-12-10
-feature: documented and exposed lower level method split_path, added
 split_path_compat which replicates the behavior of URI->path_segments as a

0.44 2018-12-05
-bugfix: removed hard-coded references to class name which were preventing expected
 behavior when subclassing URI::Fast

0.43 2018-11-27
-new feature: append() method serially constructs a URI from fragments of path,
 query, and fragment (credit: merlyn)

0.42 2018-11-21
-bugfix: uri_split() forces stringification of input
-behavior: URI::Fast::Test routines now automatically stringify and parse their parameters

0.41 2018-08-15
-bugfix: small memory leak in to_string when there is no authority section present
-bugfix: to_string did not properly encode authority section in some cases
-new method: absolute($base)
-new method: normalize (like URI->canonical)
-new method: relative($base)
-optimization: aliases moved to XS
-optimization: overload of to_string moved to XS
-optimization: shorthand constructors (uri, iri) moved to XS
-optimization: simple unified accessors moved to XS

0.40 2018-08-08
-bugfix: gracefully handle incorrectly encoded query strings with unencoded '=' not following a key
-bugfix: param and query incorrectly unset single parameters when passed a falsey value (credit: vroom)
-documentation: clarify handling of '+' in decode
-new method: clone() as an alias for uri() (credit: merlyn)

0.39 2018-07-22
-behavior: no size limit on member string sizes
-bugfix: encode and decode no longer emit a warning when passed undef
-bugfix: get_auth was not decoding utf8 as asserted by the docs
-bugfix: get_query was not decoding utf8 as asserted by the docs
-bugfix: some setters emit a warning and do not clear member when passed undef
-bugfix: some setters were not properly handling magic
-new methods: raw_$field to get the raw, encoded field value

0.38 2018-07-09
-behavior: uri_t->path increased from 1024 bytes to 2048
-behavior: setters now croak when an input string is truncated to fit within the uri_t struct
-bugfix: authority section ignored when no scheme present during construction (credit: martin)
-optimization: fixed slowness in encode/decode

0.37 2018-07-05
-cpan indexer issue with URI::Fast::IRI addressed

0.36 2018-07-05
-behavior: query_hash now accepts hash ref as a parameter
-bugfix: correctly count and skip utf8 bytes when encoding an IRI
-bugfix: drop invalid whitespace skipping scheme (credit: aeruder)
-bugfix: drop logic incompatible with bsd make
-bugfix: encode non-utf8 input strings in new() and uri_split()
-bugfix: increase some member sizes to allow room for utf8 sequences
-bugfix: path correctly handles forward slashes in segments when set with array
-bugfix: set utf8 flag in compound iri accessors
-optimization: use memcpy instead of strncpy in some cases
-optimization: xs setters return void

0.35 2018-06-28
-behavior: all query scanning functions now treat '&' and ';' as valid separators
-behavior: explicitly specifying a separator in a query setter replaces existing separators in the query
-behavior: skip whitespace surrounding parsed uris
-bugfix: correctly parse ipv6 addresses
-bugfix: possible buffer overflow in uri_scan_auth
-bugfix: set_query, set_fragment, set_path unnecessarily encode permitted characters (credit: Dave Hubbard)
-bugfix: when stringifying, use ':' instead of '://' when no authority section present
-bugfix: when stringifying, path is always separated from authority by '/'
-documention: stringification with overloaded ""
-new method: compare($other) with overloaded eq
-new method: query_keyset({...})
-new method: url_encode/url_decode aliased to encode/decode (credit: bluefeet)
-new module: URI::Fast::Test to make unit testing with Test2 easier (credit: merlyn)
-optimization: faster and more consistent query scanning
-optimization: reduced memset usage (credit: aeruder)

0.34 2018-06-13
-bugfix: set_param could clobber existing query parameters (credit: aeruder)

0.33 2018-06-13
-new method add_param() appends query parameters without clobbering existing
 query keys (credit: sara)

0.32 2018-06-12
-alias as_string -> to_string (credit: merlyn)

0.31 2018-06-12
-@EXPORT_OK now includes encode() and decode() (credit: merlyn)

0.30 2018-06-12
-incompatible change: dropped default scheme; when no scheme is present in
 the source string, the stringified URI is excluded
-dropped prototype from URI::Fast::uri()

0.29 2018-06-07
-optimization: uri() now sets default scheme to "file" in XS
-docs updated to clarify the unclear (credit: val, merlyn)
-incompatible change: param() croaks when called in scalar context but
 encounters multiple parameter values (credit: merlyn)

0.28 2018-05-30
-bugfix: segfault when c function uri_decode called with len=0 and an input
 string with length > 0

0.27 2018-05-26
-declare POD encoding

0.26 2018-05-25
-switch from Dist::Zilla and Inline::C to vanilla XS and ExtUtils::MakeMaker to
 simplify building binary distributions
-support for interpreter threads
-remove separate URI::Fast::IRI module as Dist::Zilla's POD generator is no
 longer used

0.25 (failed)
-failed due to version conflict in URI::Fast::IRI, which has no version

0.24 2018-05-23
-bugfix: move URI::Fast::IRI to its own file to unconfuse Dist::Zilla when generating docs

0.23 2018-04-26
-support for IRIs via new constructor, iri()
-documented uri_split()

0.22 2018-03-27
-bugfix: add 'name' and 'version' parameters to `use Inline` statment and call
 to `Inline->init` to avoid runtime lookup errors

0.21 2018-03-27
-compromise: attempt to decode utf8 from percent-encoded sequences, but
 fail gracefully

0.20 2018-03-27
-don't croak on invalid utf8; uri may include arbitrary encoded bytes

0.19 2018-03-27
-added minimal validation of decoded utf8 (croaks on invalid sequences)

0.18 2018-03-21
-support for tied scalar inputs in XS code

0.17 2018-03-19
-bugfix: in which sysread gives up and puts the code in __DATA__ after all

0.16 2018-03-19
-bugfix: mixed separators in generated source file path on some mswin32 systems

0.15 2018-03-16
-bugfix: split_path generates incorrect segments on //paths

0.14 2018-03-16
-bugfix: dynamically find path to uri_fast.c
-bugfix: move uri_fast.c out of lib root

0.13 2018-03-16
-support for specifying delimiter when modifying query parameters
-bugfix: inlined function visibility lost in generated xs scope

0.12 2018-03-14
-bugfix: fix compiler error on MSWin32 (thanks appveyor!)

0.11 2018-03-13
-bugfix: length was being ignored in uri_scan_auth

0.10 2018-03-13
-exposed clear_* methods
-get_auth replaced by function joining sub-members
-more thorough testing of parsing edge cases
-more thorough testing of memory leaks
-bugfix: missing bounds checks in parser and setters
-bugfix: segfault when query key not followed by '='
-bugfix: non-digits no longer accepted when setting/parsing port number
-bugfix: increased member size for uri_t
-added MetaProvides::Package Dist::Zilla plugin for experimental Kwalitee

0.09 2018-03-08
-constructor is more efficient
-set_param does less copying, uses less memory
-Bugfix: set_param incorrctly placed (or did not place) ampersands in some edge cases
-Kwalitee fixes
-Fix missing entries in v0.08's change log (oops)

0.08 2018-03-07
-Fix test dependency version causing cpan tester failures
-Adopted URI::Encode::XS's encoding/decoding strategy
-Reduced heap usage

0.07 2018-03-06
-UTF-8 support
-New methods: query_keys, query_hash, encode, decode
-Many methods rewritten in C/XS to make up for the added cost of UTF-8 support
-Switch tests from using Test2::Bundle::Extended to Test2::V0
-Bugfix: fix some missing test dependencies on restricted smoker setups
-Bugfix: some unit tests were using the uri being tested as the test name,
 triggering errors when the uri included a fragment (hash and newlines are
 invalid in test names)

0.06 2018-02-27
-New ultra-fast parser and struct-based object written in C

0.05 2018-02-27
-Update required version of Test2::Suite to 0.000049 to include U in

0.04 2018-02-26
-Faster uri_split implemented with Inline::C
-Faster auth parsing implemented with Inline::C
-Faster auth assembly implemented with Inline::C
-Faster query param access by doing a regex for each access rather than parsing
 and storing (who knew?)
-This module no longer has common::sense
-Bugfix: auth params now correctly url-encoded/decoded
-See also that a SEE ALSO section was added to POD

0.03 2018-02-20
-10% speedup in stringification by not creating variables
-Bugfix: setting auth or query did not clear sub-attributes
-Bugfix: host was being appended regardless of presence

0.02 2018-02-20
-Bump minimum URI::Encode::XS version to 0.07 (thanks eserte!)

0.01 2018-02-19
-Initial release