0.55 2021-09-13
-feature: raw_$field now acts as a setter when a new value is provided
0.54 2021-09-03
-feature: added fragment() as alias of frag() (thanks markov2)
-bugfix: fixes several utf8 encoding bugs in html_url, normalize (thanks markov2)
0.53 2021-08-31
-bugfix: html_url w/ empty relative url crashes w/ floating point error (thanks markov2)
-bugfix: html_url w/ fragment appends null char to uri (thanks markov2)
-bugfix: html_url segfaults when both rel and base start with "//" (thanks markov2)
-bugfix: normalized URIs with an authority section and an empty path must have a trailing slash (thanks markov2)
0.52 2021-08-20
-feature: html_url now implemented in XS
-feature: html_url has OO ctor equivalent, new_html_url
-feature: short-hand ctor equivalent to new_abs, abs_uri
0.51 2021-08-12
-feature: new constructor, new_abs($rel, $base)
-feature: abs() aliased to absolute()
-feature: rel() aliased to relative()
-feature: canonical() aliased to normalize() (this was true in prior versions, but undocumented)
-feature: normalize() now decodes unreserved chars and normalizes + to %20 (RFC 3986, 6.2.2.2)
-feature: TO_JSON() added as alias of to_string()
-miscellaneous minor efficiency/speed improvements
0.50 2021-08-03
-behavior: correct uri_split and uri to treat leading double-slash in input
string as the beginning of the authority section, as URI and URI::Split do,
instead of as the beginning of the path with ad leading empty segment
-feature: new subroutine html_url, which scrubs whitespace permitted by URLs
read from HTML documents (tab, newline, carriage return) and replaces
backslashes with forward slashes (also allowed in HTML, I'm afraid)
0.49 2019-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
argument
-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
getter
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
Test2::Bundle::Extended
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