All Versions
Latest Version
Avg Release Cycle
90 days
Latest Release
206 days ago

Changelog History
Page 1

  • v1.0.0

    January 18, 2020
  • v1.0.0-RC4

    January 17, 2020

    🚀 This release includes two minor changes since 1.0.0-RC3 (#223 and #226), one of which is technically a breaking change, although the breakage does not affect any user Scala code.

    🚀 I'm only publishing this release candidate to simplify some last-minute testing, and we are still planning to release 1.0.0 this weekend.

  • v1.0.0-RC3

    January 11, 2020

    🚀 This release includes a fix by Daniel Strittmatter for a bug that resulted in invalid Unicode escape sequences in JSON strings being accepted by the parser (see #202 for details). This fix has also been backported to 0.14.x in 0.14.3.

    It also includes a fix for a potential denial-of-service-attack vulnerability in jawn-ast (#221), reported by Andriy Plokhotnyuk in #220.

    🚀 There is one major set of breaking changes since 1.0.0-RC2 (#219), and a couple of small ones (see #214 and #218). We'll provide more information about migrating from 0.14.x in the 1.0.0 final release notes; in the meantime feel free to ask questions about updating in the Gitter channel.

    🚀 This is the first release that is cross-built for Dotty (specifically 0.21.0-RC1), although it isn't published for Dotty, since our goal is primarily to make sure that we're not doing anything that will be difficult to migrate to Scala 3. It should be possible to use the Scala 2 artifacts with any Dotty version via withDottyCompat. See #214 for the changes that were necessary to set up Dotty cross-building.

    🚀 We've dropped support for Scala 2.11 in this release (see #217 for discussion). This release also updates the Play JSON version for the Play support module from 2.7.4 to 2.8.1 (#216).

    If no major issues come up before then, we will publish Jawn 1.0.0 in one week (18 January 2020).

  • v1.0.0-RC2

    November 07, 2019

    🚀 This release candidate is identical to 1.0.0-RC1 except for some upcasts that are necessary to avoid an issue with method signatures in ByteBuffer that changed between Java 8 and 9, resulting in NoSuchMethodError exceptions on JVM 8.

  • v1.0.0-RC1

    November 07, 2019

    🚀 Note: please see 1.0.0-RC2, which fixes an issue that affects 1.0.0-RC1 on JVM 8.

    🚀 This release includes several small API changes that we wanted to make before guaranteeing longer-term binary compatibility in 1.0.0:

    • ✂ Remove vars from public ChannelParser API (#197)
    • ✂ Remove CharBuilder (#194)
    • 👉 Use non-empty representation of stack (#196)

    🏗 It also drops the support modules for Argonaut (because Argonaut maintains its own argonaut-jawn module) and Rojoma (because it complicates the build and doesn't seem to be widely used; it could be relocated to a separate repository if there's interest). See #162 and #165 for discussion.

    🚀 We'll publish this release candidate as 1.0.0 if no major issues are found in the next few weeks.

  • v0.14.3

    November 11, 2019

    🚀 This release includes a fix by Daniel Strittmatter for a bug that resulted in invalid Unicode escape sequences in JSON strings being accepted by the parser:

    scala\> import org.typelevel.jawn.{NullFacade, Parser}import org.typelevel.jawn.{NullFacade, Parser} scala\> Parser.parseFromString("\"\\uFFFF\"")(NullFacade) // Should parse and does.res0: scala.util.Try[Unit] = Success(()) scala\> Parser.parseFromString("\"\\uGGGG\"")(NullFacade) // Shouldn't parse but does before 0.14.3.res1: scala.util.Try[Unit] = Success(()) scala\> Parser.parseFromString("\"\\uQQQQ\"")(NullFacade) // Shouldn't parse and doesn't.res2: scala.util.Try[Unit] = Failure(org.typelevel.jawn.ParseException: expected valid unicode escape got 'QQQQ"' (line 1, column 4))

    👀 See #202 for details.

    🚀 This release also updates the patch versions of the Play JSON and json4s dependencies for the relevant support modules. It is verified by MiMa to be binary compatible with previous 0.14.x releases.

  • v0.14.2

    April 27, 2019

    🚀 This release drops Scala 2.13.0-M5 support and introduces artifacts for 2.13.0-RC1, 2.13.0-RC2, 2.13.0-RC3, and 2.13.0 (although not all support modules are available for the latter two release candidates or 2.13.0). It also updates the versions of several support module dependencies, including patch updates for Argonaut and Json4s and a minor version update for Play JSON (which previously depended on 2.6.12 for Scala 2.11 and 2.12 and 2.7.0-RC2 for 2.13; all Scala versions now depend on Play JSON 2.7.3). The Rojoma modules are not included in this release, since Rojoma is not published for Scala 2.13 (they may be dropped entirely in the future; see #162).

    🚀 This release also includes an overhaul of Jawn's tests (by @non in #154) that replaces ScalaTest with a combination of pure ScalaCheck and Claimant.

    🚀 Overwise this release is identical to 0.14.1.

  • v0.14.1

    January 06, 2019

    🚀 This patch release fixes two minor bugs.

    📜 The first bug involves a change in 0.14.0 to the error message in some parsing exceptions, with an unnecessary quotation mark appearing in the reported context: e.g. control char (0) in string got '?"' instead of control char (0) in string got '?'. After the fix, the message now correctly includes only ellipses if needed (as introduced in 0.14.0).

    📜 The second bug resulted in the absorb method on AsyncParser not failing for some invalid inputs:

    scala\> import org.typelevel.jawn.{AsyncParser, NullFacade}import org.typelevel.jawn.{AsyncParser, NullFacade} scala\> val p = AsyncParser[Unit](AsyncParser.UnwrapArray) p: org.typelevel.jawn.AsyncParser[Unit] = org.typelevel.jawn.AsyncParser@3b623061 scala\> p.absorb("}")(NullFacade) res0: Either[org.typelevel.jawn.ParseException,Seq[Unit]] = Right(ArrayBuffer())

    Note that both the finish and finalAbsorb methods still fail appropriately in these cases, so the impact of the bug is likely to be small for most users. The fix reinstates the pre-0.14.0 behavior, where absorb fails fast on invalid input.

    🚀 This release also updates the dependencies of several modules, including Json4s (from 3.6.1 to 3.6.3), Play JSON (from 2.6.9 to 2.6.12), Rojoma (from 3.8.0 to 3.9.1), and Spray JSON (from 1.3.4 to 1.3.5). All changes are verified by MiMa to be binary compatible with 0.14.0.

  • v0.14.0

    December 17, 2018

    🚀 This release is the first published under the org.typelevel group ID and in the org.typelevel.jawn package. If you are updating from 0.13.x, you'll need to change both the artifact coordinates in your dependencies and the packages in imports and any other usages in your code.

    🛠 There are several bug fixes since 0.13:

    • 📜 The async parser no longer accepts empty strings ( #135).
    • 🛠 Leading whitespace can no longer cause the stack to overflow (#121, fixed in #135).
    • 🛠 Many error messages have been corrected or improved (e.g. #123, #124, #119, fixed in #127, #129, and #135 ).
    • 🚚 An unused resource file in jawn-parser has been removed (#125).
    • Bounds checking for Slice in jawn-util is more exact (#131).

    🚀 This release drops support for Scala 2.13.0-M4 and introduces support for 2.13.0-M5. It also updates the Json4s version for jawn-json4s from 3.5.4 to 3.6.1 and adds jawn-play for Scala 2.13 with a dependency on play-json 2.7.0-RC2 (note that the other jawn-play artifacts still depend on play-json 2.6).

    🚀 This release includes contributions from @non, @xuwei-k, @eed3si9n, @travisbrown, @rossabaker, and @dwijnand (the last four of whom are also new maintainers for the project).

  • v0.13.0

    July 23, 2018