This is an automated email from the ASF dual-hosted git repository. chaokunyang pushed a commit to branch release-1.7.1 in repository https://gitbox.apache.org/repos/asf/fory-site.git
commit 9323f10137aec463a5f85abb1b31b49de8bb7d75 Author: chaokunyang <[email protected]> AuthorDate: Fri Sep 4 14:26:00 2026 +0800 docs: announce Apache Fory 1.7.1 --- blog/2026-09-04-fory_1_7_1_released.md | 136 +++++++++++++++++++++++++++++++++ src/pages/download/index.md | 16 ++-- 2 files changed, 144 insertions(+), 8 deletions(-) diff --git a/blog/2026-09-04-fory_1_7_1_released.md b/blog/2026-09-04-fory_1_7_1_released.md new file mode 100644 index 00000000000..14cb6bcfae8 --- /dev/null +++ b/blog/2026-09-04-fory_1_7_1_released.md @@ -0,0 +1,136 @@ +--- +slug: fory_1_7_1_release +title: Fory v1.7.1 Released +description: "Fory 1.7.1 adds string output for 64-bit integers and makes Base64 the default JSON representation for byte arrays." +authors: [chaokunyang] +tags: [fory, java, json, javascript, xlang] +--- + +The Apache Fory team is pleased to announce the 1.7.1 release. This patch release improves Java +JSON interoperability, expands cross-language field tag IDs, and delivers correctness and +compatibility fixes across multiple runtimes. See the +[Getting Started](https://fory.apache.org/docs/start/) page to get the libraries for your platform. + +## Highlights + +- Java JSON can write 64-bit integer values as strings, helping applications preserve exact values + when JSON passes through JavaScript. +- Java JSON now writes byte arrays as Base64 strings by default, providing a more compact and + conventional representation for binary data. + +## JSON-Safe 64-Bit Integers + +JavaScript numbers cannot exactly represent every 64-bit integer. Fory JSON 1.7.1 adds the +`writeLongAsString` builder option so applications can emit Java `long` and `Long` values as quoted +decimal strings when data will pass through JavaScript or another number-limited consumer: + +```java +import org.apache.fory.json.ForyJson; + +ForyJson json = ForyJson.builder().writeLongAsString(true).build(); +String encoded = json.toJson(9_007_199_254_740_993L); + +assert encoded.equals("\"9007199254740993\""); +``` + +The option is disabled by default. It also applies to the supported Long-like wrappers and to +declared Long values inside arrays, collections, maps, and equivalent Scala and Kotlin containers. +Readers accept both quoted and unquoted integer tokens regardless of the writer setting. See the +[Java JSON object mapping guide](/docs/json/object-mapping) for the complete behavior. + +## Base64 Byte Arrays by Default + +Unannotated Java `byte[]` values now use quoted standard Base64 strings instead of JSON arrays of +decimal byte values. For example, the bytes `{1, -2, 3}` are written as `"Af4D"`. This matches the +usual JSON representation for binary data and reduces encoding and parsing overhead for +binary-heavy payloads. + +This is a default representation change from Fory 1.7.0. The Base64 reader does not accept the old +numeric-array representation. Applications that need to retain that representation can select it +for an exact field or getter: + +```java +import org.apache.fory.json.annotation.JsonByteArray; + +public final class Attachment { + @JsonByteArray(JsonByteArray.Format.ARRAY) + public byte[] content; +} +``` + +See the [JSON annotations guide](/docs/json/annotations) for `JsonByteArray` Base64 and +numeric-array mapping details. + +## Features + +- feat(xlang): expand field tag IDs to signed int32 by + [@chaokunyang](https://github.com/chaokunyang) in + [#3982](https://github.com/apache/fory/pull/3982) +- feat(json): support writing long values as strings by + [@chaokunyang](https://github.com/chaokunyang) in + [#4008](https://github.com/apache/fory/pull/4008) +- feat(json): encode byte arrays as Base64 JSON strings by default by + [@ingokegel](https://github.com/ingokegel) in + [#4012](https://github.com/apache/fory/pull/4012) + +## Bug Fixes + +- fix(ci): increase Android Gradle memory by [@chaokunyang](https://github.com/chaokunyang) in + [#3980](https://github.com/apache/fory/pull/3980) +- fix(xlang): close field tag validation gaps by + [@chaokunyang](https://github.com/chaokunyang) in + [#3984](https://github.com/apache/fory/pull/3984) +- test(java): shorten inherited tag test name by + [@chaokunyang](https://github.com/chaokunyang) in + [#3985](https://github.com/apache/fory/pull/3985) +- fix: harden low-level codec boundaries by [@chaokunyang](https://github.com/chaokunyang) in + [#3987](https://github.com/apache/fory/pull/3987) +- fix(go): preserve primitive map iteration across chunks by + [@chaokunyang](https://github.com/chaokunyang) in + [#3990](https://github.com/apache/fory/pull/3990) +- fix(js): avoid precision loss in negative varint64 fast path by + [@ayush00git](https://github.com/ayush00git) in + [#3992](https://github.com/apache/fory/pull/3992) +- fix(java): reuse local compatible type info by + [@chaokunyang](https://github.com/chaokunyang) in + [#4000](https://github.com/apache/fory/pull/4000) +- fix(kotlin): accept supported metadata versions by + [@chaokunyang](https://github.com/chaokunyang) in + [#4001](https://github.com/apache/fory/pull/4001) +- fix(javascript): use correct typemeta special chars by + [@ayush00git](https://github.com/ayush00git) in + [#3995](https://github.com/apache/fory/pull/3995) +- ci(kotlin): test Kotlin 2.4.10 on JDK 26 by + [@chaokunyang](https://github.com/chaokunyang) in + [#4002](https://github.com/apache/fory/pull/4002) +- fix(javascript): reserve writer capacity for write paths by + [@ayush00git](https://github.com/ayush00git) in + [#3994](https://github.com/apache/fory/pull/3994) +- fix(rust): correct send sync ownership by [@chaokunyang](https://github.com/chaokunyang) in + [#4003](https://github.com/apache/fory/pull/4003) +- fix(scala): support nested case classes in fory-json-scala by + [@pjfanning](https://github.com/pjfanning) in + [#4006](https://github.com/apache/fory/pull/4006) +- fix(javascript): underflow tiny float16 magnitudes to signed zero by + [@ayush00git](https://github.com/ayush00git) in + [#4004](https://github.com/apache/fory/pull/4004) +- fix(javascript): keep float64 precision for dynamic non-integer numbers by + [@ayush00git](https://github.com/ayush00git) in + [#4005](https://github.com/apache/fory/pull/4005) +- fix(javascript): round float16 values to nearest even by + [@chaokunyang](https://github.com/chaokunyang) in + [#4007](https://github.com/apache/fory/pull/4007) + +## Other Improvements + +- chore: improve Fory release skill by [@chaokunyang](https://github.com/chaokunyang) in + [#3979](https://github.com/apache/fory/pull/3979) +- chore: clean unnecessary buffer checks by [@chaokunyang](https://github.com/chaokunyang) in + [#3988](https://github.com/apache/fory/pull/3988) + +## New Contributors + +- [@ingokegel](https://github.com/ingokegel) made their first contribution in + [#4012](https://github.com/apache/fory/pull/4012) + +**Full Changelog**: [v1.7.0...v1.7.1](https://github.com/apache/fory/compare/v1.7.0...v1.7.1) diff --git a/src/pages/download/index.md b/src/pages/download/index.md index d5e6ada6fa2..e3a1a2f7691 100644 --- a/src/pages/download/index.md +++ b/src/pages/download/index.md @@ -9,11 +9,11 @@ For binary install, please see the Apache Fory™ [getting started](/docs/start/ ## The latest release -The latest source release is 1.7.0: +The latest source release is 1.7.1: -| Version | Date | Source | Release Notes | -| ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| 1.7.0 | 2026-08-28 | [source](https://www.apache.org/dyn/closer.lua/fory/1.7.0/apache-fory-1.7.0-src.tar.gz?action=download) [asc](https://downloads.apache.org/fory/1.7.0/apache-fory-1.7.0-src.tar.gz.asc) [sha512](https://downloads.apache.org/fory/1.7.0/apache-fory-1.7.0-src.tar.gz.sha512) | [release notes](https://github.com/apache/fory/releases/tag/v1.7.0) | +| Version | Date | Source | Release Notes | +| ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| 1.7.1 | 2026-09-04 | [source](https://www.apache.org/dyn/closer.lua/fory/1.7.1/apache-fory-1.7.1-src.tar.gz?action=download) [asc](https://downloads.apache.org/fory/1.7.1/apache-fory-1.7.1-src.tar.gz.asc) [sha512](https://downloads.apache.org/fory/1.7.1/apache-fory-1.7.1-src.tar.gz.sha512) | [release notes](https://github.com/apache/fory/releases/tag/v1.7.1) | ## All archived releases @@ -31,13 +31,13 @@ These files are named after the files they relate to but have `.sha512/.asc` ext To verify the SHA digests, you need the `.tar.gz` file and its associated `.tar.gz.sha512` file. An example command: ```bash -sha512sum --check apache-fory-1.7.0-src.tar.gz.sha512 +sha512sum --check apache-fory-1.7.1-src.tar.gz.sha512 ``` It should output something like: ```bash -apache-fory-1.7.0-src.tar.gz: OK +apache-fory-1.7.1-src.tar.gz: OK ``` ### Verifying Signatures @@ -54,13 +54,13 @@ gpg --import KEYS Then you can verify signature: ```bash -gpg --verify apache-fory-1.7.0-src.tar.gz.asc apache-fory-1.7.0-src.tar.gz +gpg --verify apache-fory-1.7.1-src.tar.gz.asc apache-fory-1.7.1-src.tar.gz ``` If something like the following appears, it means the signature is correct: ```bash -gpg: Signature made Tue Aug 25 18:38:25 2026 CST +gpg: Signature made Tue Sep 01 11:19:44 2026 CST gpg: using RSA key 1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4 gpg: Good signature from "chaokunyang (CODE SIGNING KEY) <[email protected]>" [unknown] ``` --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
