- Update dependencies [#206]:
- Kotlin
2.2.20->2.2.21
- Kotlin
- Fixes
Base32.Crockfordcheck symbol validation whenFeed.doFinalis called [#179] - Fixes
EncoderDecoderandEncoderDecoder.Configequals/hashCode overrides [#180] - Fixes 64-bit integer overflow for
Base32andBase64implementations ofConfig.decodeOutMaxSizeProtected[#183] - Fixes
LineBreakOutFeednot being reset as intended whenEncoder.Feed.flushis called [#193] - Fixes
Encoder.FeedandDecoder.Feedimplementations holding onto their respectiveOutFeedcallback references afterclosehas been called [#194] - Fixes
Encoder.Companion.encodeToStringback-fill implementation of its temporaryStringBuilderbuffer [#220]- Adds the
StringBuilder.wipeextension functions
- Adds the
- Aligns
Base16,Base32, andBase64builder implementations' syntax/layout [#176]- Deprecates all old builders and replaces them with:
Base16.BuilderBase32.Crockford.BuilderBase32.Default.BuilderBase32.Hex.BuilderBase64.Builder
- Deprecates all old builders and replaces them with:
- Deprecates
Base16,Base32.Crockford,Base32.Default,Base32.Hex, andBase64public constructors [#177] - Increases all
DeprecationLevel.WARNINGtoDeprecationLevel.ERROR[#178] - Moves
Feed.useextension function'sfinallylogic to internal function [#189] - Renames
EncoderDecoder.Config.encodeOutSizetoencodeOutMaxSize[#196]- Deprecates
encodeOutSize
- Deprecates
- Adds ability to configure temporary buffer back-fill behavior when using
:coremodule encoding/decoding extension functions [#190] - Adds
EncoderDecoder.Config.maxDecodeEmitconstructor parameter [#208] [#215] - Adds
Decoder.Companion.decodeBufferedandDecoder.Companion.decodeBufferedAsyncextension functions [#210] [#226] [#228] [#235] - Adds ability to configure
LineBreakOutFeedreset behavior whenEncoder.Feed.flushis called [#216]- Deprecates
LineBreakOutFeedconstructor and adds newresetOnFlushparameter - Adds
EncoderDecoder.Config.lineBreakResetOnFlushconstructor parameter - Adds to
EncoderDecoderimplementations'BuilderthelineBreakResetfunction to configure
- Deprecates
- Adds
UTF-8encoding/decoding [#170] [#185] [#200] [#201] [#202] [#203]- Module
:utf8contains theUTF8implementation ofEncoderDecoder
- Module
- Adds the
MalformedEncodingExceptiontype [#217] - Removes checked exception
@Throwsannotation forEncodingExceptionfromEncoder.Companion.encodeToStringandEncoder.Companion.encodeToCharArrayextension functions [#218] - Adds
EncoderDecoder.Config.maxEncodeEmitconstructor parameter [#223] - Adds
Encoder.Companion.encodeBufferedandEncoder.Companion.encodeBufferedAsyncextension functions [#232] - Adds partial array encoding [#233]
- All
Encoder.Companionextension functions can now take additionaloffsetandlenarguments
- All
- Adds partial text decoding [#234]
- All
Decoder.Companionextension functions can now take additionaloffsetandlenarguments
- All
- Performance improvements for
DecoderInput[#169] - Performance improvements for
Base16[#186] - Performance improvements for
Base32[#188] [#236] - Performance improvements for
Base64[#187] [#236] [#237]
- Update dependencies [#166]:
- Kotlin
1.9.24->2.1.10
- Kotlin
- Fixes performance issues introduced in
2.3.0[#162]:- Deprecates the following which were introduced in
2.3.0:CTCaseclassDecoderActionfunctional interfaceDecoderAction.ParserclassBase16ConfigBuilder.isconstantTimevariableBase32CrockfordConfigBuilder.isconstantTimevariableBase32HexConfigBuilder.isconstantTimevariableBase64ConfigBuilder.isconstantTimevariable
- All encoders (Base16/32/64) are now written in a constant-time
manner. Performance impact when compared to
2.2.2was "negligible" (in the neighborhood of ~4% depending on platform), given the implications.
- Deprecates the following which were introduced in
- Adds benchmarking to repository [#160]
- Fixes
Encoder.Companionextension functionByteArray.encodeToStringnot zeroing out its localStringBuilderbefore returning encoded data. [#155] - Deprecates the following [#156] [#158]:
Decoder.Companionextension functionByteArray.decodeToByteArrayDecoder.Companionextension functionByteArray.decodeToByteArrayOrNullEncoder.Companionextension functionByteArray.encodeToByteArrayDecoderInputconstructor forByteArrayinput
- Adds support for constant-time operations when encoding/decoding (off by default). [#154]
- Adds
dokkadocumentation athttps://encoding.matthewnelson.io[#157]
- Updates dependencies
- Kotlin
1.9.23->1.9.24
- Kotlin
- Fixes multiplatform metadata manifest
unique_nameparameter for all source sets to be truly unique. [#147] - Updates jvm
.kotlin_modulewith truly unique file name. [#147] - Fixes Java9 JPMS
module-infoto usetransitiveinstead of justrequires. [#150]
- Adds support for
wasmJs.browser[#144]
- Updates dependencies
- Kotlin
1.9.21->1.9.23
- Kotlin
- Adds support for Java9 JPMS via Multi-Release jars [#139]
- Adds experimental support for the following targets [#140]:
wasmJswasmWasi
- Deprecates
InternalEncodingApiannotation [#142]
- Updates dependencies
- Kotlin
1.8.21->1.9.21
- Kotlin
- Drops support for the following deprecated targets:
iosArm32watchosX86linuxArm32HfplinuxMips32linuxMipsel32mingwX86wasm32
- Fixes JPMS split package exception [#126] & [#127]
- API BREAKING CHANGES
- See the MIGRATION guide for more details
- Updates the
Maven Centralgroup & artifact ids- NEW:
io.matthewnelson.encoding:bom:2.0.0io.matthewnelson.encoding:core:2.0.0io.matthewnelson.encoding:base16:2.0.0io.matthewnelson.encoding:base32:2.0.0io.matthewnelson.encoding:base64:2.0.0
- OLD:
io.matthewnelson.kotlin-components:encoding-bom:1.2.3io.matthewnelson.kotlin-components:encoding-core:1.2.3io.matthewnelson.kotlin-components:encoding-base16:1.2.3io.matthewnelson.kotlin-components:encoding-base32:1.2.3io.matthewnelson.kotlin-components:encoding-base64:1.2.3
- NEW:
- Promotes
EncoderDecoder.Feeds to stable by removing theExperimentalEncodingApiannotation [#130] - In the event of a decoding failure, the underlying
ByteArrayis now cleared prior to throwing the exception [#132]
- Deprecates
...encoding.builderspackage path classes/functions forencoding-base16,encoding-base32,encoding-base64modules and re-introduces them at new package locations...encoding.base16.Builders.kt...encoding.base32.Builders.kt...encoding.base64.Builders.kt
- This is attributed to issue [#124] whereby JPMS does not allowing split packages.
- A follow-up release of
2.0.0with the API breaking changes will be had. This release is primarily for consumers to migrate as gracefully as possible. - See the MIGRATION guide for more details.
- Build improvements [#106]
- Removes
kotln-componentssubmodule - Composite builds via
gradle-kmp-configuration-plugin - Adds a Bill of Materials (BOM)
- Removes
- Updates dependencies
- Kotlin
1.8.0->1.8.21
- Kotlin
- Fixes dropped decoded bytes not being back-filled on resize [#112]
- Adds static instances with "reasonable" default configurations [#122]
- Exposes
LineBreakOutFeedutility class [#113] && [#118] - Adds ability to
flushanEncoderDecoder.Feed[#114]
- Fixes
Base32encoding - Updates
kotlin-componentssubmodule- Publication support updates
- Fixes
base16andbase32decoding case sensitivity.- Previously, encoded data had to be all
uppercasefor decoding to work. This was not compliant with RFC 4648 which specifies those n-encodings should becase-insensitive(should be able to decode upper &/or lowercase).
- Previously, encoded data had to be all
- Adds
binary-compatibility-validatorgradle plugin to track API changes. - Adds CI build + caching to project.
- Changes project & repository name from
component-encoding->encoding. - Downgrades the KotlinJvm & Java
compile/targetsourceCompatibilityversions from 11 to 8.- There was absolutely no need to require Java 11.
- As this is a downgrade, inline functions "should" still work since library consumers had to have been using Java 11+ to use them anyway.
- Moves all library modules from the root project directory to the
librarydirectory. - Introduces the
encoding-coremodule- Migrates all core/common functionality of
encoding-base16,encoding-base32,encoding-base64toencoding-core. - Abstractions for easily creating
EncoderDecoder(s) not already implemented by this library.- Adds the
Encoder&Decodersealed classes. - Adds the
EncoderDecoderabstract class (to exposeEncoderandDecoderto library consumers). - Adds the
EncoderDecoder.Configabstract class to specify configuration options forEncoderDecoderimplementors. - Adds the
Encoder.Feed&Decoder.Feedclasses for "streaming" encoded/decoded data. - Adds 2 new exceptions;
EncodingException&EncodingSizeException. - Adds the
FeedBufferutility class for use inEncoderDecoderimplementations.
- Adds the
- Adds builder classes & functions for easily configuring
base16,base32&base64EncoderDecoder(s). - Refer to README.md#usage for a quick rundown of new functionality.
- Migrates all core/common functionality of
- Deprecates all old extension functions
ReplaceWithsetup to easily switch over to use newEncoderDecoder(s) forbase16,base32&base64library consumers.
- Updates
kotlin-componentssubmodule- Kotlin
1.7.20->1.8.0 - Support new target:
watchosDeviceArm64
- Kotlin
- Updates
kotlin-componentssubmodule- Kotlin
1.6.21->1.7.20 - Support new targets:
androidNativeArm32androidNativeArm64androidNativeX64androidNativeX86linuxArm64wasm32
- Kotlin
- Re-enable compiler flag
enableCompatibilityMetadataVariant=trueto support non-hierarchical projects. (sorry...)
- Updates
kotlin-componentssubmodule- Support new targets:
iosArm32iosSimulatorArm64tvosSimulatorArm64watchosx86watchosSimulatorArm64
- Support new targets:
- Updates
kotlin-componentssubmodule- Kotlin
1.6.10->1.6.21
- Kotlin
- Updates
kotlin-componentssubmodule- Kotlin
1.5.31->1.6.10
- Kotlin
- Enables Kotlin 1.6's new memory model
- Removes unnecessary Android target
- JVM target compile to JavaVersion 1.8 instead of 11
- Drops kotlin gradle plugin version down to 1.5.31 for source
compatibility.
- Will update to 1.6.0 when atomicfu & coroutines are released for it.
- Add base 16 module
- Fixes potential Kotlin/Native freezing issue
- Fixes decoder behavior so that decoding an empty String now returns an empty ByteArray (instead of null).
- Bumps kotlin gradle version to 1.6.0-RC2
- Initial Release