All Versions
18
Latest Version
Avg Release Cycle
98 days
Latest Release
627 days ago

Changelog History
Page 1

  • v1.0.2 Changes

    November 25, 2020
    • Implement end indexes for character sequences (#269)
  • v1.0.1 Changes

    November 12, 2020

    Jawn 1.0.1 is identical to 1.0.0, with two exceptions:

    • โฌ†๏ธ bumped versions in the support modules (json4s, play-json, spray-json)
    • ๐Ÿ‘Œ support for Scala 3.0.0-M1
  • v1.0.0

    January 18, 2020
  • v1.0.0-RC4 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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] = [email protected] 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.