You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e3ad01f
Browse filesBrowse the repository at this point in the historyBrowse files
refactor(macros): remove magnolia dependency for Scala 3, use native macros
Complete migration from magnolia to native Scala 3 macros in zio-json:
- Rewrite encoder with FieldEncoder abstraction, wire explicitNulls/explicitEmptyCollections
- Wire explicitEmptyCollections.decoding in decoder with missingValueDecoder pattern
- Add >64 field StringMatrix split support and ADT name distinctness validation
- Fix constructProduct for parameterless Scala 3 enum cases
- Fix encoder indent handling (indent_ for field values)
- Remove magnolia1_3 dependency from build.sbt
- Split platform-specific test files into scala-2.x/scala-3.x for cross-compilation
- Create test-data subproject for data model files (fixes cyclic macro deps)
- Bump -Xss to 8M in .jvmopts and CI (native macro inline expansion needs more stack)
- Add mima binary compat filters for removed magnolia internals (pre-1.0)
- Fix benchmark imports for relocated TestUtils
Copy file name to clipboardExpand all lines: .github/workflows/ci.yml
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
name: CI
2
2
3
3
env:
4
-
JDK_JAVA_OPTIONS: -XX:+PrintCommandLineFlags -Xms6G -Xmx6G -Xss4M -XX:+UseG1GC -XX:ReservedCodeCacheSize=512M -XX:NonProfiledCodeHeapSize=256M # JDK_JAVA_OPTIONS is _the_ env. variable to use for modern Java
JDK_JAVA_OPTIONS: -XX:+PrintCommandLineFlags -Xms6G -Xmx6G -Xss8M -XX:+UseG1GC -XX:ReservedCodeCacheSize=512M -XX:NonProfiledCodeHeapSize=256M # JDK_JAVA_OPTIONS is _the_ env. variable to use for modern Java
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -171,7 +171,7 @@ High **performance** is achieved by decoding JSON directly from the input source
171
171
172
172
Best in class **security** is achieved with an aggressive *early exit* strategy that avoids costly stack traces, even when parsing malformed numbers. Malicious (and badly formed) payloads are rejected before finishing reading.
173
173
174
-
**Fast compilation** and **future-proofing** is possible thanks to [Magnolia](https://propensive.com/opensource/magnolia/) which allows us to generate boilerplate in a way that will survive the exodus to Scala 3. `zio-json` is internally implemented using a [`java.io.Reader`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Reader.html) / [`java.io.Writer`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Writer.html)-like interface, which is making a comeback to center stage in Loom.
174
+
**Fast compilation** and **future-proofing**: For Scala 2, derivation uses [Magnolia](https://propensive.com/opensource/magnolia/). For Scala 3, derivation uses native Scala 3 macros. `zio-json` is internally implemented using a [`java.io.Reader`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Reader.html) / [`java.io.Writer`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Writer.html)-like interface, which is making a comeback to center stage in Loom.
175
175
176
176
**Simplicity** is achieved by using well-known software patterns and avoiding bloat. The only requirement to use this library is to know about Scala's encoding of typeclasses, described in [Functional Programming for Mortals](https://leanpub.com/fpmortals/read#leanpub-auto-functionality).
For cross-platform projects with Scala.js and Scala Native need to replace `%%` operator by `%%%`,
35
-
and optionally when using `java.time.ZoneId` and `java.time.ZonedDateTime` types need to add
34
+
For cross-platform projects with Scala.js and Scala Native need to replace `%%` operator by `%%%`,
35
+
and optionally when using `java.time.ZoneId` and `java.time.ZonedDateTime` types need to add
36
36
the dependency on the latest version of Timezone DB:
37
37
38
38
```scala
@@ -269,7 +269,7 @@ Extreme **performance** is achieved by decoding JSON directly from the input sou
269
269
270
270
Best in class **security** is achieved with an aggressive *early exit* strategy that avoids costly stack traces, even when parsing malformed numbers. Malicious (and badly formed) payloads are rejected before finishing reading.
271
271
272
-
**Fast compilation** and **future-proofing** is possible thanks to [Magnolia](https://propensive.com/opensource/magnolia/) which allows us to generate boilerplate in a way that will survive the exodus to Scala 3. `zio-json` is internally implemented using a [`java.io.Reader`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Reader.html) / [`java.io.Writer`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Writer.html)-like interface, which is making a comeback to center stage in Loom.
272
+
**Fast compilation** and **future-proofing**: For Scala 2, derivation uses [Magnolia](https://propensive.com/opensource/magnolia/). For Scala 3, derivation uses native Scala 3 macros. `zio-json` is internally implemented using a [`java.io.Reader`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Reader.html) / [`java.io.Writer`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/Writer.html)-like interface, which is making a comeback to center stage in Loom.
273
273
274
274
**Simplicity** is achieved by using well-known software patterns and avoiding bloat. The only requirement to use this library is to know about Scala's encoding of typeclasses, described in [Functional Programming for Mortals](https://leanpub.com/fpmortals/read#leanpub-auto-functionality).
0 commit comments