Changelog for bytestring-0.12.2.0
0.12.2.0 — December 2024
- Bug fixes:
- API additions:
- Performance improvements:
- Miscellaneous:
- Remove support for GHC < 8.4
- Various documentation improvements (1, 2)
0.12.1.0 — February 2024
- Provisional support has been added for using
bytestringwith GHC's JavaScript back-end.- This support is relatively un-tested and un-optimised. There may be bugs! Please report any you discover to
bytestring's issue tracker. - 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-haskellpackage flag allows the new fallback Haskell implementations (used to support the JavaScript backend) to be used on most other platforms as well.
- This support is relatively un-tested and un-optimised. There may be bugs! Please report any you discover to
- Bug fixes:
stimes 0 sbs :: ShortByteStringnow returns the emptyShortByteStringinstead of throwing an exceptionstimes 0 b :: Buildernow returns the emptyBuilderinstead of throwing an exception- Several alignment-related bug fixes
- Fix a bug in
isValidUtf8 sconcat @ShortByteStringis no longer terribly inefficient- Fix the type on the foreign import used for
Data.ByteString.Short.elemIndex - Ensure that the result of
fromShortis protected bymkDeferredByteString
- Behavior changes:
- The
Data.Data.Datainstances forStrictByteStringandLazyByteStringhave been changed:toConstrnow returns the apackpseudo-constructor instead of throwing an exception.- Due to this pseudo-constructor,
gunfoldcan now be meaningfully used at these types. (Previously, it would always raise an exception.) - These changes allow
syb:Data.Generics.Text.gshowto be meaningfully used at types containingByteStrings.
- A derived
instance Generic ShortByteStringhas been added. sconcat @Builderis now lazy in the tail of its input
- The
- Deprecations:
- Performance improvements:
- Various raw-binary
Builderprimitives likeintHostorword32BEare much less inefficient on architectures not known to support unaligned writes. (1, 2) - Hexadecimal encoding suffers one indirection fewer
Data.ByteString.Lazy.takeEndis somewhat fasterData.ByteString.Lazy.dropEndis much faster
- Various raw-binary
- Miscellaneous:
- Various documentation improvements (1, 2, 3, 4, 5)
- Eta-expand
Data.ByteString.Builder.Internal.empty- This can variously help or hurt performance; it undoes the performance changes caused by CLC proposal 132 with ghc-9.8 and restores the baseline performance seen with older GHCs.
0.12.0.2 — August 2023
0.12.0.1 — August 2023
0.12.0.0 — July 2023
- Breaking Changes:
readIntreturnsNothing, if the sequence of digits cannot be represented by anInt, instead of overflowing silently- Remove
zipWithrewrite rule ShortByteStringis now a wrapper aroundData.Array.Byte.ByteArrayinstead ofByteArray#directly- As a compatibility measure,
SBSremains available as a pattern synonym. - The compatibility package
data-array-byteis used whenbasedoes not provideData.Array.Byte.
- As a compatibility measure,
fromListNfrominstance IsList ShortByteStringnow throws an exception if the first argument does not match the length of the second- Previously, it would ignore the first argument entirely.
- Bug fixes:
- Size-related calculations are more resistant to
Intoverflow in the following places:
- Size-related calculations are more resistant to
- API additions:
- Deprecations:
Data.ByteString.getLine: preferData.ByteString.Char8.getLineData.ByteString.hGetLine: preferData.ByteString.Char8.hGetLine
0.11.5.3 — October 2023
- Bug fixes:
0.11.5.2 — August 2023
0.11.5.1 — August 2023
0.11.5.0 — July 2023
- Bug fixes:
- API additions:
- Deprecations:
Data.ByteString.Internal.memcpy: preferForeign.Marshal.Utils.copyBytesData.ByteString.Internal.memset: preferForeign.Marshal.Utils.fillBytes
- Performance improvements:
- Miscellaneous:
0.11.4.0 — January 2023
- Bug fixes:
- API additions and behavior changes:
- Performance improvements:
- Miscellaneous:
0.11.3.1 — May 2022
- Windows: Do not link against
gcc_s - Windows: Do not link against
gccwhen GHC >= 9.4 - Refine CPP for obsolete versions of
gcc
0.11.3.0 — February 2022
Erratum: unsafeIndex was accidentally removed from the export list of Data.ByteString.Short.Internal in this release. This was corrected in 0.11.4.0.
- Enhance
ShortByteStringAPI- Add
all,any,append,break,breakEnd,breakSubstring,concat,cons,count,drop,dropEnd,dropWhile,dropWhileEnd,elem,elemIndex,elemIndices,filter,find,findIndex,findIndices,foldl',foldl,foldl1',foldl1,foldr',foldr,foldr1',foldr1,head,init,intercalate,isInfixOf,isPrefixOf,isSuffixOf,last,map,partition,replicate,reverse,singleton,snoc,span,spanEnd,split,splitAt,splitWith,stripPrefix,stripSuffix,tail,take,takeEnd,takeWhile,takeWhileEnd,uncons,unfoldr,unfoldrN,unsnoctoData.ByteString.Short.
- Add
- Add
Data.ByteString.Short.isValidUtf8 - Use safe
isValidUtf8for large inputs - Make
unlineslazier - Improve performance of
unlines - Make
singletonreturn a slice of a static buffer - Improve performance of
intercalate
0.11.2.0 — December 2021
- Add
Data.ByteString.isValidUtf8 - Speed up
floatDecanddoubleDecusing the Ryu algorithmData.ByteString.Builder.RealFloatoffers additional custom formatters for floating point numbers.
- Add
StrictByteStringandLazyByteStringtype aliases - Add
foldr',foldr1',scanl1,scanr,scanr1toData.ByteString.Lazy{,.Char8} - Add
takeEnd,dropEnd,takeWhileEnd,dropWhileEnd,spanEnd,breakEndtoData.ByteString.Lazy{,.Char8} - Add
Data.ByteString.Builder.writeFileto writeBuilderto file directly - Add
Data.ByteString.{from,to}FilePathfor encoding-aware conversions - Add
Liftinstances for all flavors ofByteString - Add
HasCallStackfor partial functions - Define
foldl,foldl',foldr,foldr',mapAccumL,mapAccumR,scanl,scanrandfilterwith one argument less to allow more inlining - Speed up internal loop in
unfoldrN - Speed up
countwith SSE and AVX instructions - Improve performance of certain
Builders by using a static table for Base16 - Use
unsafeWithForeignPtrwhenever possible - Remove
integer-simpleflag - Remove misleading mentions of fusion
0.11.1.0 — February 2021
- Add
Data.ByteString.Char8.findIndexEndandData.ByteString.Lazy.Char8.{elemIndexEnd,findIndexEnd,unzip} - Expose
ShortByteStringconstructor fromData.ByteString.Short - Add
compareLengthfunction, which is lazier than comparison of lengths - Add strict
takeEndanddropEnd - Expose
packZipWithto zip twoByteString - Add
instance Show Builder - Improve lazy
packto carry fewer arguments in the inner loop - Improve
map,findIndexandfindIndexEndto carry fewer arguments in the inner loop - Improve lazy
{take,drop}While,breakandgroup{,By}to carry fewer arguments in the inner loop - Speed up
intersperseusing SSE2 instructions fromShortdoes not reallocate its argument, if it is pinned- Speed up
wordsusing a faster test for spaces - Implement
stimesmore efficiently than default definition
0.10.12.1 – January 2021
0.11.0.0 — September 2020
- Change internal representation of
ByteString, removing offset- The old
PSconstructor has been turned into a pattern synonym that is available with GHC >= 8.0 for backwards compatibility. Consider addingif !impl(ghc >=8.0) { build-depends: bytestring < 0.11 }to packages, which usePSand still support GHC < 8.0.
- The old
- Fill
ForeignPtrContentsofnullForeignPtrwithFinalPtrinstead of a bottom - Remove deprecated functions
findSubstringandfindSubstrings - Speed up sorting of short strings
- Improve handling of literal strings in
Data.ByteString.Builder - Compute length at compile time for literal strings
- This improves optimization opportunities for functions that scrutinize the length of a
ByteString.
- This improves optimization opportunities for functions that scrutinize the length of a
- Add
indexMaybeand synonym(!?)for indexing that returnsMaybe - Add rewrite rules for
{take,drop}While ({=,/}= x) - Add rewrite rules for
any (== x)andall (/= x) - Add rewrite rules for
findInd{ex,ices} (== x) - Improve folds to pass fewer arguments on each recursive invocation
- Improve performance of
findIndices - Re-export
Data.ByteString.Lazy.{from,to}StrictfromData.ByteString - Remove deprecated modules and functions
- Use
Data.ByteString.Builder{,.Extra}instead ofData.ByteString.Lazy.Builder{,.ASCII,.Extras}. - Use
Data.ByteString.Char8.{,h}putStrLninstead ofData.ByteString.{,h}putStrLnandData.ByteString.Lazy.Char8.putStrLninstead ofData.ByteString.Char8.putStrLn. - Use
Data.ByteString.break (== x)instead ofData.ByteString.breakByte x. - Use
Data.ByteString.Internal.accursedUnutterablePerformIOinstead ofData.ByteString.Internal.inlinePerformIO.
- Use
0.10.12.0 – August 2020
- Note: There are several breaking changes planned to be included in v0.11. Please ensure that your packages have appropriate upper bounds on bytestring, in order to minimize avoidable breakage.
- Add
takeWhileEndanddropWhileEndtoData.ByteStringandData.ByteString.Char8, and adddropSpaceandstriptoData.ByteString.Char8 - Add
findIndexEndtoData.ByteStringandData.ByteString.Lazy - Add
partitiontoData.ByteString.Char8andData.ByteString.Lazy.Char8 - Add
IsListinstances for strict and lazyByteStringand forShortByteString - Add
createUptoN'andunsafeCreateUptoN'toData.ByteString.Internal - Add
boundedPrimtoData.ByteString.Builder.Prim.Internaland deprecateboudedPrim - Deprecate the
Data.ByteString.Lazy.BuilderandData.ByteString.Lazy.Builder.{ASCII,Extras}modules - Fix documented complexity of
Data.ByteString.Lazy.length - Assorted documentation fixes
0.10.10.1 – June 2020
- Fix off-by-one infinite loop in primMapByteStringBounded (#203)
- Don't perform unaligned writes when it isn't known to be safe (#133)
- Improve the performance of sconcat for lazy and strict bytestrings (#142)
- Document inadvertent 0.10.6.0 behaviour change in findSubstrings
- Fix benchmark builds (#52)
- Documentation fixes
- Test fixes
0.10.10.0 July 2019 duncan+haskell@dcoutts.me.uk July 2019
- Build with GHC 8.8, and tests with QC 2.10+
- Add conversions between ShortByteString and CString (#126)
- Documentation fixes (#65, #118, #144, #150, #152, #172)
- Resolve potential copyright issue with test data (#165)
0.10.8.2 Duncan Coutts duncan@community.haskell.org Feb 2017
- Make readFile work for files with no size like /dev/null
- Extend the cases in which concat and toStrict can avoid copying data
- Fix building with ghc-7.0
- Minor documentation improvements
- Internal code cleanups
0.10.8.1 Duncan Coutts duncan@community.haskell.org May 2016
- Fix Builder output on big-endian architectures
- Fix building with ghc-7.6 and older
0.10.8.0 Duncan Coutts duncan@community.haskell.org May 2016
- Use Rabin-Karp substring search for
breakSubstringandfindSubstring - Improve the performance of
partitionfor lazy and strict bytestrings - Added
stripPrefixandstripSuffixfor lazy and strict bytestrings - Fix building with ghc 8.0 & base 4.9 (Semigroup etc)
0.10.6.0 Duncan Coutts duncan@community.haskell.org Mar 2015
- Rename inlinePerformIO so people don't misuse it
- Fix a corner case in unfoldrN
- Export isSuffixOf from D.B.Lazy.Char8
- Add D.B.Lazy.elemIndexEnd
- Fix readFile for files with incorrectly reported file size
- Fix for builder performance with ghc 7.10
- Fix building with ghc 6.12
0.10.4.1 Duncan Coutts duncan@community.haskell.org Nov 2014
- Fix integer overflow in concatenation functions
- Fix strictness of lazy bytestring foldl'
- Numerous minor documentation fixes
- Various testsuite improvements