-
Broaden bytes dependency to include 1.1.
-
Broaden httparse dependency to include 1.4.
-
Drop the currently unnecessary (but transitively included, anyway) direct tempfile dependency.
-
Add clippy config for primordial MSRV build.rs and for current MSRV. Fix some cosmetic clippy lints.
-
Upgrade to body-image 2.2 (MSRV 1.39.0)
-
Upgrade to bytes 1.0 and lift constraint on http dependency (MSRV 1.39.0).
-
Upgrade to olio 1.4 (MSRV 1.39.0).
-
Constrain http to <0.2.3 to avoid bytes duplicates.
-
Misc documentation improvements.
-
Change
Compress
implementations defaultcheck_identity
to true (was previously introduced, in 1.1.0, with default false for interoperability). -
Upgrade to body-image 2.0.0 including interface change (e.g.
push
). -
Upgrade to http 0.2.0 and bytes 0.5.2 (MSRV 1.39.0)
-
Upgrade to olio 1.3.0 (MSRV 1.34.0)
-
Upgrade to tao-log 1.0.0
-
Update to flate2 [1.0.4, 1.1) dropping constraint introduced in 1.3.0.
-
Add brotli-decompressor >= 2.1.2 min transitive upgrade
-
With MSRV update, drop
TryFrom
workarounds (MSRV 1.34.0) -
Minimum supported rust version is now 1.39.0 (per above upgrades).
-
Fix build.rs for
rustc --version
not including git metadata. -
Upgrade to body-image 1.3.0, olio 1.2.0, tempfile 3.1.0 and transitively to rand 0.7.0.
-
Minimum supported rust version is now 1.32.0 (to match above upgrades).
-
Narrow flate2 dependency to < 1.0.10, to avoid MSRV breakage. flate2 1.0.10 and 1.0.11 releases have MSRV 1.34.0 (rust-lang/flate2-rs#207)
-
Make existing
barc::TryFrom
andTryInto
compatible with thestd::convert
equivalents, as stabilized in rust 1.34.0. Furthermore, when built with rust 1.34.0+, uses thestd::convert
equivalent traits, re-exported asbarc::TryFrom
andTryInto
. These re-exports are (silently) deprecated. Usestd::convert
traits directly if your MSRV ≥ 1.34.0. This is graded a MINOR-version compatibly hazard because existing trait import paths and conversions should continue to work. -
Convert enum
barc::EncodeWrapper
to a struct with private internals, making the implementation dependencies flate2 and (optional) brotli completely private. Add public constructor functions (EncodeWrapper::plain
,gzip
,brotli
) to preserve the ability to implementCompressStrategy
externally. The publicEncodeWrapper
struct change is graded a MINOR-version compatibility hazard, as implementingCompressStrategy
externally should be rare with older releases. -
Narrow various dependencies to avoid future MINOR versions, for reliability. We may subsequently make PATCH releases which broaden private or public dependencies to include new MINOR releases found compatible. Rationale: Cargo fails to consider MSRV for dependency resolution (rust-lang/rfcs#2495), and MSRV bumps are common in MINOR releases, including as planned here.
-
Increase minimum brotli version to 3.1.0, based on minimal version testing with latest tests.
-
Add build.rs script to fail fast on an attempt to compile with a rustc below MSRV, which remains 1.31.0.
-
GzipCompressStrategy
andBrotliCompressStrategy
(brotli feature) have learned to only compress if a record has a minimum length of compressible header and body bytes, after discounting any non-compressible body bytes. This is determined via several newCompressStrategy
trait methods and implementation:min_len
,check_identity
, andnon_compressible_coef
getters; andis_compressible
, using content-type and meta -decoded headers. -
CompressStrategy::wrap_encoder
only needs aMetaRecorded
reference for the duration of that call. Make the lifetime more lenient. -
Make the read and write implementation generic over
Read
andWrite
types, instead of usingdyn Trait
objects, throughout. These changes are mostly internal, but include public utility methodswrite_headers
andwrite_body
. Reference types are used to maintain compatibility. -
Error reform: remove failure crate dependency:
- Drop
Fail
implementation ofBarcError
and addimpl StdError for BarcError
(akastd::error::Error
). BarcError::InvalidHeader
variant's use offailure::Error
(for private encapsulation) replaced with compatibleBox<StdError + Send + Sync + 'static>
, type-aliased asFlaw
.- Add
BarcError::IntoDialog
variant wrapper forDialogConvertError
(also now aStdError
) for convenience in a mixed error context.
Since
failure::Fail
offers a blanket implementation forStdError
, this is graded a MINOR-version compatibility hazard. Testing of unmodified dependent crates/projects supports this conclusion. - Drop
-
Upgrade to body-image 1.1.0, for use of
BodyReader
as directRead
implementation. -
Broaden (optional default feature) brotli dependency to >=2.2.1, <4.
-
Add logger implementation as dev-dependency for tests. Improve log and test output via tao-log crate macros.
- Upgrade log dep to reflect 2018 minimal versions.
-
Update to the rust 2018 edition, including the changes to pass all 2018 idiom lints (anchored paths, anonymous/elided lifetimes). This start of the 1.x release series has a minimum supported rust version of 1.31.0, and is thus potentially less stable than prior 0.x releases, which will continue to be maintained as needed.
-
Separate into its own barc crate (see prior history below). This includes moving the placeholder
TryFrom
andTryInto
traits, only used here. -
As of flate2 1.0.6,
GzEncoder
now exceeds 200 bytes is size, soBox
it inEncodeWrapper
for better stack usage and to avoid a clippy lint. -
Remove
barc::META_*
header constants that were deprecated in 0.5.0.
Previously barc was released as a module of the body-image crate. Relevent release history is extracted below:
-
Provide placeholder
body_image::TryFrom
and blanketTryInto
(still awaiting std stabilization), relocatebarc::Record::try_from(Dialog)
to the trait, and add newTryFrom<barc::Record> for Dialog
for the opposite conversion. The relocation is a minor breaking change in that current users need to either importbody_image::TryFrom
or start usingtry_into
. The newbarc::Record
→Dialog
conversion enables using BARC files as test fixtures forDialog
processing code. -
Deprecate the
barc::META_*
header constants, replacing withbarc::hname_*
helper functions which internally useHeaderName::from_static
. This is more ergonomic and found to be somewhat faster. The http crate version minimum is now 0.1.6. -
Use
dyn Trait
syntax throughout. Minimum supported rust version is now 1.27.2.
- Remove dependency on the failure_derive crate, and disable the derive
feature of the failure crate dependency, by removing all existing use of
auto-derive
Fail
.BarcError
now has manual implementations ofDisplay
andFail
.
-
Upgrade (optional default) brotli to >=2.2.1, <3.
-
Minimal rustc version upgraded to (and CI tested at) 1.26.2 for use of
impl Trait
feature.
- Memory mapping is now an entirely optional, explicitly called, default
feature:
- The
BarcReader
previously mapped large (perTunables::max_body_ram
), uncompressed bodies. Now it usesReadSlice
for concurrent, direct positioned read access in this case.
- The
- Initial release