From ddf381a245a4d3a87f491c0a2feccb92dbc5ae2f Mon Sep 17 00:00:00 2001 From: Matthew Craven Date: Tue, 6 Feb 2024 17:59:41 -0500 Subject: [PATCH 1/6] WIP: Prepare changelog for 0.12.1.0 --- Changelog.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/Changelog.md b/Changelog.md index e9f0aac7d..2b85c9933 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,51 @@ +[0.13.0.0] — circa 2026-2027 + +* __Breaking Changes__: + * [`dataTypeOf` for `StrictByteString` and `LazyByteString`...](https://github.com/haskell/bytestring/pull/614) + + +[0.12.1.0] — February 2024 + +* to describe: + * #614 + * #655 +* Bug fixes: + * [`stimes 0 sbs :: ShortByteString` now returns the empty `ShortByteString` instead of throwing an exception](https://github.com/haskell/bytestring/pull/611) + * [`stimes 0 b :: Builder` now returns the empty `Builder` instead of throwing an exception](https://github.com/haskell/bytestring/pull/611) + * [Several alignment-related bug fixes](https://github.com/haskell/bytestring/pull/587) + * [Fix a bug in `isValidUtf8`](https://github.com/haskell/bytestring/pull/621) + * [`sconcat @ShortByteString` is no longer terribly inefficient](https://github.com/haskell/bytestring/pull/650) +* Behavior changes: + * [`sconcat @Builder` is now lazy in the tail of its input](https://github.com/haskell/bytestring/pull/650) +* Deprecations: + * [`Data.ByteString.Builder.Prim.Internal.storableToF`](https://github.com/haskell/bytestring/pull/649) +* Performance improvements: + * Various raw-binary `Builder` primitives like `intHost` or `word32BE` are much less inefficient on architectures not known to support unaligned writes. ([1](https://github.com/haskell/bytestring/pull/587), [2](https://github.com/haskell/bytestring/pull/645)) + * [Hexadecimal encoding suffers one indirection fewer](https://github.com/haskell/bytestring/pull/624) + * [`Data.ByteString.Lazy.takeEnd` is somewhat faster](https://github.com/haskell/bytestring/pull/629) + * [`Data.ByteString.Lazy.dropEnd` is much faster](https://github.com/haskell/bytestring/pull/629) +* Miscellaneous: + * Various documentation improvements ([1](https://github.com/haskell/bytestring/pull/628), [2](https://github.com/haskell/bytestring/pull/609), [3](https://github.com/haskell/bytestring/pull/612), [4](https://github.com/haskell/bytestring/pull/623), [5](https://github.com/haskell/bytestring/pull/654)) + * [Eta-expand `Data.ByteString.Builder.Internal.empty`](https://github.com/haskell/bytestring/pull/616) + * This can variously help or hurt performance; it undoes the performance changes caused by [CLC proposal 132](https://github.com/haskell/core-libraries-committee/issues/132) with ghc-9.8 and restores the baseline performance seen with older GHCs. + + +[0.12.1.0]: https://github.com/haskell/bytestring/compare/0.12.0.2...0.12.1.0 + [0.12.0.2] — August 2023 * Bug fixes: @@ -36,11 +84,6 @@ * Deprecations: * `Data.ByteString.getLine`: prefer `Data.ByteString.Char8.getLine` * `Data.ByteString.hGetLine`: prefer `Data.ByteString.Char8.hGetLine` - [0.12.0.0]: https://github.com/haskell/bytestring/compare/0.11.5.0...0.12.0.0 From 3e220052bb1f98ea574f7a362b98bf96fdc01f7e Mon Sep 17 00:00:00 2001 From: Matthew Craven Date: Wed, 7 Feb 2024 12:12:17 -0500 Subject: [PATCH 2/6] fiddle with CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c622b3fda..a20384dd1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -207,7 +207,7 @@ jobs: # back to emulation jobs above. arm: needs: build - runs-on: [self-hosted, Linux, ARM64] + runs-on: [self-hosted, Linux, ARM64, maerwald] strategy: fail-fast: true matrix: From 1ce8bb6e1f2c46d14ea0b3d539df4351a8f0206b Mon Sep 17 00:00:00 2001 From: Matthew Craven Date: Thu, 15 Feb 2024 12:16:48 -0500 Subject: [PATCH 3/6] Revert "fiddle with CI" This reverts commit 3e220052bb1f98ea574f7a362b98bf96fdc01f7e. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a20384dd1..c622b3fda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -207,7 +207,7 @@ jobs: # back to emulation jobs above. arm: needs: build - runs-on: [self-hosted, Linux, ARM64, maerwald] + runs-on: [self-hosted, Linux, ARM64] strategy: fail-fast: true matrix: From f8544e5813b9b8a1587d8162960ecb8739b22079 Mon Sep 17 00:00:00 2001 From: Matthew Craven Date: Thu, 15 Feb 2024 12:13:55 -0500 Subject: [PATCH 4/6] More changelog updates --- Changelog.md | 18 ++++++++++++++---- bytestring.cabal | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Changelog.md b/Changelog.md index 2b85c9933..4903aeb83 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,7 +1,8 @@ [0.13.0.0] — circa 2026-2027 * __Breaking Changes__: - * [`dataTypeOf` for `StrictByteString` and `LazyByteString`...](https://github.com/haskell/bytestring/pull/614) + * [`Data.Data.dataTypeOf` for `StrictByteString` and `LazyByteString` now returns a `DataType` that uses `AlgRep` instead of `NoRep`.](https://github.com/haskell/bytestring/pull/614) + * This allows utilities like `syb:Data.Generics.Text.gread` to be meaningfully used at these types containing `ByteString`s. [0.12.1.0]: https://github.com/haskell/bytestring/compare/0.12.0.2...0.12.1.0 diff --git a/bytestring.cabal b/bytestring.cabal index 1de5c78b4..1919958b4 100644 --- a/bytestring.cabal +++ b/bytestring.cabal @@ -1,5 +1,5 @@ Name: bytestring -Version: 0.12.0.2 +Version: 0.13.0.0 Synopsis: Fast, compact, strict and lazy byte strings with a list interface Description: An efficient compact, immutable byte string type (both strict and lazy) From cd6dea7228f6b10a75fd09bbdd0708ecf7edac87 Mon Sep 17 00:00:00 2001 From: Matthew Craven Date: Thu, 15 Feb 2024 12:43:44 -0500 Subject: [PATCH 5/6] Mention `pure-haskell` flag in Changelog.md --- Changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Changelog.md b/Changelog.md index 4903aeb83..96bda330e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -16,6 +16,8 @@ * [Provisional support has been added for using `bytestring` with GHC's JavaScript back-end.](https://github.com/haskell/bytestring/pull/631) * This support is relatively un-tested and un-optimised. There may be bugs! Please report any you discover to [`bytestring`'s issue tracker](https://github.com/haskell/bytestring/issues). + * The JavaScript back-end's limited support for the Haskell-C foreign function interface would previously result in many operations failing with errors like `ReferenceError: h$fps_count is not defined`. + * The new `pure-haskell` package flag allows the new fallback Haskell implementations (used to support the JavaScript backend) to be used on most other platforms as well. * Bug fixes: * [`stimes 0 sbs :: ShortByteString` now returns the empty `ShortByteString` instead of throwing an exception](https://github.com/haskell/bytestring/pull/611) * [`stimes 0 b :: Builder` now returns the empty `Builder` instead of throwing an exception](https://github.com/haskell/bytestring/pull/611) From ef2272a4716fa19e2b322d489724a3ebfc4c8f08 Mon Sep 17 00:00:00 2001 From: Matthew Craven Date: Thu, 15 Feb 2024 14:49:54 -0500 Subject: [PATCH 6/6] Add hidden entry for #660 --- Changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Changelog.md b/Changelog.md index 96bda330e..2dc4b6de6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -54,6 +54,8 @@ * [Use `NonEmpty` to prune dead code in `integerDec`](https://github.com/haskell/bytestring/pull/655) * This might have a performance impact due to result unboxing (CPR). * [Consolidate internal CPP for byte-order/endianness](https://github.com/haskell/bytestring/pull/659) + * [Remove remaining uses of FFI under -fpure-haskell](https://github.com/haskell/bytestring/pull/660) + * Doesn't warrant a separate visible changelog entry from #631. --> [0.12.1.0]: https://github.com/haskell/bytestring/compare/0.12.0.2...0.12.1.0