0.10.0-eap-1 / 2018-12-19

Plugin:

  • Support @SerialInfo annotation for Native
  • Remove redundant check for 'all parameters are properties' in a case of fully-customized serializer.
  • Fix unresolved symbol to SerialDescriptor in KSerializer if it was referenced from user custom serializer code (#290)
  • Support for @UseSerializers annotation
  • Restrict auto-implementing serializers methods to certain type of classes
  • Increase priority of overridden serializer on type (#252)
  • Fix instantiation of generic serializers on JS (#244)
  • .shouldEncodeElementDefault for JVM (#58)
  • Support skipping values equals to defaults in output stream for JS and Native backends (#58)
  • Support enums in Native
  • Support reference array and context serializers in Native
  • Fix order of overriding @Serializable(with) on property: check override, than @ContextualSerialization.
  • Support @Transient properties initializers and init blocks in Native
  • Better lookup for serializer() function in companion for generic classes because user can define a parameterless shorthand one (#228)
  • Generics serialization in Native
  • .getElementDescriptor for JVM, JS and Native
  • Respect @ContextualSerialization on file
  • Remove auto-applying ContextSerializer. @ContextualSerialization should be used instead.

Runtime:

  • Turn around messed endianness names (#308)
  • Update to Kotlin 1.3.20 EAP 2
  • Get rid of protobuf-platform functions since @SerialInfo annotations are supported now. Auto-assign ids starting with 1 because 0 is not a valid protobuf ID.
  • Delegates equals, hashCode of JsonObject and JsonArray.
  • Test for fixed #190 in plugin
  • UseSerializers annotation
  • Introduce LongAsStringSerializer
  • Add validation for parsing dynamic to Long Fixes #274
  • Merge pull request #294 from Kotlin/recursive_custom_parsing
  • Fix recursive serialization for JsonOutputs/Inputs
  • Production-ready JSON API
  • Remove ValueTransformer
  • Json improvements
  • @Serializable support for JsonArray
  • @Serializable support for JsonObject
  • @Serializable support for JsonNull and JsonPrimitive
  • Hide JsonTreeParser, provide Json.parseJson as replacement, implement basic JsonElementSerializer.deserialize
  • Migrate the rest of the test on JsonTestBase, implement nullable result in tree json
  • Implement custom serializers support for TreeJsonInput
  • Implement JsonArray serialization
  • Implement strict mode for double in TreeJsonOutput (fixes JsonModesTest)
  • Introduce JsonTestBase in order to ensure streaming and tree json compatibility, transient and strict support in TreeJsonInput
  • Make JsonElement serializable via common machinery
  • Json rework, consolidate different parsing mechanisms, hide implementation details
  • Polymorphic serializer improvements
  • Renamed identifiers to align with Kotlin's coding conventions. https://kotlinlang.org/docs/reference/coding-conventions.html#naming-rules
  • Changed JSON -> Json and CBOR -> Cbor

v0.9.1 / 2018-11-19

  • Update lib to 0.9.1/Kotlin to 1.3.10
  • Use-case for PrimitiveDescriptor.withName
  • Merge branch 'dev'
  • Make some clarifications about Gradle plugin DSL and serialization plugin distribution
  • Primitive descriptor with overriden name
  • Fix example with java.util.Date
  • Add missing shorthands for float and char serializers Fixes #263
  • Fix local K/N setup and some typos
  • Fix bug where primitive non-string values created by hand and created by parser could be inequal due to a redundant type comparison.
  • Skip defaults in JSONTreeMapper and CBOR
  • Local K/N compilation setup
  • Typo
  • Explicitly add KSerializer supertype to avoid certain restrictions after update
  • Don't look at default serializer too early during reflective lookup Fixes #250
  • Fix maven example
  • Update changelog for 0.9.0
  • Update documentation: Remove obsolete eap13.md document Add some notes
  • Migrate Native sample Add lost information about apply pluing: 'kotlinx-serialization-native' Add bintray credentials to all sample projects Remove obsolete iOS example

v0.9.0 / 2018-10-24

  • Fix bug where .simpleName was not available for primitives' KClasses.
  • Improve Mapper: it is now a class (with default instance in Companion) which extends AbstractSerialFormat and therefore have context and proper reflectionless API.
  • Introduce @ImplicitReflectionSerializer for API which involves reflection.
  • Add Boolean.Companion.serializer() extension method.
  • Refactor surface API: introduce interfaces for different formats, move some inline functions for serialization start to extensions. As a minor change, now nulls can be serialized at top-level, where it is supported by the format.
  • Add AbstractSerialFormat as a base class to all major formats
  • Update general readme and versions: Library to 0.9, K/N to 1.0 beta
  • Update documentation for the new API
  • Updated info about eap13 releases

v0.8.3-rc13 / 2018-10-19

  • Set default byte order to BigEndian (to be more platform-independent and get rid of posix.BYTE_ORDER dependency)
  • Update Kotlin version to 1.3-RC4
  • Remove Gradle metadata from non-native modules
  • Add missing targets (Fixes #232)
  • Add license, developer and scm information in Maven pom in publication (Fixes #239)
  • Add builder for JsonArray
  • Redesign and unify exceptions from parsers (Fixes #238)
  • Move json parser back to monolith module (drops jsonparser artifact)
  • Little improvement of error messages

Not working until plugin is updated:

  • Initial support for skipping defaults: JSON
  • Replace choicesNames to Array to be easily instantiated from generated IR

v0.8.2-rc13 / 2018-10-03

  • Update to RC-3
  • Add @SharedImmutable from K/N to some global declarations in JSON parser, so it is now accessible from multiple workers (Fixes #225)

Not working until plugin is updated:

  • Tests for generic descriptors
  • Generated serializer and stuff for providing descriptors from plugin
  • Tests on @ContextualSerialization on file

v0.8.1-rc13 / 2018-09-24

  • Upgrade Kotlin/Native version

v0.8.0-rc13 / 2018-09-19

  • Add (currently) no-op annotations to the kibrary for smoother migration
  • Update migration guide and versions to RCs.
  • Support WildcardType in serializerByTypeToken (#212)

Not working until plugin is updated:

  • Added experimental support of reference arrays for Native

v0.7.3-eap-13 / 2018-09-18

  • New enum serializing model
  • New context: SerialModules draft. Renaming and mutable/immutable hierarchy
  • Remove untyped encoding
  • Improve serializers resolving by adding primitive serializers. Also add some helper methods to JSON to serialize lists without pain
  • Fix protobuf by adapting MapLikeSerializer to HashSetSerializer(MapEntrySerializer). Elements' serializers in collection serializers are now accessible for such adaptions.
  • Prohibit NaN and infinite values in JSON strict mode
  • Cleanup JSON, reflect opt-in strict mode in naming
  • Get rid of StructureKind.SET and StructureKind.ENTRY
  • Remove SIZE_INDEX
  • Remove inheritance from Encoder and CompositeEncoder
  • Working over primitive kinds and enums
  • Reworked SerialDescriptor and kinds
  • Renaming of ElementValue* and Tagged*
  • Renaming: KOutput -> Encoder/CompositeEncoder KInput -> Decoder/CompositeDecoder
  • Renaming: KSerialClassDesc -> SerialDescriptor SerialSaver, SerialLoader -> *Strategy

Not working until plugin is updated:

  • Provide limited equals on collections' descriptors
  • Support for isElementOptional

v0.6.2 / 2018-09-12

  • Updated Kotlin to 1.2.70 and Kotlin/Native to 0.9

v0.6.1 / 2018-08-06

  • Compatibility release for 1.2.60
  • Don't throw NoSuchElement if key is missing in the map in Mapper.readNotNullMark, because tag can be only prefix for nested object. Fixes #182
  • Update ios sample with latest http client

v0.6.0 / 2018-07-13

Plugin:

  • Allow @SerialName and @SerialInfo on classes
  • Fix resolving serializers for classes from other modules (#153 and #166)

Runtime:

  • Use new 0.8 K/N DSL
  • Simplify JSON AST API, Provide JSON builder, provide useful extensions, add documentation, update K/N
  • Get rid of JsonString to align json primitives with each other. Provide JSON AST pojo parser which exposes current design issues
  • [JSON-AST] Introduce non-nullable methods throwing exceptions for getting json elements
  • [JSON-AST] Add ability to parse JSONInput element as tree. Symmetric functionality for JsonOutput + JsonTree
  • [JSON-AST] Docs writeup
  • [JSON-AST] Publishing native artifact on bintray
  • [JSON-AST] Saving AST back to JSON
  • [JSON-AST] JsonAstMapper to serializable classes
  • Remove annoying "for class class" message in not found serializer exception
  • Introduce module for benchmarks
  • Add notes about snapshot versions
  • Tests for bugs fixed in latest published plugin (#118 and #125)
  • Auto-assign proto ids using field index

v0.5.1 / 2018-06-13

Plugin:

  • Fix 1.2.50 compatibility
  • Workaround for recursive resolve on @Serializable(with) and @Serializer(for) pair annotations
  • Don't generate additional constructor if @SerialInfo has no properties
  • Fix order of resolving serializers: user-overriden should go before polymorphic and default
  • While creating descriptors, add type arguments not from serializable class definition but from actual KSerializer implementation. This provides better support for user-defined or external generic serializers
  • Don't generate constructor for passing generic serializers if user already defined proper one.
  • Respect @Serializable(with) on properties on JS too.
  • Fix for Kotlin/kotlinx.serialization/136
  • Fix for Kotlin/kotlinx.serialization/125
  • Fix for Kotlin/kotlinx.serialization/118
  • Fix for Kotlin/kotlinx.serialization/123: resolve annotation parameters in-place

Runtime:

  • Added some shorthands for standard serializers
  • Fix for bug #141 that uses an extra boolean to determine whether to write a separating comma rather than assuming that the element with the index 0 is written first(or at all) in all cases.
  • Move mode cache to output class to make .stringify stateless and thread-safe (#139)
  • Bugfix #95: Can't locate default serializer for classes with named co… (#130)
  • Updated versions in docs and examples Add changelog

v0.5.0 / 2018-04-26

  • Improve buildscript and bumped kotlin version to 1.2.40
  • Remove code warnings
  • Add note about different IDEA plugin versions
  • Add null check to Companion when looking up serializer.
  • Improved performance of JSON.stringify
  • Improved performance of JSON.parse
  • Added compatibility note
  • Fix #107 and #112. #76 awaits next compiler release.

v0.4.2 / 2018-03-07

  • Update runtime library version to match plugin version. Update examples to use latest version of compiler, plugin and runtime. Update Gradle to run on build agents with Java 9.
  • Fix ProGuard rules docs for serialization of classes with generic types
  • Fix ProGuard rules docs for serialization 0.4.1 version
  • Add support for @Serializable classes that are private and live out of kotlinx.serialization package. In such case the Companion field is not visible and must be set accessible before use.
  • update jvm-example to latest versions