breaking change Fix parsing & printing of IPv6 addresses in the host part of an uri
If we follow the RFC3986 correctly, IPv6 must be surrounded by '[' and ']'. Old versions of ocaml-uri escaped these characters. The new version interprets these characters to recognize an IPv6 address.
Users should take note of this change in behaviour, which fixes a number of bugs in HTTP requests. (@anmonteiro, review by several maintainers, #169)
ounit2 (@Alessandro-Barbieri, #161)Uri.Absolute_http, an RFC9110-compliance specialization of a Uri.t. (#164 #162 @torinnd).uri-bench package for the benchmarking dependencies in this repository (#166 @tmcgilchrist).uri-re is deprecated, it is a legacy implementation that is now outdated. uri should be used instead (@dinosaure, #152).angstrom (@anmonteiro, review @avsm & @dinosaure, #142).angstrom parser and legacy parser (with re.posix, #142)Generic) (@madroach, review @dinosaure, #141)Uri_sexp.equal (#139 @vbmithr)uri.sexp ocamlfind package and have uri and uri-sexp for both the ocamlfind and opam packages. Code that was formerly using uri.sexp in its build will now need to move to uri-sexp instead (#134 @Julow @dinosaure).Uri_re module. All code should be using the Uri.Re module instead (@avsm @Julow).uri.top library, since we install the toplevel printer automatically since 2.2.0 via an attribute.Uri.pp as an alias to Uri.pp_hum, as the pp form is more commonly used. (#133 @avsm)[@@ocaml.toplevel_printer] attribute to Uri.pp so that it will be automatically loaded on modern Utop versions. (#133 @avsm)jbuild file to dune (#133 @avsm)compare function in Uri_sexp so that it will work with deriving compare,sexp.uri.sexp for the sexpression converters, so that the base Uri package is more dependency free (based on #121 by @Julow). To convert old code, simply use Uri_sexp.t instead of Uri.t in a record type for which you are using [@@deriving sexp]. This is a type alias to Uri.t but also has the right sexp-conversion functions in scope.Uri_re in favour of Uri.Re. The unwrapped Uri_re will be removed in a future release of this library.core_bench (#125 via @drup)String.lowercase)Uri_services is now in a separate subdirectory. This means that packages that implicitly depended on the module without including the ocamlfind uri.services package may now fail. Just adding the ocamlfind dependency will fix it, and is backwards compatible with older Uri releases.ppx_sexp (#94)ppx_deriving for improving future compatibility with Jane Street upstream (#98).type_conv deps and camlp4 transitive dependencyppx_sexp_conv dependencywith_password None when no userinfo present (#78 from Hezekiah M. Carty)Uri_services now includes service aliases (e.g. www, www-http, http)Uri_services now includes chargen and gitUri.canonicalize for scheme-specific normalization (#70)Uri.verbatim_query to extract literal query string (#57)Uri.equalUri.user and Uri.password accessors for subcomponents of userinfo (#62)Uri.with_password functional setter for password subcomponent of userinfoUri.with_port no longer sets the host fragment to a blank value if both the host and port are empty (#63).Uri.compare imposes an ordering by host, scheme, port, userinfo, path, query, and finally fragment. (#55).OrderedType and can be used directly in Maps and Sets (#55).with_userinfo against hostless URI representation bugwith_port against hostless URI representation bugwith_path with relative path against hosted URI representation bug (#51)make without host but with userinfo or port representation bugmake with host, userinfo, or port and relative path representation bugUri_services module via new functions that list TCP, UDP and an association list of both.Uri_IP module, superseded by the ipaddr package (#30).camlp4 for link-time, only compile time (#39).with_scheme and with_userinfo functional setters (#40).Re_str.path and path_and_query encoding bugs (#35).encoding_of_query.with sexp for the Uri types.Uri.of_string.mldylib to build the cmxs Natdynlink plugin properly (#29).Install_printer to Uri_top to prevent conflict with other libraries with similar name (#24).Uri.get_query_param which selects a single value for a query key.Uri.get_query_param' which returns a list of values associated with a query key.Uri module to have a header.Uri.t that converts it to a string instead of just displaying an <abstract> type.with_host, with_port, with_fragment and with_host, to modify the respective fields of an input URI.Uri.remove_query_param function to remove keys from query sets.+ in URLs to be more compatible with form encoding.string->string instead of a string list of values, for convenience.foo-bar.com).Uri_services module.port_of_uri to detect port overrides in a URI before doing a lookup.Uri_services_full library optional, as it takes a loooong time to compile. It will return as a UNIX binding to getservent(2) also.Uri_services to lookup IANA the common well-known ports and servicesUri_services_full with a complete database of the IANA database.Uri.path_and_query to retrieve a path/query combination string.Uri.host_with_default to retrieve a hostname string.