- Fixes performance issues introduced in
2.3.0
[#162]:- Deprecates the following which were introduced in
2.3.0
:CTCase
classDecoderAction
functional interfaceDecoderAction.Parser
classBase16ConfigBuilder.isconstantTime
variableBase32CrockfordConfigBuilder.isconstantTime
variableBase32HexConfigBuilder.isconstantTime
variableBase64ConfigBuilder.isconstantTime
variable
- All encoders (Base16/32/64) are now written in a constant-time
manner. Performance impact when compared to
2.2.2
was "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.Companion
extension functionByteArray.encodeToString
not zeroing out its localStringBuilder
before returning encoded data. [#155] - Deprecates the following [#156] [#158]:
Decoder.Companion
extension functionByteArray.decodeToByteArray
Decoder.Companion
extension functionByteArray.decodeToByteArrayOrNull
Encoder.Companion
extension functionByteArray.encodeToByteArray
DecoderInput
constructor forByteArray
input
- Adds support for constant-time operations when encoding/decoding (off by default). [#154]
- Adds
dokka
documentation athttps://encoding.matthewnelson.io
[#157]
- Updates dependencies
- Kotlin
1.9.23
->1.9.24
- Kotlin
- Fixes multiplatform metadata manifest
unique_name
parameter for all source sets to be truly unique. [#147] - Updates jvm
.kotlin_module
with truly unique file name. [#147] - Fixes Java9 JPMS
module-info
to usetransitive
instead 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]:
wasmJs
wasmWasi
- Deprecates
InternalEncodingApi
annotation [#142]
- Updates dependencies
- Kotlin
1.8.21
->1.9.21
- Kotlin
- Drops support for the following deprecated targets:
iosArm32
watchosX86
linuxArm32Hfp
linuxMips32
linuxMipsel32
mingwX86
wasm32
- Fixes JPMS split package exception [#126] & [#127]
- API BREAKING CHANGES
- See the MIGRATION guide for more details
- Updates the
Maven Central
group & artifact ids- NEW:
io.matthewnelson.encoding:bom:2.0.0
io.matthewnelson.encoding:core:2.0.0
io.matthewnelson.encoding:base16:2.0.0
io.matthewnelson.encoding:base32:2.0.0
io.matthewnelson.encoding:base64:2.0.0
- OLD:
io.matthewnelson.kotlin-components:encoding-bom:1.2.3
io.matthewnelson.kotlin-components:encoding-core:1.2.3
io.matthewnelson.kotlin-components:encoding-base16:1.2.3
io.matthewnelson.kotlin-components:encoding-base32:1.2.3
io.matthewnelson.kotlin-components:encoding-base64:1.2.3
- NEW:
- Promotes
EncoderDecoder.Feed
s to stable by removing theExperimentalEncodingApi
annotation [#130] - In the event of a decoding failure, the underlying
ByteArray
is now cleared prior to throwing the exception [#132]
- Deprecates
...encoding.builders
package path classes/functions forencoding-base16
,encoding-base32
,encoding-base64
modules 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.0
with 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-components
submodule - 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
LineBreakOutFeed
utility class [#113] && [#118] - Adds ability to
flush
anEncoderDecoder.Feed
[#114]
- Fixes
Base32
encoding - Updates
kotlin-components
submodule- Publication support updates
- Fixes
base16
andbase32
decoding case sensitivity.- Previously, encoded data had to be all
uppercase
for 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-validator
gradle plugin to track API changes. - Adds CI build + caching to project.
- Changes project & repository name from
component-encoding
->encoding
. - Downgrades the KotlinJvm & Java
compile
/target
sourceCompatibility
versions 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
library
directory. - Introduces the
encoding-core
module- Migrates all core/common functionality of
encoding-base16
,encoding-base32
,encoding-base64
toencoding-core
. - Abstractions for easily creating
EncoderDecoder
(s) not already implemented by this library.- Adds the
Encoder
&Decoder
sealed classes. - Adds the
EncoderDecoder
abstract class (to exposeEncoder
andDecoder
to library consumers). - Adds the
EncoderDecoder.Config
abstract class to specify configuration options forEncoderDecoder
implementors. - Adds the
Encoder.Feed
&Decoder.Feed
classes for "streaming" encoded/decoded data. - Adds 2 new exceptions;
EncodingException
&EncodingSizeException
. - Adds the
FeedBuffer
utility class for use inEncoderDecoder
implementations.
- Adds the
- Adds builder classes & functions for easily configuring
base16
,base32
&base64
EncoderDecoder
(s). - Refer to README.md#usage for a quick rundown of new functionality.
- Migrates all core/common functionality of
- Deprecates all old extension functions
ReplaceWith
setup to easily switch over to use newEncoderDecoder
(s) forbase16
,base32
&base64
library consumers.
- Updates
kotlin-components
submodule- Kotlin
1.7.20
->1.8.0
- Support new target:
watchosDeviceArm64
- Kotlin
- Updates
kotlin-components
submodule- Kotlin
1.6.21
->1.7.20
- Support new targets:
androidNativeArm32
androidNativeArm64
androidNativeX64
androidNativeX86
linuxArm64
wasm32
- Kotlin
- Re-enable compiler flag
enableCompatibilityMetadataVariant=true
to support non-hierarchical projects. (sorry...)
- Updates
kotlin-components
submodule- Support new targets:
iosArm32
iosSimulatorArm64
tvosSimulatorArm64
watchosx86
watchosSimulatorArm64
- Support new targets:
- Updates
kotlin-components
submodule- Kotlin
1.6.10
->1.6.21
- Kotlin
- Updates
kotlin-components
submodule- 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