All Versions
Latest Version
Avg Release Cycle
49 days
Latest Release
63 days ago

Changelog History
Page 1

  • v0.14.0-M1

    June 12, 2020
  • v0.13.0

    February 08, 2020
  • v0.13.0-RC1

    January 18, 2020

    🚀 This release candidate differs from the two 0.13.0 milestones in that it maintains binary compatibility with Circe 0.12.x (verified with MiMa) for all of the modules that don't depend on Jawn. We've updated Jawn to the new 1.0.0, which means that circe-jawn, circe-literal, and circe-parser (on the JVM) are not binary-compatible with 0.12.x.

    ⚡️ We've chosen to use 0.13 only for introducing Jawn 1.0.0, and wanted to make the update easy for people who have dependencies that may still be on circe-core or circe-generic 0.12.x.

    🚀 This release is cross-published for Scala.js 1.0.0-RC2 for the same modules as the last two milestones.

    I'll publish 0.13.0 in the next day or two if no issues come up before then.

  • v0.13.0-M2

    January 12, 2020

    🚀 This release is identical to 0.13.0-M1 except that it bumps the Jawn version from 1.0.0-RC2 to 1.0.0-RC3, which is a breaking change.

  • v0.13.0-M1

    January 10, 2020

    🚀 This is an early pre-release that's designed to let people try out Circe with two specific pre-release dependencies: Jawn 1.0.0-RC2 and Scala.js 1.0.0-RC2. Note that not all of our dependencies are available for Scala.js 1.0.0-RC2, so not all of the modules in this repository are published for it, and the ones that are are largely untested. The following modules currently support Scala.js 1.0.0-RC2:

    • circe-core
    • circe-numbers
    • ✅ circe-numbers-testing
    • 📜 circe-parser
    • circe-rs
    • circe-scalajs
    • ✅ circe-testing

    🚀 Scala.js 1.0.0 is currently scheduled to be published at the end of this month (January 2020), and once it's available Circe will immediately drop Scala.js 0.6, so this may be the only Circe release that's cross-published for 0.6 and 1.0.

    🚀 This release also updates the Cats dependency from 2.0.0 to 2.1.0, and includes a couple of minor changes (post-0.12 deprecation clean-up and the reinstatement of one HCursor method). Apart from the Jawn update and the removal of previously deprecated methods, this release should be fully binary-compatible and source-compatible with 0.12.x, although that's not guaranteed in any way. There are also no guarantees that future 0.13 releases will be compatible with this one.

  • v0.12.3

    October 22, 2019

    🚀 This releases undoes a change in some java.time encodings between 0.12.1 and 0.12.2 (reported by @Bunyod in #1292). Before this change in 0.12.2, the *DateTime encoders included seconds, even when the value was zero:

    scala\> import java.time.LocalDateTime, io.circe.syntax.\_import java.time.LocalDateTimeimport io.circe.syntax.\_scala\> val t = LocalDateTime.parse("2018-08-13T14:20:00") t: java.time.LocalDateTime = 2018-08-13T14:20scala\> t.asJson res0: io.circe.Json = "2018-08-13T14:20:00"

    In 0.12.2 this changed:

    scala\> t.asJson res0: io.circe.Json = "2018-08-13T14:20"

    While this new encoding isn't incorrect, it's less consistent and causes problems for some users, so Andriy Plokhotnyuk has reinstated the previous encoding.

    🚀 This release also includes a few new deprecations (#1302). Georgy Davityan noted that since we no longer support Scala 2.10, we can make our implicit value class fields private (#1291). While there's no reason these fields should ever be used outside the implicit class definition, I've provided deprecated methods replacing them to maintain binary compatibility until the next breaking release.

  • v0.12.2

    October 07, 2019

    🚀 This release maintains binary compatibility with 0.12.1 but includes two bug fixes, a couple new methods, some optimizations, and several patch version updates for dependencies.

    • Leif Warner reported and fixed a bug that affected custom Decoder[Option[X]] instances defined using or or handleErrorWith. I also added regression tests for this bug. Note that the bug shouldn't affect most users, and that in general we discourage defining custom decoders for Option.
    • 🗄 I fixed a bug reported by Alexandru Nedelcu that had resulted in deprecation warnings for users of the macro annotations in circe-generic-extras. I had previously fixed this issue in circe-generic-extras with a temporary workaround; the fix here makes the workaround unnecessary for both circe-generic-extras and other libraries built on circe-generic.
    • Ben Stewart added a deepMerge method to JsonObject and made the deepMerge implementation for Json a little more efficient.
    • 🚚 I added a new at method to Decoder that's shorthand for prepare and downField, which are often used together to move to a specific field before decoding.
    • Andriy Plokhotnyuk contributed an optimization for java.time encoders.
    • ⚡️ Scala Steward updated the Scala.js version from 0.6.28 to 0.6.29.

    ⚡️ Other patch dependency updates include ScalaCheck and Discipline (for circe-testing) and Refined. None of these updates should affect users (except for possibly bumping their versions).

  • v0.12.1

    September 10, 2019

    🚀 This release is identical to 0.12.0 but fixes a bug in one deprecated method in circe-core.

    Please do not use 0.12.0, use this one.

  • v0.12.0

    July 02, 2019

    🚀 I wasn't planning for there to be a fourth 0.12.0 milestone, but a few significant things have happened since M3, and the timeline for Cats 2.0.0-RC1 is up in the air (thanks to ScalaTest), so I figured I'd go ahead and publish this for anyone who wants to try out the new stuff or check out what migration will look like for them.


    🆕 New circe-generic-simple module

    This release introduces a new 2.13-only circe-generic-simple module (#1180) that is a reimplementation of circe-generic for Scala 2.13. It doesn't use Shapeless's Lazy and only contains a couple of custom macros (for the export mechanics). It passes the same tests as circe-generic, and should work as a drop-in replacement (but with much faster compilation and a much less complicated implementation). In future versions of circe this implementation will likely become circe-generic for 2.13, but first I want to give people a chance to try it out.

    No more Scala 2.11

    🚀 This is the first circe release that drops Scala 2.11 support (#1176). If you're still on 2.11, sorry, you need to fix that.

    Instances for literal types

    👍 Encoder and decoder instances for literal types are now available in circe-core on Scala 2.13 (#1191). Previously these instances were available via circe-literal, but now they can be implemented without macros, and now SIP-23 syntax is available to everyone, so I think it makes sense to support them without extra modules or imports.

    Cursor API clean-up

    🚚 A bunch of cursor operations have been removed or deprecated (#1186). These changes should affect very few users, but if they break your code, please open an issue or let us know in the Gitter channel.

    Other stuff

    • 🐎 There are a few runtime performance improvements (#1190); in particular map decoding should be faster.
    • 🚀 This release reinstates a companion object in circe-jawn that was removed in 0.12.0-M3 (#1167).

    PSA for Scala.js users

    Starting with 0.12.0-M3, anyone using circe on Scala.js needs to bring their own java.time implementation. Since publishing the last milestone, I put together a minimal java.time "implementation" that eliminates the compile-time linking errors. The advantage over a real java.time implementation for Scala.js is that you avoid a few megabytes of dependencies; the disadvantage is that if you try to do anything with java.time types, your program might compile but fail at runtime.

  • v0.12.0-RC4

    August 27, 2019

    🚀 This release updates the Cats version to 2.0.0-RC2. It also includes a few minor consistency-related changes, including new codecForEither, codecForValidated, and codecForEnumeration methods (#1232).

    Also, circe-generic-simple is back for 2.13 (I accidentally omitted it in 0.12.0-RC3), with a few minor changes (#1231).