Skip to content

Releases: circe/circe

v0.14.6

30 Aug 23:06
dcee631
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.14.5...v0.14.6

What's Changed

New Contributors

Full Changelog: v0.14.5...v0.14.6

v0.14.5

03 Mar 15:49
6bbb7e7
Compare
Choose a tag to compare

What's Changed

Scala Steward updates

New Contributors

Full Changelog: v0.14.4...v0.14.5

v0.14.4

08 Feb 23:02
v0.14.4
590c939
Compare
Choose a tag to compare

Warning for Scala 3

There are multiple issues in the current Scala 3 versions of this release. We'd recommend staying on 0.14.3 until we figure out the exact scope of the issues. See below for more information.

Highlights

  • Add accumulative equivalent of Json#as[A]: asAccumulating[A] by @Iltotore in #2046
  • Use human-readable cursor history for DecodingFailure getMessage by @dantb in #1957
  • (0.14.x) Add human-readable toString in errors by @kubukoz in #2075
  • Derivation support for transformNames, useDefaults, discriminator, and strictDecoding in Scala 3 by @Lasering in #1800

What's Changed

New Contributors

Full Changelog: v0.14.3...v0.14.4

v0.14.3

15 Sep 22:44
v0.14.3
505fa69
Compare
Choose a tag to compare

This release contains Scala Native Support as well as small fixes.

Highlights

New Contributors

Full Changelog: v0.14.2...v0.14.3

v0.14.2

23 May 14:57
2dad803
Compare
Choose a tag to compare

This release includes some improvements and bug-fixes as well as back-porting most of v0.15.0-M1 to v0.14.2. A big thank you to everyone who has contributed to this release.

Highlights

  • Cross-Build jawn-module for Scala.js by @armanbilge in #1791
  • DecodingFailure error message improved by @AL333Z in #1617
    -- Note: This changes the error message string that you may have previously been using.
  • Encoder and Decoder for java.net.Uri by @sideeffffect in #1845
  • Scala 3 Macro support for Literal by @i10416 in #1874
  • Jawn is now compile-time-only for Literal by @armanbilge in #1882
  • Scala 3 Macro Support for Pointer Literals by @zarthross in #1875
  • Decoder instance now supports map2Eval error accumulation by @xuwei-k in #1891
  • printToAppendable added as a side-effecting method by @armanbilge in #1855
  • Make main Bincompat with v0.14 by @zarthross in #1948

Full Changelog: v0.14.1...v0.14.2

Circe 0.14.1

26 May 16:44
v0.14.1
3a4b436
Compare
Choose a tag to compare

This release differs from 0.14.0 only in that the Shapeless dependency for circe-generic has been updated from 2.3.6 to 2.3.7. Because of an issue in Shapeless 2.3.6, using circe-generic 0.14.0 in a project with a more recent Shapeless dependency (2.3.7+) may cause problems, so circe-generic users are encouraged to skip 0.14.0 and update directly to 0.14.1.

All 14 other modules are exactly the same as they were in 0.14.0, but because it's inconvenient to publish one module from this repository independently (and because people seem to like their versions to stay in sync), you get all of them again here.

Circe 0.14.0

26 May 13:25
v0.14.0
36f60e9
Compare
Choose a tag to compare

This release includes a few new features and bug fixes, most of which were introduced in 0.14.0-M1 or 0.14.0-M2. Some highlights:

Most users should not be affected by these changes, and none of the bug fixes were considered serious enough to backport to 0.13.x.

JSON Pointer

This release introduces a new circe-pointer module, which provides a JSON Pointer implementation that aims to be compliant with RFC 6901 and the Relative JSON Pointers memo from the IETF, with a minimal API and reasonable performance.

Usage looks like this:

scala> import io.circe.Decoder, io.circe.pointer.literal._
import io.circe.Decoder
import io.circe.pointer.literal._

scala> case class Foo(x: Int)
class Foo

scala> implicit val decodeFoo: Decoder[Foo] = Decoder[Int].map(Foo(_)).prepare(pointer"/a/2/b/c")
val decodeFoo: io.circe.Decoder[Foo] = io.circe.Decoder$$anon$11@7a4dad50

scala> io.circe.jawn.decode[Foo]("""{"a": [true, null, {"b": {"c": 123}}]}""")
val res0: Either[io.circe.Error,Foo] = Right(Foo(123))

The pointer string interpolator returns a io.circe.pointer.Pointer, which is a new type that implements ACursor => ACursor, allowing it to be used conveniently in contexts like prepare. The Pointer.Relative subtype additionally supports position evaluation.

There are currently some limitations to the interpolation macro; for example the initial depth for relative pointers can't be interpolated, and the JSON pointer string is parsed both during compilation, to verify its validity, and at runtime (unlike for example the JSON interpolator in circe-literal, which allows you to avoid runtime parsing). These limitations may be removed in future releases.

Compatibility

This release is mostly binary-compatible with 0.13.x, which in turn was mostly binary-compatible with 0.12.x. You should be able to use 0.14.0 with dependencies compiled against either 0.12.x or 0.13.x for most core Circe modules (as long as they do not depend on Jawn or use methods that were deprecated in 0.12.0).

This release also includes many updates for dependency versions, including in particular Cats, which is updated from 2.1.0 to 2.6.1, and ScalaCheck, which is updated from 1.14.3 to 1.15.4. All dependency updates should be binary-compatible and most should be source-compatible. Users of circe-generic may run into issues with incompatibilities in macro-generated code because of changes in Shapeless 2.3.x, but these should be resolved by clean.

Scala 3 support

The following modules are published for Scala 3 (on both the Java Virtual Machine and Scala.js):

  • circe-core
  • circe-extras
  • circe-generic
  • circe-numbers and circe-numbers-testing
  • circe-parser, circe-jawn, and circe-scalajs
  • circe-pointer
  • circe-refined
  • circe-scodec
  • circe-testing

Scala 3 support should be considered experimental, and we are not currently running all tests for all modules. There are also three modules that we are not publishing for Scala 3 (circe-literal, circe-pointer-literal, and circe-shapes). These issues should be resolved in 0.15.0.

On Scala 3 circe-core now includes generic derivation via the new derives mechanism (see the 0.13.0 release notes for an example). On Scala 3 the circe-generic module does not depend on Shapeless, and simply provides (partial) source compatibility for users who want to cross-compile on Scala 2 and 3. Some features are not currently supported (and may not ever be): for example the @JsonCodec annotation is not available on Scala 3 and fully-automatic derivation does not currently support recursive case classes.

Circe 0.14.0-M7

15 May 08:52
v0.14.0-M7
b9c42e9
Compare
Choose a tag to compare
Circe 0.14.0-M7 Pre-release
Pre-release

This release introduces Scala 3 support (and drops 3.0.0-RC3). There are also several dependency patch version updates.

The following modules are published for Scala 2.12, 2.13, and 3.0:

  • circe-core
  • circe-extras
  • circe-generic
  • circe-numbers and circe-numbers-testing
  • circe-parser, circe-jawn, and circe-scalajs
  • circe-pointer
  • circe-refined
  • circe-scodec
  • circe-testing

Four of these are not currently published for Scala.js because of a missing test dependency (circe-extras, circe-generic, circe-refined, and circe-scodec). Please note that the Scala 3 artifacts for Scala.js are currently completely untested and should be considered even more experimental than the Scala 3 artifacts for the JVM.

The remaining modules that are not published for Scala 3 are circe-literal, circe-pointer-literal, and circe-shapes. At least the two literal modules are likely to be included in 0.14.0.

This milestone release is guaranteed by MiMa to be backward-binary-compatible with 0.14.0-M6, but no other previous releases, and there are no guarantees about binary compatibility with future 0.14.0 releases. In general the points of breakage with previous releases should be limited to deprecated methods, but please take care if using this milestone with other libraries published against earlier releases of Circe.

Circe 0.14.0-M6

25 Apr 15:29
v0.14.0-M6
015725e
Compare
Choose a tag to compare
Circe 0.14.0-M6 Pre-release
Pre-release

This release introduces Scala 3.0.0-RC3 support (and drops 3.0.0-RC2). It also includes several improvements:

There are also numerous dependency patch version updates and one minor version update (from Cats 2.5.0 to 2.6.0).

Please see the 0.14.0-M4 release notes for information about which modules are published for Scala 3, and for details about their status. Starting with this milestone, all of these modules are published for Scala 3.0 on Scala.js, although the Scala 3.0 artifacts for Scala.js are currently completely untested and should be considered even more experimental than the Scala 3.0 artifacts for the JVM.

This milestone release is backward-binary-compatible with 0.14.5-M5, but no other previous releases, and there are no guarantees about binary compatibility with future 0.14.0 releases. In general the points of breakage with previous releases should be limited to deprecated methods, but please take care if using this milestone with other libraries published against earlier releases of Circe.

Circe 0.14.0-M5

06 Apr 17:15
d1d041e
Compare
Choose a tag to compare
Circe 0.14.0-M5 Pre-release
Pre-release

This release introduces Scala 3.0.0-RC2 support (and drops 3.0.0-RC1). It also includes several improvements:

Please see the 0.14.0-M4 release notes for information about which modules are published for Scala 3, and for details about their status. Note that the Refined integration module is not published for Scala 3 in this milestone, because of an issue involving scala-xml (we will fix this before 0.14.0).

This milestone release is not backward-binary-compatible with 0.13.x or previous 0.14.0 milestones, and there are no guarantees about binary compatibility with future 0.14.0 releases. In general the points of breakage with previous releases should be limited to deprecated methods, but please take care if using this milestone with other libraries published against earlier releases of Circe.