You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fory.apache.org by ch...@apache.org on 2026/08/31 03:43:18 UTC

(fory-site) branch release_fory_1.7 created (now f0074ea8d67)

This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a change to branch release_fory_1.7
in repository https://gitbox.apache.org/repos/asf/fory-site.git


      at f0074ea8d67 docs: publish the 1.7 documentation snapshot

This branch includes the following new commits:

     new c49f3cc62ea docs: announce Apache Fory 1.7.0
     new 65c527655e5 docs(zh): translate Fory 1.7.0 release updates
     new f0074ea8d67 docs: publish the 1.7 documentation snapshot

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fory.apache.org
For additional commands, e-mail: commits-help@fory.apache.org


(fory-site) 02/03: docs(zh): translate Fory 1.7.0 release updates

Posted by ch...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch release_fory_1.7
in repository https://gitbox.apache.org/repos/asf/fory-site.git

commit 65c527655e58512e8461796acd7cb7d89550924e
Author: chaokunyang <sh...@gmail.com>
AuthorDate: Mon Aug 31 11:41:23 2026 +0800

    docs(zh): translate Fory 1.7.0 release updates
---
 .../2026-08-28-fory_1_7_0_released.md              | 178 +++++++++++++
 .../current/benchmarks/index.md                    |   4 +
 .../current/benchmarks/json/kotlin/README.md       |  10 +
 .../current/benchmarks/json/scala/README.md        |  41 +++
 .../current/compiler/build-integration.md          |   2 +-
 .../current/compiler/cli.md                        |  27 +-
 .../current/compiler/flatbuffers-idl.md            |   5 +-
 .../current/compiler/generated-code/swift.md       |   6 +
 .../current/compiler/index.md                      |  11 +-
 .../current/compiler/schema-idl.md                 |  21 +-
 .../current/grpc/csharp.md                         |   4 +-
 .../current/grpc/dart.md                           |   2 +-
 .../current/grpc/index.md                          |  25 +-
 .../current/grpc/rust.md                           |   2 +-
 .../current/grpc/swift.md                          | 188 ++++++++++++++
 .../current/index.md                               |  16 +-
 .../current/introduction/choose-a-format.md        |  16 +-
 .../current/introduction/support-matrix.md         |  16 +-
 .../current/json/android.md                        |  56 +++-
 .../current/json/annotations.md                    |  67 +++--
 .../current/json/custom-codecs.md                  |  53 +++-
 .../current/json/getting-started.md                | 108 +++++++-
 .../current/json/graalvm.md                        |  41 ++-
 .../current/json/index.md                          |  27 +-
 .../current/json/kotlin.md                         | 283 +++++++++++++++++++++
 .../current/json/modules.md                        | 105 ++++++++
 .../current/json/object-mapping.md                 |  53 ++--
 .../current/json/scala.md                          | 211 +++++++++++++++
 .../current/json/security.md                       |  22 +-
 .../current/json/troubleshooting.md                |  39 +--
 .../current/object-serialization/cpp/index.md      |   8 +-
 .../object-serialization/cpp/schema-metadata.md    |   2 +-
 .../current/object-serialization/csharp/index.md   |   2 +-
 .../object-serialization/csharp/schema-metadata.md |   4 +-
 .../current/object-serialization/dart/index.md     |   2 +-
 .../object-serialization/dart/schema-metadata.md   |   2 +-
 .../object-serialization/go/schema-metadata.md     |   4 +-
 .../object-serialization/go/troubleshooting.md     |   9 +-
 .../object-serialization/java/configuration.md     |  62 ++---
 .../current/object-serialization/java/index.md     |   4 +-
 .../object-serialization/java/schema-evolution.md  |   4 +
 .../object-serialization/java/schema-metadata.md   |  15 +-
 .../javascript/schema-metadata.md                  |  16 ++
 .../current/object-serialization/kotlin/index.md   |   4 +-
 .../object-serialization/kotlin/schema-metadata.md |   2 +
 .../object-serialization/python/schema-metadata.md |  23 +-
 .../rust/basic-serialization.md                    |   2 +-
 .../current/object-serialization/rust/index.md     |   8 +-
 .../object-serialization/rust/schema-metadata.md   |   5 +-
 .../current/object-serialization/scala/index.md    |   2 +-
 .../object-serialization/scala/schema-metadata.md  |   2 +
 .../swift/basic-serialization.md                   |   2 +
 .../object-serialization/swift/configuration.md    |   3 +-
 .../current/object-serialization/swift/index.md    |   1 +
 .../object-serialization/swift/schema-metadata.md  |  15 ++
 .../current/object-serialization/swift/security.md |  12 +-
 .../current/row-format/java.md                     |   4 +-
 .../specification/java_serialization_spec.md       |  10 +-
 .../current/specification/row_format_spec.md       |   6 +-
 .../specification/xlang_implementation_guide.md    |  10 +-
 .../specification/xlang_serialization_spec.md      |  32 ++-
 .../current/start/cpp.md                           |   2 +-
 .../current/start/csharp.md                        |   2 +-
 .../current/start/dart.md                          |   2 +-
 .../current/start/go.md                            |   2 +-
 .../current/start/index.md                         |  14 +-
 .../current/start/java.md                          |   6 +-
 .../current/start/javascript.md                    |   4 +-
 .../current/start/kotlin.md                        |  37 ++-
 .../current/start/python.md                        |   2 +-
 .../current/start/rust.md                          |   2 +-
 .../current/start/scala.md                         |   2 +-
 .../current/start/swift.md                         |   4 +-
 .../download/index.md                              |  12 +-
 74 files changed, 1663 insertions(+), 344 deletions(-)

diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/2026-08-28-fory_1_7_0_released.md b/i18n/zh-CN/docusaurus-plugin-content-blog/2026-08-28-fory_1_7_0_released.md
new file mode 100644
index 00000000000..14298cda50d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-blog/2026-08-28-fory_1_7_0_released.md
@@ -0,0 +1,178 @@
+---
+slug: fory_1_7_0_release
+title: Apache Fory 1.7.0 正式发布
+description: "Fory 1.7.0 新增 Scala 和 Kotlin 的 JSON 支持,并为 JSON 数组和 NDJSON 流提供增量解码。"
+authors: [chaokunyang]
+tags: [fory, java, scala, kotlin, swift]
+---
+
+Apache Fory 团队很高兴地宣布 1.7.0 版本正式发布。本次发布包含 [26 个 PR](https://github.com/apache/fory/compare/v1.6.1...v1.7.0)。请访问[快速开始](https://fory.apache.org/zh-CN/docs/start/)页面,获取适用于您所用平台的库。
+
+## 亮点
+
+- 新增 Scala 2.13 和 Scala 3 的 Fory JSON 支持。
+- 新增 Kotlin 在 Android、JVM 和 GraalVM Native Image 上的 Fory JSON 支持。
+- 增强 GraalVM Native Image 上的 Fory JSON,默认启用构建期代码生成,并细化生成编解码器的缓存粒度。
+- 新增顶层数组和换行分隔 JSON(NDJSON)的增量流式解码,可从分块 UTF-8 输入中逐步处理值。
+- 扩展 Swift 平台支持,新增 visionOS、watchOS、tvOS 和 Linux,并新增 Swift gRPC 代码生成。
+
+## Scala JSON 支持
+
+Fory 1.7.0 为 Scala 2.13 和 Scala 3 引入 `fory-json-scala`。Scala 应用可使用 case class、构造函数默认值、`Option`、`Either`、元组、集合、Map 和值类读写标准 JSON。该模块支持 JVM 和 GraalVM Native Image。
+
+在 sbt 构建中添加 Scala JSON 模块:
+
+```sbt
+libraryDependencies += "org.apache.fory" %% "fory-json-scala" % "1.7.0"
+```
+
+通过 `ForyJsonScala.builder()` 创建可复用的 `ForyJson` 实例。缺失且有默认值的参数使用 Scala 编译器生成的构造函数默认值,因此不可变 case class 无需提供无参构造函数或可变字段:
+
+```scala
+import org.apache.fory.json.scala.ForyJsonScala
+
+case class Person(name: String, age: Int = 18, aliases: List[String] = Nil)
+
+val json = ForyJsonScala.builder().build()
+val person = json.fromJson("""{"name":"Ada"}""", classOf[Person])
+assert(person == Person("Ada", 18, Nil))
+
+val text = json.toJson(person)
+```
+
+Fory JSON 注解可用于 Scala 构造函数属性。Scala 2 的 `Enumeration` 值可通过 `JsonEnumeration` 保留所属枚举,包括集合和 Map 中的枚举值。在 Scala 3 上,`derives ScalaJsonCodec` 支持带参数分支的枚举,并可结合 `JsonSubTypes` 支持由应用声明允许子类型的 sealed 层次结构。
+
+参数化类型应使用完整的 `TypeRef`;Scala 值类型参数可能被擦除时,使用 `ScalaTypeRef`。支持的类型、注解和 Native Image 设置见 [Scala JSON 指南](/zh-CN/docs/json/scala)。
+
+## Kotlin JSON 支持
+
+新的 `fory-json-kotlin` 模块将 Kotlin 模型映射为标准 JSON,同时保留构造函数默认值、可空性、无符号类型、值类和泛型参数。它支持 JVM、Android API 26 及更新版本和 GraalVM Native Image,无需 `kotlin-reflect`。
+
+添加运行时依赖:
+
+```kotlin
+dependencies {
+  implementation("org.apache.fory:fory-json-kotlin:1.7.0")
+}
+```
+
+使用 `jsonTypeRef<T>()` 保留根值和嵌套值中的 Kotlin 类型信息。普通 Java 类型令牌无法表达所有 Kotlin 类型区别,例如可空集合元素,或降低为基本类型的值类:
+
+```kotlin
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+data class Account(
+  val id: ULong,
+  val name: String,
+  val nickname: String? = null,
+)
+
+val json = ForyJsonKotlin.builder().build()
+val accountType = jsonTypeRef<Account>()
+
+val account = json.fromJson("""{"id":7,"name":"Alice"}""", accountType)
+val text = json.toJson(account, accountType)
+```
+
+成员缺失时,如果构造函数提供默认值,就调用该默认值。显式 JSON `null` 按 Kotlin 声明进行检查,不会请求使用默认值。Fory 会调用模型构造函数,因此初始化和验证逻辑仍会执行。sealed 类和接口可通过 `JsonSubTypes` 声明一组封闭的逻辑子类型名。
+
+在 Android 上,运行时 JSON 代码生成被禁用。使用 R8 或 ProGuard 压缩 Kotlin 模型时,请启用 `fory-json-kotlin-ksp` 处理器,并为应用模型标注 `JsonType`,或为第三方目标声明精确的 `JsonMixin`。对于 Native Image,在可达的 `ForyJsonProvider` 配置中安装 `ForyJsonKotlin`,并确保所需模型和精确泛型绑定在构建时可达。设置方式和支持的配置见 [Kotlin JSON 指南](/zh-CN/docs/json/kotlin)、[Android 指南](/zh-CN/docs/json/android)和 [GraalVM Native Image 指南](/zh-CN/docs/json/graalvm)。
+
+## 增量 JSON 流式解码
+
+Fory JSON 现在可以随着 UTF-8 分块到达,逐步解码顶层数组或 NDJSON 流。应用无需缓存完整文档或等待整个流结束,即可处理每个完整元素或记录。分块通过 `ByteBuffer` 提供,边界可以位于一个 JSON 值的中间。
+
+对于一个顶层 JSON 数组,使用 `newArrayStreamDecoder`。每次 `decodeNext` 成功后,都可通过 `value()` 获取一个已解码元素:
+
+```java
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import org.apache.fory.json.ForyJson;
+import org.apache.fory.json.JsonStreamDecoder;
+
+public final class User {
+  public long id;
+  public String name;
+}
+
+ForyJson json = ForyJson.builder().build();
+JsonStreamDecoder<User> decoder =
+    json.newArrayStreamDecoder(User.class, 1024 * 1024);
+
+ByteBuffer[] chunks = {
+  ByteBuffer.wrap("[{\"id\":1,\"name\":\"Ada\"},".getBytes(StandardCharsets.UTF_8)),
+  ByteBuffer.wrap("{\"id\":2,\"name\":\"Al".getBytes(StandardCharsets.UTF_8)),
+  ByteBuffer.wrap("ice\"}]".getBytes(StandardCharsets.UTF_8))
+};
+
+for (ByteBuffer chunk : chunks) {
+  while (decoder.decodeNext(chunk)) {
+    User user = decoder.value();
+    System.out.println(user.id + ": " + user.name);
+  }
+}
+decoder.finish();
+```
+
+对于以 LF 或 CRLF 分隔的记录,使用 `newNdjsonStreamDecoder`。输入结束后调用 `finish()`,如果返回 `true`,还需消费其值;这样可以处理没有尾部换行符的最后一条记录。
+
+```java
+JsonStreamDecoder<User> decoder =
+    json.newNdjsonStreamDecoder(User.class, 1024 * 1024);
+
+ByteBuffer chunk = ByteBuffer.wrap(
+    ("{\"id\":1,\"name\":\"Ada\"}\n"
+        + "{\"id\":2,\"name\":\"Alice\"}").getBytes(StandardCharsets.UTF_8));
+while (decoder.decodeNext(chunk)) {
+  User user = decoder.value();
+  System.out.println(user.id + ": " + user.name);
+}
+if (decoder.finish()) {
+  User user = decoder.value();
+  System.out.println(user.id + ": " + user.name);
+}
+```
+
+提供下一个分块前,必须消费完当前分块。必需的 `maxValueBytes` 参数限制每个数组元素或每条 NDJSON 记录,而不是整个流。一个解码器只负责一个流,不具备线程安全性,完成或失败后不能复用。缓冲区归属、null 值和字节限制详情见[增量 JSON 流](/zh-CN/docs/json/getting-started#incremental-json-streams)。
+
+## 新功能
+
+- feat(scala): add json support for scala by @chaokunyang in https://github.com/apache/fory/pull/3934
+- feat(scala): add scala2 json enumeration annotation by @chaokunyang in https://github.com/apache/fory/pull/3935
+- perf(scala): streamline exact List JSON writes by @chaokunyang in https://github.com/apache/fory/pull/3936
+- feat(json): add Kotlin JSON support by @chaokunyang in https://github.com/apache/fory/pull/3937
+- ci: reduce Android Kotlin setup time by @chaokunyang in https://github.com/apache/fory/pull/3951
+- feat: harden deserialization paths by @chaokunyang in https://github.com/apache/fory/pull/3955
+- feat(java): add incremental JSON stream decoding by @chaokunyang in https://github.com/apache/fory/pull/3956
+- ci: isolate Scala snapshot dependencies by @chaokunyang in https://github.com/apache/fory/pull/3957
+- refactor(java): remove unbounded metadata decompression by @chaokunyang in https://github.com/apache/fory/pull/3958
+- feat(json): expose stream value limit errors by @chaokunyang in https://github.com/apache/fory/pull/3959
+- perf(java): optimize GraalVM JSON interpreted access by @chaokunyang in https://github.com/apache/fory/pull/3960
+- perf(json): add ordered field read fast path by @chaokunyang in https://github.com/apache/fory/pull/3962
+- feat(java): refactor java generated codec cache granularity by @chaokunyang in https://github.com/apache/fory/pull/3963
+- feat(java): parse quoted JSON scalar values by @chaokunyang in https://github.com/apache/fory/pull/3967
+- feat(java): add sealed interface json subtypes support by @chaokunyang in https://github.com/apache/fory/pull/3968
+- feat(compiler): Add grpc support for Swift by @yash-agarwa-l in https://github.com/apache/fory/pull/3776
+- feat(swift): support more platforms by @chaokunyang in https://github.com/apache/fory/pull/3973
+
+## 问题修复
+
+- fix(scala): target Java 8 bytecode for fory-scala by @KarasevRob in https://github.com/apache/fory/pull/3941
+- fix(scala): support Enumeration JSON on Scala 3 by @chaokunyang in https://github.com/apache/fory/pull/3952
+- ci: stabilize JVM snapshot publishing by @chaokunyang in https://github.com/apache/fory/pull/3953
+- fix: fix source release artifact by @chaokunyang in https://github.com/apache/fory/pull/3969
+
+## 其他改进
+
+- chore: Bump org.apache.logging.log4j:log4j-api from 2.25.4 to 2.25.5 in /java/fory-test-core by @dependabot[bot] in https://github.com/apache/fory/pull/3933
+- chore: update release version to 1.6.1 by @chaokunyang in https://github.com/apache/fory/pull/3938
+- ci: update sbt setup action by @chaokunyang in https://github.com/apache/fory/pull/3939
+- chore: upgrade scala dependencies by @pjfanning in https://github.com/apache/fory/pull/3943
+- docs: update jackson annotations license by @chaokunyang in https://github.com/apache/fory/pull/3944
+
+## 新贡献者
+
+- @KarasevRob 首次贡献见 https://github.com/apache/fory/pull/3941
+
+**完整变更日志**: https://github.com/apache/fory/compare/v1.6.1...v1.7.0
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/index.md
index d6536bc1542..69e136f3926 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/index.md
@@ -50,6 +50,10 @@ Java 基准测试使用 `docs/benchmarks/object-serialization/native/java` 中
 
 更多基准测试说明、原始数据和完整 Java benchmark README,请参阅 [Java 基准测试](object-serialization/native/java/README.md)。
 
+## Kotlin JSON 基准测试 {#kotlin-json-benchmark}
+
+Kotlin JSON 测试程序使用同一个不可变模型和 16 项 String/UTF-8 操作,对比 Fory JSON Kotlin、kotlinx.serialization、Moshi 和 Jackson Kotlin。测试负载与设置见 [Kotlin JSON 基准测试](json/kotlin/README.md)。
+
 ## Python 基准测试
 
 在对象和列表工作负载中,Fory Python 相比 `pickle` 和 Protobuf 展现出优秀性能。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/json/kotlin/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/json/kotlin/README.md
new file mode 100644
index 00000000000..968af92724e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/json/kotlin/README.md
@@ -0,0 +1,10 @@
+# Kotlin JSON 基准测试 {#kotlin-json-benchmarks}
+
+基准测试程序位于 [`benchmarks/kotlin`](https://github.com/apache/fory/tree/main/benchmarks/kotlin),对比 Fory JSON Kotlin、kotlinx.serialization、Moshi 和 Jackson Kotlin,采用以下设置:
+
+- 使用同一个不可变 `MediaContent` 模型,不提供公共无参构造函数;
+- 使用 SHA-256 为 `8faba2f57ab397f319aced5cf1e8411a76785557d4c7d1703ec9d540354310a1` 的 Eishay 测试数据;
+- 对每个库测试 String 序列化、UTF-8 字节序列化、String 反序列化和 UTF-8 字节反序列化;
+- 在一次标准 JMH 运行中执行全部 16 个方法;
+- 在计时范围外准备并保留声明类型的序列化器、适配器、读取器和写入器;
+- 计时前检查测试数据解码、自身输出往返,以及所有输出的 JSON 树等价性。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/json/scala/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/json/scala/README.md
new file mode 100644
index 00000000000..0b436a5e545
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/json/scala/README.md
@@ -0,0 +1,41 @@
+# Scala JSON 基准测试报告 {#scala-json-benchmark-report}
+
+本测试使用同一个不可变 Scala MediaContent 模型和 Eishay JSON 文档,对比 fory-json-scala、jsoniter-scala 和 Jackson Scala。String 组不包含 UTF-8 转换;UTF-8 组中各库均使用直接操作字节数组的 API。
+
+- 测试日期:`2026-08-14`
+- 源码提交:`588ad6ab355c4c23fa0a2e4f269a8c733cba7b01`
+- 平台:macOS-15.7.2-arm64-arm-64bit (arm64)
+- JDK:`26.0.1`
+- 虚拟机:`OpenJDK 64-Bit Server VM`
+- JMH:`1.37`
+- 预热:2 轮,每轮 `1 s`
+- 测量:2 轮,每轮 `1 s`
+- Fork 数:1;线程数:1
+- 聚合方式:3 次交替短运行的中位数;误差线表示各次运行之间的最大偏差
+- 模式:吞吐量,越高越好
+
+## String
+
+![Scala JSON String 基准测试吞吐量](string_throughput.png)
+
+## UTF-8 字节 {#utf-8-bytes}
+
+![Scala JSON UTF-8 字节基准测试吞吐量](utf8_bytes_throughput.png)
+
+## 结果 {#results}
+
+| 表示形式 | 操作 | fory-json-scala 次/秒 | jsoniter-scala 次/秒 | Jackson Scala 次/秒 | 最快 |
+| ------------- | ----------- | ----------------------: | ---------------------: | --------------------: | --------------- |
+| 字符串 | 序列化 | 6,760,588 | 2,748,997 | 1,955,855 | fory-json-scala |
+| 字符串 | 反序列化 | 3,771,280 | 2,350,297 | 960,362 | fory-json-scala |
+| UTF-8 字节 | 序列化 | 9,485,122 | 2,745,567 | 1,761,719 | fory-json-scala |
+| UTF-8 字节 | 反序列化 | 3,318,893 | 2,391,923 | 1,080,453 | fory-json-scala |
+
+## Fory 性能优势 {#fory-performance-advantage}
+
+| 表示形式 | 操作 | 相对 jsoniter-scala | 相对 Jackson Scala |
+| ------------- | ----------- | ----------------: | ---------------: |
+| 字符串 | 序列化 | 145.9% | 245.7% |
+| 字符串 | 反序列化 | 60.5% | 292.7% |
+| UTF-8 字节 | 序列化 | 245.5% | 438.4% |
+| UTF-8 字节 | 反序列化 | 38.8% | 207.2% |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/build-integration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/build-integration.md
index 523d221b0fd..e9af0bf8e06 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/build-integration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/build-integration.md
@@ -211,7 +211,7 @@ cc_library(
 
 ```yaml
 dependencies:
-  fory: ^1.6.1
+  fory: ^1.7.0
 
 dev_dependencies:
   build_runner: ^2.4.0
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/cli.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/cli.md
index c9e64b992a2..19f04b0624a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/cli.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/cli.md
@@ -130,21 +130,13 @@ foryc user.fdl order.fdl product.fdl --output ./generated
 foryc compiler/examples/service.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript
 ```
 
-**生成 Java、Python、Go、Rust、C++、C#、Dart、Scala、Kotlin 和 Node.js JavaScript gRPC 服务配套代码:**
+**生成 Java、Python、Go、Rust、C++、C#、Dart、Scala、Kotlin、Node.js JavaScript 和 Swift gRPC 配套服务代码:**
 
 ```bash
-foryc compiler/examples/service.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --cpp_out=./generated/cpp --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --grpc
+foryc compiler/examples/service.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --cpp_out=./generated/cpp --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --swift_out=./generated/swift --grpc
 ```
 
-生成的 gRPC 服务代码使用 Fory 序列化请求和响应载荷。Java 输出导入 grpc-java API,Python 输出默认使用
-`grpc.aio`,Go 输出导入 grpc-go,Rust 输出导入 `tonic` 和 `bytes`;
-C++ 输出包含 gRPC C++ 的 `grpcpp` 头文件,编译它的目标必须将生成代码目录加入 include 路径,
-并链接 `fory::serialization` 和 `gRPC::grpc++`。
-Scala 输出导入 grpc-java API;Kotlin 输出导入 grpc-java 和 grpc-kotlin API,并使用协程 stub。
-C# 输出导入 `Grpc.Core.Api` 类型,可以通过 `Grpc.AspNetCore` 等常规 .NET gRPC 包托管,
-也可以通过 `Grpc.Net.Client` 调用。Dart 输出导入 `package:grpc`。
-JavaScript 输出导入 `@grpc/grpc-js`。
-编译或运行这些生成服务文件的应用必须自行提供 gRPC 依赖。Fory 软件包不会为此功能引入强制 gRPC 依赖。
+生成的 gRPC 服务代码使用 Fory 序列化请求和响应体。Java 输出导入 grpc-java API,Python 输出默认使用 `grpc.aio`,Go 输出导入 grpc-go,Rust 输出导入 `tonic` 和 `bytes`。C++ 输出包含 gRPC C++ 的 `grpcpp` 头文件;编译这些文件的目标必须将生成目录加入头文件搜索路径,并链接 `fory::serialization` 和 `gRPC::grpc++`。Scala 输出导入 grpc-java API;Kotlin 输出导入 grpc-java 和 grpc-kotlin API,并使用协程 stub。C# 输出导入 `Grpc.Core.Api` 类型,可通过 `Grpc.AspNetCore` 等常规 .NET gRPC 包托管,或通过 `Grpc.Net.Client` 调用。Dart 输出导入 `package:grpc`,JavaScript 输出导入 `@grpc/grpc-js`。Swift 输出面向 grpc-swift 1.x,同时生成 `async`/`a [...]
 
 对于现有的同步 `grpcio` 应用,可使用以下命令生成同步 Python gRPC 配套代码:
 
@@ -390,12 +382,13 @@ generated/
         └── addressbook.swift
 ```
 
-- 每个 Schema 对应一个 `.swift` 文件
-- package 各段映射为嵌套 Swift 枚举(例如 `addressbook.*` -> `Addressbook.*`)
+- 每个 Schema 生成一个 `.swift` 文件
+- 包名各段映射为嵌套 Swift 枚举,例如 `addressbook.*` 映射为 `Addressbook.*`
 - 生成的消息使用 `@ForyStruct`,枚举使用 `@ForyEnum`,联合类型使用 `@ForyUnion`/`@ForyCase`
-- 联合类型生成为带关联载荷值的标签枚举
-- 每个 Schema 都包含 Schema 文件模块所有者和 `toBytes`/`fromBytes` 辅助函数
-- 生成的模块辅助函数会传递式安装导入的 Schema
+- 联合类型生成为携带关联载荷值的带标签枚举
+- 每个 Schema 包含一个 Schema 文件级模块及 `toBytes`/`fromBytes` 辅助方法
+- 生成的模块辅助方法会传递安装导入的 Schema
+- 使用 `--grpc` 时,在模型旁为每个服务生成一个面向 grpc-swift 1.x 的 `<ServiceName>Grpc.swift` 配套文件
 
 ### Dart
 
@@ -666,5 +659,5 @@ fory = "x.y.z"
 
 ```yaml
 dependencies:
-  fory: ^1.6.1
+  fory: ^1.7.0
 ```
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md
index 336c5bbbb06..4fa333e8f49 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md
@@ -118,10 +118,7 @@ message Container {
 
 ### 服务
 
-FlatBuffers `rpc_service` 定义会转换为 Fory 服务。使用 `--grpc` 时,编译器会为 Java、
-Python、Go、Rust、C#、Dart、Scala、Kotlin 和 JavaScript 等支持的输出生成 gRPC 服务
-配套代码。JavaScript 浏览器客户端使用 `--grpc-web` 生成。这些配套代码使用 Fory
-序列化请求和响应载荷。
+FlatBuffers 的 `rpc_service` 定义会转换为 Fory 服务。使用 `--grpc` 时,编译器会为 Java、Python、Go、Rust、C#、Swift、Dart、Scala、Kotlin 和 JavaScript 等受支持的输出生成 gRPC 配套服务代码。JavaScript 浏览器客户端使用 `--grpc-web` 生成。这些代码使用 Fory 序列化请求和响应载荷。
 
 ```fbs
 rpc_service SearchService {
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code/swift.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code/swift.md
index 2cefba1bf72..673083d0889 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code/swift.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code/swift.md
@@ -100,3 +100,9 @@ public enum ForyModule {
 
 对于没有显式 `[id=...]` 的 Schema,安装代码使用计算得到的数字 ID。如果设置了
 `option enable_auto_type_id = false;`,生成的代码使用基于名称的注册 API。
+
+当所有字段都支持时,生成的模型会声明 `Equatable`,但不会声明 `Sendable`。请以 Swift 5 语言模式编译;Swift 6 严格并发检查会拒绝将它们传递跨越隔离边界。
+
+## gRPC 配套服务代码 {#grpc-service-companions}
+
+使用 `--grpc` 时,Swift 为每个服务生成一个 `<Service>Grpc.swift`,包含 `<Base>Provider`、`<Base>AsyncProvider`、`<Base>AsyncClient` 和 `<Base>Metadata`,其中 `<Base>` 带有包名前缀。依赖、流式调用形式和使用方法见 [Swift gRPC](../../grpc/swift.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md
index 9cf8d2df648..9d43ce86cd1 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md
@@ -19,11 +19,7 @@ license: |
   limitations under the License.
 ---
 
-Fory IDL 是 Apache Fory 的 Schema 定义语言,可实现类型安全的跨语言序列化。只需定义
-一次数据结构,即可为 Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、
-Dart、Scala 和 Kotlin 生成原生数据结构代码。Fory IDL 还可以描述 RPC 服务;对于 Java、
-Python、Go、Rust、C++、C#、Dart、Scala、Kotlin 和 JavaScript,编译器可以生成使用 Fory
-序列化请求和响应载荷的 gRPC 服务配套代码。
+Fory IDL 是 Apache Fory 的 Schema 定义语言,用于实现类型安全的跨语言序列化。只需定义一次数据结构,即可为 Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala 和 Kotlin 生成原生数据结构代码。Fory IDL 也可描述 RPC 服务;编译器可为 Java、Python、Go、Rust、C++、C#、Swift、Dart、Scala、Kotlin 和 JavaScript 生成使用 Fory 序列化请求与响应载荷的 gRPC 配套服务代码。
 
 ## Schema 示例
 
@@ -86,11 +82,10 @@ service AnimalService {
 }
 ```
 
-使用以下命令生成 Java、Python、Go、Rust、C++、C#、Dart、Scala、Kotlin 和 JavaScript
-模型及 gRPC 服务配套代码:
+使用以下命令生成 Java、Python、Go、Rust、C++、C#、Swift、Dart、Scala、Kotlin 和 JavaScript 模型及 gRPC 配套服务代码:
 
 ```bash
-foryc animals.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --cpp_out=./generated/cpp --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --grpc
+foryc animals.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --cpp_out=./generated/cpp --csharp_out=./generated/csharp --swift_out=./generated/swift --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --grpc
 ```
 
 生成的服务代码使用常规 gRPC API,但请求和响应对象通过 Fory 序列化。各语言的依赖项、
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md
index 9c7a41357c2..675d4dc3b4b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md
@@ -408,7 +408,7 @@ message Payment {
    `kotlin_package`)
 2. Fory IDL package 声明(回退选项)
 
-**例子:**
+**示例:**
 
 ```protobuf
 package myapp.models;
@@ -899,10 +899,7 @@ union_field := ['repeated'] field_type IDENTIFIER '=' INTEGER [field_options] ';
 
 ## 服务定义 {#service-definition}
 
-服务用于在 Fory IDL 中定义 RPC 方法契约。服务定义是可选的:即使 Schema 包含服务,
-也仍会生成常规数据模型类型。只有为 Java、Python、Go、Rust、C#、Dart、Scala、Kotlin 或
-JavaScript 等受支持目标使用 `--grpc` 运行编译器时,才会额外生成 gRPC 服务代码。
-JavaScript 浏览器 gRPC-Web 客户端使用 `--grpc-web` 生成。
+服务在 Fory IDL 中定义 RPC 方法契约。服务是可选的:包含服务的 Schema 仍会生成常规数据模型类型;只有在编译器使用 `--grpc` 且输出语言受支持时,才生成 gRPC 服务代码,例如 Java、Python、Go、Rust、C#、Swift、Dart、Scala、Kotlin 和 JavaScript。JavaScript 浏览器 gRPC-Web 客户端使用 `--grpc-web` 生成。
 
 ```protobuf
 message GetPetRequest [id=200] {
@@ -964,6 +961,8 @@ rpc_method  := 'rpc' IDENTIFIER '(' ['stream'] named_type ')'
 field_type field_name = field_number;
 ```
 
+`field_number` 是字段 tag ID,必须在消息内唯一,并满足 `0 <= field_number < 2^29`(`0` 至 `536870911`)。已分配的编号应保持稳定;删除字段后应保留其编号,不要分配给其他字段。
+
 ### 带修饰符
 
 ```protobuf
@@ -1133,22 +1132,22 @@ Rust 中的 `Arc`。
 
 ## 字段编号
 
-每个字段必须有一个唯一的正整数标识符:
+每个字段都必须使用协议范围内唯一的 tag ID:
 
 ```protobuf
 message Example {
-    string first = 1;
-    string second = 2;
-    string third = 3;
+    string first = 0;
+    string second = 1;
+    string third = 2;
 }
 ```
 
 **规则和最佳实践:**
 
 - 消息中的数字必须是唯一的。
-- 数字必须是正整数。
+- 编号必须满足 `0 <= field_number < 2^29`(`0` 至 `536870911`)。
 - 允许有间隙,并且在删除字段时很有用。
-- 优先选择从 `1` 开始的顺序编号。
+- 建议连续编号。
 - 切勿将已删除的字段编号重复用于其他字段。
 
 ## 类型系统 {#type-system}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/csharp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/csharp.md
index a028be80942..90e47065b1f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/csharp.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/csharp.md
@@ -36,7 +36,7 @@ gRPC 客户端、服务基类、方法描述符、元数据、截止时间、取
 
 ```xml
 <ItemGroup>
-  <PackageReference Include="Apache.Fory" Version="1.6.1" />
+  <PackageReference Include="Apache.Fory" Version="1.7.0" />
   <PackageReference Include="Grpc.AspNetCore" Version="2.71.0" />
 </ItemGroup>
 ```
@@ -45,7 +45,7 @@ gRPC 客户端、服务基类、方法描述符、元数据、截止时间、取
 
 ```xml
 <ItemGroup>
-  <PackageReference Include="Apache.Fory" Version="1.6.1" />
+  <PackageReference Include="Apache.Fory" Version="1.7.0" />
   <PackageReference Include="Grpc.Core.Api" Version="2.71.0" />
   <PackageReference Include="Grpc.Net.Client" Version="2.71.0" />
 </ItemGroup>
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/dart.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/dart.md
index a61a8e8dccf..6990adafcb0 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/dart.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/dart.md
@@ -29,7 +29,7 @@ license: |
 
 ```yaml
 dependencies:
-  fory: ^1.6.1
+  fory: ^1.7.0
   grpc: ^4.0.0
 
 dev_dependencies:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/index.md
index 29964b99060..8a721ba8023 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/index.md
@@ -85,19 +85,18 @@ Fory 软件包不会将某个 gRPC 实现作为强制依赖。应用负责选择
 
 ## 语言指南
 
-Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Dart、Scala 和 Kotlin 均有相应的
-gRPC 配套代码文档。当前依赖和流式调用支持请参阅[支持矩阵](../introduction/support-matrix.md)
-以及所选语言页面。
+Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala 和 Kotlin 均提供 gRPC 配套代码文档。当前依赖及流式调用支持见[支持矩阵](../introduction/support-matrix.md)和相应语言页面。
 
-| 语言                  | 指南                                 |
+| 语言 | 指南 |
 | --------------------- | ------------------------------------ |
-| Java                  | [Java](java.md)                      |
-| Python                | [Python](python.md)                  |
-| C++                   | [C++](cpp.md)                        |
-| Go                    | [Go](go.md)                          |
-| Rust                  | [Rust](rust.md)                      |
+| Java | [Java](java.md) |
+| Python | [Python](python.md) |
+| C++ | [C++](cpp.md) |
+| Go | [Go](go.md) |
+| Rust | [Rust](rust.md) |
 | JavaScript/TypeScript | [Node.js 与 gRPC-Web](javascript.md) |
-| C#                    | [C#](csharp.md)                      |
-| Dart                  | [Dart](dart.md)                      |
-| Scala                 | [Scala](scala.md)                    |
-| Kotlin                | [Kotlin](kotlin.md)                  |
+| C# | [C#](csharp.md) |
+| Dart | [Dart](dart.md) |
+| Scala | [Scala](scala.md) |
+| Kotlin | [Kotlin](kotlin.md) |
+| Swift | [Swift](swift.md) |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/rust.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/rust.md
index e235b31bea5..b52738581d1 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/rust.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/rust.md
@@ -29,7 +29,7 @@ license: |
 
 ```toml
 [dependencies]
-fory = "1.6.1"
+fory = "1.7.0"
 bytes = "1"
 tonic = { version = "0.14", features = ["transport"] }
 tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/swift.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/swift.md
new file mode 100644
index 00000000000..b6a7b83bf99
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/grpc/swift.md
@@ -0,0 +1,188 @@
+---
+title: Swift gRPC
+sidebar_position: 14
+id: swift
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+Fory 可以为定义了服务的 Schema 生成 Swift gRPC 配套代码,提供常规 gRPC 服务 provider、客户端、方法描述和服务元数据;请求与响应对象使用 Fory 而非 protobuf 序列化。
+
+当 RPC 双方均从同一份 Fory IDL、protobuf IDL 或 FlatBuffers IDL 生成,且都接收 Fory 编码的消息体时,使用此模式。如果 API 需要供通用 protobuf 客户端、反射工具或要求 protobuf 字节的组件使用,应采用常规 protobuf gRPC 代码生成。
+
+配套代码面向 [grpc-swift](https://github.com/grpc/grpc-swift) 1.x。该版本线的平台最低要求与 Fory Swift 包一致(macOS 13、iOS 16);grpc-swift 2.x 的最低要求更高。
+
+## 添加依赖 {#add-dependencies}
+
+`Fory` 包不依赖 grpc-swift。请在编译或运行生成代码的包中添加 grpc-swift:
+
+```swift
+// Package.swift
+dependencies: [
+    .package(url: "https://github.com/apache/fory.git", exact: "$version"),
+    .package(url: "https://github.com/grpc/grpc-swift.git", from: "1.23.0"),
+],
+targets: [
+    .target(
+        name: "App",
+        dependencies: [
+            .product(name: "Fory", package: "fory"),
+            .product(name: "GRPC", package: "grpc-swift"),
+        ]
+    )
+]
+```
+
+## 定义服务 {#define-a-service}
+
+服务定义可以来自 Fory IDL、protobuf IDL 或 FlatBuffers `rpc_service` 定义。Fory IDL 服务如下所示:
+
+```protobuf
+package demo.greeter;
+
+message HelloRequest {
+  string name = 1;
+}
+
+message HelloReply {
+  string reply = 1;
+}
+
+service Greeter {
+  rpc SayHello (HelloRequest) returns (HelloReply);
+}
+```
+
+使用 `--grpc` 生成 Swift 模型和 gRPC 配套代码:
+
+```bash
+foryc service.fdl --swift_out=./Sources/App --grpc
+```
+
+对于此 Schema,Swift 生成器输出:
+
+| 文件 | 用途 |
+| ---------------------- | -------------------------------- |
+| `demo/greeter/greeter.swift` | Fory 模型类型和 `ForyModule` 辅助类型 |
+| `demo/greeter/GreeterGrpc.swift` | gRPC provider、客户端和服务元数据 |
+
+生成的 gRPC 符号带有包名前缀,因此上述 Schema 会生成 `Demo_Greeter_GreeterAsyncProvider`、`Demo_Greeter_GreeterAsyncClient` 和 `Demo_Greeter_GreeterProvider`。没有包名的 Schema 会省略此前缀,例如 `GreeterAsyncProvider`。
+
+## 实现服务器 {#implement-a-server}
+
+让类型实现生成的 `async`/`await` provider,并使用常规 grpc-swift `Server` 托管:
+
+```swift
+import Fory
+import GRPC
+import NIOPosix
+
+final class GreeterService: Demo_Greeter_GreeterAsyncProvider {
+  func sayHello(
+    request: Demo.Greeter.HelloRequest,
+    context: GRPCAsyncServerCallContext
+  ) async throws -> Demo.Greeter.HelloReply {
+    Demo.Greeter.HelloReply(reply: "Hello, " + request.name)
+  }
+}
+
+let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
+let server = try await Server.insecure(group: group)
+  .withServiceProviders([GreeterService()])
+  .bind(host: "127.0.0.1", port: 1234)
+  .get()
+```
+
+请求和响应类型由配套代码使用的生成 Schema 模块注册,服务端无需手动注册序列化器。对于不使用 `async`/`await` 的服务端,还会生成基于 `EventLoopFuture` 的 `Demo_Greeter_GreeterProvider`。
+
+## 创建客户端 {#create-a-client}
+
+通过 grpc-swift channel 使用生成的异步客户端:
+
+```swift
+import Fory
+import GRPC
+import NIOPosix
+
+let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
+let channel = try GRPCChannelPool.with(
+  target: .host("127.0.0.1", port: 1234),
+  transportSecurity: .plaintext,
+  eventLoopGroup: group)
+
+let client = Demo_Greeter_GreeterAsyncClient(channel: channel)
+let reply = try await client.sayHello(Demo.Greeter.HelloRequest(name: "Fory"))
+print(reply.reply)
+```
+
+## 流式 RPC {#streaming-rpcs}
+
+Fory 服务定义支持四种 gRPC 调用形式:
+
+```protobuf
+service Greeter {
+  rpc SayHello (HelloRequest) returns (HelloReply);
+  rpc LotsOfReplies (HelloRequest) returns (stream HelloReply);
+  rpc LotsOfGreetings (stream HelloRequest) returns (HelloReply);
+  rpc BidiHello (stream HelloRequest) returns (stream HelloReply);
+}
+```
+
+流式方法直接暴露请求和响应类型。provider 通过响应写入器(`send(_:)`)输出服务端响应,通过 `AsyncSequence` 接收客户端输入;客户端针对服务端流式响应返回 `AsyncSequence`:
+
+```swift
+// 服务端
+func lotsOfReplies(
+  request: Demo.Greeter.HelloRequest,
+  responseStream: Demo_Greeter_GreeterAsyncResponseStream<Demo.Greeter.HelloReply>,
+  context: GRPCAsyncServerCallContext
+) async throws {
+  try await responseStream.send(Demo.Greeter.HelloReply(reply: "Hi " + request.name))
+}
+
+// 客户端
+for try await reply in client.lotsOfReplies(Demo.Greeter.HelloRequest(name: "Fory")) {
+  print(reply.reply)
+}
+```
+
+## gRPC 运行时行为 {#grpc-runtime-behavior}
+
+生成的配套代码通过私有 `GRPCPayload` 包装类型携带 Fory 编码的字节。Swift `Fory` 实例只能由单线程使用,因此包装类型按 Schema 模块的配置和注册信息为每个线程创建一个 `Fory`,无需共享实例即可安全地执行并发 RPC。导入的请求和响应类型使用各自的命名空间,并通过所属模块传递注册,因此服务跨越导入边界时无需额外注册。
+
+## Swift 语言模式 {#swift-language-mode}
+
+请以 Swift 5 语言模式编译生成的配套代码(使用 `swift-tools-version:5.9`,或在 6.x 清单中为目标设置 `swiftLanguageMode(.v5)`)。grpc-swift 会在调用任务与事件循环之间传递每个请求和响应,因此编码包装类型要求载荷符合 `Sendable`,而生成的 Fory Swift 模型未声明此协议。此要求适用于所有调用形式,包括一元调用,并不限于流式调用。
+
+## 已知限制 {#known-limitations}
+
+仅生成 async/await 客户端。grpc-swift 的 `EventLoopFuture` 客户端返回以传输消息类型为参数的调用对象,这会暴露内部 Fory 包装类型,因此不生成该客户端。两种 provider(异步和 `EventLoopFuture`)都会生成。
+
+不生成拦截器。grpc-swift 拦截器以传输消息类型为参数,而该类型是内部 Fory 包装类型;生成拦截器钩子会暴露此包装类型。通用功能应通过自定义 channel 或服务端配置实现。
+
+RPC 名称必须能转换为合法的 Swift 成员名。编译器会拒绝仅包含下划线的 RPC 名称,因为其规范化结果 `_` 在 Swift 中用于丢弃值;也会拒绝 `handle`、`serviceName`、`channel` 和 `defaultCallOptions`,因为它们与生成的 provider 和客户端成员冲突。请在 Schema 中重命名这些 RPC。
+
+Swift 模型将每个包放在嵌套的 `enum` 命名空间下,因此两个共享顶层包名的 Schema(例如 `demo.shared` 和 `demo.greeter`)都会生成 `public enum Demo`。编译器会在写入文件前因顶层符号冲突而拒绝生成。这是模型生成的行为,并非 gRPC 特有,但也会影响跨这些包导入类型的服务。应使用不同的顶层包名,例如 `shared.models` 和 `greeter.api`。分别调用 `foryc` 并生成到不同 Swift 模块,仅对无关联的 Schema 有效,因为预检查会递归收集导入:编译 `demo.greeter` 时仍会将 `demo.shared` 纳入依赖图,即使后者已在另一次调用中生成,也会拒绝重复的 `Demo`。导入图中的顶层包名必须互不冲突。
+
+## 故障排查 {#troubleshooting}
+
+### 缺少 grpc-swift 类型 {#missing-grpc-swift-types}
+
+如果构建时找不到 `GRPCAsyncServerCallContext`、`Server` 或 `GRPCChannelPool`,请为编译生成代码的目标添加 grpc-swift 依赖及 `GRPC` product。
+
+### Protobuf 客户端无法解码服务 {#protobuf-clients-cannot-decode-the-service}
+
+生成的配套代码交换的是 Fory 编码的消息体,而不是 protobuf 字节,通用 protobuf 客户端无法解码。双方必须从同一份 Fory IDL 生成,并使用生成的 Fory 配套代码。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/index.md
index fcc11f19477..c8ece66bfa4 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/index.md
@@ -31,13 +31,13 @@ Schema 驱动的模型以及由 Fory 支持的 gRPC 服务。
 
 ## 功能
 
-| 功能              | 适用场景                               | 文档                                        |
-| ----------------- | -------------------------------------- | ------------------------------------------- |
-| 对象序列化        | 重建 xlang 或语言原生对象图            | [对象序列化](object-serialization/index.md) |
-| Row Format        | 随机和部分访问可信分析数据             | [行格式](row-format/index.md)               |
-| Fory JSON         | 将高吞吐量标准 JSON 映射到 Java 对象   | [Fory JSON](json/index.md)                  |
-| Fory IDL 与编译器 | 从共享 Schema 生成语言原生模型         | [编译器](compiler/index.md)                 |
-| Fory gRPC         | 生成用于编组 Fory 模型的 gRPC 配套代码 | [Fory gRPC](grpc/index.md)                  |
+| 功能 | 适用场景 | 文档 |
+| ----------------- | ------------------------------------------- | ------------------------------------------- |
+| 对象序列化 | 重建 xlang 或语言原生对象图 | [对象序列化](object-serialization/index.md) |
+| Row Format | 随机和部分访问可信分析数据 | [行格式](row-format/index.md) |
+| Fory JSON | 面向 Java、Kotlin、Scala 的高吞吐量标准 JSON | [Fory JSON](json/index.md) |
+| Fory IDL 与编译器 | 从共享 Schema 生成语言原生模型 | [编译器](compiler/index.md) |
+| Fory gRPC | 生成用于编组 Fory 模型的 gRPC 配套代码 | [Fory gRPC](grpc/index.md) |
 
 ## 语言指南
 
@@ -50,6 +50,8 @@ Schema 驱动的模型以及由 Fory 支持的 gRPC 服务。
 [Dart](object-serialization/dart/index.md)、[Scala](object-serialization/scala/index.md) 和
 [Kotlin](object-serialization/kotlin/index.md)。
 
+除了 Java API 文档,Fory JSON 还提供 [Kotlin](json/kotlin.md) 和 [Scala](json/scala.md) 语言指南。
+
 ## 参考与开发
 
 - 编码格式和类型系统详情仍位于独立的[规范](specification/xlang_serialization_spec.md)页面组中。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/choose-a-format.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/choose-a-format.md
index cdf96ea5c4f..8934b5fbad2 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/choose-a-format.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/choose-a-format.md
@@ -19,12 +19,12 @@ license: |
   limitations under the License.
 ---
 
-| 格式或模式    | 数据模型                    | 适用场景                             | 互操作范围                                                          | 入门文档                                       |
-| ------------- | --------------------------- | ------------------------------------ | ------------------------------------------------------------------- | ---------------------------------------------- |
-| Xlang 二进制  | 可移植对象图                | 数据需要跨语言传输                   | 受支持的 Fory 实现共享同一种编码格式                                 | [跨语言指南](../object-serialization/xlang.md) |
-| Native 二进制 | 语言原生对象图              | 生产端和消费端使用同一 Fory 实现家族 | 仅限一个 Fory 实现家族                                              | [对象序列化](../object-serialization/index.md) |
-| Row Format    | 可随机访问的二进制行        | 需要随机字段访问或分析场景的部分读取 | Standard Row 由 Java、Python、C++ 和 Rust 共享;Compact 仅支持 Java | [Row Format 指南](../row-format/index.md)      |
-| Fory JSON     | 映射到 Java 对象的标准 JSON | Java 应用需要高性能标准 JSON         | 标准 JSON 文本                                                      | [Fory JSON 指南](../json/index.md)             |
+| 格式或模式 | 数据模型 | 适用场景 | 互操作范围 | 入门文档 |
+| ------------- | ----------------------------- | ------------------------------------ | ------------------------------------------------------------------- | ---------------------------------------------- |
+| Xlang 二进制 | 可移植对象图 | 数据需要跨语言传输 | 受支持的 Fory 实现共享同一种编码格式 | [跨语言指南](../object-serialization/xlang.md) |
+| Native 二进制 | 语言原生对象图 | 生产端和消费端使用同一 Fory 实现家族 | 仅限一个 Fory 实现家族 | [对象序列化](../object-serialization/index.md) |
+| Row Format | 可随机访问的二进制行 | 需要随机字段访问或分析场景的部分读取 | Standard Row 由 Java、Python、C++ 和 Rust 共享;Compact 仅支持 Java | [Row Format 指南](../row-format/index.md) |
+| Fory JSON | 映射到 JVM 对象的标准 JSON | Java、Kotlin 或 Scala 应用需要标准 JSON | 标准 JSON 文本 | [Fory JSON 指南](../json/index.md) |
 
 Xlang 和 native 是对象序列化的两种并列模式,适用于接收端需要重建对象图的场景。Row Format
 和 Fory JSON 是独立格式,不是额外的对象序列化模式。
@@ -51,9 +51,7 @@ pickle 和 cloudpickle。
 
 ## 选择总结
 
-需要重建对象图时选择 xlang 或 native 模式。对于可信的分析数据,如果随机字段访问能带来
-收益,请选择 Row Format。Java 应用需要标准 JSON 时选择 Fory JSON。多个团队需要统一的
-Schema 优先契约时,请使用 Fory IDL 和编译器;它会生成使用相应 Fory 能力的模型。
+需要重建对象图时,选择 xlang 或 native 模式。对于受信任且需要随机字段访问的分析数据,选择 Row Format。Java、Kotlin 或 Scala 应用需要标准 JSON 时,选择 Fory JSON。多个团队需要共享以 Schema 为先的契约时,使用 Fory IDL 和编译器,它会生成使用相应 Fory 能力的模型。
 
 ## 相关能力
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/support-matrix.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/support-matrix.md
index d22f189c2de..fc376ca38e2 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/support-matrix.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/support-matrix.md
@@ -22,15 +22,15 @@ license: |
 选择能力前,请使用此矩阵确认文档所覆盖的 API。存在某个语言页面,并不表示该语言
 支持所有 Fory 能力。
 
-| 能力                | 已有文档的语言                                                                     | 互操作能力                             |
+| 能力 | 已有文档的语言 | 互操作能力 |
 | ------------------- | ---------------------------------------------------------------------------------- | -------------------------------------- |
-| Xlang 对象序列化    | Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala、Kotlin | 共享一种 xlang 编码格式                |
-| Native 对象序列化   | Java、Python、C++、Go、Rust、Scala、Kotlin                                         | 仅限一个 Fory 实现家族                 |
-| Standard Row Format | Java、Python、C++、Rust                                                            | 共享 Standard Row 布局                 |
-| Compact Row Format  | Java                                                                               | 仅供 Java 使用的紧凑布局               |
-| Fory JSON           | Java                                                                               | 标准 JSON 文本                         |
-| Fory 编译器输出     | Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala、Kotlin | 生成模型使用受支持的 Fory API          |
-| Fory gRPC           | Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Dart、Scala、Kotlin        | 对等端必须使用匹配的生成 Fory 服务契约 |
+| Xlang 对象序列化 | Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala、Kotlin | 共享一种 xlang 编码格式 |
+| Native 对象序列化 | Java、Python、C++、Go、Rust、Scala、Kotlin | 仅限一个 Fory 实现家族 |
+| Standard Row Format | Java、Python、C++、Rust | 共享 Standard Row 布局 |
+| Compact Row Format | Java | 仅供 Java 使用的紧凑布局 |
+| Fory JSON | Java、Kotlin、Scala | 标准 JSON 文本 |
+| Fory 编译器输出 | Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala、Kotlin | 生成模型使用受支持的 Fory API |
+| Fory gRPC | Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala、Kotlin | 对等端必须使用匹配的生成 Fory 服务契约 |
 
 [Android](../object-serialization/java/android.md) 和
 [GraalVM Native Image](../object-serialization/java/graalvm.md) 等平台限制,由相应的 Java
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/android.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/android.md
index 8e9c7fb4bd0..ca12aafd46f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/android.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/android.md
@@ -1,6 +1,6 @@
 ---
 title: Android
-sidebar_position: 6
+sidebar_position: 9
 id: android
 license: |
   Licensed to the Apache Software Foundation (ASF) under one or more
@@ -21,6 +21,8 @@ license: |
 
 从 Android API level 26 开始,Fory JSON 可通过常规的 `fory-json` artifact 支持普通类。运行时 JSON 代码生成和异步编译会被自动禁用,因此 `ForyJson.builder().build()` 会使用解释执行的对象映射器。
 
+Kotlin 应用使用常规 `fory-json-kotlin` 运行时。当 R8 或 ProGuard 可能重命名或移除 Kotlin 模型成员,或者 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes` 时,需要使用 Kotlin Symbol Processing(KSP)。
+
 ## 安装与 Codec 模型
 
 将 Fory JSON 添加到应用中:
@@ -31,6 +33,32 @@ dependencies {
 }
 ```
 
+对于 Kotlin,请使用 Kotlin 2.3.20 并添加 Kotlin JSON 运行时:
+
+```kotlin
+plugins {
+  kotlin("android") version "2.3.20"
+}
+
+dependencies {
+  implementation("org.apache.fory:fory-json-kotlin:${foryVersion}")
+}
+```
+
+如果应用启用 R8 或 ProGuard,或者 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes`,还需使用 KSP 2.3.8:
+
+```kotlin
+plugins {
+  id("com.google.devtools.ksp") version "2.3.8"
+}
+
+dependencies {
+  ksp("org.apache.fory:fory-json-kotlin-ksp:${foryVersion}")
+}
+```
+
+通过 `ForyJsonKotlin.builder()` 创建运行时。对于启用代码压缩的构建,请为每个必需的 Kotlin 源码模型标注 `@JsonType`。对于第三方 Kotlin 目标,应在应用源码中声明匹配该目标的 `@JsonMixin`。如果 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes`,还需使用 `fory-annotation-processor` 并在 JDK 17 或更新版本上编译。
+
 ## 自定义 Codec
 
 `@JsonCodec` 在 Android 和 JVM 上具有相同的声明行为。它支持完整值、直接的集合和数组元素、`Optional` 和 `AtomicReference` 的内容、Map 的键和值、普通 getter、setter 的值参数,以及 `JsonCreator` 参数:
@@ -54,7 +82,7 @@ public final class Invoice {
 
 子 Codec 只作用于一个直接层级。例如,`elementCodec` 在 `Money[][]` 上会处理每个 `Money[]`,而 `elementCodec` 在 `AtomicReferenceArray<Money>` 上会处理每个 `Money`。需要更深层的自定义行为时,请使用完整的 `value` Codec。
 
-## 生成的访问代码与 R8 规则
+## Java 生成访问代码与 R8 规则 {#java-generated-access-and-r8-rules}
 
 添加注解处理器,并使用 `JsonType` 标注应用的对象模型,以生成直接的字段、getter、setter、Record 构造函数、`JsonCreator` 和 `JsonValidator` 操作以及精确的 R8 规则:
 
@@ -99,19 +127,19 @@ ForyJson json =
     ForyJson.builder().registerMixin(ThirdPartyInvoiceMixin.class).build();
 ```
 
-使用 `fory-annotation-processor` 编译每个非空 Mixin 源。处理器会生成精确的 R8 规则,以及构建完成的 `ForyJson` 实例可使用的、特定于该 Mixin 与目标配对的操作。已注册的 Codec、有效的类型 Codec 和内置映射仍遵循其常规的 Codec 选择优先级。空 Mixin 不会生成任何输出。
+为 Java 目标编写的非空 Java 源码 Mixin 需通过 `fory-annotation-processor` 编译。注册的 Mixin 仅作用于其精确目标类型。已注册编解码器、有效类型编解码器和内置映射仍遵循常规选择优先级。
 
-Mixin 可以将 `JsonValidator` 放在一个 public abstract、无参数、返回 `void` 的方法上,该方法必须与目标类中的一个 public 方法完全匹配。生成的配对代码会直接调用该目标方法。目标类不需要仅为了 Mixin validator 而添加 `JsonType`。
+Mixin 可在与目标公共方法精确匹配的公共抽象无参 `void` 方法上标注 `JsonValidator`。目标无需仅为了 Mixin 验证器而标注 `JsonType`。
 
-目标类也不需要仅因为拥有 Mixin 而添加 `JsonType`。`JsonMixin` 本身就是该配对的处理器入口。如果目标类同时使用 `JsonType`,构建完成的 `ForyJson` 实例会为已注册的非空 Mixin 选择特定于该配对的 companion,而不是将 overlay 与目标类的直接 companion 组合起来。
+目标无需仅因使用 Mixin 而标注 `JsonType`。如果目标同时使用 `JsonType`,该 `ForyJson` 实例的有效注解仍由注册的 Mixin 定义。
 
-在一个构建完成的 `ForyJson` 实例中,一个明确的目标只能启用一个源。在 builder 上,针对该目标的后续注册会替换先前注册,`build()` 会对选定映射生成快照。处理器可以为多个候选源生成 artifact;构建完成的实例只使用最后注册的源。
+一个构建完成的 `ForyJson` 实例中,每个精确目标只能启用一个 Mixin 来源。在 builder 上后注册的同目标 Mixin 会替换此前的注册,`build()` 会冻结选定的映射。
 
-对于非空 Mixin,请使用处理器生成的 R8 规则,而不要使用宽泛的 package keep 规则。
+应使用 Fory 处理器,而不是宽泛的包级 keep 规则。纯 Java Mixin 配对需要 `fory-annotation-processor`;涉及 Kotlin 的配对需要 `fory-json-kotlin-ksp`。如果 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes`,则两个处理器都需要,并且必须在 JDK 17 或更新版本上编译。
 
 ## 基于反射的模型
 
-未使用 `JsonType` 的普通非 Record 类可以自行提供等效的精确规则,但声明了 `JsonValidator` 的类除外。直接 validator 需要 `JsonType` 生成的处理器调用;不要用反射规则替代它们。需要保留 Fory JSON 使用的每个模型构造函数、字段、方法、泛型签名、声明注解和参数注解,以及每个由注解选中的 Codec 的 public 无参数构造函数。对于没有 validator 的模型:
+未标注 `JsonType` 的普通非 Record 类可以自行提供等效的精确规则,但声明了 `JsonValidator` 的类除外。直接声明的验证器要求使用 `JsonType` 和 `fory-annotation-processor`,手写反射规则不足以支持。请保留 Fory JSON 使用的每个模型构造函数、字段、方法、泛型签名、声明注解和参数注解,以及每个通过注解选择的编解码器的公共无参构造函数。对于没有验证器的模型:
 
 ```proguard
 -keepattributes Signature,RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations
@@ -128,10 +156,16 @@ Mixin 可以将 `JsonValidator` 放在一个 public abstract、无参数、返
 
 同样的精确规则方法支持每一种 `JsonCodec` 成员,并不局限于完整值 Codec。普通类上的 Codec 选择不要求使用 `JsonType`。
 
-对于 `@JsonType` 模型,生成的操作和 R8 规则还会覆盖有效的 `JsonValidator` 方法、`JsonValue` 字段和有效方法、固定的 `JsonRawValue` 和 `JsonBase64` 字段及 getter、`JsonFormat` 日期/时间字段、它们的运行时注解,以及 Base64 Codec 构造函数。如果不使用 `@JsonType`,value、raw、Base64、format 和 Codec 注解仍可通过反射工作,但经过 release 混淆压缩的应用必须保留精确的被注解成员、注解属性和 Codec 构造函数本身。`JsonValue` 方法可以使用非 JavaBean 名称,因此其手动规则必须明确写出该方法名。`JsonFormat` 保持与 JVM 相同的直接字段和单层包装行为,包括 `timezone` 对 `Instant`、`ZonedDateTime` 和 `OffsetDateTime` 的支持。
+本节的反射规则适用于 Java 模型。Kotlin 模型使用 Kotlin JSON 模块;启用代码压缩的 Android 构建应使用 KSP,而不是编写宽泛的包级 keep 规则。
+
+Java `@JsonType` 模型支持有效的 `JsonValidator`、`JsonValue`、`JsonRawValue`、`JsonBase64` 和 `JsonFormat` 注解。未标注 `@JsonType` 时,这些注解仍可通过反射工作,但经过发布压缩的应用必须自行保留精确的注解成员、注解属性和编解码器构造函数。`JsonValue` 方法可以使用不符合 JavaBean 约定的名称,因此手写规则必须明确指定该方法。
+
+Kotlin 模型使用相同的有效注解。启用代码压缩时,请使用 KSP。`JsonFormat` 与 JVM 上一样支持直接字段和一层包装,包括为 `Instant`、`ZonedDateTime` 和 `OffsetDateTime` 指定 `timezone`。
+
+Android 支持为 Java 和 Kotlin sealed 层次结构推导 `JsonSubTypes`。Java sealed 推导需要 `fory-annotation-processor` 和 JDK 17 或更新版本;启用代码压缩的 Kotlin 模型需要 `fory-json-kotlin-ksp`。如果 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes`,即使未启用压缩,也需要两个处理器。推导仅检查 sealed 层次结构,不支持按包或类路径扫描子类型。
 
-Android Fory JSON 要求为普通可变类保留无参数构造函数;当 Android 反射可以使其可访问时,该构造函数可以不是 public。由 `JsonCreator` 构造函数支持的类遵循常规 creator 规则。请保留所有通过反射使用的字段和方法;如果模型无法满足这些要求,请使用应用自定义 Codec。`JsonUnwrapped` 通过各自正常的属性和构造路径支持可变类、由 creator 支持的类和 Record。当包含它的模型及其 unwrapped 子对象都使用 `JsonType` 时,它们生成的 companion 会提供这些操作。
+Android Fory JSON 要求普通可变类保留无参构造函数;当 Android 反射能够使其可访问时,该构造函数可以不是公共的。通过 `JsonCreator` 构造的类遵循常规 creator 规则。应保留反射使用的每个字段和方法;模型无法满足这些要求时,应使用应用自定义编解码器。`JsonUnwrapped` 通过常规属性和构造路径支持可变类、creator 构造类及 Record。包含模型与每个展开的子模型均需满足常规 `JsonType` 要求。启用代码压缩的 Kotlin 构建需为每个必需模型添加注解并启用 KSP。
 
 ## Record
 
-经过 Android desugaring 的 Record 需要由直接的 `@JsonType` 声明或已编译的精确 `@JsonMixin` 配对生成处理器操作。仅靠手动 R8 规则无法重建 Record component 的顺序,因为 Android 不提供 Java Record 反射 API。这也适用于完整表示形式为 `JsonValue` String 的 Record:生成的 companion 会识别传播的 component accessor,并直接调用带注解的单 String canonical constructor。生成的子 Codec 与 JVM 上一样只作用于一个层级。`JsonUnwrapped` 路径中的每个 Record 都需要自己的直接 `JsonType` 声明或已编译的精确 `JsonMixin` 配对。对于更深层的嵌套行为,请使用完整值 Codec。
+经过 Android 脱糖处理的 Record 必须直接声明 `@JsonType`,或使用经 `fory-annotation-processor` 处理的精确 `@JsonMixin`。仅有手写 R8 规则不够,因为 Android 不提供 Java Record 反射 API。此要求也适用于完整表示为 `JsonValue` 字符串的 Record。`JsonUnwrapped` 路径中的每个 Record 都需要自己的直接 `JsonType` 声明或已处理的精确 `JsonMixin`。子编解码器与 JVM 上一样仅作用于一层;更深层的嵌套行为应使用完整值编解码器。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/annotations.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/annotations.md
index 78310d9b890..13671782f4e 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/annotations.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/annotations.md
@@ -19,20 +19,27 @@ license: |
   limitations under the License.
 ---
 
-Fory JSON 在 `org.apache.fory.json.annotation` 中提供以下映射和校验注解:
-`JsonAnyGetter`, `JsonAnyProperty`, `JsonAnySetter`, `JsonBase64`, `JsonCodec`, `JsonCreator`, `JsonFormat`,
-`JsonIgnore`, `JsonProperty`, `JsonPropertyOrder`, `JsonRawValue`, `JsonSubTypes`, `JsonUnwrapped`,
-`JsonValidator` 和 `JsonValue`。`JsonType` 是独立的构建时生成标记。这些都是 Fory JSON API,
-并非 Jackson、Gson 或用于兼容 Fory 二进制协议的注解。
-
-`JsonType` 要求注解处理器生成直接的属性与创建器操作,以及适用于 JVM 和 Android 的精确保留规则。
-该注解不可继承,因此在这些平台上,每个需要生成配套类且符合条件的具体模型都必须单独添加注解。
-直接标注的 `JsonValue` Record 也会为其值访问器和规范构造函数生成配套类。普通的未标注类仍可使用反射;
-在 Android 上,则需要应用自行编写精确的 R8 规则。经过 Android desugar 的 Record 必须通过直接声明
-`JsonType` 或编译后的精确 `JsonMixin` 配对获得处理器生成的操作。在 Native Image 之外,若直接标注的
-模型使用默认对象编解码器却缺少生成的配套类,则创建编解码器时会失败。GraalVM Native Image 会直接发现
-`JsonType`,不使用注解处理器的输出。有关平台工作流,请参阅 [GraalVM 指南](graalvm.md)和
-[Android 指南](android.md)。
+Fory JSON 在 `org.apache.fory.json.annotation` 中提供以下映射和验证注解:`JsonAnyGetter`、`JsonAnyProperty`、`JsonAnySetter`、`JsonBase64`、`JsonCodec`、`JsonCreator`、`JsonFormat`、`JsonIgnore`、`JsonProperty`、`JsonPropertyOrder`、`JsonRawValue`、`JsonSubTypes`、`JsonUnwrapped`、`JsonValidator` 和 `JsonValue`。`JsonType` 是独立的构建期模型标记。这些属于 Fory JSON API,不是 Jackson、Gson 或 Fory 二进制协议兼容注解。
+
+`JsonType` 不会被继承,因此每个需要参与平台构建流程且符合要求的具体模型都必须单独标注。Java 源码需要使用 `fory-annotation-processor`。未标注的普通 Java 类仍可使用反射;在 Android 上,它们需要由应用编写精确 R8 规则。经过 Android 脱糖处理的 Record 必须直接声明 `JsonType`,或使用已编译的精确 `JsonMixin` 配对。在 Native Image 之外,直接标注的 Java 模型如果使用默认对象编解码器却未运行注解处理器,会在创建编解码器时失败。
+
+Kotlin/JVM 模型使用 Kotlin JSON 模块。平台设置见 [Kotlin 指南](kotlin.md)、[GraalVM 指南](graalvm.md)和 [Android 指南](android.md)。
+
+## Kotlin 注解使用位置 {#kotlin-use-site-targets}
+
+Kotlin 注解与对应 Java 字段、访问器或选定构造函数参数合并为同一个逻辑属性。请显式指定使用位置,避免依赖 Kotlin 的默认目标策略:
+
+| Kotlin 使用位置 | 逻辑声明 |
+| ------------ | ---------------------------------------------- |
+| `@field:` | 后备字段 |
+| `@get:` | getter |
+| `@set:` | setter |
+| `@param:` | 选定构造函数的参数 |
+| `@setparam:` | 支持参数注解的 setter 值参数 |
+
+不支持 `@property:`,因为 Fory JSON 注解不以 Kotlin 专有的属性元数据为目标。`@setparam:JsonProperty` 会被拒绝,因为 setter 参数命名不属于 JSON 属性名契约。`@setparam:JsonIgnore`、`@setparam:JsonCodec` 和 `@setparam:JsonUnwrapped` 作用于对应的单参数 setter 属性,也直接支持有效的 `@set:JsonCodec`。
+
+当显式值一致时,`JsonProperty` 的各成员分别合并;名称、索引或包含策略冲突会导致失败。`JsonIgnore` 的读写方向按单调规则合并,重复的 `JsonCodec` 声明必须完全一致。Mixin 的替换或移除先于合并执行。符合 Kotlin 习惯的示例见 [Kotlin](kotlin.md#annotations-and-use-site-targets)。
 
 ## Mixin
 
@@ -85,8 +92,7 @@ abstract class QuotedMessageMixin {
 Mixin 提供的 `JsonCodec` 会成为目标的有效注解。精确的 `registerCodec` 注册仍具有更高优先级,
 而有效的类型注解优先于内置映射。
 
-在 Android 上,应使用 Fory 注解处理器编译非空 Mixin,以提供所需的生成操作和平台配置。
-GraalVM Native Image 会直接发现可达的 Mixin。详情请参阅上文链接的平台指南。
+在 Android 上,纯 Java Mixin 配对需要 `fory-annotation-processor`,涉及 Kotlin 的配对需要 `fory-json-kotlin-ksp`。Kotlin 源码中的 Mixin 若为 Java sealed 目标添加推导式 `JsonSubTypes`,则需要两个处理器,并且必须在 JDK 17 或更新版本上编译。详情见上方平台指南。
 
 ## `JsonProperty`
 
@@ -607,8 +613,7 @@ Mixin 方法采用与其他 Mixin 方法相同的精确方法签名匹配规则
 
 ## `JsonSubTypes`
 
-`JsonSubTypes` 为接口或抽象类声明完整且有限的子类型表。每个条目都有一个区分大小写的逻辑 JSON 名称,
-以及恰好一个可信 Java 类型来源:
+`JsonSubTypes` 为接口或抽象类声明有限的子类型表。非空 `value` 即完整的显式表,每个条目包含一个区分大小写的逻辑 JSON 名称,并且恰好指定一个可信 Java 类型来源:
 
 - `value = Circle.class`;或者
 - 使用精确 Java 二进制名称的 `className = "com.example.shape.Circle"`。
@@ -616,6 +621,23 @@ Mixin 方法采用与其他 Mixin 方法相同的精确方法签名匹配规则
 当 API JAR 不能依赖实现 JAR 时,`className` 很有用。构建子类型表时,它由固定的构建器类加载器解析。
 JSON 输入绝不会提供 Java 类名,也无法添加条目。不支持构建后的子类型注册和开放式子类型发现。
 
+将 `value` 留空即可推导 sealed 层次结构:
+
+```java
+@JsonSubTypes(property = "kind")
+public sealed interface Shape permits Circle, Polygon {}
+
+public final class Circle implements Shape {}
+
+public sealed interface Polygon extends Shape permits Rectangle {}
+
+public final class Rectangle implements Polygon {}
+```
+
+Fory 递归遍历 sealed 抽象类和接口,以源码中的简单名称添加每个具体类,包括本身也是 sealed 的具体类,并继续遍历具体 sealed 类的子类型。具体的 open 或 non-sealed 类仅作为一个精确条目加入,不包含其后代。开放抽象类或接口会导致推导失败,因为该分支不是封闭的。重复名称和逻辑名称哈希冲突也会失败。推导出的名称属于编码名称,不受属性命名策略转换。
+
+Java sealed 类型要求 JDK 17 或更新版本。在 Android 上,Java sealed 推导还需要 `fory-annotation-processor`,启用代码压缩的 Kotlin 模型需要 `fory-json-kotlin-ksp`。如果 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导,则需要两个处理器。Scala 3 sealed 类型使用 `derives ScalaJsonCodec` 或 builder 推导;不推导 Scala 2 sealed trait 和类。
+
 默认的 `PROPERTY` 包含方式会将内联判别字段写为第一个输出成员:
 
 ```java
@@ -677,9 +699,8 @@ public interface Shape {}
 两种包装形式都可以委托给精确的自定义子类型编解码器。三种包含方式都会将 null 写为普通 JSON null;
 唯一例外是编解码器优先级为声明的基类型选择了自定义完整值编解码器,从而替代该注解。
 
-基类型必须是接口或抽象类。每个条目都必须解析为唯一、具体且可赋值的类,序列化只接受表中精确列出的
-具体类。列出父类不会隐式允许其后代。该注解从声明的基类型本身读取,不会从其他带注解的接口或抽象类
-继承。读取器只接受已配置的包含方式;更改包含方式会改变编码格式,并且不存在兼容两种形式的读取回退。
+基类型必须是接口或抽象类。每个有效条目都必须是唯一、具体且可赋值给基类型的类;序列化仅接受表中的精确成员。在显式表中,列出父类不会隐式允许其后代。注解从声明的基类型自身读取,不会继承另一个已标注接口或抽象类上的注解。读取器仅接受已配置的包含形式;改变包含形式会改变编码格式,不提供同时读取两种形式的回退机制。
+
+选定的顶层基类型授权使用其推导出的静态 sealed 闭包。如果只应开放更小的子集,请使用显式表,或配置 `JsonTypeChecker` 过滤精确的推导候选类型。完整的推导闭包都必须通过固定禁用列表检查。显式表保持精确匹配,条目与 checker 冲突时会失败。
 
-在 GraalVM native-image 中,请使用 `JsonType` 标注基类型,并使用类字面量条目而不是 `className`
-条目。列出的类字面量子类型会自动注册。
+对于 GraalVM Native Image,如果基类型未通过 provider 根类型可达,请为其标注 `JsonType`。可达的 Java、Kotlin 和 Scala 3 sealed Schema 支持空表。显式表必须使用 class literal 条目,不能使用 `className`。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/custom-codecs.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/custom-codecs.md
index 82bc9ab99b0..d7e1a274030 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/custom-codecs.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/custom-codecs.md
@@ -71,6 +71,36 @@ ForyJson json =
         .build();
 ```
 
+对拥有专用读取/写入操作的类型,不允许精确 `registerCodec` 注册或精确类工厂注册:
+
+- `boolean`、`byte`、`short`、`int`、`long`、`float`、`double` 和 `char`,以及各自的装箱类型
+- `String`、`CharSequence`、`Number`、`BigInteger`、`BigDecimal` 和 `UUID`
+- `LocalDate`、`LocalTime`、`LocalDateTime`、`Instant`、`Duration`、`ZoneOffset`、`ZonedDateTime`、`Year`、`YearMonth`、`MonthDay`、`Period`、`OffsetTime` 和 `OffsetDateTime`
+- `byte[]`、`String[]` 和 `long[]`
+
+该限制仅匹配精确类型,不包括应用子类,也不禁用具体使用位置上的 `JsonCodec`、`JsonFormat` 或其他语义映射。如果这些类型的字段或参数需要不同表示,请使用上述机制。
+
+`ObjectCodec` 实例属于创建它的 resolver,不能直接注册。语言模块需要提供对象模型时,应使用精确的 `JsonCodecFactory`。
+
+当一个工厂负责一组声明类型或参数化类型时,使用 `JsonCodecFactory`:
+
+```java
+import org.apache.fory.json.JsonCodecFactory;
+
+JsonCodecFactory factory =
+    (type, resolver, runtimeType) ->
+        type.getRawType() == Money.class ? new MoneyCodec() : null;
+
+ForyJson json =
+    ForyJson.builder()
+        .withModule(context -> context.registerCodecFactory(factory))
+        .build();
+```
+
+可配置工厂必须重写 `factoryKey()`,返回一个确定性值,覆盖所有可能改变生成编解码器类、对象模型或生成操作的选项。默认的工厂类名仅适用于无配置工厂。
+
+仅当工厂在动态写入期间为值的实际类选择编解码器时,`runtimeType` 才为 `true`;声明的根类型和复合子类型收到的是 `false`。复合编解码器如果在构造后仍需此区分,必须保留该标志供后续 `resolveTypes` 调用使用,不能从 resolver 状态推断。
+
 外层属性仍控制其名称、忽略方向和 null 包含策略。如果 null 属性被省略,就不会调用值编解码器。
 如果属性会被输出,或者该值是数组元素、集合元素、Map 值、Optional 值或原子引用值,
 编解码器就会接收并负责处理 null。注册的实例会在并发操作之间共享,因此必须是线程安全的。
@@ -170,6 +200,25 @@ public final class InvoiceGroup {
 | `keyCodec`     | `Map<K, V>`                                       | `K` 对应的 JSON 成员名称 |
 | `valueCodec`   | `Map<K, V>`                                       | 直接的 `V` 值            |
 
+### Kotlin 类型使用位置 {#kotlin-occurrences}
+
+Kotlin 使用相同的编解码器注册机制和 `JsonCodec` 注解。请将属性注解放在显式支持的使用位置,例如:
+
+```kotlin
+import org.apache.fory.json.annotation.JsonCodec
+
+data class Ledger(
+  @field:JsonCodec(value = MoneyCodec::class)
+  val total: Money,
+  @field:JsonCodec(elementCodec = MoneyCodec::class)
+  val entries: List<Money>,
+)
+```
+
+完整值编解码器负责整个 JSON 值;子编解码器则保留标准数组、集合、Optional/原子类型或 Map 的外层表示。选定应用编解码器后,Kotlin 可空性仍是该类型使用位置的契约:对于非 null JSON token,编解码器必须返回精确的声明类型,并且不得为非空位置返回 null。
+
+无符号类型或符合条件的值类作为 Map 键时,无需注解即可使用内置成员名映射。如果键需要不同的带标签文本表示,请使用显式 `keyCodec` 或完整 Map 编解码器。精确的应用注册仍优先于 Kotlin 模块默认映射。
+
 自定义 Map 键编解码器负责在声明的键与 JSON 成员名称之间转换:
 
 ```java
@@ -250,9 +299,7 @@ Map 键是 JSON 对象成员名称,使用 `MapKeyCodec` 而不是 `JsonValueCo
 
 ## 编解码器构造与平台支持
 
-注解编解码器类必须是 public、具体的顶层类或静态嵌套类,并具有 public 无参构造函数。
-构建完成的 `ForyJson` 会在所有注解位置和并发操作之间共享同一个实例,因此该实例必须是
-线程安全的。如果完整值编解码器需要配置,请使用 `registerCodec(Target.class, instance)`。
+注解指定的编解码器类必须是公共、具体的顶层类或静态嵌套类,并拥有公共无参构造函数。构建后的 `ForyJson` 会在所有注解位置和并发操作之间共享同一个实例,因此该实例必须线程安全。对于允许注册的类型,如果完整值编解码器需要配置,请使用 `registerCodec(Target.class, instance)`。
 
 在 GraalVM Native Image 之外,具名 Java 模块必须将编解码器包导出或开放给
 `org.apache.fory.json`。Native Image 会在镜像构建期间准备注解编解码器的构造函数,
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/getting-started.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/getting-started.md
index 255ac2c67fb..96363f75e03 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/getting-started.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/getting-started.md
@@ -24,25 +24,63 @@ license: |
 Fory JSON 在标准 JDK、GraalVM Native Image 和 Android 上支持 Java 8 及更高版本。
 Java record 需要 Java 17 或更高版本。
 
-Fory JSON 已发布到 Maven Central。
+已发布的 Fory JSON 制品可从 Maven Central 获取,开发快照可从 Apache 快照仓库获取。以下仓库声明同时支持两者。所有 Fory 模块应使用依赖坐标中显示的同一版本。
 
 Maven:
 
 ```xml
+<repositories>
+  <repository>
+    <id>apache-snapshots</id>
+    <url>https://repository.apache.org/snapshots/</url>
+    <releases><enabled>false</enabled></releases>
+    <snapshots><enabled>true</enabled></snapshots>
+  </repository>
+</repositories>
+
 <dependency>
   <groupId>org.apache.fory</groupId>
   <artifactId>fory-json</artifactId>
-  <version>1.6.1</version>
+  <version>1.7.0</version>
 </dependency>
 ```
 
 Gradle:
 
 ```kotlin
-implementation("org.apache.fory:fory-json:1.6.1")
+repositories {
+  maven("https://repository.apache.org/snapshots/") {
+    mavenContent { snapshotsOnly() }
+  }
+  mavenCentral()
+}
+
+implementation("org.apache.fory:fory-json:1.7.0")
+```
+
+### Kotlin
+
+Kotlin/JVM 应用添加可选的 Kotlin JSON 运行时,并使用其统一 builder 入口:
+
+```kotlin title="build.gradle.kts"
+dependencies {
+  implementation("org.apache.fory:fory-json-kotlin:1.7.0")
+}
+```
+
+```kotlin
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+data class User(val id: Long, val name: String)
+
+val json = ForyJsonKotlin.builder().build()
+val userType = jsonTypeRef<User>()
+val text = json.toJson(User(7, "Alice"), userType)
+val decoded = json.fromJson(text, userType)
 ```
 
-同一应用中的所有 Fory 模块应使用相同版本。
+Kotlin 模块不需要 `kotlin-reflect`。在 Android 上,启用 R8 或 ProGuard 时,或 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes` 时,请添加 `fory-json-kotlin-ksp`。后一种情况还需要 `fory-annotation-processor` 和 JDK 17 或更新版本。GraalVM Native Image 使用常规 `@ForyJsonProvider` 流程。完整设置和 Kotlin 类型行为见 [Kotlin JSON 指南](kotlin.md)。
 
 ### JDK 25 及更高版本
 
@@ -58,7 +96,7 @@ implementation("org.apache.fory:fory-json:1.6.1")
 --add-opens=java.base/java.lang.invoke=org.apache.fory.core
 ```
 
-Fory JSON 的 JPMS 模块名是 `org.apache.fory.json`。
+Fory JSON 的 Java Platform Module System(JPMS)模块名为 `org.apache.fory.json`,Kotlin 集成模块名为 `org.apache.fory.json.kotlin`。
 
 ## 快速上手
 
@@ -105,22 +143,64 @@ public final class JsonExample {
 
 ## 读写 API
 
-Fory JSON 支持 String 和 UTF-8 字节的输入输出,目前不提供 `InputStream` 解析 API。
+Fory JSON 支持 String 输入/输出、UTF-8 字节输入/输出,以及通过 `ByteBuffer` 分块提供的增量 UTF-8 输入。目前不提供阻塞式 `InputStream` 解析 API。
 
-| 操作                 | 运行时类型                | 声明的 `Class`                  | 声明的 `TypeRef`                   |
-| -------------------- | ------------------------- | ------------------------------- | ---------------------------------- |
-| String 输出          | `toJson(value)`           | `toJson(value, type)`           | `toJson(value, typeRef)`           |
-| UTF-8 字节           | `toJsonBytes(value)`      | `toJsonBytes(value, type)`      | `toJsonBytes(value, typeRef)`      |
+| 操作 | 运行时类型 | 声明的 `Class` | 声明的 `TypeRef` |
+| -------------------- | ------------------------- | ---------------------------- | ------------------------------ |
+| String 输出 | `toJson(value)` | `toJson(value, type)` | `toJson(value, typeRef)` |
+| UTF-8 字节 | `toJsonBytes(value)` | `toJsonBytes(value, type)` | `toJsonBytes(value, typeRef)` |
 | UTF-8 `OutputStream` | `writeJsonTo(value, out)` | `writeJsonTo(value, type, out)` | `writeJsonTo(value, typeRef, out)` |
-| String 输入          | -                         | `fromJson(text, type)`          | `fromJson(text, typeRef)`          |
-| UTF-8 输入           | -                         | `fromJson(bytes, type)`         | `fromJson(bytes, typeRef)`         |
+| String 输入 | - | `fromJson(text, type)` | `fromJson(text, typeRef)` |
+| UTF-8 输入 | - | `fromJson(bytes, type)` | `fromJson(bytes, typeRef)` |
+| UTF-8 字节范围 | - | `fromJson(bytes, offset, length, type)` | `fromJson(bytes, offset, length, typeRef)` |
 
-每次 `fromJson` 调用只消费一个 JSON 值,并拒绝其后非空白内容。返回的 String 和字节数组
-与内部可复用缓冲区相互独立。
+每次 `fromJson` 调用恰好消费一个 JSON 值,并拒绝其后的非空白内容。字节范围重载只解析指定范围,忽略范围之前和之后的字节。返回的 String 和字节数组与内部可复用缓冲区相互独立。
 
 `writeJsonTo` 会缓冲完整的 UTF-8 文档,只执行一次 `OutputStream.write`,既不 flush 也不关闭
 调用方拥有的流。它是便捷输出 API,并非增量式 JSON 流式写入。I/O 失败会包装为 `ForyJsonException`。
 
+### 增量 JSON 流 {#incremental-json-streams}
+
+`JsonStreamDecoder` 可增量解码一个顶层 JSON 数组中的元素,或换行分隔的 JSON(NDJSON)记录。输入可以是任意边界的 UTF-8 `ByteBuffer` 分块;提供下一个分块之前,必须消费完当前分块:
+
+```java
+import java.nio.ByteBuffer;
+import org.apache.fory.json.ForyJson;
+import org.apache.fory.json.JsonStreamDecoder;
+
+ForyJson json = ForyJson.builder().build();
+JsonStreamDecoder<User> decoder =
+    json.newArrayStreamDecoder(User.class, 64 * 1024 * 1024);
+
+for (ByteBuffer chunk : chunks) {
+  while (decoder.decodeNext(chunk)) {
+    User user = decoder.value();
+    consume(user);
+  }
+}
+decoder.finish();
+```
+
+对于以 LF 或 CRLF 分隔的记录,使用 `newNdjsonStreamDecoder`。最后一条 NDJSON 记录可以没有行结束符;`finish()` 解码出该记录时返回 `true`:
+
+```java
+JsonStreamDecoder<User> decoder =
+    json.newNdjsonStreamDecoder(User.class, 64 * 1024 * 1024);
+
+for (ByteBuffer chunk : chunks) {
+  while (decoder.decodeNext(chunk)) {
+    consume(decoder.value());
+  }
+}
+if (decoder.finish()) {
+  consume(decoder.value());
+}
+```
+
+每次 `decodeNext` 调用最多返回一个值。返回 `true` 后,如果缓冲区仍有剩余字节,应继续传入同一缓冲区;返回 `false` 则表示该缓冲区已被消费至 limit。返回 `true` 且 `value() == null` 表示 JSON `null`。
+
+解码器推进传入缓冲区的 position,但不保留该缓冲区,也不改变其 limit 或字节序。支持堆缓冲区、直接缓冲区、切片和只读缓冲区。每个解码器只负责一个流,不具备线程安全性,并且在 `finish()` 或失败后不能复用。必需的 `maxValueBytes` 限制分别应用于每个数组元素或每条 NDJSON 记录,而不是整个流。对于数组,不计外层方括号、逗号和元素前跳过的空白,但计入元素后、逗号或右方括号前的空白。对于 NDJSON,除 LF 或 CRLF 行结束符外的每个字节都计入限制。纯空白行会被跳过,但超出限制的纯空白行仍会失败。
+
 ### 泛型类型
 
 根类型包含泛型参数时,请使用 `TypeRef`:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/graalvm.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/graalvm.md
index 14d495fa896..e430f668d6e 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/graalvm.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/graalvm.md
@@ -1,6 +1,6 @@
 ---
 title: GraalVM 原生镜像
-sidebar_position: 7
+sidebar_position: 10
 id: graalvm
 license: |
   Licensed to the Apache Software Foundation (ASF) under one or more
@@ -21,7 +21,7 @@ license: |
 
 ## 可达模型
 
-Fory JSON 拥有自己的 Native Image Feature,不使用 Fory 注解处理器。请为原生可执行文件读写的每个可达具体对象模型添加 `@JsonType`:
+Fory JSON 使用一个 Native Image Feature。Java 模型通过可达注解发现,Feature 不使用 Java 注解处理器。请为原生可执行文件需要读写的每个可达具体 Java 对象模型添加 `@JsonType`:
 
 ```java
 import org.apache.fory.json.ForyJson;
@@ -50,11 +50,15 @@ public class JsonExample {
 }
 ```
 
-这样就足以保证原生执行的正确性。构建镜像时,Fory JSON 会保留模型元数据,并准备其字段、属性、creator、record 和 `JsonAnySetter` 访问。因此在运行时,`ForyJson.builder().build()` 可以使用解释执行的 Codec,而无需应用提供反射配置、package export 或 open,也无需进行构建时初始化。
+这已足以支持正确的原生执行。构建镜像期间,Fory JSON 保留模型元数据,准备字段、属性、creator、Record 和 `JsonAnySetter` 的访问方式,并为默认配置下的可达模型生成编解码器。运行时,`ForyJson.builder().build()` 使用这些生成的编解码器;没有匹配的生成编解码器时回退到解释执行,无需应用提供反射配置、包 exports/opens 或构建期初始化。
+
+配置为构建期初始化的应用类可以在镜像堆中保留静态 `ForyJson`。如果运行时处理器数量可能与构建机器不同,请显式设置 `withConcurrencyLevel`。该 `ForyJson` 保留的任何自定义编解码器或模块实例,也必须能够安全地在构建期创建和存储。
+
+如果自定义配置只能在运行时实例化,请从可达的 `@ForyJsonProvider` 返回一个等价的临时配置,供镜像构建阶段生成代码,然后在镜像启动后创建应用实际使用的 `ForyJson`。provider 自身在镜像分析期间运行,并不负责创建运行时实例。
 
 ## 生成的 Codec
 
-要为某项配置包含生成的 Codec,请从可达的 `@ForyJsonProvider` 返回该完整配置:
+默认配置的编解码器会自动生成。要为自定义配置增加生成的编解码器,请从可达的 `@ForyJsonProvider` 返回该完整配置:
 
 ```java
 import org.apache.fory.json.ForyJson;
@@ -78,11 +82,32 @@ public final class JsonConfigs {
 }
 ```
 
-provider 类必须是 public 的具体类,并且具有 public 无参数构造函数。Provider 成员是 public、非 static、无参数的实例方法,其精确返回类型为 `ForyJson`。其中也包括继承的父类方法和 public 接口默认方法。一个 provider 可以返回多项配置,也可以存在多个可达 provider。等效配置只会生成一次。
+provider 类必须是公共具体类,且拥有公共无参构造函数。provider 成员必须是公共、非静态、无参的实例方法,并且精确返回类型为 `ForyJson`。继承的父类方法和公共接口默认方法也包括在内。一个 provider 可返回多个配置,也可同时存在多个可达 provider。
 
 Provider 对象仅在镜像构建期间存在。建议像上例一样使用带有实例字段和方法的专用配置类;不需要应用添加 `native-image.properties` 条目,也不需要将 provider package export 或 open 给 Fory。不支持 static provider 方法和字段。
 
-只有 provider 返回的配置会获得生成的 Codec。默认配置不会隐式生成。如果某项启用了代码生成的 `ForyJson` 配置未被包含,Fory JSON 会使用已准备好的解释执行 Codec,并在整个进程范围内记录一条警告,建议提供可达的 `@ForyJsonProvider`。`withCodegen(false)` 会明确选择解释执行的 Codec,且不会请求查找生成的 Codec。原生可执行文件中会禁用异步编译。
+存在 provider 时,默认配置的编解码器仍然可用,每个可达 provider 还会为其配置增加编解码器。启用代码生成的运行时在找不到匹配的生成编解码器时使用解释执行编解码器。两种情况下都保留反射元数据。
+
+`withCodegen(false)` 显式选择解释执行编解码器,不查找生成的编解码器。原生可执行文件中禁用异步编译。
+
+### Kotlin 配置 {#kotlin-configurations}
+
+Kotlin Native Image 支持使用相同的 Feature 和 provider API。添加 Kotlin 运行时,然后返回安装了 `ForyJsonKotlin` 且启用代码生成的配置:
+
+```kotlin
+import org.apache.fory.json.ForyJson
+import org.apache.fory.json.annotation.ForyJsonProvider
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+
+@ForyJsonProvider
+class JsonConfigs {
+  fun api(): ForyJson = ForyJsonKotlin.builder().build()
+}
+```
+
+为每个可达具体 Kotlin 模型标注 `@JsonType`,或为第三方目标注册精确且可达的 Mixin。Fory 在构建镜像时读取并验证 Kotlin 元数据,然后为每个可达、启用 Kotlin 的 provider 配置生成编解码器。如果 provider 配置禁用代码生成,或使用不支持的元数据 ABI,镜像构建会失败。启用 Kotlin 的运行时配置若没有匹配的生成编解码器,则使用已准备的解释执行编解码器。
+
+精确的 Kotlin 泛型根类型只有在其完整绑定通过可达具体根类型的属性、构造函数参数、容器/Map 子类型或封闭子类型可达时才可用。直接调用根操作时仍使用 `jsonTypeRef<T>()`,不需要公共根类型注册表或反射配置。
 
 ## Mixin
 
@@ -115,9 +140,9 @@ public class JsonExample {
 
 ## 类型发现与构造
 
-`fory-json` artifact 会自动激活其 Native Image Feature。`@JsonType` 不会被继承,因此请标注每个具体的应用模型。带有 class-literal `@JsonSubTypes` 表的已标注基类会自动注册表中列出的子类型。专门支持的容器(包括 `EnumMap` 和 `EnumSet`)使用其内置 factory。其他可达的具体 `Collection` 和 `Map` 根类型需要 public 无参数构造函数。仅由运行时解析的类名引用的类是不可达的;因此原生镜像不支持 `JsonSubTypes.Type.className`。
+无需额外配置 Native Image Feature。`@JsonType` 不会被继承,因此每个具体应用模型都要单独标注。带有 class literal `@JsonSubTypes` 表的已标注基类型会自动注册其显式或推导子类型。可达的 Java、Kotlin 和 Scala 3 sealed Schema 支持空表。其他可达的具体 `Collection` 和 `Map` 根类型需要公共无参构造函数。仅通过运行时解析类名引用的类不可达,因此原生镜像不支持 `JsonSubTypes.Type.className`。
 
-不要添加应用反射配置来替代生成的配置。原生可执行文件会解析与 JVM 相同的有效注解。
+不要添加应用反射配置。原生可执行文件使用与 JVM 相同的有效注解。Kotlin 应用使用上面的 provider 流程,也应避免包级 opens。
 
 ## 注解与自定义 Codec
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/index.md
index 9bed7319442..03d2c98e7f5 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/index.md
@@ -19,9 +19,7 @@ license: |
   limitations under the License.
 ---
 
-Fory JSON 是 Apache Fory 提供的线程安全 Java JSON 编解码器。它为 Java 对象、record、
-基于 creator 的不可变类、常见 JDK 类型、泛型容器和自定义完整值 codec 提供解释执行和
-运行时生成的 codec。
+Fory JSON 是 Apache Fory 面向 Java、Kotlin 和 Scala 的线程安全 JSON 编解码器。它为 Java 对象、Record、基于 creator 的不可变类、常见 JDK 类型、泛型容器、Kotlin 模型与语义类型、Scala 模型与集合,以及自定义完整值编解码器提供解释执行和代码生成支持。
 
 Fory JSON 与 Fory 的 native 和 xlang 二进制协议是不同的数据格式。当系统需要与浏览器、API、
 日志、配置或其他 JSON 实现交换普通 JSON 时,请使用 Fory JSON。需要跨语言 Schema 元数据、
@@ -29,16 +27,19 @@ Fory JSON 与 Fory 的 native 和 xlang 二进制协议是不同的数据格式
 
 ## 文档导航
 
-| 目标                                      | 页面                               |
-| ----------------------------------------- | ---------------------------------- |
-| 运行第一个 JSON 往返示例                  | [快速开始](getting-started.md)     |
-| 了解 Java 对象映射和配置                  | [对象映射](object-mapping.md)      |
-| 配置属性、creator、值、validator 和 Mixin  | [注解](annotations.md)             |
-| 扩展完整值、子值和 Map 键                 | [自定义 Codec](custom-codecs.md)   |
-| 部署到 Android                            | [Android](android.md)              |
-| 构建 GraalVM Native Image                 | [GraalVM Native Image](graalvm.md) |
-| 安全解码输入                              | [安全](security.md)                |
-| 诊断故障                                  | [故障排查](troubleshooting.md)     |
+| 目标 | 页面 |
+| --------------------------------------------------------------- | ---------------------------------- |
+| 运行第一个 JSON 往返示例 | [快速开始](getting-started.md) |
+| 了解 Java 对象映射和配置 | [对象映射](object-mapping.md) |
+| 配置属性、creator、值、validator 和 Mixin | [注解](annotations.md) |
+| 扩展完整值、子值和 Map 键 | [自定义 Codec](custom-codecs.md) |
+| 打包并分发可复用的 JSON 扩展 | [模块](modules.md) |
+| 使用 data class、Kotlin 可空性、默认值和值类型 | [Kotlin](kotlin.md) |
+| 使用 case class、Scala 集合和 Scala 枚举 | [Scala](scala.md) |
+| 部署到 Android | [Android](android.md) |
+| 构建 GraalVM Native Image | [GraalVM Native Image](graalvm.md) |
+| 安全解码输入 | [安全](security.md) |
+| 诊断故障 | [故障排查](troubleshooting.md) |
 
 ## 性能
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/kotlin.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/kotlin.md
new file mode 100644
index 00000000000..4d96c8407d5
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/kotlin.md
@@ -0,0 +1,283 @@
+---
+title: Kotlin
+sidebar_position: 8
+id: kotlin
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+Fory JSON Kotlin 将 Kotlin/JVM 类型映射为普通 JSON,同时保留 Kotlin 构造函数默认值、可空性、值类型和泛型参数。它是基于 Fory JSON 的可选模块,不会改变 Fory 的二进制协议。
+
+## 安装 {#installation}
+
+运行时接受 Kotlin 严格元数据读取器所支持的模型元数据,并使用 Kotlin 2.3.20 构建。所有模块应使用相同的 Fory 版本:
+
+```kotlin title="build.gradle.kts"
+plugins {
+  kotlin("jvm") version "2.3.20"
+}
+
+repositories {
+  maven("https://repository.apache.org/snapshots/") {
+    mavenContent { snapshotsOnly() }
+  }
+  mavenCentral()
+}
+
+dependencies {
+  implementation("org.apache.fory:fory-json-kotlin:1.7.0")
+}
+```
+
+Kotlin 模块不需要 `kotlin-reflect`。在 Android 上,启用 R8 或 ProGuard 时,或 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes` 时,请添加 Kotlin Symbol Processing(KSP):
+
+```kotlin title="build.gradle.kts"
+plugins {
+  id("com.google.devtools.ksp") version "2.3.8"
+}
+
+dependencies {
+  ksp("org.apache.fory:fory-json-kotlin-ksp:1.7.0")
+}
+```
+
+请为每个需要在代码压缩时精确保留的 Kotlin 源码模型标注 `@JsonType`。对于第三方目标,应在应用源码中声明精确的 `@JsonMixin`。当 Mixin 或其精确目标之一为 Kotlin 时,使用 Kotlin KSP。如果 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes`,还需启用 `fory-annotation-processor`,并在 JDK 17 或更新版本上编译。
+
+## 快速上手 {#quick-start}
+
+使用 `ForyJsonKotlin.builder()` 安装 Kotlin 模块。对于需要保留可空性、无符号类型身份、值类身份或泛型参数的每个 Kotlin 声明根类型,请保留一个 `jsonTypeRef<T>()`:
+
+```kotlin
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+data class Account(
+  val id: ULong,
+  val name: String,
+  val nickname: String? = null,
+)
+
+val json = ForyJsonKotlin.builder().build()
+val accountType = jsonTypeRef<Account>()
+
+val text = json.toJson(Account(7u, "Alice"), accountType)
+val decoded = json.fromJson(text, accountType)
+```
+
+`jsonTypeRef<T>()` 是类型令牌,不是编解码器查找操作。应创建一次并复用。Java `Class` 或普通 Java `TypeRef` 无法表达 `List<Account?>`、`UInt` 或降低为基本类型载体的逻辑值类等区别。
+
+也可以通过 builder 显式安装模块:
+
+```kotlin
+import org.apache.fory.json.ForyJson
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+
+val json = ForyJson.builder().withModule(ForyJsonKotlin).build()
+```
+
+不会按类路径自动安装模块,也没有 Kotlin 专用的编码/解码别名。
+
+## 不可变类与编译器默认值 {#immutable-classes-and-compiler-defaults}
+
+普通类或 data class 映射为具有命名属性的 JSON 对象。Fory 选择一个有效的公共 Kotlin 构造函数以及可重建的属性;`copy` 和 `componentN` 函数不参与定义 Schema。只有 JSON 成员缺失时,才使用编译器生成的默认值:
+
+```kotlin
+data class Request(
+  val id: Long,
+  val label: String? = "new",
+  val retries: Int = 3,
+)
+```
+
+主构造函数会被自动选择。公共次构造函数或目标类型自身的公共静态工厂,只有经 `JsonCreator` 显式选择后才会使用;伴生对象工厂必须通过外层类中实际存在的 `@JvmStatic` 桥接方法才符合条件。`@JvmOverloads` 生成的方法不是独立 creator 候选,选定的静态工厂也不能含编译器默认参数。私有/受保护、可变参数、方法泛型、上下文参数、局部类、匿名类、`inner` 类或合成构造路径需要精确的应用编解码器。
+
+对于这个模型:
+
+- `{"id":1}` 会调用两个编译器默认值。
+- `{"id":1,"label":null}` 会传入显式 null,不调用 `label` 的默认值。
+- 缺少 `id` 会在调用构造函数前失败。
+- `{"id":1,"retries":null}` 会失败;null 不会要求 Kotlin 使用默认值。
+
+普通类体 `var` 属性在成员缺失时保留初始化值,在成员存在时于构造后赋值。`lateinit` 属性是必需的。自动 creator 属性和延后赋值属性都必须能在读写两个方向重建。
+
+类体 `val`、计算属性、委托属性、仅 getter 的属性和委托 `var` 必须被忽略,或由精确的自定义编解码器处理。输入中存在的延后赋值 setter 在构造后按固定属性顺序执行,随后运行验证器;输入成员顺序不能决定应用调用顺序。Kotlin 类实例始终通过正常构造创建,因此不会绕过主构造函数初始化和验证。
+
+Fory 必须能在相同配置下读取自身输出。因此,可空构造函数参数和可空延后赋值属性在为 null 时会显式输出,即使 builder 的 Java 通用默认行为是省略 null 字段。如果省略属性可能导致失败或调用不同的编译器默认值,则会拒绝该属性上显式设置的 `JsonProperty.Include.NON_NULL`。
+
+## 可空性 {#nullability}
+
+Kotlin 类型使用位置的可空性在根值、属性、容器元素、Map 值和泛型子类型上均会被检查:
+
+| 声明 | 成员缺失 | 显式 JSON `null` |
+| --------------------------------- | --------------------- | ---------- |
+| `val value: String` | 失败 | 失败 |
+| `val value: String?` | 失败 | 传入 null |
+| `val value: String = expression` | 求值默认值 | 失败 |
+| `val value: String? = expression` | 求值默认值 | 传入 null |
+
+`List<String?>` 接受 null 元素,`List<String>` 拒绝 null 元素。Map 键必须非空。自动构造 Kotlin 模型时,不会猜测平台类型或未知的可空性。
+
+透明包装类型必须让 null 只有一种明确含义。例如,非空 `Optional<T>` 用 JSON null 表示 `Optional.empty()`,因此会拒绝 `Optional<T>?` 和 `Optional<T?>`。`AtomicReference<T>` 和值类遵循相同的一一映射规则。若两个逻辑状态会共享 JSON null,应使用带标签的精确自定义编解码器。
+
+通过注册或 `@JsonCodec` 选择的应用编解码器仍属于受信任的应用代码。对于非 null JSON token,它必须返回精确的声明类型,并遵守 Kotlin 类型使用位置的可空性。
+
+## 注解与使用位置 {#annotations-and-use-site-targets}
+
+Kotlin 注解参与与 Java 相同的逻辑属性合并。建议显式指定注解使用位置:
+
+```kotlin
+import org.apache.fory.json.annotation.JsonCodec
+import org.apache.fory.json.annotation.JsonIgnore
+import org.apache.fory.json.annotation.JsonProperty
+import org.apache.fory.json.annotation.JsonType
+
+@JsonType
+data class Profile(
+  @param:JsonProperty("user_id")
+  val id: Long,
+
+  @field:JsonIgnore
+  val localCacheKey: String? = null,
+
+  @field:JsonProperty(include = JsonProperty.Include.ALWAYS)
+  val nickname: String? = null,
+
+  @field:JsonCodec(elementCodec = AccountIdCodec::class)
+  val accountIds: List<AccountId>,
+)
+```
+
+请如上所示显式指定 JVM 使用位置,避免依赖 Kotlin 的默认目标策略。完整的目标支持与冲突规则见[注解](annotations.md#kotlin-use-site-targets),完整值、元素、内容、键和 Map 值编解码器见[自定义编解码器](custom-codecs.md)。
+
+## 泛型与集合 {#generics-and-collections}
+
+使用完整的声明类型:
+
+```kotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+val accountsType = jsonTypeRef<List<Account?>>()
+val accounts = json.fromJson("""[null,{"id":7,"name":"Alice"}]""", accountsType)
+```
+
+Kotlin 原始字符串可以直接传给 `fromJson`,JSON 双引号无需反斜杠转义。
+
+按类型重建时,会拒绝原始泛型类型、`in` 投影和星投影。`out X` 投影只有在可规范化为一个精确、final 或封闭的可读 Schema 时才被接受。递归返回同一个精确绑定时支持递归泛型模型;如果正在处理的原始声明展开为不同绑定,则会被拒绝。
+
+Kotlin 只读和可变集合接口使用常规 JSON 集合/Map 行为。只读并不等于不可变:标准接口会实例化为 `ArrayList`、`LinkedHashSet` 或 `LinkedHashMap`。应声明公共接口,而不是 JDK/Kotlin 私有的空集合、单例、不可修改集合或 builder 实现类。`Iterable`、`Sequence`、迭代器、`EnumEntries` 和直接声明的 `Map.Entry` 不是自动值 Schema。
+
+无符号类型以及符合条件的非空值类作为 Map 键时,通过常规 Map 编解码器使用 JSON 对象成员名。值类键链必须最终落到 String、枚举、有符号整数或无符号整数语义。浮点、Boolean、可空和任意对象键需要显式键编解码器或完整 Map 编解码器。
+
+## 值类、对象与封闭层次结构 {#value-classes-objects-and-closed-hierarchies}
+
+用户值类采用其底层值的透明 JSON 表示:
+
+```kotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+@JvmInline
+value class AccountId(val value: ULong)
+
+val idType = jsonTypeRef<AccountId>()
+val id = json.fromJson("18446744073709551615", idType)
+```
+
+Fory 执行经过验证的编译器构造操作,因此值类初始化检查仍会运行。如果外层值和底层值都可为空,则透明 JSON 存在歧义,自动映射会被拒绝。此时应使用带标签的精确编解码器。
+
+无状态 `object` 或 `data object` 使用严格的 `{}`,并返回规范单例。有状态对象和伴生对象需要精确的自定义编解码器。`Unit` 也使用 `{}`;`Nothing` 被拒绝,而 `Nothing?` 只能通过显式 Kotlin 类型令牌接受 JSON null。
+
+为 sealed 类或接口标注 `JsonSubTypes`,并将 `value` 留空,即可推导其封闭层次结构。Fory 递归纳入具体 sealed 后代,在每个具体 open 类处停止,仅允许该精确类而不允许其后代。开放抽象分支会被拒绝。推导出的逻辑名称使用源码简单名称,包括不带尾部 `$` 的对象名。非空 `value` 仍表示精确的显式子集。输入只包含逻辑子类型名,不包含 JVM 类名。属性与包装表示见[注解](annotations.md#jsonsubtypes)。
+
+## 支持的 Kotlin 类型 {#supported-kotlin-types}
+
+从 Kotlin 使用 Java/JDK 标量、时间类型、Optional、原子类型、数组、集合、Map、枚举和 JSON 树类型时,它们保持常规 Fory JSON 表示:
+
+| 核心类型类别 | Kotlin 中的行为 |
+| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `Any` / `Any?` | 自然 JSON Boolean、数字、String、数组、对象或 null;写入时按运行时类型动态分派 |
+| 有符号标量及装箱类型 | `Boolean`、`Byte`、`Short`、`Int`、`Long`、`Float`、`Double`、`Char` 和 `Number` 使用核心标量编解码器;非有限浮点值使用核心的带引号表示 |
+| 文本 | `String`、精确 `CharSequence`、`StringBuilder` 和 `StringBuffer` 使用字符串表示 |
+| 任意精度/低精度数值 | `BigInteger`、`BigDecimal`、Fory `Float16` 和 `BFloat16` 使用核心数值表示与限制 |
+| 枚举 | 带引号的枚举常量名 |
+| Java/Kotlin 数组 | 常规 JSON 数组;`ByteArray` 默认表示数字,除非 `JsonBase64` 选择二进制表示;无符号语义数组见下文 |
+| Optional 与原子类 | `Optional<T>`、基本类型 Optional、原子标量/引用和原子数组保持核心透明表示,并受上述可空性规则约束 |
+| 带引号的 JDK 值 | `Currency`、`File`、`URI`、`Path`、`Pattern`、`UUID`、`Locale`、`Charset` 和 `TimeZone` 保持核心字符串表示 |
+| 旧版日期/时间 | `Date`、`Calendar` 及可用的 `java.sql.Date`、`Time` 和 `Timestamp` 保持自 Unix 纪元起的毫秒数表示 |
+| Java 时间类型 | `LocalDate`、`LocalTime`、`LocalDateTime`、`Instant`、`java.time.Duration`、`ZoneOffset`、`ZoneId`、`ZonedDateTime`、`Year`、`YearMonth`、`MonthDay`、`Period`、`OffsetTime`、`OffsetDateTime` 和受支持的历法日期保持核心精确文本语法 |
+| 其他核心值 | `BitSet`、`ByteBuffer`、`JsonArray` 和 `JsonObject` 保持常规核心表示 |
+| 集合/Map | 受支持的 Java/Kotlin `Collection`、`Map` 接口和实现使用核心数组/对象表示;受支持的 Guava 不可变载体仍为可选依赖 |
+| Map 键 | String、枚举、有符号 `Byte`/`Short`/`Int`/`Long`,以及下文补充的 Kotlin 无符号类型/值类;Boolean、浮点、可空和任意对象键需要显式键编解码器或完整 Map 编解码器 |
+| 固定拒绝的类型 | 仍拒绝 `Class`、URL/网络/socket/地址类型、不支持的 JDK 内部集合实现,以及未注册的 `Number`/`CharSequence` 子类;应用可在常规类型和安全检查允许的范围内显式定义自有表示 |
+
+核心表示详情见[对象映射](object-mapping.md#supported-java-types)。Kotlin 特有行为如下:
+
+| 类型类别 | 自动 JSON 表示或处理方式 |
+| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
+| 普通类、data class 和嵌套类 | 具有命名属性的 JSON 对象 |
+| `inner` 类、普通抽象类/接口 | 仅支持封闭的 `JsonSubTypes` 或精确自定义编解码器 |
+| sealed 类/接口 | 推导或显式声明的封闭 `JsonSubTypes` 表 |
+| 枚举 | 带引号的枚举名 |
+| 无状态 `object`、`data object`、`Unit` | 严格的 `{}` |
+| 有状态对象、伴生对象 | 仅支持精确自定义编解码器 |
+| 值类 | 透明的底层值;需要精确绑定 |
+| `Nothing?` / `Nothing` | 仅允许 null / 拒绝 |
+| `Pair`、`Triple` | 具有 `first`、`second` 和 `third` 命名属性的对象 |
+| `Result`、`Lazy`、Kotlin 标准属性委托 | 仅支持精确自定义编解码器 |
+| 有符号基本类型、基本类型数组、`Array<T>` | 常规核心数字/Boolean/字符与数组表示 |
+| `UByte`、`UShort`、`UInt`、`ULong` 及其数组 | 无符号十进制数字和数组 |
+| 只读与可变集合/Map、Kotlin `ArrayDeque` | 常规核心数组/Map |
+| `Map.Entry`、私有集合载体、`Iterable`、`Sequence`、迭代器、`EnumEntries` | 自动映射时拒绝 |
+| `CharRange`、有符号/无符号整数区间 | `{"start":...,"endInclusive":...}` |
+| 对应的步进序列 | `{"first":...,"last":...,"step":...}` |
+| `ClosedRange`、`OpenEndRange`、抽象/开放/浮点区间 | 自动映射时拒绝 |
+| `kotlin.time.Duration` | 带引号的规范 Kotlin ISO 时长 |
+| `kotlin.time.Instant` | 带引号的规范 Kotlin ISO 时刻 |
+| `TimedValue<T>` | `{"value":...,"duration":...}` |
+| `DurationUnit`、`RegexOption` | 带引号的枚举名 |
+| 时钟、时间源/时间标记、Regex/匹配状态、Random | 仅支持精确自定义编解码器 |
+| `kotlin.uuid.Uuid` | 带引号的规范连字符 UUID |
+| 完整泛型类 / 声明处型变 | 精确替换后的 Schema |
+| `out X` / `in X` / 星投影 | 仅允许精确 final 或封闭的 `X` / 拒绝 / 拒绝 |
+| 递归泛型 | 仅允许相同的精确递归绑定;正在处理时展开到另一绑定会被拒绝 |
+| 类型别名 | 完全展开后的类型 |
+| 函数/挂起函数、反射类型、协程/flow/channel 状态 | 拒绝 |
+| 符合条件的第三方不可变 Kotlin 模型 | 在 JVM 上自动映射;应用注解覆盖时需注册精确 Mixin |
+
+时间和 UUID API 的 Kotlin 实验性 opt-in 要求仍适用于应用源码。Fory 制品支持的编译器和元数据范围,并不意味着实验性 Kotlin API 获得跨 Kotlin 版本的兼容保证。
+
+## 安全 {#security}
+
+`jsonTypeRef<T>()`、注解、Mixin 和编解码器注册都是应用声明的 Schema。JSON 输入不能选择任意类、构造函数、编译器默认值、对象、伴生对象、模块、编解码器或可调用对象。sealed 层次结构仅接受其经过验证的推导或显式 `@JsonSubTypes` 表中的逻辑子类型名称。
+
+Kotlin 数组、集合、Map 和对象使用与核心 JSON 运行时相同的 `maxDepth`、对象图内存、输入缓冲区、字段名缓存和类型检查器控制。没有 Kotlin 专有的集合或工作区限制需要配置。模型构造函数、编译器默认值、验证器和自定义编解码器仍属于可信应用代码,可能执行由应用定义的内存分配或产生副作用。
+
+解码不可信输入前,请阅读[安全](security.md)。
+
+## GraalVM 与 Android {#graalvm-and-android}
+
+在 GraalVM Native Image 上,使用现有 `@ForyJsonProvider` 流程,安装 `ForyJsonKotlin`,并在返回的配置中启用代码生成。为每个可达具体 Kotlin 模型标注 `@JsonType`,或为第三方目标注册精确且可达的 Mixin。未被选中生成代码的模型继续使用解释执行映射。仅支持通过具体根类型可达的精确泛型绑定。不要添加反射配置或包级 opens。
+
+在 Android 上,请使用 API 26 或更新版本。运行时 JSON 代码生成保持禁用。未压缩构建中的 Kotlin sealed 推导无需额外设置。使用 R8 或 ProGuard 时,或 Kotlin 源码中的 Mixin 为 Java sealed 目标添加推导式 `JsonSubTypes` 时,请启用 KSP。后一种情况还需要 `fory-annotation-processor` 和 JDK 17 或更新版本。启用代码压缩时,请遵循上面的[安装](#installation)说明和 [Android 指南](android.md)。
+
+此 JVM 模块不支持 Kotlin/Native、Kotlin/JS 或 Kotlin/Wasm。
+
+完整平台设置见 [GraalVM Native Image](graalvm.md) 和 [Android](android.md)。
+
+## 故障排查 {#troubleshooting}
+
+Kotlin 元数据、可空性、泛型绑定、Android 代码压缩、Native Image、语法、限制、自定义编解码器、子类型和根操作失败的排查方法见[故障排查](troubleshooting.md)。
+
+比较 Fory JSON Kotlin、kotlinx.serialization、Moshi 和 Jackson Kotlin 所用的测试负载与设置,见 [Kotlin JSON 基准测试](../benchmarks/json/kotlin/README.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/modules.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/modules.md
new file mode 100644
index 00000000000..b47fbe896e4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/modules.md
@@ -0,0 +1,105 @@
+---
+title: Modules
+sidebar_position: 6
+id: modules
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+`ForyJsonModule` 将一组相关的 Fory JSON 注册打包为可复用扩展。模块可以由语言集成、第三方库、框架或应用提供。需要让使用者通过一次 builder 调用安装整套扩展时,应使用模块;对于无需独立分发的应用专用编解码器,可直接在 builder 上注册。
+
+## 创建与安装模块 {#creating-and-installing-a-module}
+
+实现[自定义编解码器指南](custom-codecs.md)中的 `MoneyCodec` 等编解码器后,库可以将其注册打包为模块分发:
+
+```java
+import org.apache.fory.json.ForyJson;
+import org.apache.fory.json.ForyJsonModule;
+import org.apache.fory.json.ModuleContext;
+
+public final class MoneyJsonModule implements ForyJsonModule {
+  public static final MoneyJsonModule INSTANCE = new MoneyJsonModule();
+
+  private MoneyJsonModule() {}
+
+  @Override
+  public void install(ModuleContext context) {
+    context.registerCodec(Money.class, new MoneyCodec());
+  }
+}
+
+ForyJson json =
+    ForyJson.builder()
+        .withModule(MoneyJsonModule.INSTANCE)
+        .build();
+```
+
+安装在 `build()` 创建不可变运行时配置期间执行。模块加入 builder 后,应将其配置视为不可变。注册的编解码器实例会被并发操作共享,因此必须线程安全。
+
+## 模块注册 {#module-registrations}
+
+`ModuleContext` 提供可复用集成所需的注册操作:
+
+| 注册方式 | 用途 |
+| --------------------------------- | ---------------------------------------------- |
+| `registerCodec(Class, JsonValueCodec)` | 为一个精确类提供共享的完整编解码器 |
+| `registerCodec(Class, JsonCodecFactory)` | 为一个精确类提供由 resolver 持有的完整编解码器 |
+| `registerMixin(Class)` | 为声明的目标提供带注解的 Mixin |
+| `registerCodecFactory(JsonCodecFactory)` | 根据参数化目标类型选择一组编解码器 |
+
+编解码器实现和 `JsonCodecFactory` 行为见[自定义编解码器](custom-codecs.md)。模块仅将这些注册打包以便安装。精确模块注册同样拒绝该文档列出的专用标量和数组类型;这些类型需要不同表示时,应使用具体使用位置的注解或语义映射。
+
+直接在 `ForyJsonBuilder` 上进行的应用注册优先于模块精确注册。模块注册发生冲突时,`build()` 会失败,而不是依赖安装顺序决定结果。
+
+## Kotlin 模块 {#kotlin-module}
+
+`ForyJsonKotlin` 是面向 Kotlin/JVM 模型的可选模块。应用使用 Kotlin 模型时,建议使用它的 builder:
+
+```kotlin
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+
+val json = ForyJsonKotlin.builder().build()
+```
+
+这等价于 `ForyJson.builder().withModule(ForyJsonKotlin)`,不会扫描类路径或注册应用模型。精确的应用编解码器注册保持常规优先级。类型令牌和可选的 Android 代码压缩设置见 [Kotlin](kotlin.md)。
+
+## 模块标识 {#module-identity}
+
+`moduleKey()` 标识模块配置,用于检查安装冲突。默认 key 为模块类名,足以满足无配置模块的需要。
+
+可配置模块必须返回确定性的 key,包含所有会影响其所安装 JSON 行为的选项。不要包含秘密信息、可变进程状态或无关值。
+
+```java
+public final class ConfiguredJsonModule implements ForyJsonModule {
+  private final boolean compactNames;
+
+  public ConfiguredJsonModule(boolean compactNames) {
+    this.compactNames = compactNames;
+  }
+
+  @Override
+  public String moduleKey() {
+    return getClass().getName() + ":compactNames=" + compactNames;
+  }
+
+  @Override
+  public void install(ModuleContext context) {
+    // Register the codecs, factories, or Mixins selected by this configuration.
+  }
+}
+```
+
+将第三方枚举的派生编解码器打包为模块的 Scala 示例见[将派生编解码器打包到模块](scala.md#packaging-derived-codecs-in-a-module)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/object-mapping.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/object-mapping.md
index 8fb83d766e6..caef3326915 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/object-mapping.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/object-mapping.md
@@ -89,7 +89,13 @@ Android 无法构造不具备可用无参构造函数的普通类。JDK 25 及
 普通构造函数的副作用用作反序列化完成钩子:即使无参构造函数会运行,属性赋值也发生在其后;
 而绕过构造函数的路径根本不会运行它。
 
-## 支持的 Java 类型
+## Kotlin 对象映射 {#kotlin-object-mapping}
+
+为 Kotlin/JVM 类安装 `fory-json-kotlin` 并使用 `ForyJsonKotlin.builder()`。Kotlin 普通类和 data class 使用选定的构造函数、精确属性类型、编译器默认值和声明的可空性,不使用 Java 绕过构造函数的回退路径。默认值仅在成员缺失时生效。显式 JSON null 仍是已提供的值,非空参数会拒绝它。
+
+泛型、可空、无符号和值类根类型应使用 `jsonTypeRef<T>()`。标准数组、集合和 Map 继续使用常规 Fory JSON 表示。完整语言类型表、单例/值类行为和省略规则见 [Kotlin 指南](kotlin.md)。
+
+## 支持的 Java 类型 {#supported-java-types}
 
 下列类型组具有内置映射。具体编码表示形式都是稳定的 JSON 值,但在精度或构造方式很重要时,应用
 Schema 仍应声明预期的 Java 类型。
@@ -118,20 +124,23 @@ Schema 仍应声明预期的 Java 类型。
 非有限 float 和 double 值使用带引号的字符串 `"NaN"`、`"Infinity"` 和 `"-Infinity"`。
 需要保留任意精度时,请使用显式的 `BigInteger` 或 `BigDecimal` 目标类型。
 
+声明为布尔和数值的目标也接受 JSON 字符串中的常规 token 文本,例如 `"true"`、`"42"` 或 `"123.45"`,无需 builder 选项。此行为适用于根值、对象成员、数组、集合和 Map。Fory 写入时仍输出原生 JSON 布尔与数字 token。`Object` 目标保留自然 JSON 类型,因此带引号的值仍是 `String`;以 `Number` 读取带引号的数值时使用 `Double`。
+
 ### 内置表示形式
 
 这些内置值使用以下常规 JSON 形式:
 
-| Java 类型                                                                 | JSON 表示形式                                                                                      |
+| Java 类型 | JSON 表示形式 |
 | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
-| Enum                                                                      | 常量名称字符串                                                                                     |
-| `Date`、`Calendar`、`java.sql.Date`、`Time`、`Timestamp`                  | 表示 epoch 毫秒数的数值                                                                            |
-| `TimeZone`                                                                | 时区 ID 字符串                                                                                     |
-| Java 时间类型以及受支持的 chronology 日期类型                             | 对应的标准文本形式字符串                                                                           |
+| 布尔和数值标量 | 写入原生 JSON 布尔或数字;声明类型的目标也可读取带引号的相同 token 文本 |
+| Enum | 常量名称字符串 |
+| `Date`、`Calendar`、`java.sql.Date`、`Time`、`Timestamp` | 表示 epoch 毫秒数的数值 |
+| `TimeZone` | 时区 ID 字符串 |
+| Java 时间类型以及受支持的 chronology 日期类型 | 对应的标准文本形式字符串 |
 | `UUID`、`URI`、`File`、`Path`、`Locale`、`Charset`、`Currency`、`Pattern` | 对应类型的文本字符串;`File` 和 `Path` 使用路径文本,`Locale` 使用语言标签,`Pattern` 不保留 flags |
-| `BitSet`                                                                  | 由有符号 `long` 字组成的数组,来源为 `BitSet.toLongArray()`                                        |
-| `ByteBuffer`                                                              | 从 position 到 limit 的剩余范围所对应的有符号字节值数组                                            |
-| Optional 和原子包装类型                                                   | 直接使用其中包含的标量、数组或值                                                                   |
+| `BitSet` | 由有符号 `long` 字组成的数组,来源为 `BitSet.toLongArray()` |
+| `ByteBuffer` | 从 position 到 limit 的剩余范围所对应的有符号字节值数组 |
+| Optional 和原子包装类型 | 直接使用其中包含的标量、数组或值 |
 
 `Calendar` 会把 epoch 毫秒数读入新的 `GregorianCalendar`;不会保留原始日历子类型、时区和其他配置。
 null `Optional` 引用和空 `Optional` 都会写为 JSON null;将 JSON null 读取为声明的 Optional 类型时,
@@ -175,18 +184,18 @@ JSON 对象成员名都是字符串。声明的 Map 键支持 `String`、`byte`
 
 ## Builder 配置
 
-| Builder 方法                           | 默认值                                    | 用户可见的效果                                 |
+| Builder 方法 | 默认值 | 用户可见的效果 |
 | -------------------------------------- | ----------------------------------------- | ---------------------------------------------- |
-| `writeNullFields(boolean)`             | `false`                                   | 是否默认包含值为 null 的对象属性               |
-| `withCodegen(boolean)`                 | `true`                                    | 启用生成的对象编解码器                         |
-| `withAsyncCompilation(boolean)`        | `true`                                    | 异步编译生成的编解码器                         |
-| `withFieldMode(boolean)`               | `false`                                   | 为 true 时,仅发现字段而不使用 getter/setter   |
-| `withPropertyNamingStrategy(strategy)` | `LOWER_CAMEL_CASE`                        | 为未显式指定 `JsonProperty` 名称的属性命名     |
-| `withMaxCachedFieldNames(int)`         | `DEFAULT_MAX_CACHED_FIELD_NAMES` (`8192`) | 每个 reader 的字段名缓存条目数;零表示禁用缓存 |
-| `withConcurrencyLevel(int)`            | `max(1, 2 * processors)`                  | 根操作的最大并发数                             |
-| `withBufferSizeLimitBytes(int)`        | 2 MiB                                     | 每个池化 writer 可保留的最大复用容量           |
-| `registerCodec(type, codec)`           | None                                      | 替换该精确类的完整 JSON 编解码器               |
-| `registerMixin(mixinType)`             | None                                      | 将一个注解 Mixin 应用于其精确声明的目标        |
+| `writeNullFields(boolean)` | `false` | 是否默认包含值为 null 的对象属性 |
+| `withCodegen(boolean)` | `true` | 启用生成的对象编解码器 |
+| `withAsyncCompilation(boolean)` | `true` | 异步编译生成的编解码器 |
+| `withFieldMode(boolean)` | `false` | 为 true 时,仅发现字段而不使用 getter/setter |
+| `withPropertyNamingStrategy(strategy)` | `LOWER_CAMEL_CASE` | 为未显式指定 `JsonProperty` 名称的属性命名 |
+| `withMaxCachedFieldNames(int)` | `DEFAULT_MAX_CACHED_FIELD_NAMES` (`8192`) | 每个 reader 的字段名缓存条目数;零表示禁用缓存 |
+| `withConcurrencyLevel(int)` | `max(1, 2 * processors)` | 根操作的最大并发数 |
+| `withBufferSizeLimitBytes(int)` | 2 MiB | 每个池化 writer 可保留的最大复用容量 |
+| `registerCodec(type, codec)` | None | 替换允许注册的精确类的完整 JSON 编解码器 |
+| `registerMixin(mixinType)` | None | 将一个注解 Mixin 应用于其精确声明的目标 |
 
 并发级别和缓冲区保留限制必须为正数。字段名缓存上限分别应用于每个 reader;零会禁用该缓存。该上限
 只限制缓存的字段名数量,不限制输入中可接受的名称。缓冲区保留设置不会限制 JSON 输入或输出大小,
@@ -197,6 +206,4 @@ JSON 对象成员名都是字符串。声明的 Map 键支持 `String`、`byte`
 
 调用 `build()` 之后再修改 builder,不会改变已有的 `ForyJson` 实例。
 
-在 Android 上,运行时代码生成和异步编译会被禁用。在 GraalVM native image 中,运行时编译不可用;
-可达 `ForyJsonProvider` 返回的配置会使用构建 image 时生成的编解码器,其他配置则使用带有构建时
-预处理访问元数据的解释型编解码器。其他所有 builder 选项仍保持上述行为。
+在 Android 上禁用运行时代码生成和异步编译。GraalVM 原生镜像中无法进行运行时编译。Fory JSON 会为默认配置以及每个可达 `ForyJsonProvider` 配置下的可达模型生成编解码器。没有匹配生成编解码器的模型使用解释执行编解码器。其他 builder 选项保持上述行为。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/scala.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/scala.md
new file mode 100644
index 00000000000..4c90d58a602
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/scala.md
@@ -0,0 +1,211 @@
+---
+title: Scala
+sidebar_position: 7
+id: scala
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+Fory JSON 通过可选的 `fory-json-scala` 制品支持 Scala 2.13 和 Scala 3。该模块支持普通 JVM 和 GraalVM Native Image,不支持 Android。
+
+## 设置 {#setup}
+
+```sbt
+libraryDependencies += "org.apache.fory" %% "fory-json-scala" % "1.7.0"
+```
+
+`ForyJsonScala.builder()` 安装 Scala 模块并返回标准 Fory JSON builder:
+
+```scala
+import org.apache.fory.json.scala.ForyJsonScala
+
+case class Person(name: String, age: Int = 18, aliases: List[String] = Nil)
+
+val json = ForyJsonScala.builder().build()
+val text = json.toJson(Person("Ada"))
+val person = json.fromJson(text, classOf[Person])
+```
+
+请复用得到的 `ForyJson` 实例。它在构建后不可变且线程安全。
+
+## Case class 与注解 {#case-classes-and-annotations}
+
+case class 通过调用完整主构造函数解码。对于缺失且有默认值的参数,Fory 调用 Scala 生成的构造函数默认值方法,不解析默认值表达式,也不修改构造函数 `val` 字段。后续参数列表中的默认值会按 Scala 语义接收前面已确定的构造函数参数。缺少无默认值的参数会报错。类体中的可变属性在构造后赋值。
+
+case class 可以声明在顶层,也可以嵌套在任意层数的 `object` 内,但每一层外部作用域都必须是 `object`。如果外层是 `class`、trait 或方法,读写都会被拒绝,因为 Fory 无法访问重建值所需的外部实例或伴生对象。
+
+Fory JSON 注解可以直接放在 Scala 构造函数属性上:
+
+```scala
+import org.apache.fory.json.annotation.{JsonCodec, JsonIgnore, JsonProperty}
+
+case class Media(
+    @JsonProperty("media_uri") uri: String,
+    @JsonIgnore internalId: String = "hidden",
+    @JsonCodec(elementCodec = classOf[TagCodec]) tags: List[Tag] = Nil,
+    @JsonProperty(include = JsonProperty.Include.NON_NULL) title: String = null
+)
+```
+
+`JsonIgnore` 适用于字段、属性方法、setter 参数和选定的构造函数参数。`JsonCodec` 子槽位绑定直接集合元素、`Option` 内容,以及 Map 键或值。其他 Fory JSON 注解保持[注解](annotations.md)中描述的行为。
+
+如果必需且没有默认值的引用参数使用了会省略 `null` 的包含规则,序列化会拒绝 null 值,以确保 Fory 写出的 JSON 仍可按同一个 case class Schema 读取。
+
+## 支持的 Scala 类型 {#supported-scala-types}
+
+| Scala 类型 | JSON 表示形式 |
+| ----------------------------------------------------------- | ----------------------------------------------- |
+| `Unit` | `null` |
+| case class | 对象 |
+| 单例对象 | 空对象 |
+| 值类 | 底层值 |
+| `Option[A]`、`Some[A]`、`None` | 所含值或 `null` |
+| `Either[L, R]` | 恰好包含一个 `l` 或 `r` 成员的对象 |
+| `List`、`Seq`、`Vector`、`Queue`、`ArraySeq`、buffer、set | 数组 |
+| Scala Map、`IntMap`、`LongMap` | 对象 |
+| 不可变与可变 `BitSet` | 升序整数数组 |
+| `Tuple1` 至 `Tuple22` | 定长数组 |
+| Scala 3 `EmptyTuple` | 空数组 |
+| `BigInt`、`BigDecimal` | JSON 数字 |
+| Scala `StringBuilder` | string |
+| `Range`、受支持的 `NumericRange` | 已求值的值数组 |
+| `FiniteDuration`、`Duration` | 固定的 `length`/`unit` 或 `special` 对象 |
+| 无参数的 Scala 3 枚举 | 字符串形式的枚举分支名 |
+| Scala 2 `Enumeration` | 通过绑定所属枚举的编解码器表示为字符串 |
+
+严格求值的标准库集合通过标准 Scala builder 重建。`Either` 写入紧凑的 `l` 和 `r` 成员名,读取器也接受旧的 `left` 和 `right` 名称。Fory 不增加 Scala 专用集合大小限制;编解码器使用与 Fory JSON 核心相同的输入长度、深度、对象图内存和读取进度限制。如果稀疏 `BitSet` 的最高索引要求分配与可用 JSON 输入不成比例的底层存储,则会被拒绝。
+
+默认模块有意不支持惰性求值或进程局部值,包括 `LazyList`、`Stream`、view、迭代器、集合 builder、`Try`、`Throwable`、`Future`、`Promise`、`ExecutionContext`、`Deadline`、函数、反射/编译器元数据和正则表达式值。有序集合或自定义集合需要精确的应用编解码器,因为排序或构造方式属于应用配置。
+
+## 参数化类型 {#parameterized-types}
+
+读取参数化 Scala 类型时,使用完整的 `TypeRef`:
+
+```scala
+import org.apache.fory.reflect.TypeRef
+
+val typeRef = new TypeRef[Map[String, Option[Int]]]() {}
+val value = json.fromJson("""{"count":1}""", typeRef)
+```
+
+Scala 原始字符串可以直接传给 `fromJson`,JSON 双引号无需反斜杠转义。
+
+Scala 值类型参数在常规 JVM 签名中可能被擦除为 `Object`。`ScalaTypeRef` 是编译期类型令牌构造器,可在 Scala 2.13 和 Scala 3 上保留这些参数:
+
+```scala
+import org.apache.fory.json.scala.ScalaTypeRef
+
+val rangeType = ScalaTypeRef[scala.collection.immutable.NumericRange[Int]]
+val range = json.fromJson("[1,3,5,7]", rangeType)
+```
+
+提供完整类型参数时,`Some[Int]` 是有效声明类型。非 null JSON 值解码为 `Some(value)`;`Some[Int]` 拒绝 JSON `null`,而 `Option[Int]` 将其解码为 `None`。
+
+## Scala 2 Enumeration
+
+Scala 2 会从 `Enumeration#Value` 中擦除所属的 `Enumeration`。使用 `JsonEnumeration` 可在直接值、集合或数组元素、`Option` 内容以及 Map 键/值上保留其所属枚举:
+
+```scala
+import org.apache.fory.json.scala.JsonEnumeration
+
+object Weekday extends Enumeration {
+  val Monday, Tuesday = Value
+}
+
+object Month extends Enumeration {
+  val January, February = Value
+}
+
+case class Schedule(
+    @JsonEnumeration(classOf[Weekday.type]) day: Weekday.Value,
+    @JsonEnumeration(element = classOf[Weekday.type]) days: List[Weekday.Value],
+    @JsonEnumeration(content = classOf[Month.type]) month: Option[Month.Value],
+    @JsonEnumeration(
+      mapKey = classOf[Weekday.type],
+      mapValue = classOf[Month.type]
+    ) labels: Map[Weekday.Value, Month.Value]
+)
+```
+
+每个槽位描述一个直接的 `Enumeration.Value` 使用位置。`value` 不能与子槽位组合;`element`、`content` 和 Map 槽位必须匹配被标注属性的直接类型结构。无效或冲突的声明会在创建 case class 元数据时失败。
+
+自定义编码表示时,扩展 `ScalaEnumerationCodec` 并通过 `@JsonCodec` 选择该编解码器。该编解码器也实现 Map 键契约,因此其类可用于 `keyCodec`。
+
+## Scala 3 封闭枚举与 sealed 层次结构 {#scala-3-closed-enums-and-sealed-hierarchies}
+
+无参数的 Scala 3 枚举以分支名作为 JSON 字符串。对于带参数分支的枚举,添加 `derives ScalaJsonCodec`,即可为所有分支定义统一的封闭包装对象表示:
+
+```scala
+import org.apache.fory.json.scala.*
+
+enum Result derives ScalaJsonCodec {
+  case Ok(value: String)
+  case Error(code: Int)
+  case Pending
+}
+
+val json = ForyJsonScala.builder().build()
+```
+
+上述值分别使用 `{"Ok":{"value":"ready"}}`、`{"Error":{"code":7}}` 和 `{"Pending":{}}`。读取器不会接受类名或通过运行时反射选择子类型。对于无法添加 `derives` 的第三方枚举,可在 builder 调用处派生并注册其 Schema:
+
+```scala
+val json = ForyJsonScala.builder().register[thirdparty.Result].build()
+```
+
+对于 Scala 3 sealed trait 或类,添加空的 `JsonSubTypes` 注解并派生 `ScalaJsonCodec`:
+
+```scala
+import org.apache.fory.json.annotation.JsonSubTypes
+import org.apache.fory.json.scala.*
+
+@JsonSubTypes(property = "kind")
+sealed trait Event derives ScalaJsonCodec
+
+final case class Message(value: String) extends Event
+case object Idle extends Event
+```
+
+此示例使用 `Message` 和 `Idle` 作为逻辑子类型名。派生过程递归遍历 sealed 分支。具体 open 类作为一个精确成员,其后代不被允许;开放抽象分支会被拒绝。非空注解值仍表示显式子集。此推导功能不支持 Scala 2 sealed trait 和类。
+
+### 将派生编解码器打包到模块 {#packaging-derived-codecs-in-a-module}
+
+支持多个第三方 Scala 3 枚举的库,可以将其派生编解码器打包为可复用模块:
+
+```scala
+import org.apache.fory.json.{ForyJsonModule, ModuleContext}
+import org.apache.fory.json.scala.*
+
+object ThirdPartyJsonModule extends ForyJsonModule:
+  override def install(context: ModuleContext): Unit =
+    context.registerCodec(
+      classOf[thirdparty.Result],
+      ScalaJsonCodec.derived[thirdparty.Result]
+    )
+
+val json =
+  ForyJsonScala.builder()
+    .withModule(ThirdPartyJsonModule)
+    .build()
+```
+
+派生代码作为模块的一部分编译,因此使用者只需安装已编译的模块。这相当于将一个 builder 上的 `register[thirdparty.Result]` 调用封装为可复用形式。
+
+模块通过 `withModule` 显式安装。Fory JSON 不扫描类路径,也不通过 `ServiceLoader` 调用模块;显式安装让启用的编解码器保持确定,并防止无关依赖改变反序列化行为。通用模块 API 和注册规则见[模块](modules.md)。
+
+## GraalVM Native Image
+
+Scala 模块在 JVM 和原生镜像中使用相同的注册方式。应用模型、自定义编解码器,以及派生的枚举或 sealed Schema 必须在原生镜像构建时可达。应在 native-image 构建过程中生成 Fory 编解码器,而不是添加通用反射配置。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/security.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/security.md
index bd0d000cae2..5486bb23300 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/security.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/security.md
@@ -1,6 +1,6 @@
 ---
 title: 安全
-sidebar_position: 8
+sidebar_position: 11
 id: security
 license: |
   Licensed to the Apache Software Foundation (ASF) under one or more
@@ -19,9 +19,9 @@ license: |
   limitations under the License.
 ---
 
-使用 Fory JSON 处理不可信输入前,必须先定义允许实例化的 Java 类型,以及端点需要执行的资源限制。
-Fory JSON 不会从 JSON 输入推导任意 Java 类名,但注解、声明的目标类型和自定义 codec 仍会定义
-由应用控制的对象范围。
+使用 Fory JSON 处理不可信输入前,必须明确允许实例化哪些 JVM 类型,以及接口执行哪些资源限制。Fory JSON 不会从 JSON 输入推导任意 Java 类名,但注解、声明的目标类型和自定义编解码器仍共同决定由应用控制的对象范围。
+
+Kotlin 类型令牌和元数据是可信 Schema 声明,不是输入获得权限的来源。Kotlin 模块会在解析前验证逻辑类型、物理 JVM 载体以及构造函数/默认值操作。JSON 输入不能选择类、构造函数、编译器默认值目标、对象、伴生对象、模块、编解码器或可调用对象。`JsonSubTypes` 只从有限表中选择逻辑名称,该表来自显式条目或推导的 sealed 层次结构。
 
 ## 类型策略与类加载
 
@@ -43,6 +43,8 @@ ForyJson json =
 因此必须线程安全。内置标量类型通常不会调用自定义 checker,但如果内置目标使用应用 codec,
 该目标也会接受 checker 检查。自定义 codec 绝不会绕过固定禁止列表。
 
+空的 `JsonSubTypes.value` 允许选定顶层基类型的静态 sealed 闭包。这仍是封闭集合:JSON 不能指定类名、搜索类路径,也不能允许精确 open 成员后续增加的后代。如果完整 sealed 闭包超出接口信任范围,请声明非空显式子类型表,或使用 `withTypeChecker` 拒绝精确的推导类。固定禁用列表验证完整推导闭包,自定义 checker 可缩小该闭包;拒绝全部推导类会报错。显式子类型表是精确声明,若 checker 拒绝其中某个条目则会失败。
+
 `withClassLoader` 设置用于加载注解所声明子类型 `className` 条目的 ClassLoader。
 如果未设置,`build()` 会保存当前线程上下文 ClassLoader 的快照,并回退到定义 `ForyJson` 的
 ClassLoader。此后更改线程上下文 ClassLoader 不会影响该 `ForyJson` 实例。
@@ -59,13 +61,7 @@ ClassLoader。此后更改线程上下文 ClassLoader 不会影响该 `ForyJson`
 为正数。String 根输入与 UTF-8 字节数组根输入使用相同的配置限制。每次根读取都从完整预算开始,
 无论成功还是失败,都不会减少下一次操作的预算。该限制并非根据输入长度推导。
 
-内置计量包括 POJO 和 record 的浅层存储;collection 和 set 及候选元素引用槽;Map 及候选键值
-引用槽;引用数组及其槽位;以及基本类型数组及其基本类型存储。自然 `JsonObject` 和 `JsonArray`
-值遵循相同的 Map 和 collection 规则。未知长度的 collection、Map 和数组存储按 1024 个元素一批
-预留:在每批最后一个子值之前以及末尾进行。因此,重复的 set 元素以及重复或被覆盖的 Map 成员,
-都会按输入中的每次出现计费。即使引用数组的每个元素都是叶值,仍会计费;即使对象的所有属性都是
-叶值,对象本身仍会计费。`AtomicReference`、`AtomicReferenceArray` 和泛型 `Optional<T>` 值包含
-wrapper 和引用存储;基本类型 optional 和原子基本类型值属于叶值。
+内置计量包括 POJO 和 Record 的浅层存储,集合和 set 及候选元素引用槽位,Map 及候选键/值引用槽位,引用数组及其槽位,以及基本类型数组及其存储。自然 `JsonObject` 和 `JsonArray` 值遵循相同 Map 和集合规则。长度未知的集合、Map 和数组按 1024 项分批预留存储,在每批最后一个子元素之前及尾部执行。因此,重复 set 元素以及重复或被覆盖的 Map 成员,每次在输入中出现都会计量。即使所有元素都是叶子值,引用数组仍会计量;即使所有属性都是叶子值,对象也会计量。`AtomicReference`、`AtomicReferenceArray` 和泛型 `Optional<T>` 包含包装对象及引用存储。新分配的基本类型 Optional 或原子基本类型包装也会计量一次;缓存的空 Optional 单例不属于新的对象图所有者。
 
 专用叶值 codec 不计入对象图:null、字符串、字符、布尔值、包括任意精度数在内的数值、枚举、
 时间及其他标量值,以及二进制值。由二进制或 Base64 codec 处理的 `byte[]` 仍是二进制叶值;
@@ -79,6 +75,10 @@ wrapper 和引用存储;基本类型 optional 和原子基本类型值属于
 内部使用的内存、临时解析存储、自定义 codec 未预留的分配,或无关进程内存。因此实际内存用量可能
 超过配置的预算。
 
+Kotlin 不增加独立的集合、输入或工作区限制。数组、集合、Map 和普通对象使用与 Java、Scala 相同的核心深度和对象图内存计量。解释执行时的构造函数参数数组大小由可信模型元数据确定,不来自输入声明的数量,也不会保留在解码后的对象图中。单例和 `Unit` 读取返回现有实例;装箱值类结果在实际创建包装对象时计量一次。
+
+编译器默认值、模型构造函数、验证器和应用编解码器属于可信应用代码,其内部分配和副作用不会被沙箱隔离,也不计入对象图预算。它们抛出异常时仍会使根操作失败并清理根解析状态,但后续因尾随输入导致的失败无法撤销已经执行的代码。解码不可信输入时,应相应检查这些副作用。
+
 ## 外部控制与验证
 
 Fory JSON 不负责身份认证、授权、加密、签名,也不施加 HTTP 请求大小限制。请将其类型、深度和对象图
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/troubleshooting.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/troubleshooting.md
index d587bf547dd..6965756676c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/troubleshooting.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/json/troubleshooting.md
@@ -1,6 +1,6 @@
 ---
 title: 故障排查
-sidebar_position: 9
+sidebar_position: 12
 id: troubleshooting
 license: |
   Licensed to the Apache Software Foundation (ASF) under one or more
@@ -19,22 +19,27 @@ license: |
   limitations under the License.
 ---
 
-| 现象                                    | 可能原因与处理方式                                                                                                         |
-| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
-| 解析时出现 `ForyJsonException`          | JSON 语法无效、类型不匹配、映射不受支持、违反深度或对象图内存限制、validator 失败,或存在尾随内容                          |
-| `InsecureException`                     | Fory 禁止列表或配置的 `JsonTypeChecker` 拒绝了某个类                                                                       |
-| builder 抛出 `IllegalArgumentException` | 检查配置的深度、对象图内存、并发、保留缓冲区和缓存字段名限制                                                               |
-| 声明类型写入被拒绝                      | 值不可赋给声明类型、类型包含通配符或类型变量,或者向基本类型提供了 null                                                    |
-| 不可变值未填充                          | 使用 record、有效的 `JsonCreator` 或精确的自定义 codec                                                                     |
-| `JsonValue` 读取失败                    | 添加一个接收普通 `String` 的 `JsonCreator`,或注册精确的自定义 codec                                                       |
-| 原始 JSON 输出无效                      | 为 `JsonRawValue` 属性提供且只提供一个可信的完整 JSON 值                                                                   |
-| 无法构造普通对象                        | 添加可用的无参 constructor、使用 record 或 `JsonCreator`,或注册自定义 codec;Android 和 GraalVM Native Image 的要求更严格 |
-| 普通 accessor 注解失败                  | 方法不是有效的 public JavaBean accessor,或已启用 field mode                                                               |
-| Any 注解失败                            | 只使用一种基于字段的形式,或一对类型解析为 `Map<String, V>` 的有效方法形式;方法注解要求关闭 field mode                    |
-| Codec 注解失败                          | 解决同一节点或继承层次冲突、移除被隐藏的嵌套覆盖,或使用具有 public 无参 constructor 的 codec 类                           |
-| 子类型被拒绝                            | 写入时未声明基类、运行时类不是类型表中的精确条目,或输入 JSON 结构与配置的包含方式不一致                                   |
-| 无法读取 Collection                     | 目标应为受支持的接口或常见实现,也可以注册自定义 codec                                                                     |
-| OutputStream 写入失败                   | 底层 `IOException` 被包装为 `ForyJsonException` 的 cause                                                                   |
+| 现象 | 可能原因与处理方式 |
+| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
+| 解析时出现 `ForyJsonException` | JSON 语法无效、类型不匹配、映射不受支持、违反深度或对象图内存限制、validator 失败,或存在尾随内容 |
+| `InsecureException` | Fory 禁止列表或配置的 `JsonTypeChecker` 拒绝了某个类 |
+| builder 抛出 `IllegalArgumentException` | 检查配置的深度、对象图内存、并发、保留缓冲区和缓存字段名限制 |
+| 声明类型写入被拒绝 | 值不可赋给声明类型、类型包含通配符或类型变量,或者向基本类型提供了 null |
+| 不可变值未填充 | 使用 record、有效的 `JsonCreator` 或精确的自定义 codec |
+| `JsonValue` 读取失败 | 添加一个接收普通 `String` 的 `JsonCreator`,或注册精确的自定义 codec |
+| 原始 JSON 输出无效 | 为 `JsonRawValue` 属性提供且只提供一个可信的完整 JSON 值 |
+| 无法构造普通对象 | 添加可用的无参 constructor、使用 record 或 `JsonCreator`,或注册自定义 codec;Android 和 GraalVM Native Image 的要求更严格 |
+| 普通 accessor 注解失败 | 方法不是有效的 public JavaBean accessor,或已启用 field mode |
+| Any 注解失败 | 只使用一种基于字段的形式,或一对类型解析为 `Map<String, V>` 的有效方法形式;方法注解要求关闭 field mode |
+| Codec 注解失败 | 解决同一节点或继承层次冲突、移除被隐藏的嵌套覆盖,或使用具有 public 无参 constructor 的 codec 类 |
+| 子类型被拒绝 | 写入时未声明基类、运行时类不是类型表中的精确条目,或输入 JSON 结构与配置的包含方式不一致 |
+| 无法读取 Collection | 目标应为受支持的接口或常见实现,也可以注册自定义 codec |
+| OutputStream 写入失败 | 底层 `IOException` 被包装为 `ForyJsonException` 的 cause |
+| Kotlin null 或成员缺失导致失败 | 检查精确的 `jsonTypeRef`、构造函数默认值和可空使用位置;null 不会请求编译器默认值 |
+| Kotlin 原始泛型、星投影或类型投影失败 | 提供完整的 `jsonTypeRef<T>()`;`in` 和星投影无法重建一个精确 Schema |
+| 不支持的 Kotlin 元数据 | 确保解析到的 `kotlin-metadata-jvm` 支持模型编译器的元数据,并且经过验证的 JVM 成员与元数据匹配 |
+| Kotlin 模型在 Android 代码压缩后失败 | 启用 KSP;精确 Mixin 的来源或目标任一为 Kotlin 时均需使用,并验证生成的规则已打包 |
+| Native Image 中缺少 Kotlin 模型 | 从可达的 `ForyJsonProvider` 安装 `ForyJsonKotlin`,启用代码生成,并使精确绑定从该配置可达 |
 
 Fory JSON 的映射、语法、codec、深度、对象图内存、validator 和输出失败使用
 `ForyJsonException`。用户 codec 代码仍可能抛出自己的运行时异常。除 `Error` 以外的 creator
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/index.md
index 3956461b5cb..966c5e58570 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/index.md
@@ -60,7 +60,7 @@ include(FetchContent)
 FetchContent_Declare(
     fory
     GIT_REPOSITORY https://github.com/apache/fory.git
-    GIT_TAG        v1.6.1
+    GIT_TAG        v1.7.0
     SOURCE_SUBDIR  cpp
 )
 FetchContent_MakeAvailable(fory)
@@ -90,11 +90,11 @@ module(
 
 bazel_dep(name = "rules_cc", version = "0.1.1")
 
-bazel_dep(name = "fory", version = "1.6.1")
+bazel_dep(name = "fory", version = "1.7.0")
 git_override(
     module_name = "fory",
     remote = "https://github.com/apache/fory.git",
-    commit = "v1.6.1",  # Or use a specific commit hash for reproducibility
+    commit = "v1.7.0",  # Or use a specific commit hash for reproducibility
 )
 ```
 
@@ -125,7 +125,7 @@ bazel run //:my_app
 本地开发时,可以改用 `local_path_override`:
 
 ```bazel
-bazel_dep(name = "fory", version = "1.6.1")
+bazel_dep(name = "fory", version = "1.7.0")
 local_path_override(
     module_name = "fory",
     path = "/path/to/fory",
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/schema-metadata.md
index 2058fc3390b..62124a97fee 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/cpp/schema-metadata.md
@@ -56,7 +56,7 @@ FORY_STRUCT(DataV2, id, (timestamp, fory::F().tagged()), version);
 FORY_STRUCT(Counter, FORY_PROPERTY(value, fory::F().varint()));
 ```
 
-`fory::F(id)` 使用显式的 ID 字段标识。ID 必须为非负数:
+`fory::F(id)` 使用显式基于 ID 的字段身份。配置的 ID 必须在完整结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`):
 
 ```cpp
 FORY_STRUCT(DataV2, (id, fory::F(0)), (timestamp, fory::F(1).tagged()),
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/index.md
index 385336c77d5..33de125c89f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/index.md
@@ -44,7 +44,7 @@ Apache Fory™ C# 是面向 .NET 的高性能跨语言序列化库。它支持
 
 ```xml
 <ItemGroup>
-  <PackageReference Include="Apache.Fory" Version="1.6.1" />
+  <PackageReference Include="Apache.Fory" Version="1.7.0" />
 </ItemGroup>
 ```
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/schema-metadata.md
index 7c625d85c59..366019499be 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/csharp/schema-metadata.md
@@ -23,7 +23,7 @@ license: |
 
 ## `[ForyStruct]` 和 `[ForyField]`
 
-使用 `[ForyStruct]` 启用源码生成序列化器。使用 `[ForyField]` 分配可选、稳定的非负字段 ID,或覆盖字段所用的 Fory Schema 类型。
+使用 `[ForyStruct]` 启用源码生成的序列化器。使用 `[ForyField]` 可分配可选的稳定字段 ID,或覆盖字段使用的 Fory Schema 类型。配置的 ID 必须在完整结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`)。
 
 外部类型序列化在本地抽象序列化器声明上设置 `Target`。该声明的属性定义字段名称、ID、Schema 描述符和可空性。独立声明还定义其 `Evolving` 设置。外部 `BaseOnly` 声明不能设置 `Evolving`;该设置由每个具体派生类型负责。目标提供目标类型的值和直接访问的成员。
 
@@ -64,7 +64,7 @@ public sealed class Metrics
 }
 ```
 
-`Id` 是可选的。省略时,兼容模式仍按名称匹配字段。
+`Id` 是可选的。省略时,兼容模式仍按字段名匹配。分配 ID 后应保持稳定,不要将其复用于其他字段。
 
 ```csharp
 using Apache.Fory;
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/index.md
index 0637f2f6ff8..881f6a216ac 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/index.md
@@ -44,7 +44,7 @@ Apache Fory™ Dart 可以将 Dart 对象序列化为字节并反序列化,也
 
 ```yaml
 dependencies:
-  fory: ^1.6.1
+  fory: ^1.7.0
 
 dev_dependencies:
   build_runner: ^2.4.0
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/schema-metadata.md
index 020b6509baa..41278894bcb 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/dart/schema-metadata.md
@@ -57,7 +57,7 @@ String cachedDisplayName = '';
 String name = '';
 ```
 
-载荷开始跨服务共享后,绝不要为其他字段复用 `id`。
+载荷一旦在服务之间共享,就不要将某个 `id` 复用于其他字段。配置的 ID 必须满足 `0 <= id < 2^29`(`0` 至 `536870911`)。
 
 普通子类只有一个扁平字段命名空间。因此,在子类、父类和所应用 mixin 声明中纳入的所有字段之间,ID 必须唯一。
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/schema-metadata.md
index 72e1d7f2dfe..28a22ba2617 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/schema-metadata.md
@@ -47,13 +47,15 @@ type User struct {
 }
 ```
 
+配置的 ID 必须在结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`)。已分配的 ID 应保持稳定,不要复用于其他字段。
+
 **优势**:
 
 - 序列化体积更小(数字 ID 相比字段名称)
 - 序列化和反序列化更快
 - 获得最佳跨语言兼容性所必需
 
-**注意**:
+**说明**:
 
 - ID 在结构体中必须唯一
 - ID 必须 >= 0
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/troubleshooting.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/troubleshooting.md
index 16c0dfe6d05..68984fc5652 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/troubleshooting.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/go/troubleshooting.md
@@ -206,7 +206,7 @@ f2 := fory.New(fory.WithTrackRef(true))  // Must match!
 
 **常见原因**:
 
-1. **标签 ID 无效**:ID 必须为非负数
+1. **无效 tag ID**:ID 必须满足 `0 <= id < 2^29`(`0` 至 `536870911`)
 
 ```go
 // Wrong: negative ID
@@ -218,6 +218,11 @@ type Bad struct {
 type Good struct {
     Field int `fory:"id=0"`
 }
+
+// Wrong: ID reaches the exclusive upper bound
+type TooLarge struct {
+    Field int `fory:"id=536870912"`
+}
 ```
 
 2. **标签 ID 重复**:结构体中的每个字段必须具有唯一 ID
@@ -256,7 +261,7 @@ type User struct {
 }
 ```
 
-2. **使用字段 ID 保持顺序一致**:字段 ID(非负整数)作为字段名称的别名,同时用于排序和反序列化期间的字段匹配:
+2. **使用字段 ID 保持一致顺序**:协议范围内的字段 ID 充当字段名的别名,在反序列化时同时用于排序和字段匹配:
 
 ```go
 type User struct {
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/configuration.md
index 782df3cecaa..ed8bcabe41c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/configuration.md
@@ -23,36 +23,40 @@ license: |
 
 ## ForyBuilder 选项
 
-| 选项名称                            | 说明                                                                                                                                                                                                                                                                                                                                                                | 默认值                                                        |
+| 选项名称 | 说明 | 默认值 |
 | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
-| `timeRefIgnored`                    | 启用引用跟踪时,是否忽略 `TimeSerializers` 注册的所有时间类型及其子类的引用跟踪。若已忽略,可调用 `Fory#registerSerializer(Class, Serializer)` 为各时间类型启用引用跟踪,例如 `fory.registerSerializer(Date.class, new DateSerializer(fory.getConfig(), true))`。请注意,应在对包含时间字段的类型进行序列化器代码生成前启用引用跟踪,否则这些字段仍会跳过引用跟踪。 | `true`                                                        |
-| `compressInt`                       | 启用或禁用 int 压缩,以减小体积。                                                                                                                                                                                                                                                                                                                                   | `true`                                                        |
-| `compressLong`                      | 启用或禁用 long 压缩,以减小体积。                                                                                                                                                                                                                                                                                                                                  | `true`                                                        |
-| `compressIntArray`                  | 值较小时启用或禁用 int 数组压缩。显式注册 `CompressedArraySerializers` 后,JDK 8 至 15 使用标量宽度分析;JDK 16 及更高版本在解析 `jdk.incubator.vector` 时自动选择 Vector API 实现。                                                                                                                                                                                | `false`                                                       |
-| `compressLongArray`                 | 值较小时启用或禁用 long 数组压缩。显式注册 `CompressedArraySerializers` 后,JDK 8 至 15 使用标量宽度分析;JDK 16 及更高版本在解析 `jdk.incubator.vector` 时自动选择 Vector API 实现。                                                                                                                                                                               | `false`                                                       |
-| `compressString`                    | 启用或禁用字符串压缩,以减小体积。                                                                                                                                                                                                                                                                                                                                  | `false`                                                       |
-| `classLoader`                       | 每个 `Fory` 实例的类加载器固定不变,因为 Fory 会缓存类元数据。要使用不同的加载器,请创建配置了该加载器的新 `Fory` 或 `ThreadSafeFory`,或在首次解析类之前使用线程上下文类加载器。                                                                                                                                                                                   | `Thread.currentThread().getContextClassLoader()`              |
-| `compatible`                        | Schema 演进模式。`true`:读取端可以容忍兼容的字段新增、删除和重排。`false`:仅当每个读取端和写入端始终使用相同的类 Schema,并希望获得更快速度和更小体积时使用。未设置时,跨语言模式和原生模式都启用兼容模式。[了解更多](schema-evolution.md)。                                                                                                                      | `true`                                                        |
-| `checkClassVersion`                 | 为明确使用相同 Schema 的载荷检查类版本哈希。兼容模式携带用于演进的 Schema 元数据,因此启用兼容模式时 Fory 会禁用该检查。                                                                                                                                                                                                                                            | `false`                                                       |
-| `checkJdkClassSerializable`         | 启用或禁用对 `Serializable` 接口的检查,检查对象为 `java.*` 下的类。如果 `java.*` 下的类没有实现 `Serializable`,Fory 会抛出 `UnsupportedOperationException`。                                                                                                                                                                                                      | `true`                                                        |
-| `registerGuavaTypes`                | 是否预注册 `RegularImmutableMap`/`RegularImmutableList` 等 Guava 类型。这些类型不是公共 API,但看起来相当稳定。                                                                                                                                                                                                                                                     | `true`                                                        |
-| `requireClassRegistration`          | 禁用后可能允许反序列化未知类,从而带来安全风险。                                                                                                                                                                                                                                                                                                                    | `true`                                                        |
-| `maxDepth`                          | 设置反序列化最大深度;超过该深度时抛出异常,可用于抵御反序列化 DDoS 攻击。                                                                                                                                                                                                                                                                                          | `50`                                                          |
-| `maxGraphMemoryBytes`               | 单次根反序列化的近似对象图内存门限,主要覆盖实例化的集合、映射、数组、结构体和对象;叶子值由剩余输入字节约束。                                                                                                                                                                                                                                                      | `134217728`                                                   |
-| `maxUnbackedContainerItems`         | 单次根反序列化中,重复读取正文没有相应输入进度支撑的集合元素和映射条目的最大数量。零表示严格限制。                                                                                                                                                                                                                                                                  | `8192`                                                        |
-| `maxTypeFields`                     | 单个远程结构体元数据正文可接受的最大字段数。                                                                                                                                                                                                                                                                                                                        | `512`                                                         |
-| `maxTypeMetaBytes`                  | 单个 TypeDef 或 TypeMeta 正文可接受的最大编码字节数,不含 8 字节头部和扩展长度 varint。                                                                                                                                                                                                                                                                             | `4096`                                                        |
-| `maxSchemaVersionsPerType`          | 每个逻辑类型可接受的远程元数据版本上限。                                                                                                                                                                                                                                                                                                                            | `10`                                                          |
-| `maxAverageSchemaVersionsPerType`   | 所有已接受远程类型的平均远程元数据版本数。有效的全局下限为 `8192` 个元数据条目。                                                                                                                                                                                                                                                                                    | `3`                                                           |
-| `suppressClassRegistrationWarnings` | 是否抑制类注册警告。这些警告可用于安全审计,但也可能造成干扰,因此默认启用抑制。                                                                                                                                                                                                                                                                                    | `true`                                                        |
-| `metaShareEnabled`                  | 启用或禁用元数据共享模式。                                                                                                                                                                                                                                                                                                                                          | 兼容模式启用时为 `true`,否则为 false。                       |
-| `scopedMetaShareEnabled`            | 作用域元数据共享聚焦于单次序列化过程。该过程中创建或识别的元数据仅归其所有,不与其他序列化共享。                                                                                                                                                                                                                                                                    | 兼容模式启用时为 `true`,否则为 false。                       |
-| `metaCompressor`                    | 设置元数据压缩器。传入的 MetaCompressor 应为线程安全。默认使用基于 `Deflater` 的压缩器 `DeflaterMetaCompressor`;用户可传入 `zstd` 等其他压缩器以获得更高压缩率。                                                                                                                                                                                                   | `DeflaterMetaCompressor`                                      |
-| `deserializeUnknownClass`           | 启用或禁用对不存在或未知类的数据进行反序列化或跳过。                                                                                                                                                                                                                                                                                                                | 兼容模式启用时为 `true`,否则为 false。                       |
-| `codeGenEnabled`                    | 禁用后首次序列化可能更快,但后续序列化会更慢。未设置时,代码生成在普通 JVM 上默认启用,在 Android 和 GraalVM 原生镜像上默认禁用。Android 或 GraalVM 原生镜像接受显式 `withCodegen(true)`,但最终构建配置会强制使用解释器序列化器并发出警告。如果存在构建时 `@ForyStruct` 静态序列化器,普通 JVM 的 `withCodegen(false)` 和 Android 会使用它替代解释器对象序列化器。 | 普通 JVM 上为 `true`;Android 和 GraalVM 原生镜像上为 `false` |
-| `asyncCompilationEnabled`           | 启用后,序列化先使用解释器模式,并在类的异步序列化器 JIT 完成后切换到 JIT 序列化。Android 和 GraalVM 原生镜像不支持运行时代码生成,因此会强制关闭此选项。                                                                                                                                                                                                           | `false`                                                       |
-| `copyRef`                           | 禁用后复制性能更好,但 Fory 深拷贝会忽略循环引用和共享引用。单次 `Fory#copy` 中,对象图里的同一引用会被复制为不同对象。                                                                                                                                                                                                                                             | `false`                                                       |
-| `serializeEnumByName`               | 启用后,Fory 序列化枚举名称而非数字枚举 tag。未启用时,Fory 默认写入声明序号;如果枚举配置了 `@ForyEnumId`,则写入显式稳定 ID。                                                                                                                                                                                                                                     | `false`                                                       |
+| `timeRefIgnored` | 启用引用跟踪时,是否忽略 `TimeSerializers` 注册的所有时间类型及其子类的引用跟踪。若已忽略,可调用 `Fory#registerSerializer(Class, Serializer)` 为各时间类型启用引用跟踪,例如 `fory.registerSerializer(Date.class, new DateSerializer(fory.getConfig(), true))`。请注意,应在对包含时间字段的类型进行序列化器代码生成前启用引用跟踪,否则这些字段仍会跳过引用跟踪。 | `true` |
+| `compressInt` | 启用或禁用 int 压缩,以减小体积。 | `true` |
+| `compressLong` | 启用或禁用 long 压缩,以减小体积。 | `true` |
+| `compressIntArray` | 值较小时启用或禁用 int 数组压缩。显式注册 `CompressedArraySerializers` 后,JDK 8 至 15 使用标量宽度分析;JDK 16 及更高版本在解析 `jdk.incubator.vector` 时自动选择 Vector API 实现。 | `false` |
+| `compressLongArray` | 值较小时启用或禁用 long 数组压缩。显式注册 `CompressedArraySerializers` 后,JDK 8 至 15 使用标量宽度分析;JDK 16 及更高版本在解析 `jdk.incubator.vector` 时自动选择 Vector API 实现。 | `false` |
+| `compressString` | 启用或禁用字符串压缩,以减小体积。 | `false` |
+| `classLoader` | 每个 `Fory` 实例的类加载器固定不变,因为 Fory 会缓存类元数据。要使用不同的加载器,请创建配置了该加载器的新 `Fory` 或 `ThreadSafeFory`,或在首次解析类之前使用线程上下文类加载器。 | `Thread.currentThread().getContextClassLoader()` |
+| `compatible` | Schema 演进模式。`true`:读取端可以容忍兼容的字段新增、删除和重排。`false`:仅当每个读取端和写入端始终使用相同的类 Schema,并希望获得更快速度和更小体积时使用。未设置时,跨语言模式和原生模式都启用兼容模式。[了解更多](schema-evolution.md)。 | `true` |
+| `checkClassVersion` | 为明确使用相同 Schema 的载荷检查类版本哈希。兼容模式携带用于演进的 Schema 元数据,因此启用兼容模式时 Fory 会禁用该检查。 | `false` |
+| `checkJdkClassSerializable` | 启用或禁用对 `Serializable` 接口的检查,检查对象为 `java.*` 下的类。如果 `java.*` 下的类没有实现 `Serializable`,Fory 会抛出 `UnsupportedOperationException`。 | `true` |
+| `registerGuavaTypes` | 是否预注册 `RegularImmutableMap`/`RegularImmutableList` 等 Guava 类型。这些类型不是公共 API,但看起来相当稳定。 | `true` |
+| `requireClassRegistration` | 禁用后可能允许反序列化未知类,从而带来安全风险。 | `true` |
+| `maxDepth` | 设置反序列化最大深度;超过该深度时抛出异常,可用于抵御反序列化 DDoS 攻击。 | `50` |
+| `maxGraphMemoryBytes` | 单次根反序列化的近似对象图内存门限,主要覆盖实例化的集合、映射、数组、结构体和对象;叶子值由剩余输入字节约束。 | `134217728` |
+| `maxUnbackedContainerItems` | 单次根反序列化中,重复读取正文没有相应输入进度支撑的集合元素和映射条目的最大数量。零表示严格限制。 | `8192` |
+| `maxTypeFields` | 单个远程结构体元数据正文可接受的最大字段数。 | `512` |
+| `maxTypeMetaBytes` | 单个 TypeDef 或 TypeMeta 正文可接受的最大编码字节数,不含 8 字节头部和扩展长度 varint。 | `4096` |
+| `maxSchemaVersionsPerType` | 每个逻辑类型可接受的远程元数据版本上限。 | `10` |
+| `maxAverageSchemaVersionsPerType` | 所有已接受远程类型的平均远程元数据版本数。有效的全局下限为 `8192` 个元数据条目。 | `3` |
+| `suppressClassRegistrationWarnings` | 是否抑制类注册警告。这些警告可用于安全审计,但也可能造成干扰,因此默认启用抑制。 | `true` |
+| `metaShareEnabled` | 启用或禁用元数据共享模式。 | 兼容模式启用时为 `true`,否则为 false。 |
+| `scopedMetaShareEnabled` | 作用域元数据共享聚焦于单次序列化过程。该过程中创建或识别的元数据仅归其所有,不与其他序列化共享。 | 兼容模式启用时为 `true`,否则为 false。 |
+| `metaCompressor` | 为 Schema 元数据设置线程安全的压缩器。用于反序列化的自定义压缩器必须实现下文所述的有界解压。 | `DeflaterMetaCompressor` |
+| `deserializeUnknownClass` | 启用或禁用对不存在或未知类的数据进行反序列化或跳过。 | 兼容模式启用时为 `true`,否则为 false。 |
+| `codeGenEnabled` | 禁用后首次序列化可能更快,但后续序列化会更慢。未设置时,代码生成在普通 JVM 上默认启用,在 Android 和 GraalVM 原生镜像上默认禁用。Android 或 GraalVM 原生镜像接受显式 `withCodegen(true)`,但最终构建配置会强制使用解释器序列化器并发出警告。如果存在构建时 `@ForyStruct` 静态序列化器,普通 JVM 的 `withCodegen(false)` 和 Android 会使用它替代解释器对象序列化器。 | 普通 JVM 上为 `true`;Android 和 GraalVM 原生镜像上为 `false` |
+| `asyncCompilationEnabled` | 启用后,序列化先使用解释器模式,并在类的异步序列化器 JIT 完成后切换到 JIT 序列化。Android 和 GraalVM 原生镜像不支持运行时代码生成,因此会强制关闭此选项。 | `false` |
+| `copyRef` | 禁用后复制性能更好,但 Fory 深拷贝会忽略循环引用和共享引用。单次 `Fory#copy` 中,对象图里的同一引用会被复制为不同对象。 | `false` |
+| `serializeEnumByName` | 启用后,Fory 序列化枚举名称而非数字枚举 tag。未启用时,Fory 默认写入声明序号;如果枚举配置了 `@ForyEnumId`,则写入显式稳定 ID。 | `false` |
+
+### 自定义元数据压缩器 {#custom-metadata-compressors}
+
+向 `withMetaCompressor` 传入自定义 `MetaCompressor` 时,必须保证线程安全并实现 `decompress(byte[], int, int, int maxOutputSize)`。实现必须在分配输出前拒绝超过 `maxOutputSize` 的输出,或在解压过程中逐步执行该限制。
 
 ## 配置示例
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/index.md
index a515946eefe..d49d5ec4e7f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/index.md
@@ -51,7 +51,7 @@ Fory core 支持 Java 8 及更高版本。Java Record 序列化需要 Java 17 
 <dependency>
   <groupId>org.apache.fory</groupId>
   <artifactId>fory-core</artifactId>
-  <version>1.6.1</version>
+  <version>1.7.0</version>
 </dependency>
 ```
 
@@ -59,7 +59,7 @@ Fory core 支持 Java 8 及更高版本。Java Record 序列化需要 Java 17 
 
 ```kotlin
 // Binary object serialization
-implementation("org.apache.fory:fory-core:1.6.1")
+implementation("org.apache.fory:fory-core:1.7.0")
 ```
 
 #### JDK 25 及更高版本
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-evolution.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-evolution.md
index 703014c4920..bd2f7b5ba1c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-evolution.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-evolution.md
@@ -51,6 +51,10 @@ System.out.println(fory.deserialize(bytes));
 
 兼容模式会将类元数据写入序列化输出。尽管 Fory 使用先进的压缩技术尽量降低开销,类元数据仍会带来一定的额外空间成本。
 
+### 元数据压缩 {#metadata-compression}
+
+`DeflaterMetaCompressor` 是默认元数据压缩器。如果兼容模式读取器使用自定义 `MetaCompressor`,请实现 `decompress(byte[], int, int, int maxOutputSize)`,并在分配声明的输出之前或解压过程中逐步执行输出限制。所需读取器设置见[配置](configuration.md#custom-metadata-compressors)。
+
 ## 元数据共享
 
 为了进一步降低元数据成本,Fory 引入类元数据共享机制,使元数据只需向反序列化进程发送一次。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-metadata.md
index 837461a6e35..6d39d129319 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/java/schema-metadata.md
@@ -87,10 +87,10 @@ public class User {
 
 ### 参数
 
-| 参数      | 类型      | 默认值 | 说明                         |
-| --------- | --------- | ------ | ---------------------------- |
-| `id`      | `int`     | `-1`   | 非负字段 tag ID,或不设置 ID |
-| `dynamic` | `Dynamic` | `AUTO` | 控制结构体字段的多态行为     |
+| 参数 | 类型 | 默认值 | 说明 |
+| --------- | --------- | ------- | -------------------------------- |
+| `id` | `int` | `-1` | 字段 tag ID,或内部无 ID 哨兵值 |
+| `dynamic` | `Dynamic` | `AUTO` | 控制结构体字段的多态行为 |
 
 在字段类型或嵌套类型位置使用 `@Nullable` 表示可空 Schema 元数据,使用 `@Ref` 表示引用跟踪。`@ForyField` 本身不包含这两项设置。
 
@@ -121,9 +121,10 @@ public class User {
 
 **注意事项**:
 
-- ID 在类中必须唯一
-- 配置的 ID 必须 >= 0
-- 如果未指定,注解默认值 `-1` 会被忽略,元数据改用字段名(开销更大)
+- 配置的 ID 必须满足 `0 <= id < 2^29`(`0` 至 `536870911`)
+- ID 必须在完整结构体 Schema 内唯一,包括继承字段
+- 未指定时,注解默认值 `-1` 是内部无 ID 哨兵值,元数据中使用字段名(开销更大)
+- 分配 ID 后应保持稳定,不要复用于其他字段
 
 **不使用字段 ID**(元数据使用字段名):
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/javascript/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/javascript/schema-metadata.md
index c30a00baef5..b01f795062c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/javascript/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/javascript/schema-metadata.md
@@ -47,6 +47,22 @@ const byName = Type.struct(
 
 使用 `.` 在 `typeName` 中添加命名空间前缀。
 
+## 字段 ID {#field-ids}
+
+在字段类型上调用 `setId(id)`,即可分配稳定的数字字段身份:
+
+```ts
+const userType = Type.struct(
+  { typeId: 1001 },
+  {
+    id: Type.int64().setId(0),
+    name: Type.string().setId(1),
+  },
+);
+```
+
+配置的 ID 必须在结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`)。已分配的 ID 应保持稳定,不要复用于其他字段。未设置 ID 的字段使用字段名。
+
 ## 装饰器元数据
 
 装饰器可以让 Schema 与 TypeScript 类声明放在一起:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/index.md
index 10c237ce64d..e38e00b4caa 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/index.md
@@ -53,14 +53,14 @@ Fory Kotlin 继承了 Fory Java 的全部功能,并增加了 Kotlin 特有优
 <dependency>
   <groupId>org.apache.fory</groupId>
   <artifactId>fory-kotlin</artifactId>
-  <version>1.6.1</version>
+  <version>1.7.0</version>
 </dependency>
 ```
 
 ### Gradle
 
 ```kotlin
-implementation("org.apache.fory:fory-kotlin:1.6.1")
+implementation("org.apache.fory:fory-kotlin:1.7.0")
 ```
 
 ### JDK25+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/schema-metadata.md
index 05cfa8fba6a..f1996a03022 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/kotlin/schema-metadata.md
@@ -49,6 +49,8 @@ data class User(
 `@field:ForyField(id = 1)`。不要使用 `@get:ForyField` 或 `@set:ForyField`;访问器不是
 Schema 字段,处理器会拒绝它们。
 
+配置的字段 ID 必须在结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`)。已分配的 ID 应保持稳定,不要复用于其他字段。省略 `id` 时使用字段名。
+
 ## 可空性
 
 使用 Kotlin `?` 描述可空的 Schema 位置。集合和 map 内部会保留可空性:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/python/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/python/schema-metadata.md
index dfda648e725..14fff5d3ccd 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/python/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/python/schema-metadata.md
@@ -70,15 +70,15 @@ class User:
 
 ### 参数
 
-| 参数              | 类型     | 默认值    | 说明                 |
-| ----------------- | -------- | --------- | -------------------- |
-| `id`              | `int`    | 省略      | 非负字段 tag ID      |
-| `nullable`        | `bool`   | `False`   | 字段是否可以为 null  |
-| `ref`             | `bool`   | `False`   | 启用引用跟踪         |
-| `ignore`          | `bool`   | `False`   | 从序列化中排除字段   |
-| `dynamic`         | `bool`   | `None`    | 控制是否写入类型信息 |
-| `default`         | Any      | `MISSING` | 字段默认值           |
-| `default_factory` | Callable | `MISSING` | 默认值工厂函数       |
+| 参数 | 类型 | 默认值 | 说明 |
+| ----------------- | ------ | --------- | ------------------------------- |
+| `id` | `int` | 省略 | `0 <= id < 2^29` 范围内的字段 tag ID |
+| `nullable` | `bool` | `False` | 字段是否可以为 null |
+| `ref` | `bool` | `False` | 启用引用跟踪 |
+| `ignore` | `bool` | `False` | 从序列化中排除字段 |
+| `dynamic` | `bool` | `None` | 控制是否写入类型信息 |
+| `default` | Any | `MISSING` | 字段默认值 |
+| `default_factory` | Callable | `MISSING` | 默认值工厂函数 |
 
 ## 字段 ID(`id`)
 
@@ -102,9 +102,10 @@ class User:
 
 **注意事项**:
 
-- ID 在类中必须唯一
-- ID 必须 >= 0
+- ID 必须在结构体 Schema 内唯一
+- ID 必须满足 `0 <= id < 2^29`(`0` 至 `536870911`)
 - 如果未指定,元数据使用字段名(开销更大)
+- 分配 ID 后应保持稳定,不要复用于其他字段
 
 **不使用字段 ID**(元数据使用字段名):
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/basic-serialization.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/basic-serialization.md
index 3c7ad0a84f2..b403d479ecb 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/basic-serialization.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/basic-serialization.md
@@ -145,7 +145,7 @@ Rust 启用 `chrono::NaiveDate`、`chrono::NaiveDateTime` 和 `chrono::Duration`
 
 ```toml
 [dependencies]
-fory = { version = "1.6.1", features = ["chrono"] }
+fory = { version = "1.7.0", features = ["chrono"] }
 ```
 
 ### 自定义类型
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/index.md
index c1e56e07395..db34d4e8bd2 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/index.md
@@ -36,9 +36,9 @@ Rust 实现通过自动内存管理和编译期类型安全提供灵活的高性
 
 | Crate                                                                       | 说明                               | 版本                                          |
 | --------------------------------------------------------------------------- | ---------------------------------- | --------------------------------------------- |
-| [`fory`](https://github.com/apache/fory/blob/main/rust/fory)                | 面向用户的 API、运行时类型和派生宏 | [1.6.1](https://crates.io/crates/fory)        |
-| [`fory-core`](https://github.com/apache/fory/blob/main/rust/fory-core/)     | 用于高级集成的底层运行时 crate     | [1.6.1](https://crates.io/crates/fory-core)   |
-| [`fory-derive`](https://github.com/apache/fory/blob/main/rust/fory-derive/) | 供直接使用运行时的底层过程宏 crate | [1.6.1](https://crates.io/crates/fory-derive) |
+| [`fory`](https://github.com/apache/fory/blob/main/rust/fory)                | 面向用户的 API、运行时类型和派生宏 | [1.7.0](https://crates.io/crates/fory)        |
+| [`fory-core`](https://github.com/apache/fory/blob/main/rust/fory-core/)     | 用于高级集成的底层运行时 crate     | [1.7.0](https://crates.io/crates/fory-core)   |
+| [`fory-derive`](https://github.com/apache/fory/blob/main/rust/fory-derive/) | 供直接使用运行时的底层过程宏 crate | [1.7.0](https://crates.io/crates/fory-derive) |
 
 大多数应用程序只需依赖 `fory`。它重新导出生成代码所需的派生宏和公共运行时类型。只有明确要基于底层运行时 crate 构建时,才直接使用 `fory-core` 或 `fory-derive`。
 
@@ -48,7 +48,7 @@ Rust 实现通过自动内存管理和编译期类型安全提供灵活的高性
 
 ```toml
 [dependencies]
-fory = "1.6.1"
+fory = "1.7.0"
 ```
 
 ### 基本示例
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/schema-metadata.md
index 72c06cb76a7..0088b45efab 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/rust/schema-metadata.md
@@ -80,11 +80,12 @@ struct User {
 
 **建议**:建议为兼容模式配置字段 ID,因为这可以降低序列化成本。
 
-**注意**:
+**注意事项**:
 
 - ID 在结构体中必须唯一
-- ID 必须为非负数
+- ID 必须满足 `0 <= id < 2^29`(`0` 至 `536870911`)
 - 未指定时在元数据中使用字段名称(开销更大)
+- 分配 ID 后应保持稳定,不要复用于其他字段
 
 ### 跳过字段(`skip`)
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/index.md
index 10b5680549c..9814e6aa0a8 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/index.md
@@ -49,7 +49,7 @@ Fory Scala 继承了 Fory Java 的全部功能,并增加了 Scala 特有优化
 使用 sbt 添加依赖:
 
 ```sbt
-libraryDependencies += "org.apache.fory" %% "fory-scala" % "1.6.1"
+libraryDependencies += "org.apache.fory" %% "fory-scala" % "1.7.0"
 ```
 
 ### JDK25+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/schema-metadata.md
index 1d85ea555d7..b804c1f009f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/scala/schema-metadata.md
@@ -37,6 +37,8 @@ final case class Person(
 ) derives ForySerializer
 ```
 
+配置的字段 ID 必须在结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`)。已分配的 ID 应保持稳定,不要复用于其他字段。省略 `id` 时使用字段名。
+
 Schema `optional T` 字段表示为 `Option[T]`。
 
 ## 引用跟踪
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/basic-serialization.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/basic-serialization.md
index c754dba42f0..0cde2592a3b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/basic-serialization.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/basic-serialization.md
@@ -137,6 +137,8 @@ let decoded = try fory.deserialize(
 - `String`
 - `Data`
 
+`Int` 和 `UInt` 在所有平台上都保留 64 位编码。在 32 位目标上,如果解码值超出本机类型范围,反序列化会抛出 `ForyError.invalidData`。
+
 ### 日期和时间
 
 - `Date`
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/configuration.md
index 0c170cfb1da..c735ae979fc 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/configuration.md
@@ -92,8 +92,7 @@ let fory = Fory(compatible: false, checkClassVersion: true)
 
 ### 大小和深度限制
 
-`maxDepth` 限制反序列化可以将通过 `Any` 动态选择具体类型的值物化到多深。静态声明的
-array、dictionary、struct、class 和 union 不消耗此限制。
+`maxDepth` 限制一次根反序列化过程中嵌套用户值的实例化深度。静态声明的递归结构体、类和联合类型,动态选择的 `Any` 值,以及兼容模式字段跳过共享该根深度预算。null 和对已实例化值的引用不会额外消耗一层深度。
 
 TypeMeta 泛型元数据的最大嵌套深度固定为 `20`。写入端拒绝超过此限制的元数据,读取端应用
 相同限制。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/index.md
index 713df5f7adf..f59e271de29 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/index.md
@@ -60,6 +60,7 @@ targets: [
 - [共享引用和循环引用](references.md)
 - [多态和动态类型](polymorphism.md)
 - [Schema 演进](schema-evolution.md)
+- [gRPC 支持](../../grpc/swift.md)
 - [故障排查](troubleshooting.md)
 
 ## 快速示例
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/schema-metadata.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/schema-metadata.md
index 3457c581002..eb4cbd4fef9 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/schema-metadata.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/schema-metadata.md
@@ -26,6 +26,7 @@ license: |
 - `@ForyStruct`:用于 struct/class 模型和外部结构化序列化器
 - `@ForyEnum`:用于 C 风格 enum 模型和外部 enum 序列化器
 - `@ForyUnion` 和 `@ForyCase`:用于关联值 enum 模型和外部 union 序列化器
+- `@ForyField(id: ...)` 用于稳定的数字字段身份
 - `@ForyField(encoding: ...)`:用于数值字段
 - `@ForyField(with: ...)`:用于精确选择序列化器
 - `@ListField`、`@ArrayField`、`@SetField` 和 `@MapField`:用于集合字段元数据
@@ -45,6 +46,20 @@ struct UserSerializer {
 `@ForyEnum` 和 `@ForyUnion` 也提供等价的目标参数。目标访问和构造要求请参阅
 [外部类型序列化](external-types.md)。
 
+## `@ForyField(id:)`
+
+需要在重命名或 Schema 演进中保持字段身份稳定时,请分配 ID:
+
+```swift
+@ForyStruct
+struct User {
+    @ForyField(id: 1)
+    var name: String
+}
+```
+
+配置的 ID 必须在结构体 Schema 内唯一,并满足 `0 <= id < 2^29`(`0` 至 `536870911`)。已分配的 ID 应保持稳定,不要复用于其他字段。未设置 ID 的字段使用字段名。
+
 ## `@ForyField(with:)`
 
 如果未添加注解的字段,其声明类型实现了 `Serializer` 且 `Target == Self`,该字段会隐式
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/security.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/security.md
index 9454e1942b8..63a63c91544 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/security.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/object-serialization/swift/security.md
@@ -35,13 +35,11 @@ license: |
 
 安全相关配置:
 
-- 反序列化不可信载荷前,只注册预期的生成模型。
-- 对有意采用相同 Schema 的载荷,将 `checkClassVersion` 与 `compatible: false` 配合使用。
-- 将 `maxDepth` 设置为服务允许的最大动态 `Any` 嵌套深度。
-- 将 `maxGraphMemoryBytes` 设置为 collection、map、array、struct、class 和对象密集型载荷的
-  近似限制。它不是精确的堆上限;叶子值受剩余输入字节限制。
-- 除非数据确定无恶意,且可信对等端会发送更大的元数据或大量 Schema 版本,否则保留远程
-  Schema 元数据限制的默认值。
+- 反序列化不可信载荷前,仅注册预期的生成模型。
+- 对明确采用相同 Schema 的载荷,结合 `compatible: false` 使用 `checkClassVersion`。
+- 根据服务接受的最大嵌套用户值对象图设置 `maxDepth`。静态递归值、动态 `Any` 值和兼容模式字段跳过共享同一根预算。
+- 使用 `maxGraphMemoryBytes` 对集合、Map、数组、结构体、类和对象密集型载荷设置近似限制。它不是精确的堆上限;叶子值由剩余输入字节限制。
+- 保持远程 Schema 元数据限制的默认值,除非数据可信,且可信对端会发送更大的元数据或大量 Schema 版本。
 
 ## 验证
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/row-format/java.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/row-format/java.md
index fbd3b6b1726..558d8119e6a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/row-format/java.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/row-format/java.md
@@ -41,14 +41,14 @@ Maven:
 <dependency>
   <groupId>org.apache.fory</groupId>
   <artifactId>fory-format</artifactId>
-  <version>1.6.1</version>
+  <version>1.7.0</version>
 </dependency>
 ```
 
 Gradle:
 
 ```kotlin
-implementation("org.apache.fory:fory-format:1.6.1")
+implementation("org.apache.fory:fory-format:1.7.0")
 ```
 
 ## 基本用法
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/java_serialization_spec.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/java_serialization_spec.md
index 8d84a4c4eab..710dc3f690c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/java_serialization_spec.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/java_serialization_spec.md
@@ -270,9 +270,9 @@ Java 原生对象序列化器使用与当前 xlang 协议相同的确定性字
 
 字段标识符按以下规则选择:
 
-- 如果字段具有显式非负 `@ForyField(id = ...)`,该数值 ID 即为字段标识符。
-- 否则,将转换为 snake_case 的 Java 字段名用作字段标识符。
-- 负数注解值不是有效字段 ID。注解默认值 `-1` 表示没有显式 ID,选择标识符时会忽略它。
+- 如果字段显式设置了 `@ForyField(id = ...)`,且满足 `0 <= id < 2^29`,该数字 ID 就是字段标识符。
+- 注解默认值 `id = -1`,以及未显式指定 `@ForyField` ID 的字段,使用转换为 snake_case 的 Java 字段名。
+- 其他注解 ID 均无效;小于 `-1` 或大于等于 `2^29` 的值不会选择基于名称的身份。
 
 标识符比较规则如下:
 
@@ -380,9 +380,7 @@ class_layer:
 对于名称编码,位 `4..6` 存储 `encoded_length - 1`,前提是该值小于 `7`。
 如果值为 `7`,则再读取一个 `varuint32` 并加到 `7` 上。
 
-对于 tag ID 编码,位 `4..6` 存储数值字段 ID,前提是该 ID 小于 `7`。
-如果值为 `7`,则再读取一个 `varuint32` 并加到 `7` 上。字段 ID 必须为非负数。
-同一个 TypeDef 中不能出现重复字段 ID。
+在 tag ID 编码中,小于 `7` 的数字字段 ID 存放在位 `4..6`。若该值为 `7`,则读取额外的 `varuint32` 并加上 `7`。字段 ID 必须满足 `0 <= tag_id < 2^29`,最大合法值为 `536870911`。一个 TypeDef 中不允许重复字段 ID。
 
 ### 字段类型
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/row_format_spec.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/row_format_spec.md
index 9e3e3d7172f..9ff5aea80aa 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/row_format_spec.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/row_format_spec.md
@@ -513,9 +513,9 @@ map_size = 8 + keys_array_size + values_array_size
 
 ### 内存安全
 
-- 写入器必须将填充字节清零,以防止信息泄露
-- 读取器必须先校验偏移量和大小,再访问数据
-- 对于不可信输入,必须检查缓冲区边界
+- 写入器必须将填充字节置零,防止信息泄漏
+- 读取器必须在访问数据前验证偏移量和大小
+- 行格式仅接受可信输入;偏移量和大小检查用于保证正确性并提供纵深防御,不构成处理不可信输入的安全边界
 
 ### 性能注意事项
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_implementation_guide.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_implementation_guide.md
index a22c65585c8..ff67b5d832d 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_implementation_guide.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_implementation_guide.md
@@ -547,13 +547,13 @@ return result
 
 实现还应在冷元数据解析路径上限制接收的元数据主体和 struct 字段列表。`maxTypeMetaBytes` 限制一个编码 TypeDef 或 TypeMeta 主体,不包括 8 字节头和任何扩展大小 varint,并在复制或解压该主体前检查。`maxTypeFields` 限制一个接收 struct 元数据主体声明的字段数,并在预留或分配字段列表前检查。这些限制是运行时资源控制;不会改变编码、类型身份、动态加载、未知类型行为、反序列化策略或 Schema 演进语义。元数据缓存命中和生成字段读取器仍是热路径,不得为这些限制增加工作。
 
-远程 Schema 版本限制属于同一个冷元数据所有路径。头缓存命中必须跳过剩余元数据主体,并直接返回缓存元数据,不执行 Schema 限制检查、哈希重验证、分配或策略工作。头未命中时,在一条具体所有路径中保持处理:证明并读取元数据主体字节;依据其头验证主体;验证字段计数;通过现有注册与反序列化策略检查解析类型;适用时按原始编码字节比较确切本地元数据;检查非本地远程元数据的 Schema 版本限制;构建所需读取状态;发布到持久元数据缓存;然后记录 Schema 计数。失败或不兼容元数据不得发布到持久缓存,也不得消费 Schema 版本计数。
+远程 Schema 版本限制属于同一个冷元数据处理路径。头缓存命中必须跳过剩余元数据体并返回缓存元数据,不执行 Schema 限制检查、哈希重验证、分配或策略处理。协议定义的 52 位 TypeDef/TypeMeta 头哈希是唯一的 Schema 标识。当选定本地类型已经持有所接收的头时,即为本地 Schema 命中:跳过数据体并使用本地元数据,不比较字段数组或编码元数据字节,不发布到持久远程缓存,也不消耗 Schema 版本计数。此行为适用于带有元数据体的 struct 以及具名 enum、ext 和 union。头部低 12 位仅属于当前帧;命中时读取当前大小和可选扩展以检查边界并跳过,不验证当前保留位或压缩标志。低位标志验证仅属于冷未命中路径。
 
-编码字节与本地已注册元数据完全匹配的远程元数据,在选择该本地类型的现有类型和反序列化策略检查运行后,可以使用本地元数据且不消费远程 Schema 版本限制。这种 exact-local 绕过不只适用于 struct;当具名 enum、ext 和 union 元数据主体存在且与本地编码字节匹配时,也适用。纯基于 id 的 enum、ext 和 typed-union 值不携带 TypeDef 或 TypeMeta 主体,必须保留在正常 type-id 加 user-type-id 路径。兼容的具名 enum、ext 和 union 元数据通常只有一个版本,但当它作为共享元数据发送且不与本地元数据完全匹配时,仍计入已接受远程元数据总数。`maxTypeFields` 只适用于 struct 字段列表。
+头未命中时进入元数据解析路径:证明并读取元数据体字节,依据头验证数据体,验证字段数量,并通过现有注册和反序列化策略检查解析类型。若解析前尚无本地头,此仅在未命中时执行的路径可以延迟构建本地元数据,将其 52 位头哈希与已验证的接收哈希比较。哈希相等时选择本地元数据,无需比较字节或字段,也不消耗远程 Schema 版本计数。否则,检查 Schema 版本限制,构建所需读取状态,发布到持久元数据缓存,然后记录 Schema 计数。失败或不兼容的元数据不得发布到持久缓存,也不得消耗 Schema 版本计数。纯基于 ID 的 enum、ext 和 typed-union 值不携带 TypeDef 或 TypeMeta 数据体,必须保持常规 type-id 加 user-type-id 路径。兼容的具名 enum、ext 和 union 元数据通常只有一个版本,但作为共享元数据发送且发生非本地元数据未命中时,仍计入已接受的�
 ��程元数据总数。`maxTypeFields` 仅适用于 struct 字段列表。
 
-exact-local 候选必须在元数据所有路径内从解码的元数据身份导出:按 id 注册的元数据使用 `userTypeId`,按名称注册的元数据使用 `(namespace, typeName)`。不要仅为此检查而在线程中传递额外预期类型参数。该规则适用于每个 Fory 实现。Java 和 Python 可以在该身份查找选出本地类,并且针对该类的现有 class、registration 和 deserialization-policy 检查运行后,才延迟构建本地编码元数据。
+仅在未命中时使用的本地候选必须由元数据所有者在完成现有类、注册和策略检查后,根据已解码身份确定。只比较其 52 位头哈希与已验证的接收哈希。不要保留或比较元数据字节或字段,不要为重复验证而在调用链中传递额外预期类型参数,也不要增加另一套已接受头状态。缓存命中绝不重复未命中时的工作。
 
-当静态声明的兼容具名 enum、ext 或 union 字段读取共享元数据时,解码元数据必须匹配已声明 type id、namespace 和 type name,之后元数据所有者才能将其发布到持久缓存或记录 Schema 计数。已接受的头或引用缓存命中仍会跳过主体,并且不得重新运行主体哈希、Schema 限制或注册检查;但字段读取器不得把另一个已声明具名类型的元数据视为当前字段元数据。
+当静态声明的兼容具名 enum、ext 或 union 字段读取共享元数据时,解码元数据必须匹配已声明的 type id、namespace 和 type name,元数据所有者才能将其发布到持久缓存或记录 Schema 计数。已接受的头或引用缓存命中仍会跳过数据体,不得重跑数据体哈希、Schema 限制或注册检查;字段读取器也不得把其他已声明具名类型的元数据当作当前字段元数据。应依据未命中时绑定的具体元数据所有者身份处理这些命中,不检查元数据体,也不重复检查其 namespace、type name、user id 或编码类型。
 
 跳过路径无需物化已跳过的值。现有字节跳过操作应先消费任何可用缓冲前缀,再以有界步骤跳过或丢弃剩余流字节。
 
@@ -623,6 +623,8 @@ struct 专用 Schema/版本分帧和兼容字段布局属于 struct 序列化器
 - 单次操作动态元字符串 id 位于 `MetaStringWriter` 和 `MetaStringReader` 上
 - 共享类型定义表是操作本地上下文状态
 
+对于携带编码哈希的大型 MetaString,该哈希本身就是经检查后的缓存标识。数据体长度属于当前帧:哈希缓存命中时只检查相应字节数可读并跳过,不将长度或数据体与缓存值比较。仅缓存未命中时读取数据体、验证哈希并发布已检查的值。
+
 ## Xlang 模式中的 Enum
 
 在 xlang 模式中,enum 按数值 tag 序列化,而不是按名称。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_serialization_spec.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_serialization_spec.md
index 9354b70c52f..ca12d0ed9c4 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_serialization_spec.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/specification/xlang_serialization_spec.md
@@ -569,6 +569,8 @@ TypeDef 描述类 struct 类型(或命名 enum/ext),用于 Schema 演进
 - Bits 9-11:保留给未来扩展(必须为零)。
 - 高 52 位:存储的哈希位,来源是对 `TypeDef body || header_low12_le` 计算的 MurmurHash3 x64_128,seed 为 47。`header_low12_le` 是包含 header 低 12 位(大小、压缩位和保留位)的两个小端序字节;第二个字节的高四位为零。从 MurmurHash3 结果中取 lane 0(这是一个 128 位结果),将其视为有符号 int64,左移 12 位并采用二进制补码 64 位回绕语义,应用有符号绝对值(`INT64_MIN` 保持不变),然后以 `0xfffffffffffff000` 进行掩码。最终 header 由掩码后的哈希位与 header 低 12 位执行 OR 得到。
 
+上述低位有效性规则用于缓存未命中时首次验证高 52 位标识。一旦该 52 位标识已知,缓存命中或预期本地类型命中时不会再次验证低位标志;读取器仅用当前帧的大小位及可选大小扩展证明当前数据体可读并跳过它,然后复用该标识对应的已检查或预期本地 TypeDef 所有者。
+
 #### TypeDef 主体
 
 TypeDef body 只有一层(字段按 class 层次结构顺序展开):
@@ -617,18 +619,20 @@ struct TypeDef 的元信息 header 字节:
 每个字段的编码如下:
 
 ```
-| field header (1 byte) | field type info | [field name bytes] |
+| field header (1 byte) | [extended name or tag value] | field type info | [field name bytes] |
 ```
 
+可选扩展值为 `varuint32`。当较长的编码名称或扩展 tag ID 使四位大小字段饱和时出现,具体规则如下。
+
 字段 header 布局:
 
-- Bits 6-7:字段名称编码(`UTF8`、`ALL_TO_LOWER_SPECIAL`、`LOWER_UPPER_DIGIT_SPECIAL` 或 `TAG_ID`)
-- Bits 2-5:大小
-  - 对于名称编码:`size = (name_bytes_length - 1)`
-  - 对于 tag ID:`size = tag_id`
-  - 如果 `size == 0b1111`,读取 `varuint32(size - 15)` 并加到该值上
-- Bit 1:nullable flag
-- Bit 0:引用跟踪 flag
+- 位 6-7:字段名编码(`UTF8`、`ALL_TO_LOWER_SPECIAL`、`LOWER_UPPER_DIGIT_SPECIAL` 或 `TAG_ID`)
+- 位 2-5:大小
+  - 名称编码中,令 `logical_size = name_bytes_length - 1`,存储 `size = min(logical_size, 15)`。若 `logical_size >= 15`,在头部后写入 `varuint32(logical_size - 15)`;解码时将扩展值加上 `15`,再加 `1` 得到 `name_bytes_length`。
+  - tag ID:`size = min(tag_id, 15)`
+  - tag ID 的 `size == 0b1111` 时,在头部后写入 `varuint32(tag_id - 15)`;解码时将扩展值加上 `15`
+- 位 1:可空标志
+- 位 0:引用跟踪标志
 
 字段类型信息:
 
@@ -639,9 +643,10 @@ struct TypeDef 的元信息 header 字节:
 
 字段名称:
 
-- 如果使用 `TAG_ID` 编码,则不写入名称字节。
-- 否则,将编码后的字段名称字节作为元字符串写入。
-- 对于 xlang,字段名称在编码前转换为 `snake_case`,以实现跨语言兼容。
+- 使用 `TAG_ID` 编码时,不写入名称字节。
+- tag ID 是范围为 `0 <= tag_id < 2^29`(`0` 至 `536870911`)的有符号 32 位协议值。该上限确保完整协议域可由每种实现的有符号 32 位字段 ID 类型表示;扩展形式仍使用现有 `varuint32` 编码写入 `tag_id - 15`。
+- 否则,将编码后的字段名字节作为元字符串写入。
+- 在 xlang 中,字段名转换为 `snake_case`,以支持跨语言兼容。
 
 字段顺序:
 
@@ -797,8 +802,9 @@ First occurrence:  | (length << 1) | [hash if large] | encoding | bytes |
 Reference:         | ((id + 1) << 1) | 1 |
 ```
 
-- header 的 Bit 0 表示:0 = 新字符串,1 = 对此前字符串的引用
+- 头部位 0 表示:0 = 新字符串,1 = 引用之前的字符串
 - 大字符串(> 16 字节)包含用于按内容去重的 64 位哈希
+- 该 64 位编码哈希本身就是大字符串经检查后的缓存标识。已知哈希命中时,读取器确认当前帧长度可读后直接跳过,不比较长度或数据体;仅缓存未命中时读取数据体并验证哈希。
 - 小字符串使用精确字节比较
 
 ## 值格式
@@ -1446,7 +1452,7 @@ Struct 指 `class/pojo/struct/bean/record` 类型的对象。Struct 值按 Fory
 - 如果配置了非负 tag ID(例如 `@ForyField(id=...)`),则使用该 tag ID。
 - 否则,使用转换为 `snake_case` 的字段名称。
 
-配置的 tag ID 必须为非负值。配置负 tag ID 无效;语言只能将负值用作表示“未配置 tag ID”的默认值或内部 sentinel,此时回退到 `snake_case` 字段名称,该负值不是 tag ID。tag ID 在一个类型内必须唯一;重复的 tag ID 无效。
+配置的 tag ID 必须满足 `0 <= tag_id < 2^29`。负的配置 tag ID 无效;语言实现仅可用负值作为“未配置 tag ID”的默认值或内部哨兵值,此时回退到 `snake_case` 字段名,该值本身不是 tag ID。大于等于 `2^29` 的值无效。tag ID 必须在类型内唯一,不允许重复。
 
 字段标识符按以下规则比较:
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/cpp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/cpp.md
index 80d69f2a579..4c175ac8d65 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/cpp.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/cpp.md
@@ -42,7 +42,7 @@ include(FetchContent)
 FetchContent_Declare(
   fory
   GIT_REPOSITORY https://github.com/apache/fory.git
-  GIT_TAG v1.6.1
+  GIT_TAG v1.7.0
   SOURCE_SUBDIR cpp
 )
 FetchContent_MakeAvailable(fory)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/csharp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/csharp.md
index 290d43f090b..d8425763f7f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/csharp.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/csharp.md
@@ -34,7 +34,7 @@ dotnet --version
 ```bash
 dotnet new console -n ForyExample
 cd ForyExample
-dotnet add package Apache.Fory --version 1.6.1
+dotnet add package Apache.Fory --version 1.7.0
 ```
 
 将 `Program.cs` 替换为:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/dart.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/dart.md
index c09b5d07f55..cfdd2ba67ef 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/dart.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/dart.md
@@ -34,7 +34,7 @@ dart pub --help
 
 ```yaml
 dependencies:
-  fory: 1.6.1
+  fory: 1.7.0
 
 dev_dependencies:
   build_runner: ^2.4.0
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/go.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/go.md
index fae5264dfa8..6b65be740da 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/go.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/go.md
@@ -36,7 +36,7 @@ go env GOPROXY
 mkdir fory-example
 cd fory-example
 go mod init example.com/fory-example
-go get github.com/apache/fory/go/fory@v1.6.1
+go get github.com/apache/fory/go/fory@v1.7.0
 ```
 
 如果 Go proxy 尚未收录新的 submodule tag,请稍后重试,或者暂时使用 `GOPROXY=direct`。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/index.md
index 9a1f1e7aa8e..e6f86108b6c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/index.md
@@ -33,7 +33,7 @@ Apache Fory™ 以源代码制品和各语言专用软件包的形式发布。
 
 ## 选择语言
 
-每个语言页面都提供锁定到具体发行版本的安装片段、适用于应用项目的最小往返示例,以及后续能力专项步骤:
+每个语言页面提供固定版本的安装示例、适用于应用项目的最小往返示例,以及相应能力的后续步骤:
 
 | 语言                  | 设置                                   |
 | --------------------- | -------------------------------------- |
@@ -51,12 +51,12 @@ Apache Fory™ 以源代码制品和各语言专用软件包的形式发布。
 
 ## 可以构建什么
 
-| 能力       | 用途                                                        | 可用语言                                                         | 详细指南                                       |
+| 能力 | 用途 | 可用语言 | 详细指南 |
 | ---------- | ----------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------- |
-| 对象序列化 | 重建对象图,包括共享引用和 Schema 变更                      | 所有语言                                                         | [对象序列化](../object-serialization/index.md) |
-| Row Format | 对可信分析数据进行零拷贝、随机或部分字段访问                | Java、Python、C++、Rust                                          | [Row Format](../row-format/index.md)           |
-| Fory JSON  | 高性能标准 JSON 映射                                        | Java                                                             | [Fory JSON](../json/index.md)                  |
-| Fory IDL   | 从 Fory、protobuf 或 FlatBuffers IDL 生成原生模型和序列化器 | 所有语言                                                         | [Fory IDL 与编译器](../compiler/index.md)      |
-| Fory gRPC  | 通过常规 gRPC 传输使用生成的模型和 Fory 编码的消息          | Java、Python、C++、Go、Rust、JavaScript、C#、Dart、Scala、Kotlin | [Fory gRPC](../grpc/index.md)                  |
+| 对象序列化 | 重建对象图,包括共享引用和 Schema 变更 | 所有语言 | [对象序列化](../object-serialization/index.md) |
+| Row Format | 对可信分析数据进行零拷贝、随机或部分字段访问 | Java、Python、C++、Rust | [Row Format](../row-format/index.md) |
+| Fory JSON | 高性能标准 JSON 映射 | Java、Kotlin、Scala | [Fory JSON](../json/index.md) |
+| Fory IDL | 从 Fory、protobuf 或 FlatBuffers IDL 生成原生模型和序列化器 | 所有语言 | [Fory IDL 与编译器](../compiler/index.md) |
+| Fory gRPC | 通过常规 gRPC 传输使用生成的模型和 Fory 编码的消息 | Java、Python、C++、Go、Rust、JavaScript、C#、Dart、Scala、Kotlin | [Fory gRPC](../grpc/index.md) |
 
 对象序列化使用 xlang 模式生成可移植的跨语言数据。Java、Python、C++、Go、Rust、Scala 和 Kotlin 还提供 native 模式,用于由一个 Fory 实现家族处理的数据。如果尚未确定使用哪种格式,请参阅[选择格式](../introduction/choose-a-format.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/java.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/java.md
index bc9fbba0ad2..e9f3da03f65 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/java.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/java.md
@@ -39,14 +39,14 @@ Maven:
 <dependency>
   <groupId>org.apache.fory</groupId>
   <artifactId>fory-core</artifactId>
-  <version>1.6.1</version>
+  <version>1.7.0</version>
 </dependency>
 ```
 
 Gradle:
 
 ```kotlin
-implementation("org.apache.fory:fory-core:1.6.1")
+implementation("org.apache.fory:fory-core:1.7.0")
 ```
 
 运行下面完整的 xlang 往返示例:
@@ -85,7 +85,7 @@ public final class ForyExample {
 Fory JSON 将 Java 对象映射为标准 JSON 文本和 UTF-8 字节。如果应用只需要 JSON,请添加 `fory-json`,无需添加 `fory-core`:
 
 ```kotlin
-implementation("org.apache.fory:fory-json:1.6.1")
+implementation("org.apache.fory:fory-json:1.7.0")
 ```
 
 在 `ForyExample.java` 中添加 import:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/javascript.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/javascript.md
index 7f4897c20e1..893e217461f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/javascript.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/javascript.md
@@ -33,7 +33,7 @@ npm --version
 安装 core 软件包:
 
 ```bash
-npm install @apache-fory/core@1.6.1
+npm install @apache-fory/core@1.7.0
 ```
 
 定义 Schema 并运行 xlang 往返示例:
@@ -65,7 +65,7 @@ JavaScript 使用 xlang 模式。接下来可阅读 [JavaScript/TypeScript 对
 若要使用可选的 Node.js 字符串快速路径,请安装版本匹配的软件包:
 
 ```bash
-npm install @apache-fory/core@1.6.1 @apache-fory/hps@1.6.1
+npm install @apache-fory/core@1.7.0 @apache-fory/hps@1.7.0
 ```
 
 ## 其他能力
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/kotlin.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/kotlin.md
index 555facffd89..47d928e78eb 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/kotlin.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/kotlin.md
@@ -19,7 +19,7 @@ license: |
   limitations under the License.
 ---
 
-Fory Kotlin 提供二进制对象序列化、生成的模型、Fory gRPC 和 Android 支持。它基于 Fory Java 运行,支持 Java 8 及更高版本。
+Fory Kotlin 提供二进制对象序列化、标准 JSON 映射、生成模型、Fory gRPC 和 Android 支持。它基于 Fory Java 运行,支持 Java 8 及更新版本。
 
 ## 验证工具链
 
@@ -31,11 +31,18 @@ java -version
 
 ## 对象序列化
 
-在应用模块中添加运行时:
+以下仓库从 Maven Central 解析发布版本坐标,从 Apache 快照仓库解析 `-SNAPSHOT` 坐标。所有 Fory 模块应使用同一版本:
 
 ```kotlin title="build.gradle.kts"
+repositories {
+  maven("https://repository.apache.org/snapshots/") {
+    mavenContent { snapshotsOnly() }
+  }
+  mavenCentral()
+}
+
 dependencies {
-  implementation("org.apache.fory:fory-kotlin:1.6.1")
+  implementation("org.apache.fory:fory-kotlin:1.7.0")
 }
 ```
 
@@ -68,6 +75,30 @@ fun main() {
 
 与其他 Fory 运行时共享的数据使用 xlang 模式,仅供 Kotlin/JVM 使用的数据使用 native 模式。接下来可阅读 [Kotlin 对象序列化](../object-serialization/kotlin/index.md)、[xlang](../object-serialization/kotlin/basic-serialization.md#cross-language-interoperability)或 [native 模式](../object-serialization/kotlin/native.md)。
 
+## 标准 JSON {#standard-json}
+
+Fory JSON 是独立于二进制对象序列化的文本格式。与普通 JSON API、浏览器、日志或其他 JSON 库交互时,可添加其可选 Kotlin 模块:
+
+```kotlin title="build.gradle.kts"
+dependencies {
+  implementation("org.apache.fory:fory-json-kotlin:1.7.0")
+}
+```
+
+```kotlin
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+data class User(val id: Long, val name: String)
+
+val json = ForyJsonKotlin.builder().build()
+val userType = jsonTypeRef<User>()
+val text = json.toJson(User(1, "Alice"), userType)
+val decoded = json.fromJson(text, userType)
+```
+
+运行时直接读取 Kotlin/JVM 元数据。仅在使用 R8 或 ProGuard 的 Android 构建中添加 `fory-json-kotlin-ksp`;它为 Kotlin `@JsonType` 模型和应用源码中声明的精确 Mixin 生成精确保留规则。Native Image 使用常规 `@ForyJsonProvider` 流程。继续阅读 [Kotlin JSON](../json/kotlin.md)。
+
 ## 其他能力
 
 - **Fory IDL 与编译器** 通过 KSP 生成 Kotlin 模型和注册辅助代码。请参阅[编译器快速入门](../compiler/getting-started.md)和 [Kotlin 生成代码指南](../compiler/generated-code/kotlin.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/python.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/python.md
index 433c3f4442e..b29379879f5 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/python.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/python.md
@@ -33,7 +33,7 @@ python -m pip --version
 安装已发布的软件包:
 
 ```bash
-python -m pip install pyfory==1.6.1
+python -m pip install pyfory==1.7.0
 ```
 
 运行 xlang 往返示例:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/rust.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/rust.md
index 2155d9646f6..8ee9df68594 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/rust.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/rust.md
@@ -34,7 +34,7 @@ cargo --version
 
 ```toml title="Cargo.toml"
 [dependencies]
-fory = "1.6.1"
+fory = "1.7.0"
 ```
 
 ```rust
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/scala.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/scala.md
index fb333bca2b7..0fdced2ccaa 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/scala.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/scala.md
@@ -35,7 +35,7 @@ sbt --version
 
 ```sbt
 ThisBuild / scalaVersion := "3.3.1"
-libraryDependencies += "org.apache.fory" %% "fory-scala" % "1.6.1"
+libraryDependencies += "org.apache.fory" %% "fory-scala" % "1.7.0"
 ```
 
 创建 `src/main/scala/ScalaExample.scala`:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/swift.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/swift.md
index 27be1762903..364617276be 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/swift.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/start/swift.md
@@ -19,7 +19,7 @@ license: |
   limitations under the License.
 ---
 
-Fory Swift 提供 xlang 对象序列化和编译器生成的模型。它通过 Swift Package Manager 分发,使用 Swift tools 6.0,目标平台为 macOS 13 及更高版本和 iOS 16 及更高版本。
+Fory Swift 提供 xlang 对象序列化和编译器生成模型,通过 Swift Package Manager 分发,使用 Swift tools 6.0,支持 macOS 13 及以上、iOS 和 tvOS 16 及以上、watchOS 9 及以上和 visionOS 1 及以上。Linux 需要 Swift 6.0 或更新版本的工具链。
 
 ## 验证工具链
 
@@ -39,7 +39,7 @@ swift package init --type executable --name ForyExample
 
 ```swift title="Package.swift"
 dependencies: [
-    .package(url: "https://github.com/apache/fory.git", exact: "1.6.1")
+    .package(url: "https://github.com/apache/fory.git", exact: "1.7.0")
 ],
 targets: [
     .executableTarget(
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/download/index.md b/i18n/zh-CN/docusaurus-plugin-content-pages/download/index.md
index 89e2c3eba49..9b13b71f480 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-pages/download/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-pages/download/index.md
@@ -9,11 +9,11 @@ Apache Fory™ 的官方发布以源码制品形式提供。
 
 ## 最新版本
 
-当前最新源码版本为 1.6.1:
+当前最新源码版本为 1.7.0:
 
 | 版本  | 日期       | 源码                                                                                                                                                                                                                                                                                | 发布说明                                                        |
 | ----- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
-| 1.6.1 | 2026-08-16 | [source](https://www.apache.org/dyn/closer.lua/fory/1.6.1/apache-fory-1.6.1-src.tar.gz?action=download) [asc](https://downloads.apache.org/fory/1.6.1/apache-fory-1.6.1-src.tar.gz.asc) [sha512](https://downloads.apache.org/fory/1.6.1/apache-fory-1.6.1-src.tar.gz.sha512) | [release notes](https://github.com/apache/fory/releases/tag/v1.6.1) |
+| 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) |
 
 ## 所有归档版本
 
@@ -31,13 +31,13 @@ Fory 为下载站点上的所有文件提供 SHA 摘要和 PGP 签名文件。
 要验证 SHA 摘要,你需要 `.tar.gz` 文件及其对应的 `.tar.gz.sha512` 文件。示例命令如下:
 
 ```bash
-sha512sum --check apache-fory-1.6.1-src.tar.gz.sha512
+sha512sum --check apache-fory-1.7.0-src.tar.gz.sha512
 ```
 
 输出类似下面这样即表示校验通过:
 
 ```bash
-apache-fory-1.6.1-src.tar.gz: OK
+apache-fory-1.7.0-src.tar.gz: OK
 ```
 
 ### 校验签名
@@ -53,13 +53,13 @@ gpg --import KEYS
 之后可以校验签名:
 
 ```bash
-gpg --verify apache-fory-1.6.1-src.tar.gz.asc apache-fory-1.6.1-src.tar.gz
+gpg --verify apache-fory-1.7.0-src.tar.gz.asc apache-fory-1.7.0-src.tar.gz
 ```
 
 如果出现如下输出,即表示签名正确:
 
 ```bash
-gpg: Signature made Wed Aug 12 20:28:26 2026 CST
+gpg: Signature made Tue Aug 25 18:38:25 2026 CST
 gpg:                using RSA key 1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
 gpg: Good signature from "chaokunyang (CODE SIGNING KEY) <ch...@apache.org>" [unknown]
 ```


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fory.apache.org
For additional commands, e-mail: commits-help@fory.apache.org


(fory-site) 03/03: docs: publish the 1.7 documentation snapshot

Posted by ch...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch release_fory_1.7
in repository https://gitbox.apache.org/repos/asf/fory-site.git

commit f0074ea8d67a679e844041dbd008c4f11b34722e
Author: chaokunyang <sh...@gmail.com>
AuthorDate: Mon Aug 31 11:41:24 2026 +0800

    docs: publish the 1.7 documentation snapshot
---
 .gitignore                                         |    2 +
 .../version-1.7.0.json                             |   42 +
 .../version-1.7.0/benchmarks/_category_.json       |    6 +
 .../version-1.7.0/benchmarks/index.md              |  130 ++
 .../version-1.7.0/benchmarks/json/_category_.json  |    7 +
 .../version-1.7.0/benchmarks/json/java/README.md   |   38 +
 .../benchmarks/json/java/string_throughput.png     |  Bin 0 -> 51989 bytes
 .../benchmarks/json/java/utf8_bytes_throughput.png |  Bin 0 -> 53649 bytes
 .../version-1.7.0/benchmarks/json/kotlin/README.md |   10 +
 .../version-1.7.0/benchmarks/json/scala/README.md  |   41 +
 .../benchmarks/json/scala/benchmark_results.json   |  350 ++++
 .../benchmarks/json/scala/string_throughput.png    |  Bin 0 -> 47675 bytes
 .../json/scala/utf8_bytes_throughput.png           |  Bin 0 -> 51475 bytes
 .../version-1.7.0/benchmarks/methodology.md        |   40 +
 .../object-serialization/_category_.json           |    7 +
 .../object-serialization/native/_category_.json    |    6 +
 .../object-serialization/native/java-graalvm.md    |  110 ++
 .../object-serialization/native/java/README.md     |  233 +++
 .../java/data/jmh-jdk-11-deserialization.csv       |  153 ++
 .../native/java/data/jmh-jdk-11-serialization.csv  |  153 ++
 .../native/java/data/jmh-jdk-11-zerocopy.csv       |   73 +
 .../java/java_heap_deserialize_compatible.png      |  Bin 0 -> 91290 bytes
 .../java/java_heap_deserialize_consistent.png      |  Bin 0 -> 102335 bytes
 .../native/java/java_heap_serialize_compatible.png |  Bin 0 -> 100843 bytes
 .../native/java/java_heap_serialize_consistent.png |  Bin 0 -> 100648 bytes
 .../java/java_offheap_deserialize_compatible.png   |  Bin 0 -> 96677 bytes
 .../java/java_offheap_deserialize_consistent.png   |  Bin 0 -> 101898 bytes
 .../java/java_offheap_serialize_compatible.png     |  Bin 0 -> 109379 bytes
 .../java/java_offheap_serialize_consistent.png     |  Bin 0 -> 110476 bytes
 .../java/java_repo_deserialization_throughput.png  |  Bin 0 -> 105680 bytes
 .../java/java_repo_serialization_throughput.png    |  Bin 0 -> 113741 bytes
 .../native/java/java_zero_copy_deserialize.png     |  Bin 0 -> 90075 bytes
 .../native/java/java_zero_copy_serialize.png       |  Bin 0 -> 86235 bytes
 .../object-serialization/xlang/_category_.json     |    6 +
 .../object-serialization/xlang/cpp/README.md       |   78 +
 .../object-serialization/xlang/cpp/throughput.png  |  Bin 0 -> 102327 bytes
 .../object-serialization/xlang/csharp/README.md    |   89 +
 .../xlang/csharp/throughput.png                    |  Bin 0 -> 108852 bytes
 .../object-serialization/xlang/dart/README.md      |   49 +
 .../object-serialization/xlang/dart/throughput.png |  Bin 0 -> 106606 bytes
 .../object-serialization/xlang/go/README.md        |   58 +
 .../xlang/go/benchmark_results.txt                 |  326 ++++
 .../xlang/go/serialized_sizes.txt                  |   27 +
 .../object-serialization/xlang/go/throughput.png   |  Bin 0 -> 108457 bytes
 .../object-serialization/xlang/java/README.md      |   44 +
 .../object-serialization/xlang/java/throughput.png |  Bin 0 -> 107433 bytes
 .../xlang/javascript/README.md                     |   82 +
 .../xlang/javascript/throughput.png                |  Bin 0 -> 108900 bytes
 .../object-serialization/xlang/python/README.md    |   87 +
 .../xlang/python/throughput.png                    |  Bin 0 -> 109981 bytes
 .../object-serialization/xlang/rust/README.md      |   78 +
 .../object-serialization/xlang/rust/throughput.png |  Bin 0 -> 102562 bytes
 .../object-serialization/xlang/swift/README.md     |   51 +
 .../xlang/swift/throughput.png                     |  Bin 0 -> 106749 bytes
 .../version-1.7.0/community/community.md           |   84 +
 .../community/how_to_join_community.md             |  105 ++
 .../version-1.7.0/community/how_to_release.md      |  607 ++++++
 .../version-1.7.0/community/how_to_verify.md       |  125 ++
 .../version-1.7.0/compiler/_category_.json         |    6 +
 .../version-1.7.0/compiler/build-integration.md    |  230 +++
 .../version-1.7.0/compiler/cli.md                  |  663 +++++++
 .../version-1.7.0/compiler/flatbuffers-idl.md      |  215 +++
 .../compiler/generated-code/_category_.json        |    6 +
 .../version-1.7.0/compiler/generated-code/cpp.md   |  157 ++
 .../compiler/generated-code/csharp.md              |  103 ++
 .../version-1.7.0/compiler/generated-code/dart.md  |  190 ++
 .../version-1.7.0/compiler/generated-code/go.md    |  148 ++
 .../version-1.7.0/compiler/generated-code/index.md |  175 ++
 .../version-1.7.0/compiler/generated-code/java.md  |  149 ++
 .../compiler/generated-code/javascript.md          |   93 +
 .../compiler/generated-code/kotlin.md              |  147 ++
 .../compiler/generated-code/python.md              |  120 ++
 .../version-1.7.0/compiler/generated-code/rust.md  |  150 ++
 .../version-1.7.0/compiler/generated-code/scala.md |  156 ++
 .../version-1.7.0/compiler/generated-code/swift.md |  108 ++
 .../version-1.7.0/compiler/getting-started.md      |   46 +
 .../version-1.7.0/compiler/index.md                |  252 +++
 .../version-1.7.0/compiler/protobuf-idl.md         |  348 ++++
 .../version-1.7.0/compiler/schema-idl.md           | 1711 +++++++++++++++++
 .../version-1.7.0/development/_category_.json      |    6 +
 .../version-1.7.0/development/cpp-debugging.md     |   46 +
 .../version-1.7.0/development/index.md             |  141 ++
 .../development/jmp_generate_file.png              |  Bin 0 -> 396831 bytes
 .../development/vscode_debug_fory.jpg              |  Bin 0 -> 1138690 bytes
 .../development/vscode_select_debug_run.png        |  Bin 0 -> 192687 bytes
 .../version-1.7.0/grpc/_category_.json             |    6 +
 .../version-1.7.0/grpc/cpp.md                      |  262 +++
 .../version-1.7.0/grpc/csharp.md                   |  300 +++
 .../version-1.7.0/grpc/dart.md                     |  259 +++
 .../version-1.7.0/grpc/go.md                       |  218 +++
 .../version-1.7.0/grpc/index.md                    |  102 +
 .../version-1.7.0/grpc/java.md                     |  376 ++++
 .../version-1.7.0/grpc/javascript.md               |  298 +++
 .../version-1.7.0/grpc/kotlin.md                   |  247 +++
 .../version-1.7.0/grpc/python.md                   |  290 +++
 .../version-1.7.0/grpc/rust.md                     |  307 +++
 .../version-1.7.0/grpc/scala.md                    |  342 ++++
 .../version-1.7.0/grpc/swift.md                    |  188 ++
 .../version-1.7.0/grpc/troubleshooting.md          |   34 +
 .../version-1.7.0/index.md                         |   59 +
 .../version-1.7.0/introduction/_category_.json     |    6 +
 .../version-1.7.0/introduction/choose-a-format.md  |   61 +
 .../version-1.7.0/introduction/index.md            |  122 ++
 .../version-1.7.0/introduction/support-matrix.md   |   37 +
 .../version-1.7.0/json/_category_.json             |    6 +
 .../version-1.7.0/json/android.md                  |  171 ++
 .../version-1.7.0/json/annotations.md              |  706 +++++++
 .../version-1.7.0/json/custom-codecs.md            |  313 ++++
 .../version-1.7.0/json/getting-started.md          |  243 +++
 .../version-1.7.0/json/graalvm.md                  |  162 ++
 .../version-1.7.0/json/index.md                    |   65 +
 .../version-1.7.0/json/kotlin.md                   |  283 +++
 .../version-1.7.0/json/modules.md                  |  105 ++
 .../version-1.7.0/json/object-mapping.md           |  209 +++
 .../version-1.7.0/json/scala.md                    |  209 +++
 .../version-1.7.0/json/security.md                 |   87 +
 .../version-1.7.0/json/troubleshooting.md          |   46 +
 .../object-serialization/_category_.json           |    6 +
 .../object-serialization/core-concepts.md          |  105 ++
 .../object-serialization/cpp/_category_.json       |    6 +
 .../cpp/basic-serialization.md                     |  625 +++++++
 .../object-serialization/cpp/configuration.md      |  242 +++
 .../object-serialization/cpp/custom-serializers.md |  371 ++++
 .../object-serialization/cpp/index.md              |  272 +++
 .../object-serialization/cpp/native.md             |  194 ++
 .../object-serialization/cpp/polymorphism.md       |  482 +++++
 .../object-serialization/cpp/schema-evolution.md   |  414 +++++
 .../object-serialization/cpp/schema-metadata.md    |  204 ++
 .../object-serialization/cpp/security.md           |   51 +
 .../object-serialization/cpp/supported-types.md    |  292 +++
 .../object-serialization/cpp/type-registration.md  |  254 +++
 .../object-serialization/csharp/_category_.json    |    6 +
 .../csharp/basic-serialization.md                  |  268 +++
 .../object-serialization/csharp/configuration.md   |  195 ++
 .../csharp/custom-serializers.md                   |   92 +
 .../object-serialization/csharp/external-types.md  |  305 +++
 .../object-serialization/csharp/index.md           |  108 ++
 .../object-serialization/csharp/references.md      |   77 +
 .../csharp/schema-evolution.md                     |  100 +
 .../object-serialization/csharp/schema-metadata.md |  140 ++
 .../object-serialization/csharp/security.md        |   51 +
 .../object-serialization/csharp/supported-types.md |  110 ++
 .../object-serialization/csharp/thread-safety.md   |   72 +
 .../object-serialization/csharp/troubleshooting.md |  130 ++
 .../csharp/type-registration.md                    |   93 +
 .../object-serialization/dart/_category_.json      |    6 +
 .../dart/basic-serialization.md                    |  383 ++++
 .../object-serialization/dart/code-generation.md   |  126 ++
 .../object-serialization/dart/configuration.md     |  158 ++
 .../dart/custom-serializers.md                     |  141 ++
 .../object-serialization/dart/external-types.md    |  277 +++
 .../object-serialization/dart/index.md             |  155 ++
 .../object-serialization/dart/inheritance.md       |  162 ++
 .../object-serialization/dart/schema-evolution.md  |  108 ++
 .../object-serialization/dart/schema-metadata.md   |  150 ++
 .../object-serialization/dart/security.md          |   51 +
 .../object-serialization/dart/supported-types.md   |  143 ++
 .../object-serialization/dart/troubleshooting.md   |  208 +++
 .../object-serialization/dart/type-registration.md |  115 ++
 .../dart/web-platform-support.md                   |  202 ++
 .../object-serialization/go/_category_.json        |    6 +
 .../object-serialization/go/basic-serialization.md |  828 +++++++++
 .../object-serialization/go/configuration.md       |  415 +++++
 .../object-serialization/go/custom-serializers.md  |  285 +++
 .../version-1.7.0/object-serialization/go/index.md |  158 ++
 .../object-serialization/go/native.md              |  199 ++
 .../object-serialization/go/references.md          |  356 ++++
 .../object-serialization/go/schema-evolution.md    |  374 ++++
 .../object-serialization/go/schema-metadata.md     |  391 ++++
 .../object-serialization/go/security.md            |   49 +
 .../object-serialization/go/supported-types.md     |  371 ++++
 .../object-serialization/go/thread-safety.md       |  347 ++++
 .../object-serialization/go/troubleshooting.md     |  443 +++++
 .../object-serialization/go/type-registration.md   |  264 +++
 .../version-1.7.0/object-serialization/index.md    |   67 +
 .../object-serialization/java/_category_.json      |    6 +
 .../object-serialization/java/advanced-features.md |  159 ++
 .../object-serialization/java/android.md           |  186 ++
 .../java/basic-serialization.md                    |  459 +++++
 .../object-serialization/java/compression.md       |  132 ++
 .../object-serialization/java/configuration.md     |   97 +
 .../java/custom-serializers.md                     |  222 +++
 .../object-serialization/java/graalvm.md           |  193 ++
 .../object-serialization/java/index.md             |  243 +++
 .../object-serialization/java/jdk-serialization.md |   89 +
 .../object-serialization/java/native.md            |  291 +++
 .../object-serialization/java/object-copy.md       |  350 ++++
 .../object-serialization/java/schema-evolution.md  |  254 +++
 .../object-serialization/java/schema-metadata.md   |  700 +++++++
 .../object-serialization/java/security.md          |   68 +
 .../java/static-generated-serializers.md           |  144 ++
 .../object-serialization/java/troubleshooting.md   |  243 +++
 .../object-serialization/java/type-registration.md |  106 ++
 .../object-serialization/java/virtual-threads.md   |  114 ++
 .../javascript/_category_.json                     |    6 +
 .../javascript/basic-serialization.md              |  428 +++++
 .../javascript/configuration.md                    |  130 ++
 .../object-serialization/javascript/index.md       |  169 ++
 .../object-serialization/javascript/references.md  |  111 ++
 .../javascript/schema-evolution.md                 |  102 +
 .../javascript/schema-metadata.md                  |  158 ++
 .../object-serialization/javascript/security.md    |   52 +
 .../javascript/supported-types.md                  |  177 ++
 .../javascript/troubleshooting.md                  |   89 +
 .../javascript/type-registration.md                |  162 ++
 .../object-serialization/kotlin/_category_.json    |    6 +
 .../kotlin/basic-serialization.md                  |   64 +
 .../object-serialization/kotlin/configuration.md   |  147 ++
 .../object-serialization/kotlin/default-values.md  |  132 ++
 .../object-serialization/kotlin/index.md           |  138 ++
 .../object-serialization/kotlin/native.md          |  194 ++
 .../object-serialization/kotlin/schema-metadata.md |  120 ++
 .../object-serialization/kotlin/security.md        |   67 +
 .../kotlin/static-generated-serializers.md         |  281 +++
 .../version-1.7.0/object-serialization/native.md   |  156 ++
 .../object-serialization/python/_category_.json    |    6 +
 .../python/basic-serialization.md                  |  401 ++++
 .../object-serialization/python/configuration.md   |  182 ++
 .../python/custom-serializers.md                   |  138 ++
 .../python/functions-classes-methods.md            |  140 ++
 .../object-serialization/python/index.md           |  168 ++
 .../object-serialization/python/native.md          |  173 ++
 .../python/numpy-integration.md                    |  103 ++
 .../object-serialization/python/out-of-band.md     |  179 ++
 .../python/schema-evolution.md                     |  123 ++
 .../object-serialization/python/schema-metadata.md |  518 ++++++
 .../object-serialization/python/security.md        |  144 ++
 .../python/serialization-hooks.md                  |   56 +
 .../object-serialization/python/troubleshooting.md |  194 ++
 .../python/type-registration.md                    |   83 +
 .../object-serialization/rust/_category_.json      |    6 +
 .../rust/basic-serialization.md                    |  499 +++++
 .../object-serialization/rust/configuration.md     |  190 ++
 .../rust/custom-serializers.md                     |  183 ++
 .../object-serialization/rust/external-types.md    |  394 ++++
 .../object-serialization/rust/index.md             |  166 ++
 .../object-serialization/rust/native.md            |  242 +++
 .../object-serialization/rust/polymorphism.md      |  217 +++
 .../object-serialization/rust/references.md        |  213 +++
 .../object-serialization/rust/schema-evolution.md  |  261 +++
 .../object-serialization/rust/schema-metadata.md   |  491 +++++
 .../object-serialization/rust/security.md          |   51 +
 .../object-serialization/rust/troubleshooting.md   |  210 +++
 .../object-serialization/rust/type-registration.md |  133 ++
 .../object-serialization/scala/_category_.json     |    6 +
 .../scala/basic-serialization.md                   |  202 ++
 .../object-serialization/scala/configuration.md    |  188 ++
 .../object-serialization/scala/default-values.md   |  168 ++
 .../object-serialization/scala/index.md            |  124 ++
 .../object-serialization/scala/native.md           |  181 ++
 .../object-serialization/scala/schema-metadata.md  |  119 ++
 .../object-serialization/scala/security.md         |   67 +
 .../object-serialization/swift/_category_.json     |    6 +
 .../swift/basic-serialization.md                   |  337 ++++
 .../object-serialization/swift/configuration.md    |  154 ++
 .../swift/custom-serializers.md                    |  289 +++
 .../object-serialization/swift/external-types.md   |  278 +++
 .../object-serialization/swift/index.md            |   87 +
 .../object-serialization/swift/polymorphism.md     |  203 ++
 .../object-serialization/swift/references.md       |  111 ++
 .../object-serialization/swift/schema-evolution.md |  116 ++
 .../object-serialization/swift/schema-metadata.md  |  224 +++
 .../object-serialization/swift/security.md         |   50 +
 .../object-serialization/swift/troubleshooting.md  |  112 ++
 .../swift/type-registration.md                     |   97 +
 .../version-1.7.0/object-serialization/xlang.md    |  351 ++++
 .../version-1.7.0/row-format/_category_.json       |    6 +
 .../version-1.7.0/row-format/cpp.md                |  509 +++++
 .../version-1.7.0/row-format/index.md              |   95 +
 .../version-1.7.0/row-format/java.md               |  274 +++
 .../version-1.7.0/row-format/python.md             |  196 ++
 .../version-1.7.0/row-format/rust.md               |  189 ++
 .../version-1.7.0/row-format/troubleshooting.md    |   34 +
 .../specification/java_serialization_spec.md       |  676 +++++++
 .../version-1.7.0/specification/row_format_spec.md |  544 ++++++
 .../specification/xlang_implementation_guide.md    |  819 ++++++++
 .../specification/xlang_serialization_spec.md      | 1634 ++++++++++++++++
 .../specification/xlang_type_mapping.md            |  228 +++
 .../version-1.7.0/start/_category_.json            |    6 +
 .../version-1.7.0/start/cpp.md                     |   99 +
 .../version-1.7.0/start/csharp.md                  |   75 +
 .../version-1.7.0/start/dart.md                    |   85 +
 .../version-1.7.0/start/go.md                      |   86 +
 .../version-1.7.0/start/index.md                   |   62 +
 .../version-1.7.0/start/java.md                    |  118 ++
 .../version-1.7.0/start/javascript.md              |   74 +
 .../version-1.7.0/start/kotlin.md                  |  106 ++
 .../version-1.7.0/start/python.md                  |   67 +
 .../version-1.7.0/start/rust.md                    |   70 +
 .../version-1.7.0/start/scala.md                   |   72 +
 .../version-1.7.0/start/swift.md                   |   80 +
 .../version-1.7.0/benchmarks/_category_.json       |    6 +
 versioned_docs/version-1.7.0/benchmarks/index.md   |  139 ++
 .../version-1.7.0/benchmarks/json/_category_.json  |    7 +
 .../version-1.7.0/benchmarks/json/java/README.md   |   38 +
 .../benchmarks/json/java/string_throughput.png     |  Bin 0 -> 51989 bytes
 .../benchmarks/json/java/utf8_bytes_throughput.png |  Bin 0 -> 53649 bytes
 .../version-1.7.0/benchmarks/json/kotlin/README.md |   14 +
 .../version-1.7.0/benchmarks/json/scala/README.md  |   41 +
 .../benchmarks/json/scala/benchmark_results.json   |  350 ++++
 .../benchmarks/json/scala/string_throughput.png    |  Bin 0 -> 47675 bytes
 .../json/scala/utf8_bytes_throughput.png           |  Bin 0 -> 51475 bytes
 .../version-1.7.0/benchmarks/methodology.md        |   42 +
 .../object-serialization/_category_.json           |    7 +
 .../object-serialization/native/_category_.json    |    6 +
 .../object-serialization/native/java-graalvm.md    |  110 ++
 .../object-serialization/native/java/README.md     |  241 +++
 .../java/data/jmh-jdk-11-deserialization.csv       |  153 ++
 .../native/java/data/jmh-jdk-11-serialization.csv  |  153 ++
 .../native/java/data/jmh-jdk-11-zerocopy.csv       |   73 +
 .../java/java_heap_deserialize_compatible.png      |  Bin 0 -> 91290 bytes
 .../java/java_heap_deserialize_consistent.png      |  Bin 0 -> 102335 bytes
 .../native/java/java_heap_serialize_compatible.png |  Bin 0 -> 100843 bytes
 .../native/java/java_heap_serialize_consistent.png |  Bin 0 -> 100648 bytes
 .../java/java_offheap_deserialize_compatible.png   |  Bin 0 -> 96677 bytes
 .../java/java_offheap_deserialize_consistent.png   |  Bin 0 -> 101898 bytes
 .../java/java_offheap_serialize_compatible.png     |  Bin 0 -> 109379 bytes
 .../java/java_offheap_serialize_consistent.png     |  Bin 0 -> 110476 bytes
 .../java/java_repo_deserialization_throughput.png  |  Bin 0 -> 105680 bytes
 .../java/java_repo_serialization_throughput.png    |  Bin 0 -> 113741 bytes
 .../native/java/java_zero_copy_deserialize.png     |  Bin 0 -> 90075 bytes
 .../native/java/java_zero_copy_serialize.png       |  Bin 0 -> 86235 bytes
 .../object-serialization/xlang/_category_.json     |    6 +
 .../object-serialization/xlang/cpp/README.md       |   78 +
 .../object-serialization/xlang/cpp/throughput.png  |  Bin 0 -> 102327 bytes
 .../object-serialization/xlang/csharp/README.md    |   89 +
 .../xlang/csharp/throughput.png                    |  Bin 0 -> 108852 bytes
 .../object-serialization/xlang/dart/README.md      |   49 +
 .../object-serialization/xlang/dart/throughput.png |  Bin 0 -> 106606 bytes
 .../object-serialization/xlang/go/README.md        |   58 +
 .../xlang/go/benchmark_results.txt                 |  326 ++++
 .../xlang/go/serialized_sizes.txt                  |   27 +
 .../object-serialization/xlang/go/throughput.png   |  Bin 0 -> 108457 bytes
 .../object-serialization/xlang/java/README.md      |   52 +
 .../object-serialization/xlang/java/throughput.png |  Bin 0 -> 107433 bytes
 .../xlang/javascript/README.md                     |   82 +
 .../xlang/javascript/throughput.png                |  Bin 0 -> 108900 bytes
 .../object-serialization/xlang/python/README.md    |   87 +
 .../xlang/python/throughput.png                    |  Bin 0 -> 109981 bytes
 .../object-serialization/xlang/rust/README.md      |   78 +
 .../object-serialization/xlang/rust/throughput.png |  Bin 0 -> 102562 bytes
 .../object-serialization/xlang/swift/README.md     |   50 +
 .../xlang/swift/throughput.png                     |  Bin 0 -> 106749 bytes
 .../version-1.7.0/community/community.md           |   90 +
 .../community/how_to_join_community.md             |  105 ++
 .../version-1.7.0/community/how_to_release.md      |  636 +++++++
 .../version-1.7.0/community/how_to_verify.md       |  125 ++
 .../version-1.7.0/compiler/_category_.json         |    6 +
 .../version-1.7.0/compiler/build-integration.md    |  230 +++
 versioned_docs/version-1.7.0/compiler/cli.md       |  693 +++++++
 .../version-1.7.0/compiler/flatbuffers-idl.md      |  232 +++
 .../compiler/generated-code/_category_.json        |    6 +
 .../version-1.7.0/compiler/generated-code/cpp.md   |  158 ++
 .../compiler/generated-code/csharp.md              |  109 ++
 .../version-1.7.0/compiler/generated-code/dart.md  |  194 ++
 .../version-1.7.0/compiler/generated-code/go.md    |  148 ++
 .../version-1.7.0/compiler/generated-code/index.md |  176 ++
 .../version-1.7.0/compiler/generated-code/java.md  |  150 ++
 .../compiler/generated-code/javascript.md          |   94 +
 .../compiler/generated-code/kotlin.md              |  161 ++
 .../compiler/generated-code/python.md              |  120 ++
 .../version-1.7.0/compiler/generated-code/rust.md  |  154 ++
 .../version-1.7.0/compiler/generated-code/scala.md |  164 ++
 .../version-1.7.0/compiler/generated-code/swift.md |  116 ++
 .../version-1.7.0/compiler/getting-started.md      |   46 +
 versioned_docs/version-1.7.0/compiler/index.md     |  260 +++
 .../version-1.7.0/compiler/protobuf-idl.md         |  366 ++++
 .../version-1.7.0/compiler/schema-idl.md           | 1747 +++++++++++++++++
 .../version-1.7.0/development/_category_.json      |    6 +
 .../version-1.7.0/development/cpp-debugging.md     |   47 +
 versioned_docs/version-1.7.0/development/index.md  |  142 ++
 .../development/jmp_generate_file.png              |  Bin 0 -> 396831 bytes
 .../development/vscode_debug_fory.jpg              |  Bin 0 -> 1138690 bytes
 .../development/vscode_select_debug_run.png        |  Bin 0 -> 192687 bytes
 versioned_docs/version-1.7.0/grpc/_category_.json  |    6 +
 versioned_docs/version-1.7.0/grpc/cpp.md           |  277 +++
 versioned_docs/version-1.7.0/grpc/csharp.md        |  311 ++++
 versioned_docs/version-1.7.0/grpc/dart.md          |  292 +++
 versioned_docs/version-1.7.0/grpc/go.md            |  241 +++
 versioned_docs/version-1.7.0/grpc/index.md         |  115 ++
 versioned_docs/version-1.7.0/grpc/java.md          |  398 ++++
 versioned_docs/version-1.7.0/grpc/javascript.md    |  323 ++++
 versioned_docs/version-1.7.0/grpc/kotlin.md        |  278 +++
 versioned_docs/version-1.7.0/grpc/python.md        |  320 ++++
 versioned_docs/version-1.7.0/grpc/rust.md          |  338 ++++
 versioned_docs/version-1.7.0/grpc/scala.md         |  397 ++++
 versioned_docs/version-1.7.0/grpc/swift.md         |  243 +++
 .../version-1.7.0/grpc/troubleshooting.md          |   37 +
 versioned_docs/version-1.7.0/images/fory-logo.png  |  Bin 0 -> 19427 bytes
 versioned_docs/version-1.7.0/images/idea-jdk11.png |  Bin 0 -> 295126 bytes
 versioned_docs/version-1.7.0/index.md              |   62 +
 .../version-1.7.0/introduction/_category_.json     |    6 +
 .../version-1.7.0/introduction/choose-a-format.md  |   74 +
 versioned_docs/version-1.7.0/introduction/index.md |  125 ++
 .../version-1.7.0/introduction/support-matrix.md   |   37 +
 versioned_docs/version-1.7.0/json/_category_.json  |    6 +
 versioned_docs/version-1.7.0/json/android.md       |  224 +++
 versioned_docs/version-1.7.0/json/annotations.md   |  824 +++++++++
 versioned_docs/version-1.7.0/json/custom-codecs.md |  347 ++++
 .../version-1.7.0/json/getting-started.md          |  272 +++
 versioned_docs/version-1.7.0/json/graalvm.md       |  238 +++
 versioned_docs/version-1.7.0/json/index.md         |   71 +
 versioned_docs/version-1.7.0/json/kotlin.md        |  367 ++++
 versioned_docs/version-1.7.0/json/modules.md       |  123 ++
 .../version-1.7.0/json/object-mapping.md           |  242 +++
 versioned_docs/version-1.7.0/json/scala.md         |  253 +++
 versioned_docs/version-1.7.0/json/security.md      |  141 ++
 .../version-1.7.0/json/troubleshooting.md          |   46 +
 .../object-serialization/_category_.json           |    6 +
 .../object-serialization/core-concepts.md          |  124 ++
 .../object-serialization/cpp/_category_.json       |    6 +
 .../cpp/basic-serialization.md                     |  641 +++++++
 .../object-serialization/cpp/configuration.md      |  261 +++
 .../object-serialization/cpp/custom-serializers.md |  371 ++++
 .../object-serialization/cpp/index.md              |  278 +++
 .../object-serialization/cpp/native.md             |  214 +++
 .../object-serialization/cpp/polymorphism.md       |  490 +++++
 .../object-serialization/cpp/schema-evolution.md   |  424 +++++
 .../object-serialization/cpp/schema-metadata.md    |  220 +++
 .../object-serialization/cpp/security.md           |   57 +
 .../object-serialization/cpp/supported-types.md    |  300 +++
 .../object-serialization/cpp/type-registration.md  |  254 +++
 .../object-serialization/csharp/_category_.json    |    6 +
 .../csharp/basic-serialization.md                  |  285 +++
 .../object-serialization/csharp/configuration.md   |  209 +++
 .../csharp/custom-serializers.md                   |   98 +
 .../object-serialization/csharp/external-types.md  |  364 ++++
 .../object-serialization/csharp/index.md           |  111 ++
 .../object-serialization/csharp/references.md      |   81 +
 .../csharp/schema-evolution.md                     |  120 ++
 .../object-serialization/csharp/schema-metadata.md |  158 ++
 .../object-serialization/csharp/security.md        |   56 +
 .../object-serialization/csharp/supported-types.md |  117 ++
 .../object-serialization/csharp/thread-safety.md   |   72 +
 .../object-serialization/csharp/troubleshooting.md |  149 ++
 .../csharp/type-registration.md                    |  100 +
 .../object-serialization/dart/_category_.json      |    6 +
 .../dart/basic-serialization.md                    |  391 ++++
 .../object-serialization/dart/code-generation.md   |  138 ++
 .../object-serialization/dart/configuration.md     |  171 ++
 .../dart/custom-serializers.md                     |  144 ++
 .../object-serialization/dart/external-types.md    |  323 ++++
 .../object-serialization/dart/index.md             |  164 ++
 .../object-serialization/dart/inheritance.md       |  211 +++
 .../object-serialization/dart/schema-evolution.md  |  135 ++
 .../object-serialization/dart/schema-metadata.md   |  172 ++
 .../object-serialization/dart/security.md          |   56 +
 .../object-serialization/dart/supported-types.md   |  177 ++
 .../object-serialization/dart/troubleshooting.md   |  224 +++
 .../object-serialization/dart/type-registration.md |  130 ++
 .../dart/web-platform-support.md                   |  239 +++
 .../object-serialization/go/_category_.json        |    6 +
 .../object-serialization/go/basic-serialization.md |  835 +++++++++
 .../object-serialization/go/configuration.md       |  427 +++++
 .../object-serialization/go/custom-serializers.md  |  285 +++
 .../version-1.7.0/object-serialization/go/index.md |  162 ++
 .../object-serialization/go/native.md              |  217 +++
 .../object-serialization/go/references.md          |  356 ++++
 .../object-serialization/go/schema-evolution.md    |  393 ++++
 .../object-serialization/go/schema-metadata.md     |  393 ++++
 .../object-serialization/go/security.md            |   53 +
 .../object-serialization/go/supported-types.md     |  374 ++++
 .../object-serialization/go/thread-safety.md       |  347 ++++
 .../object-serialization/go/troubleshooting.md     |  443 +++++
 .../object-serialization/go/type-registration.md   |  264 +++
 .../version-1.7.0/object-serialization/index.md    |   70 +
 .../object-serialization/java/_category_.json      |    6 +
 .../object-serialization/java/advanced-features.md |  160 ++
 .../object-serialization/java/android.md           |  238 +++
 .../java/basic-serialization.md                    |  486 +++++
 .../object-serialization/java/compression.md       |  132 ++
 .../object-serialization/java/configuration.md     |  104 ++
 .../java/custom-serializers.md                     |  227 +++
 .../object-serialization/java/graalvm.md           |  203 ++
 .../object-serialization/java/index.md             |  268 +++
 .../object-serialization/java/jdk-serialization.md |   94 +
 .../object-serialization/java/native.md            |  337 ++++
 .../object-serialization/java/object-copy.md       |  363 ++++
 .../object-serialization/java/schema-evolution.md  |  277 +++
 .../object-serialization/java/schema-metadata.md   |  716 +++++++
 .../object-serialization/java/security.md          |   83 +
 .../java/static-generated-serializers.md           |  165 ++
 .../object-serialization/java/troubleshooting.md   |  255 +++
 .../object-serialization/java/type-registration.md |  127 ++
 .../object-serialization/java/virtual-threads.md   |  127 ++
 .../javascript/_category_.json                     |    6 +
 .../javascript/basic-serialization.md              |  434 +++++
 .../javascript/configuration.md                    |  150 ++
 .../object-serialization/javascript/index.md       |  178 ++
 .../object-serialization/javascript/references.md  |  111 ++
 .../javascript/schema-evolution.md                 |  116 ++
 .../javascript/schema-metadata.md                  |  165 ++
 .../object-serialization/javascript/security.md    |   60 +
 .../javascript/supported-types.md                  |  177 ++
 .../javascript/troubleshooting.md                  |   90 +
 .../javascript/type-registration.md                |  164 ++
 .../object-serialization/kotlin/_category_.json    |    6 +
 .../kotlin/basic-serialization.md                  |   65 +
 .../object-serialization/kotlin/configuration.md   |  151 ++
 .../object-serialization/kotlin/default-values.md  |  133 ++
 .../object-serialization/kotlin/index.md           |  141 ++
 .../object-serialization/kotlin/native.md          |  196 ++
 .../object-serialization/kotlin/schema-metadata.md |  124 ++
 .../object-serialization/kotlin/security.md        |   74 +
 .../kotlin/static-generated-serializers.md         |  319 ++++
 .../version-1.7.0/object-serialization/native.md   |  176 ++
 .../object-serialization/python/_category_.json    |    6 +
 .../python/basic-serialization.md                  |  430 +++++
 .../object-serialization/python/configuration.md   |  189 ++
 .../python/custom-serializers.md                   |  138 ++
 .../python/functions-classes-methods.md            |  144 ++
 .../object-serialization/python/index.md           |  171 ++
 .../object-serialization/python/native.md          |  192 ++
 .../python/numpy-integration.md                    |  103 ++
 .../object-serialization/python/out-of-band.md     |  179 ++
 .../python/schema-evolution.md                     |  141 ++
 .../object-serialization/python/schema-metadata.md |  529 ++++++
 .../object-serialization/python/security.md        |  163 ++
 .../python/serialization-hooks.md                  |   63 +
 .../object-serialization/python/troubleshooting.md |  195 ++
 .../python/type-registration.md                    |   92 +
 .../object-serialization/rust/_category_.json      |    6 +
 .../rust/basic-serialization.md                    |  516 ++++++
 .../object-serialization/rust/configuration.md     |  210 +++
 .../rust/custom-serializers.md                     |  204 ++
 .../object-serialization/rust/external-types.md    |  558 ++++++
 .../object-serialization/rust/index.md             |  172 ++
 .../object-serialization/rust/native.md            |  272 +++
 .../object-serialization/rust/polymorphism.md      |  239 +++
 .../object-serialization/rust/references.md        |  213 +++
 .../object-serialization/rust/schema-evolution.md  |  282 +++
 .../object-serialization/rust/schema-metadata.md   |  503 +++++
 .../object-serialization/rust/security.md          |   58 +
 .../object-serialization/rust/troubleshooting.md   |  219 +++
 .../object-serialization/rust/type-registration.md |  141 ++
 .../object-serialization/scala/_category_.json     |    6 +
 .../scala/basic-serialization.md                   |  221 +++
 .../object-serialization/scala/configuration.md    |  195 ++
 .../object-serialization/scala/default-values.md   |  169 ++
 .../object-serialization/scala/index.md            |  127 ++
 .../object-serialization/scala/native.md           |  183 ++
 .../object-serialization/scala/schema-metadata.md  |  124 ++
 .../object-serialization/scala/security.md         |   74 +
 .../object-serialization/swift/_category_.json     |    6 +
 .../swift/basic-serialization.md                   |  350 ++++
 .../object-serialization/swift/configuration.md    |  161 ++
 .../swift/custom-serializers.md                    |  308 +++
 .../object-serialization/swift/external-types.md   |  296 +++
 .../object-serialization/swift/index.md            |   88 +
 .../object-serialization/swift/polymorphism.md     |  211 +++
 .../object-serialization/swift/references.md       |  111 ++
 .../object-serialization/swift/schema-evolution.md |  120 ++
 .../object-serialization/swift/schema-metadata.md  |  233 +++
 .../object-serialization/swift/security.md         |   57 +
 .../object-serialization/swift/troubleshooting.md  |  117 ++
 .../swift/type-registration.md                     |  103 ++
 .../version-1.7.0/object-serialization/xlang.md    |  368 ++++
 .../version-1.7.0/row-format/_category_.json       |    6 +
 versioned_docs/version-1.7.0/row-format/cpp.md     |  509 +++++
 versioned_docs/version-1.7.0/row-format/index.md   |   99 +
 versioned_docs/version-1.7.0/row-format/java.md    |  284 +++
 versioned_docs/version-1.7.0/row-format/python.md  |  200 ++
 versioned_docs/version-1.7.0/row-format/rust.md    |  190 ++
 .../version-1.7.0/row-format/troubleshooting.md    |   35 +
 .../specification/java_serialization_spec.md       |  783 ++++++++
 .../version-1.7.0/specification/row_format_spec.md |  546 ++++++
 .../specification/xlang_implementation_guide.md    | 1704 +++++++++++++++++
 .../specification/xlang_serialization_spec.md      | 1957 ++++++++++++++++++++
 .../specification/xlang_type_mapping.md            |  241 +++
 versioned_docs/version-1.7.0/start/_category_.json |    6 +
 versioned_docs/version-1.7.0/start/cpp.md          |  105 ++
 versioned_docs/version-1.7.0/start/csharp.md       |   81 +
 versioned_docs/version-1.7.0/start/dart.md         |   91 +
 versioned_docs/version-1.7.0/start/go.md           |   93 +
 versioned_docs/version-1.7.0/start/index.md        |   71 +
 versioned_docs/version-1.7.0/start/java.md         |  132 ++
 versioned_docs/version-1.7.0/start/javascript.md   |   81 +
 versioned_docs/version-1.7.0/start/kotlin.md       |  116 ++
 versioned_docs/version-1.7.0/start/python.md       |   74 +
 versioned_docs/version-1.7.0/start/rust.md         |   76 +
 versioned_docs/version-1.7.0/start/scala.md        |   78 +
 versioned_docs/version-1.7.0/start/swift.md        |   87 +
 versioned_sidebars/version-1.7.0-sidebars.json     |  124 ++
 versions.json                                      |    1 +
 584 files changed, 103353 insertions(+)

diff --git a/.gitignore b/.gitignore
index 0c681c1242f..8c404bd47b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,8 @@ i18n/zh-CN/docusaurus-plugin-content-docs/*/specification/
 !i18n/zh-CN/docusaurus-plugin-content-docs/version-1.5.0/specification/*.md
 !i18n/zh-CN/docusaurus-plugin-content-docs/version-1.6.0/specification/
 !i18n/zh-CN/docusaurus-plugin-content-docs/version-1.6.0/specification/*.md
+!i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/specification/
+!i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/specification/*.md
 
 # English fallback files generated for capability-first current docs. Existing
 # tracked Chinese translations remain tracked and take precedence.
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0.json
new file mode 100644
index 00000000000..f10bc291c06
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0.json
@@ -0,0 +1,42 @@
+{
+  "version.label": {
+    "message": "1.7",
+    "description": "The label for version 1.7.0"
+  },
+  "sidebar.docsSidebar.category.Introduction": {
+    "message": "简介",
+    "description": "The label for category Introduction in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Getting Started": {
+    "message": "快速开始",
+    "description": "The label for category Getting Started in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Benchmarks": {
+    "message": "基准测试",
+    "description": "The label for category Benchmarks in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Object Serialization": {
+    "message": "对象序列化",
+    "description": "The label for category Object Serialization in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Row Format": {
+    "message": "行格式",
+    "description": "The label for category Row Format in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Fory JSON": {
+    "message": "Fory JSON",
+    "description": "The label for category Fory JSON in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Fory IDL & Compiler": {
+    "message": "Fory IDL 与编译器",
+    "description": "The label for category Fory IDL & Compiler in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Fory gRPC": {
+    "message": "Fory gRPC",
+    "description": "The label for category Fory gRPC in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Development": {
+    "message": "开发",
+    "description": "The label for category Development in sidebar docsSidebar"
+  }
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/_category_.json
new file mode 100644
index 00000000000..aed75caeba4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 3,
+  "label": "基准测试",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/index.md
new file mode 100644
index 00000000000..69e136f3926
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/index.md
@@ -0,0 +1,130 @@
+---
+title: 基准结果
+sidebar_position: 1
+id: index
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+> **注意**:不同序列化器和配置各自擅长不同的工作负载。基准测试结果仅供参考。
+> 请针对具体使用场景,采用适当的配置和工作负载进行基准测试。
+
+## Java 基准测试
+
+Java 基准测试使用 `docs/benchmarks/object-serialization/native/java` 中的当前测试套件,
+将 Fory 与常见 Java 序列化框架进行比较。
+
+**序列化吞吐量**:
+
+![Java 序列化吞吐量](object-serialization/native/java/java_repo_serialization_throughput.png)
+
+**反序列化吞吐量**:
+
+![Java 反序列化吞吐量](object-serialization/native/java/java_repo_deserialization_throughput.png)
+
+**JSON 吞吐量**:
+
+<div style={{display: 'flex', gap: '1rem'}}>
+  <img src={require('./json/java/string_throughput.png').default} alt="Java JSON String Throughput" style={{width: 'calc(50% - 0.5rem)'}} />
+  <img src={require('./json/java/utf8_bytes_throughput.png').default} alt="Java JSON UTF-8 Throughput" style={{width: 'calc(50% - 0.5rem)'}} />
+</div>
+
+**跨语言吞吐量**:
+
+![Java 跨语言吞吐量](object-serialization/xlang/java/throughput.png)
+
+**重要**:测量 Fory 运行时代码生成性能时,需要进行充分预热:
+
+更多基准测试说明、原始数据和完整 Java benchmark README,请参阅 [Java 基准测试](object-serialization/native/java/README.md)。
+
+## Kotlin JSON 基准测试 {#kotlin-json-benchmark}
+
+Kotlin JSON 测试程序使用同一个不可变模型和 16 项 String/UTF-8 操作,对比 Fory JSON Kotlin、kotlinx.serialization、Moshi 和 Jackson Kotlin。测试负载与设置见 [Kotlin JSON 基准测试](json/kotlin/README.md)。
+
+## Python 基准测试
+
+在对象和列表工作负载中,Fory Python 相比 `pickle` 和 Protobuf 展现出优秀性能。
+
+![Python 吞吐量](object-serialization/xlang/python/throughput.png)
+
+基准测试设置、原始结果和复现步骤请参阅 [Python 基准测试](object-serialization/xlang/python/README.md)。
+
+## Rust 基准测试
+
+与其他 Rust 序列化框架相比,Fory Rust 展现出有竞争力的性能。
+
+![Rust 吞吐量](object-serialization/xlang/rust/throughput.png)
+
+注意:结果取决于硬件、数据集和实现版本。记录的环境、工作负载和复现命令请参阅
+[Rust 基准测试报告](object-serialization/xlang/rust/README.md)。
+
+## C++ 基准测试
+
+与 Protobuf C++ 序列化框架相比,Fory C++ 展现出有竞争力的性能。
+
+![C++ 吞吐量](object-serialization/xlang/cpp/throughput.png)
+
+记录的环境、工作负载和复现命令请参阅 [C++ 基准测试报告](object-serialization/xlang/cpp/README.md)。
+
+## Go 基准测试
+
+在单对象和列表工作负载中,Fory Go 相比 Protobuf 和 Msgpack 展现出优秀性能。
+
+![Go 吞吐量](object-serialization/xlang/go/throughput.png)
+
+注意:结果取决于硬件、数据集和实现版本。详情请参阅
+[Go 基准测试报告](object-serialization/xlang/go/README.md)。
+
+## C# 基准测试
+
+在有类型对象的序列化和反序列化工作负载中,Fory C# 相比 Protobuf 和 Msgpack 展现出优秀性能。
+
+![C# 吞吐量](object-serialization/xlang/csharp/throughput.png)
+
+注意:结果取决于硬件和运行时版本。详情请参阅
+[C# 基准测试报告](object-serialization/xlang/csharp/README.md)。
+
+## Swift 基准测试
+
+在标量对象和列表工作负载中,Fory Swift 相比 Protobuf 和 Msgpack 展现出优秀性能。
+
+![Swift 吞吐量](object-serialization/xlang/swift/throughput.png)
+
+注意:结果取决于硬件和运行时版本。详情请参阅
+[Swift 基准测试报告](object-serialization/xlang/swift/README.md)。
+
+## JavaScript 基准测试
+
+在具有代表性的 Node.js 工作负载中,Fory JavaScript 相比 Protocol Buffers 和 JSON 展现出优秀性能。
+
+![JavaScript 吞吐量](object-serialization/xlang/javascript/throughput.png)
+
+注意:结果取决于硬件、数据集和运行时版本。详情请参阅
+[JavaScript 基准测试报告](object-serialization/xlang/javascript/README.md)。
+
+## Dart 基准测试
+
+在具有代表性的对象和列表工作负载中,Fory Dart 相比 Protocol Buffers 展现出优秀性能。
+
+![Dart 吞吐量](object-serialization/xlang/dart/throughput.png)
+
+注意:结果取决于硬件、数据集和运行时版本。详情请参阅
+[Dart 基准测试报告](object-serialization/xlang/dart/README.md)。
+
+## 正确解读结果
+
+请先阅读[方法论](methodology.md),再打开能力、语言、Schema、模式和操作均与自身工作负载匹配的报告。
+仓库中保存的结果只是其记录环境下的历史证据,并不保证适用于其他应用或当前 main 分支。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/_category_.json
new file mode 100644
index 00000000000..5c71869ca63
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/_category_.json
@@ -0,0 +1,7 @@
+{
+  "position": 4,
+  "key": "benchmark-json",
+  "label": "Fory JSON",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/README.md
new file mode 100644
index 00000000000..e768ea48e7e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/README.md
@@ -0,0 +1,38 @@
+# Java JSON 基准测试报告
+
+本基准测试使用相同的数据比较 fory-json、Jackson 和 Gson。String 组不包含 UTF-8
+转换。UTF-8 字节组会在可用时使用直接字节数组 API。Gson 包含 String 到 UTF-8 的编码以及
+UTF-8 到 String 的解码。
+
+```bash
+cd benchmarks/java
+./run_json.sh --libs fory-json,jackson,gson
+```
+
+- 基准测试日期:`2026-07-28`
+- 源代码提交:`bd0ca9825b3206b1a53bf27bfb180a551ab39236`
+- 平台:Apple M4 Pro, macOS 15.7.2, arm64
+- JDK:`26.0.1`
+- VM:`OpenJDK 64-Bit Server VM`
+- JMH:`1.37`
+- 预热:3 次迭代 × `2 s`
+- 测量:5 次迭代 × `2 s`
+- Fork 数:1;线程数:1
+- 模式:吞吐量;数值越高越好
+
+## String
+
+![Java JSON String 基准测试吞吐量](string_throughput.png)
+
+## UTF-8 字节
+
+![Java JSON UTF-8 字节基准测试吞吐量](utf8_bytes_throughput.png)
+
+## 结果
+
+| 表示形式   | 操作     | fory-json ops/sec | jackson ops/sec | gson ops/sec | 最快      |
+| ---------- | -------- | ----------------: | --------------: | -----------: | --------- |
+| String     | 序列化   |         7,387,465 |       2,049,368 |    1,084,042 | fory-json |
+| String     | 反序列化 |         2,897,955 |       1,074,885 |      902,772 | fory-json |
+| UTF-8 字节 | 序列化   |        10,375,498 |       1,868,614 |    1,037,211 | fory-json |
+| UTF-8 字节 | 反序列化 |         3,077,158 |       1,268,397 |      933,079 | fory-json |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/string_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/string_throughput.png
new file mode 100644
index 00000000000..95effcaea00
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/string_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/utf8_bytes_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/utf8_bytes_throughput.png
new file mode 100644
index 00000000000..7f2aacc3759
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/java/utf8_bytes_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/kotlin/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/kotlin/README.md
new file mode 100644
index 00000000000..968af92724e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/kotlin/README.md
@@ -0,0 +1,10 @@
+# Kotlin JSON 基准测试 {#kotlin-json-benchmarks}
+
+基准测试程序位于 [`benchmarks/kotlin`](https://github.com/apache/fory/tree/main/benchmarks/kotlin),对比 Fory JSON Kotlin、kotlinx.serialization、Moshi 和 Jackson Kotlin,采用以下设置:
+
+- 使用同一个不可变 `MediaContent` 模型,不提供公共无参构造函数;
+- 使用 SHA-256 为 `8faba2f57ab397f319aced5cf1e8411a76785557d4c7d1703ec9d540354310a1` 的 Eishay 测试数据;
+- 对每个库测试 String 序列化、UTF-8 字节序列化、String 反序列化和 UTF-8 字节反序列化;
+- 在一次标准 JMH 运行中执行全部 16 个方法;
+- 在计时范围外准备并保留声明类型的序列化器、适配器、读取器和写入器;
+- 计时前检查测试数据解码、自身输出往返,以及所有输出的 JSON 树等价性。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/README.md
new file mode 100644
index 00000000000..0b436a5e545
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/README.md
@@ -0,0 +1,41 @@
+# Scala JSON 基准测试报告 {#scala-json-benchmark-report}
+
+本测试使用同一个不可变 Scala MediaContent 模型和 Eishay JSON 文档,对比 fory-json-scala、jsoniter-scala 和 Jackson Scala。String 组不包含 UTF-8 转换;UTF-8 组中各库均使用直接操作字节数组的 API。
+
+- 测试日期:`2026-08-14`
+- 源码提交:`588ad6ab355c4c23fa0a2e4f269a8c733cba7b01`
+- 平台:macOS-15.7.2-arm64-arm-64bit (arm64)
+- JDK:`26.0.1`
+- 虚拟机:`OpenJDK 64-Bit Server VM`
+- JMH:`1.37`
+- 预热:2 轮,每轮 `1 s`
+- 测量:2 轮,每轮 `1 s`
+- Fork 数:1;线程数:1
+- 聚合方式:3 次交替短运行的中位数;误差线表示各次运行之间的最大偏差
+- 模式:吞吐量,越高越好
+
+## String
+
+![Scala JSON String 基准测试吞吐量](string_throughput.png)
+
+## UTF-8 字节 {#utf-8-bytes}
+
+![Scala JSON UTF-8 字节基准测试吞吐量](utf8_bytes_throughput.png)
+
+## 结果 {#results}
+
+| 表示形式 | 操作 | fory-json-scala 次/秒 | jsoniter-scala 次/秒 | Jackson Scala 次/秒 | 最快 |
+| ------------- | ----------- | ----------------------: | ---------------------: | --------------------: | --------------- |
+| 字符串 | 序列化 | 6,760,588 | 2,748,997 | 1,955,855 | fory-json-scala |
+| 字符串 | 反序列化 | 3,771,280 | 2,350,297 | 960,362 | fory-json-scala |
+| UTF-8 字节 | 序列化 | 9,485,122 | 2,745,567 | 1,761,719 | fory-json-scala |
+| UTF-8 字节 | 反序列化 | 3,318,893 | 2,391,923 | 1,080,453 | fory-json-scala |
+
+## Fory 性能优势 {#fory-performance-advantage}
+
+| 表示形式 | 操作 | 相对 jsoniter-scala | 相对 Jackson Scala |
+| ------------- | ----------- | ----------------: | ---------------: |
+| 字符串 | 序列化 | 145.9% | 245.7% |
+| 字符串 | 反序列化 | 60.5% | 292.7% |
+| UTF-8 字节 | 序列化 | 245.5% | 438.4% |
+| UTF-8 字节 | 反序列化 | 38.8% | 207.2% |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/benchmark_results.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/benchmark_results.json
new file mode 100644
index 00000000000..ac7edac58b4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/benchmark_results.json
@@ -0,0 +1,350 @@
+[
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.foryFromJsonBytes",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 3318893.391568216,
+      "scoreError": 38387.28448699275,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.foryFromJsonString",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 3771279.877394124,
+      "scoreError": 24022.44981324859,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.foryToJsonBytes",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 9485122.241809543,
+      "scoreError": 389806.29923327826,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.foryToJsonString",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 6760588.439072061,
+      "scoreError": 54595.97697333433,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jacksonFromJsonBytes",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 1080452.8479462112,
+      "scoreError": 24089.40104978718,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jacksonFromJsonString",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 960361.5901450468,
+      "scoreError": 8161.349699108629,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jacksonToJsonBytes",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 1761718.933247129,
+      "scoreError": 34735.119977300055,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jacksonToJsonString",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 1955854.87305796,
+      "scoreError": 37257.23058240209,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jsoniterFromJsonBytes",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 2391923.4543758444,
+      "scoreError": 181924.61893445626,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jsoniterFromJsonString",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 2350296.6557386126,
+      "scoreError": 127256.9665232785,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jsoniterToJsonBytes",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 2745567.0435188385,
+      "scoreError": 1391488.088001239,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  },
+  {
+    "jmhVersion": "1.37",
+    "benchmark": "org.apache.fory.benchmark.json.MediaContentBenchmark.jsoniterToJsonString",
+    "mode": "thrpt",
+    "threads": 1,
+    "forks": 1,
+    "jvm": "/opt/homebrew/Cellar/openjdk/26.0.1/libexec/openjdk.jdk/Contents/Home/bin/java",
+    "jvmArgs": [
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
+      "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
+    ],
+    "jdkVersion": "26.0.1",
+    "vmName": "OpenJDK 64-Bit Server VM",
+    "vmVersion": "26.0.1",
+    "warmupIterations": 2,
+    "warmupTime": "1 s",
+    "warmupBatchSize": 1,
+    "measurementIterations": 2,
+    "measurementTime": "1 s",
+    "measurementBatchSize": 1,
+    "primaryMetric": {
+      "score": 2748996.506356555,
+      "scoreError": 37852.358972850256,
+      "scoreUnit": "ops/s"
+    },
+    "secondaryMetrics": {},
+    "alternatingRounds": 3,
+    "aggregation": "median"
+  }
+]
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/string_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/string_throughput.png
new file mode 100644
index 00000000000..039b20e9a57
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/string_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/utf8_bytes_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/utf8_bytes_throughput.png
new file mode 100644
index 00000000000..d5493740614
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/json/scala/utf8_bytes_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/methodology.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/methodology.md
new file mode 100644
index 00000000000..aa7647b0e54
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/methodology.md
@@ -0,0 +1,40 @@
+---
+title: 基准测试方法论
+sidebar_position: 2
+id: methodology
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+有价值的序列化基准测试应记录足够的上下文,以便复现工作负载,并避免将语义不同的测试当作等价结果比较。
+
+## 必需上下文
+
+- 仓库 commit 和依赖版本;
+- 硬件、操作系统、运行时版本和相关环境变量;
+- Schema 和对象填充方式;
+- xlang 或 native 模式、兼容模式、引用跟踪和注册方式;
+- 预热、fork/process、迭代次数、持续时间和并发度;
+- 测量的序列化表示和操作;
+- 精确命令和原始结果位置。
+
+## 解读报告
+
+只比较同一种操作和等价的数据语义。不要在不说明语义差异的情况下,将 xlang 载荷与 native 载荷比较,
+或将完整对象重建与 Row Format 字段访问比较。基于 JIT 和代码生成的实现需要有代表性的预热。
+
+如果决策依赖当前代码,请运行当前有效的 benchmark harness。仓库中保存的报告只代表其记录的
+commit 和环境。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/_category_.json
new file mode 100644
index 00000000000..fd60d74616a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/_category_.json
@@ -0,0 +1,7 @@
+{
+  "position": 3,
+  "key": "benchmark-object-serialization",
+  "label": "对象序列化",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/_category_.json
new file mode 100644
index 00000000000..1baf4a4d974
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 2,
+  "label": "Native",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java-graalvm.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java-graalvm.md
new file mode 100644
index 00000000000..45c15a5a013
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java-graalvm.md
@@ -0,0 +1,110 @@
+# Java GraalVM Native Image 基准测试
+
+这些测量数据涵盖 GraalVM Native Image 中的 Fory 二进制对象序列化。结果取决于记录的工作负载和环境。
+
+## 基准测试
+
+Fory 与 GraalVM JDK 序列化的性能对比:
+
+| 类型   | 压缩 | 速度提升 | 大小 |
+| ------ | ---- | -------- | ---- |
+| Struct | 关闭 | 46x      | 43%  |
+| Struct | 开启 | 24x      | 31%  |
+| Pojo   | 关闭 | 12x      | 56%  |
+| Pojo   | 开启 | 12x      | 48%  |
+
+基准测试代码请参阅 [Benchmark.java](https://github.com/apache/fory/blob/main/integration_tests/graalvm_tests/src/main/java/org/apache/fory/graalvm/Benchmark.java)。
+
+### Struct 基准测试
+
+#### 类字段
+
+```java
+public class Struct implements Serializable {
+  public int f1;
+  public long f2;
+  public float f3;
+  public double f4;
+  public int f5;
+  public long f6;
+  public float f7;
+  public double f8;
+  public int f9;
+  public long f10;
+  public float f11;
+  public double f12;
+}
+```
+
+#### 基准测试结果
+
+未启用压缩:
+
+```
+Benchmark repeat number: 400000
+Object type: class org.apache.fory.graalvm.Struct
+Compress number: false
+Fory size: 76.0
+JDK size: 178.0
+Fory serialization took mills: 49
+JDK serialization took mills: 2254
+Compare speed: Fory is 45.70x speed of JDK
+Compare size: Fory is 0.43x size of JDK
+```
+
+启用数字压缩:
+
+```
+Benchmark repeat number: 400000
+Object type: class org.apache.fory.graalvm.Struct
+Compress number: true
+Fory size: 55.0
+JDK size: 178.0
+Fory serialization took mills: 130
+JDK serialization took mills: 3161
+Compare speed: Fory is 24.16x speed of JDK
+Compare size: Fory is 0.31x size of JDK
+```
+
+### POJO 基准测试
+
+#### 类字段
+
+```java
+public class Foo implements Serializable {
+  int f1;
+  String f2;
+  List<String> f3;
+  Map<String, Long> f4;
+}
+```
+
+#### 基准测试结果
+
+未启用压缩:
+
+```
+Benchmark repeat number: 400000
+Object type: class org.apache.fory.graalvm.Foo
+Compress number: false
+Fory size: 541.0
+JDK size: 964.0
+Fory serialization took mills: 1663
+JDK serialization took mills: 16266
+Compare speed: Fory is 12.19x speed of JDK
+Compare size: Fory is 0.56x size of JDK
+```
+
+启用数字压缩:
+
+```
+Benchmark repeat number: 400000
+Object type: class org.apache.fory.graalvm.Foo
+Compress number: true
+Fory size: 459.0
+JDK size: 964.0
+Fory serialization took mills: 1289
+JDK serialization took mills: 15069
+Compare speed: Fory is 12.11x speed of JDK
+Compare size: Fory is 0.48x size of JDK
+```
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/README.md
new file mode 100644
index 00000000000..da0943b7fc6
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/README.md
@@ -0,0 +1,233 @@
+# Java 原生序列化基准测试
+
+有关 fory-json、Jackson 和 Gson 的测试结果,请参阅 [Java JSON 基准测试报告](../../../json/java/README.md)。
+
+## 系统环境
+
+- 操作系统:4.9.151-015.x86_64
+- CPU:Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
+- 字节序:小端序
+- L1d 缓存: 32K
+- L1i 缓存:32K
+- L2 缓存: 1024K
+- L3 缓存: 33792K
+
+## JMH 参数
+
+不要跳过**预热**,否则测试结果会不准确。
+
+```bash
+ -f 1 -wi 3 -i 3 -t 1 -w 2s -r 2s -rf cs
+```
+
+## 基准测试数据
+
+### Struct
+
+Struct 是一个包含 100 个基本类型字段的类:
+
+```java
+public class Struct {
+  public int f1;
+  public long f2;
+  public float f3;
+  public double f4;
+  // ...
+  public double f99;
+}
+```
+
+### Struct2
+
+Struct2 是一个包含 100 个装箱类型字段的类:
+
+```java
+public class Struct {
+  public Integer f1;
+  public Long f2;
+  public Float f3;
+  public Double f4;
+  // ...
+  public Double f99;
+}
+```
+
+### MediaContent
+
+MEDIA_CONTENT 是来自 [jvm-serializers](https://github.com/eishay/jvm-serializers/blob/master/tpc/src/data/media/MediaContent.java) 的类。
+
+### Sample
+
+SAMPLE 是来自 [Kryo 基准测试](https://github.com/EsotericSoftware/kryo/blob/master/benchmarks/src/main/java/com/esotericsoftware/kryo/benchmarks/data/Sample.java) 的类。
+
+## Java 基准测试
+
+### 序列化至堆内缓冲区
+
+将数据序列化为 Java 字节数组。
+
+#### Java 同 Schema 序列化
+
+读取端和写入端使用相同的类 Schema。此模式不使用类的向前/向后兼容能力。
+
+![Java 堆内同 Schema 序列化](java_heap_serialize_consistent.png)
+
+#### Java 兼容序列化
+
+读取端和写入端可以使用不同的类 Schema。此模式支持类的向前/向后兼容。
+
+![Java 堆内 Schema 兼容序列化](java_heap_serialize_compatible.png)
+
+#### Java 同 Schema 反序列化
+
+读取端和写入端使用相同的类 Schema。此模式不使用类的向前/向后兼容能力。
+
+![Java 堆内同 Schema 反序列化](java_heap_deserialize_consistent.png)
+
+#### Java 兼容反序列化
+
+读取端和写入端可以使用不同的类 Schema。此模式支持类的向前/向后兼容。
+
+![Java 堆内 Schema 兼容反序列化](java_heap_deserialize_compatible.png)
+
+### 堆外序列化
+
+在堆外内存中序列化数据。
+
+#### Java 同 Schema 序列化
+
+读取端和写入端使用相同的类 Schema。此模式不使用类的向前/向后兼容能力。
+
+![Java 堆外同 Schema 序列化](java_offheap_serialize_consistent.png)
+
+#### Java 兼容序列化
+
+读取端和写入端可以使用不同的类 Schema。此模式支持类的向前/向后兼容。
+
+![Java 堆外 Schema 兼容序列化](java_offheap_serialize_compatible.png)
+
+#### Java 同 Schema 反序列化
+
+读取端和写入端使用相同的类 Schema。此模式不使用类的向前/向后兼容能力。
+
+![Java 堆外同 Schema 反序列化](java_offheap_deserialize_consistent.png)
+
+#### Java 兼容反序列化
+
+读取端和写入端可以使用不同的类 Schema。此模式支持类的向前/向后兼容。
+
+![Java 堆外 Schema 兼容反序列化](java_offheap_deserialize_compatible.png)
+
+### 零拷贝序列化
+
+请注意,零拷贝序列化只避免序列化过程中的数据复制;如果将数据发送到其他机器,仍然可能发生复制。
+
+但是,如果在同一节点的进程之间通过共享内存序列化数据,并且数据在序列化前已位于堆外内存中,那么其他进程无需任何复制即可读取此缓冲区。
+
+#### Java 零拷贝序列化至堆内缓冲区
+
+![Java 零拷贝序列化](java_zero_copy_serialize.png)
+
+#### Java 零拷贝序列化至直接缓冲区
+
+![Java 零拷贝反序列化](java_zero_copy_deserialize.png)
+
+### 基准测试数据
+
+#### Java 序列化
+
+| Benchmark              | objectType    | bufferType   | references | Fory           | ForyMetaShared  | Kryo           | Fst           | Hession       | Jdk           | Protostuff    |
+| ---------------------- | ------------- | ------------ | ---------- | -------------- | --------------- | -------------- | ------------- | ------------- | ------------- | ------------- |
+| serialize              | STRUCT        | array        | False      | 7501415.567260 |                 | 558194.100861  | 882178.995727 | 258233.998931 | 155908.244240 | 330975.350403 |
+| serialize              | STRUCT        | array        | True       | 6264439.154428 |                 | 557542.628765  | 757753.756691 | 260845.209485 | 151258.539369 |               |
+| serialize              | STRUCT        | directBuffer | False      | 9834223.243204 |                 | 1078046.011115 | 807847.663261 | 266481.009225 | 154875.908438 | 340262.650047 |
+| serialize              | STRUCT        | directBuffer | True       | 7551780.823133 |                 | 853350.408656  | 762088.935404 | 261762.594966 | 156404.686214 |               |
+| serialize              | STRUCT2       | array        | False      | 3586126.623874 |                 | 325172.969175  | 371762.982661 | 56056.080075  | 36846.049162  | 322563.440433 |
+| serialize              | STRUCT2       | array        | True       | 3306474.506382 |                 | 259863.332448  | 380638.700267 | 60038.879790  | 38183.705811  |               |
+| serialize              | STRUCT2       | directBuffer | False      | 2643155.135327 |                 | 355688.882786  | 365317.705376 | 55924.319442  | 37444.967981  | 325093.716261 |
+| serialize              | STRUCT2       | directBuffer | True       | 2391110.083108 |                 | 338960.426033  | 370851.880711 | 56674.065604  | 35798.679246  |               |
+| serialize              | MEDIA_CONTENT | array        | False      | 3031642.924542 |                 | 730792.521676  | 751892.023189 | 367782.358049 | 137989.198821 | 780618.761219 |
+| serialize              | MEDIA_CONTENT | array        | True       | 2250384.600246 |                 | 445251.084327  | 583859.907758 | 329427.470680 | 140260.668888 |               |
+| serialize              | MEDIA_CONTENT | directBuffer | False      | 2479862.129632 |                 | 608972.517580  | 728001.080250 | 372477.138150 | 138567.623369 | 805941.345157 |
+| serialize              | MEDIA_CONTENT | directBuffer | True       | 1938527.588331 |                 | 359875.473951  | 595679.580108 | 353376.085025 | 140158.673910 |               |
+| serialize              | SAMPLE        | array        | False      | 3570966.469087 |                 | 1105365.931217 | 915907.574306 | 220386.502846 | 118374.836631 | 663272.710783 |
+| serialize              | SAMPLE        | array        | True       | 1767693.835090 |                 | 734215.482291  | 731869.156376 | 192414.014211 | 119858.140625 |               |
+| serialize              | SAMPLE        | directBuffer | False      | 3684487.760591 |                 | 1376560.302168 | 902302.261168 | 220981.308085 | 118273.584257 | 693641.589806 |
+| serialize              | SAMPLE        | directBuffer | True       | 1826456.709478 |                 | 932887.968348  | 723614.066770 | 211949.960255 | 108263.040839 |               |
+| serialize_compatible   | STRUCT        | array        | False      | 3530406.108869 | 9204444.777172  | 145964.199559  |               | 258650.663523 |               |               |
+| serialize_compatible   | STRUCT        | array        | True       | 3293059.098127 | 7064625.291374  | 136180.832879  |               | 263564.913879 |               |               |
+| serialize_compatible   | STRUCT        | directBuffer | False      | 2653169.568374 | 11650229.648715 | 106695.800225  |               | 249221.452137 |               |               |
+| serialize_compatible   | STRUCT        | directBuffer | True       | 2393817.762938 | 8702412.752357  | 106458.212005  |               | 263623.143601 |               |               |
+| serialize_compatible   | STRUCT2       | array        | False      | 2773368.997680 | 2575824.143864  | 125807.748004  |               | 58509.125342  |               |               |
+| serialize_compatible   | STRUCT2       | array        | True       | 2564174.550276 | 3543082.528217  | 114983.546343  |               | 55552.977735  |               |               |
+| serialize_compatible   | STRUCT2       | directBuffer | False      | 1912402.937879 | 2714748.572248  | 92130.672361   |               | 58908.567439  |               |               |
+| serialize_compatible   | STRUCT2       | directBuffer | True       | 1848338.968058 | 1866073.031851  | 88989.724768   |               | 55524.373547  |               |               |
+| serialize_compatible   | MEDIA_CONTENT | array        | False      | 1679272.036223 | 2992288.235281  | 188911.259146  |               | 377195.903772 |               |               |
+| serialize_compatible   | MEDIA_CONTENT | array        | True       | 1406736.538716 | 2058738.716953  | 145782.916427  |               | 351657.879556 |               |               |
+| serialize_compatible   | MEDIA_CONTENT | directBuffer | False      | 1710680.937387 | 2291443.556971  | 185363.714829  |               | 371729.727192 |               |               |
+| serialize_compatible   | MEDIA_CONTENT | directBuffer | True       | 1149999.473994 | 1804349.244125  | 142836.961878  |               | 343834.954942 |               |               |
+| serialize_compatible   | SAMPLE        | array        | False      | 3604596.465625 | 4409055.687063  | 378907.663184  |               | 234454.975158 |               |               |
+| serialize_compatible   | SAMPLE        | array        | True       | 1619648.337293 | 1840705.439334  | 320815.567701  |               | 206174.173039 |               |               |
+| serialize_compatible   | SAMPLE        | directBuffer | False      | 3484533.218305 | 5043538.364886  | 296102.615094  |               | 194761.224263 |               |               |
+| serialize_compatible   | SAMPLE        | directBuffer | True       | 1730822.630648 | 1859289.705838  | 276757.392449  |               | 212840.483308 |               |               |
+| deserialize            | STRUCT        | array        | False      | 4595230.434552 |                 | 607750.343557  | 357887.235311 | 84709.108821  | 29603.066599  | 517381.168594 |
+| deserialize            | STRUCT        | array        | True       | 4634753.596131 |                 | 552802.227807  | 353480.554035 | 91050.370224  | 29727.744196  |               |
+| deserialize            | STRUCT        | directBuffer | False      | 5012002.859236 |                 | 910534.169114  | 352441.597147 | 91151.633583  | 28717.004518  | 538922.947147 |
+| deserialize            | STRUCT        | directBuffer | True       | 4864329.316938 |                 | 914404.107564  | 334574.303484 | 91037.205901  | 29549.998286  |               |
+| deserialize            | STRUCT2       | array        | False      | 1126298.359550 |                 | 275984.042401  | 280131.091068 | 69758.767783  | 14888.805111  | 416212.973861 |
+| deserialize            | STRUCT2       | array        | True       | 1046649.083082 |                 | 222710.554833  | 260649.308016 | 68616.029248  | 14034.100664  |               |
+| deserialize            | STRUCT2       | directBuffer | False      | 1117586.457565 |                 | 319247.256793  | 262519.858810 | 66866.108653  | 14652.043788  | 425523.315814 |
+| deserialize            | STRUCT2       | directBuffer | True       | 1018277.848128 |                 | 249105.828416  | 234973.637096 | 65338.345185  | 14425.886048  |               |
+| deserialize            | MEDIA_CONTENT | array        | False      | 2054066.903469 |                 | 577631.234369  | 363455.785182 | 118156.072284 | 38536.250402  | 951662.019963 |
+| deserialize            | MEDIA_CONTENT | array        | True       | 1507767.206603 |                 | 365530.417232  | 304371.728638 | 120016.594171 | 38957.191090  |               |
+| deserialize            | MEDIA_CONTENT | directBuffer | False      | 1502746.028159 |                 | 389473.174523  | 311691.658687 | 111067.942626 | 40512.632076  | 964664.641598 |
+| deserialize            | MEDIA_CONTENT | directBuffer | True       | 1290593.975753 |                 | 306995.220799  | 251820.171513 | 121820.821260 | 37030.594632  |               |
+| deserialize            | SAMPLE        | array        | False      | 2069988.624415 |                 | 979173.981159  | 473409.796491 | 119471.518388 | 29309.573998  | 619338.385412 |
+| deserialize            | SAMPLE        | array        | True       | 1797942.442313 |                 | 716438.884369  | 428315.502365 | 121106.002978 | 27466.003923  |               |
+| deserialize            | SAMPLE        | directBuffer | False      | 2229791.078395 |                 | 983538.936801  | 441027.550809 | 117806.916589 | 28128.457935  | 624804.978534 |
+| deserialize            | SAMPLE        | directBuffer | True       | 1958815.397807 |                 | 762889.302732  | 420523.770904 | 121940.783597 | 28221.014735  |               |
+| deserialize_compatible | STRUCT        | array        | False      | 2110335.039275 | 4978833.206806  | 78771.635309   |               | 88617.486795  |               |               |
+| deserialize_compatible | STRUCT        | array        | True       | 2135681.982674 | 4807963.882520  | 72805.937649   |               | 90206.654212  |               |               |
+| deserialize_compatible | STRUCT        | directBuffer | False      | 1596464.248141 | 5149070.657830  | 58574.904225   |               | 89580.561575  |               |               |
+| deserialize_compatible | STRUCT        | directBuffer | True       | 1684681.074242 | 5137500.621288  | 60685.320299   |               | 84407.472531  |               |               |
+| deserialize_compatible | STRUCT2       | array        | False      | 849507.176263  | 1201998.142474  | 60602.285743   |               | 63703.763814  |               |               |
+| deserialize_compatible | STRUCT2       | array        | True       | 815120.319155  | 1058423.614156  | 62729.908347   |               | 69521.573119  |               |               |
+| deserialize_compatible | STRUCT2       | directBuffer | False      | 784036.589363  | 1131212.586953  | 54637.329134   |               | 69342.030965  |               |               |
+| deserialize_compatible | STRUCT2       | directBuffer | True       | 782679.662083  | 1089162.408165  | 51761.569591   |               | 68542.055543  |               |               |
+| deserialize_compatible | MEDIA_CONTENT | array        | False      | 1441671.706320 | 2279742.810882  | 180882.860363  |               | 121619.090797 |               |               |
+| deserialize_compatible | MEDIA_CONTENT | array        | True       | 1121136.039627 | 1623938.202345  | 154311.211540  |               | 119994.104050 |               |               |
+| deserialize_compatible | MEDIA_CONTENT | directBuffer | False      | 1256034.732514 | 1718098.363961  | 134485.160300  |               | 107594.474890 |               |               |
+| deserialize_compatible | MEDIA_CONTENT | directBuffer | True       | 1054942.751816 | 1333345.536684  | 119311.787329  |               | 116531.023438 |               |               |
+| deserialize_compatible | SAMPLE        | array        | False      | 2296046.895861 | 2485564.396196  | 255086.928308  |               | 121898.105768 |               |               |
+| deserialize_compatible | SAMPLE        | array        | True       | 1834139.395757 | 2002938.794909  | 238811.995510  |               | 121297.485903 |               |               |
+| deserialize_compatible | SAMPLE        | directBuffer | False      | 2308111.633661 | 2289261.533644  | 201993.787890  |               | 124044.417439 |               |               |
+| deserialize_compatible | SAMPLE        | directBuffer | True       | 1820490.585648 | 1927548.827586  | 174534.710870  |               | 120276.449497 |               |               |
+
+#### Java 零拷贝
+
+| Benchmark   | array_size | bufferType   | dataType        | Fory           | Kryo           | Fst            |
+| ----------- | ---------- | ------------ | --------------- | -------------- | -------------- | -------------- |
+| serialize   | 200        | array        | BUFFER          | 5123572.914045 | 1985187.977633 | 2400193.220466 |
+| serialize   | 200        | array        | PRIMITIVE_ARRAY | 8297232.942927 | 147342.606262  | 313986.053417  |
+| serialize   | 200        | directBuffer | BUFFER          | 5400346.890126 | 1739454.519770 | 2282550.111756 |
+| serialize   | 200        | directBuffer | PRIMITIVE_ARRAY | 8335248.350301 | 972683.763633  | 294132.218623  |
+| serialize   | 1000       | array        | BUFFER          | 4979590.929127 | 1616159.671230 | 1805557.477810 |
+| serialize   | 1000       | array        | PRIMITIVE_ARRAY | 8772856.921028 | 31395.721514   | 67209.107012   |
+| serialize   | 1000       | directBuffer | BUFFER          | 5376191.775007 | 1377272.568510 | 1644789.427010 |
+| serialize   | 1000       | directBuffer | PRIMITIVE_ARRAY | 8207563.785251 | 209183.090868  | 66108.014322   |
+| serialize   | 5000       | array        | BUFFER          | 5018916.322770 | 711287.533377  | 811029.402136  |
+| serialize   | 5000       | array        | PRIMITIVE_ARRAY | 8027439.580226 | 6248.006967    | 14997.400124   |
+| serialize   | 5000       | directBuffer | BUFFER          | 5330897.682960 | 707092.956534  | 477148.540850  |
+| serialize   | 5000       | directBuffer | PRIMITIVE_ARRAY | 7695981.988316 | 43565.678616   | 15000.378818   |
+| deserialize | 200        | array        | BUFFER          | 3302149.383135 | 1296284.787720 | 657754.887247  |
+| deserialize | 200        | array        | PRIMITIVE_ARRAY | 986136.067809  | 146675.360652  | 219333.990504  |
+| deserialize | 200        | directBuffer | BUFFER          | 3113115.471758 | 1004844.498712 | 598421.278941  |
+| deserialize | 200        | directBuffer | PRIMITIVE_ARRAY | 991807.969328  | 518713.299422  | 179604.045774  |
+| deserialize | 1000       | array        | BUFFER          | 2831942.848999 | 721266.541130  | 422147.154601  |
+| deserialize | 1000       | array        | PRIMITIVE_ARRAY | 205671.992736  | 30409.835023   | 53100.903684   |
+| deserialize | 1000       | directBuffer | BUFFER          | 3397690.327371 | 592972.713203  | 298929.116572  |
+| deserialize | 1000       | directBuffer | PRIMITIVE_ARRAY | 202275.242341  | 112132.004609  | 38572.001768   |
+| deserialize | 5000       | array        | BUFFER          | 3296658.120035 | 147251.846111  | 136934.604328  |
+| deserialize | 5000       | array        | PRIMITIVE_ARRAY | 40312.590172   | 6122.351228    | 10672.872798   |
+| deserialize | 5000       | directBuffer | BUFFER          | 3284441.570594 | 148614.476829  | 77950.612503   |
+| deserialize | 5000       | directBuffer | PRIMITIVE_ARRAY | 40413.743717   | 21826.040410   | 8561.694533    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-deserialization.csv b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-deserialization.csv
new file mode 100644
index 00000000000..98760a4721c
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-deserialization.csv
@@ -0,0 +1,153 @@
+"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: bufferType","Param: objectType","Param: references"
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,473409.796491,250793.361170,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,428315.502365,191770.682411,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,363455.785182,44717.666948,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,304371.728638,74831.791688,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,357887.235311,218092.594151,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,353480.554035,229239.505256,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,280131.091068,89472.347221,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,260649.308016,165597.762734,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,441027.550809,321712.847983,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,420523.770904,122531.658151,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,311691.658687,185300.664992,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,251820.171513,894743.730727,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,352441.597147,109488.413174,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,334574.303484,89858.329407,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,262519.858810,138990.948859,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,234973.637096,568162.582389,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,2069988.624415,1501625.089719,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1797942.442313,3541577.357052,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,2054066.903469,3314161.094630,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1507767.206603,1662320.958961,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,4595230.434552,678411.427346,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,4634753.596131,582102.492158,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1126298.359550,856691.704987,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1046649.083082,1816153.563648,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,2229791.078395,2950833.975767,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1958815.397807,381903.427430,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1502746.028159,1759759.267183,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1290593.975753,246089.810346,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,5012002.859236,3360944.705659,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,4864329.316938,4357833.300692,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1117586.457565,323438.118804,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1018277.848128,1141314.435153,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2296046.895861,2532372.600048,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1834139.395757,1021897.505849,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1441671.706320,317052.609754,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1121136.039627,979316.642796,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2110335.039275,389404.889706,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2135681.982674,1140328.709799,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,849507.176263,77466.989680,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,815120.319155,110547.743648,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2308111.633661,1699117.497565,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1820490.585648,244290.391445,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1256034.732514,811833.294307,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1054942.751816,180122.424477,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1596464.248141,1624412.248391,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1684681.074242,865262.572050,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,784036.589363,189745.805570,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,782679.662083,232459.929272,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2485564.396196,404678.689647,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2002938.794909,254819.284313,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2279742.810882,1984221.778254,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1623938.202345,902985.831204,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,4978833.206806,1201415.339844,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,4807963.882520,981981.561987,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1201998.142474,446807.356524,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1058423.614156,2254684.330438,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2289261.533644,330913.304260,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1927548.827586,2169684.221478,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1718098.363961,1096276.962216,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1333345.536684,1110700.750020,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,5149070.657830,3249519.880480,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,5137500.621288,3988987.937014,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1131212.586953,240674.468318,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1089162.408165,294119.059967,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,119471.518388,29846.632785,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,121106.002978,27710.578092,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,118156.072284,4767.841380,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,120016.594171,41255.986380,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,84709.108821,132894.355932,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,91050.370224,17939.461828,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,69758.767783,10886.276794,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,68616.029248,13625.851120,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,117806.916589,35449.535259,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,121940.783597,54381.355274,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,111067.942626,136178.034974,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,121820.821260,36972.450957,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,91151.633583,18401.579776,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,91037.205901,58868.732797,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,66866.108653,38522.707093,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,65338.345185,56556.914062,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,121898.105768,55415.594537,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,121297.485903,33990.621079,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,121619.090797,6094.683470,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,119994.104050,24538.128667,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,88617.486795,40076.835119,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,90206.654212,19313.248466,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,63703.763814,132184.298414,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,69521.573119,8875.645591,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,124044.417439,41135.181705,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,120276.449497,87827.771405,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,107594.474890,81084.454215,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,116531.023438,141591.979641,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,89580.561575,23464.095972,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,84407.472531,46007.731889,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,69342.030965,17706.784671,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,68542.055543,31793.805138,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29309.573998,765.998843,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,27466.003923,14896.452629,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,38536.250402,28217.590983,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,38957.191090,23931.545367,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29603.066599,10373.666720,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29727.744196,15820.774882,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14888.805111,842.165916,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14034.100664,13936.787605,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,28128.457935,5385.055284,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,28221.014735,15281.277719,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,40512.632076,8592.454839,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,37030.594632,9683.316145,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,28717.004518,17023.663871,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29549.998286,13823.854047,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14652.043788,2419.900104,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14425.886048,8723.095052,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,979173.981159,178146.966897,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,716438.884369,623966.984928,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,577631.234369,221011.018380,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,365530.417232,214946.853015,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,607750.343557,99638.164976,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,552802.227807,126286.013177,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,275984.042401,9405.143983,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,222710.554833,45168.519253,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,983538.936801,1112062.949472,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,762889.302732,279678.610328,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,389473.174523,43058.395501,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,306995.220799,57411.579647,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,910534.169114,1888677.766640,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,914404.107564,357717.816934,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,319247.256793,217674.935649,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,249105.828416,131690.474985,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,255086.928308,23672.392381,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,238811.995510,18059.118666,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,180882.860363,69339.581545,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,154311.211540,23065.912064,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,78771.635309,45155.641241,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,72805.937649,16849.888437,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,60602.285743,61404.274046,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,62729.908347,32805.651539,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,201993.787890,41567.224827,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,174534.710870,96357.498949,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,134485.160300,104898.991148,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,119311.787329,66580.856795,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,58574.904225,140682.248378,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,60685.320299,24159.853451,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,54637.329134,14011.283798,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,51761.569591,61030.640534,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,619338.385412,275705.847169,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,951662.019963,165160.853007,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,517381.168594,313746.662696,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,416212.973861,119393.345217,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,624804.978534,147685.682690,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,964664.641598,218386.902856,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,538922.947147,59168.303230,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,425523.315814,179264.359952,"ops/s",directBuffer,STRUCT2,false
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-serialization.csv b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-serialization.csv
new file mode 100644
index 00000000000..2e985751a77
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-serialization.csv
@@ -0,0 +1,153 @@
+"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: bufferType","Param: objectType","Param: references"
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,915907.574306,87627.907529,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,731869.156376,37845.555465,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,751892.023189,174327.010719,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,583859.907758,320047.618377,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,882178.995727,294884.724923,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,757753.756691,605180.489112,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,371762.982661,80513.482138,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,380638.700267,101974.434105,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,902302.261168,474054.277143,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,723614.066770,77429.645491,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,728001.080250,75699.111305,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,595679.580108,117269.848918,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,807847.663261,67842.801069,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,762088.935404,575559.070335,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,365317.705376,138313.634773,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,370851.880711,66834.323719,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3570966.469087,152949.902180,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,1767693.835090,263146.035836,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3031642.924542,567213.986117,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2250384.600246,529709.299207,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,7501415.567260,6672023.542025,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,6264439.154428,976363.317001,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3586126.623874,1966282.728305,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3306474.506382,869558.338568,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3684487.760591,882227.920611,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,1826456.709478,1377648.673630,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2479862.129632,1498299.302699,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,1938527.588331,148125.034055,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,9834223.243204,5284494.290641,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,7551780.823133,744016.111639,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2643155.135327,200764.008652,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2391110.083108,2608567.411194,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3604596.465625,1232634.245435,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1619648.337293,212055.067245,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1679272.036223,788041.322785,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1406736.538716,263608.222325,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3530406.108869,3125642.741982,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3293059.098127,96940.669016,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2773368.997680,503239.905176,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2564174.550276,978139.792610,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3484533.218305,476583.192148,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1730822.630648,410016.597939,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1710680.937387,307207.222026,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1149999.473994,140915.968294,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2653169.568374,535312.987476,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2393817.762938,380997.375838,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1912402.937879,284090.793301,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1848338.968058,108311.846780,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,4409055.687063,112740.443049,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1840705.439334,516764.580627,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2992288.235281,867622.163323,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2058738.716953,2388681.798594,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,9204444.777172,1526628.258403,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,7064625.291374,2655795.498346,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2575824.143864,2216634.295140,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,3543082.528217,393858.603613,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,5043538.364886,2797987.191909,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1859289.705838,366893.710607,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2291443.556971,3167882.958411,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1804349.244125,481995.792041,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,11650229.648715,1101289.207239,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,8702412.752357,1116617.972427,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2714748.572248,284462.787825,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1866073.031851,1521156.537508,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,220386.502846,60892.430853,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,192414.014211,34217.359956,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,367782.358049,54538.846197,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,329427.470680,530871.650379,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,258233.998931,145299.453488,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,260845.209485,90601.426407,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,56056.080075,3919.171009,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,60038.879790,6808.083631,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,220981.308085,153633.380796,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,211949.960255,231322.136517,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,372477.138150,39349.725456,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,353376.085025,11334.885856,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,266481.009225,113518.076189,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,261762.594966,64652.028148,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,55924.319442,28173.043405,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,56674.065604,2667.957614,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,234454.975158,5232.236462,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,206174.173039,54217.176504,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,377195.903772,33297.468886,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,351657.879556,10762.766962,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,258650.663523,64158.329095,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,263564.913879,101476.568014,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,58509.125342,10836.872797,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,55552.977735,37802.538138,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,194761.224263,8828.274695,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,212840.483308,50730.019909,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,371729.727192,136063.629978,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,343834.954942,13355.085558,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,249221.452137,261034.656030,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,263623.143601,32854.227410,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,58908.567439,4137.470432,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,55524.373547,668.406873,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,118374.836631,34704.407553,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,119858.140625,49308.850176,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,137989.198821,40017.148924,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,140260.668888,57308.595910,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,155908.244240,20385.278504,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,151258.539369,12676.385578,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,36846.049162,5491.880967,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,38183.705811,14778.659439,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,118273.584257,18950.629048,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,108263.040839,14982.910444,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,138567.623369,24365.255940,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,140158.673910,54416.908878,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,154875.908438,11984.781345,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,156404.686214,58131.602098,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,37444.967981,14948.012339,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,35798.679246,36641.428549,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,1105365.931217,162251.803619,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,734215.482291,79297.387490,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,730792.521676,678674.266715,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,445251.084327,85646.179264,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,558194.100861,257156.321315,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,557542.628765,63084.390134,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,325172.969175,20774.334333,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,259863.332448,86373.633851,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,1376560.302168,147424.342310,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,932887.968348,249800.928765,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,608972.517580,249598.971835,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,359875.473951,274870.064607,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,1078046.011115,249527.480472,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,853350.408656,126642.692106,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,355688.882786,37587.645927,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,338960.426033,36185.446014,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,378907.663184,280309.649766,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,320815.567701,455179.720989,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,188911.259146,97827.317807,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,145782.916427,81270.905462,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,145964.199559,88578.667153,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,136180.832879,167433.069232,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,125807.748004,23178.451287,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,114983.546343,7341.380140,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,296102.615094,18485.738321,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,276757.392449,61173.636852,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,185363.714829,121440.885632,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,142836.961878,12450.918452,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,106695.800225,13463.570576,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,106458.212005,2994.065295,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,92130.672361,9515.661170,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,88989.724768,9379.338279,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,663272.710783,522116.492895,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,780618.761219,406063.945348,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,330975.350403,196475.862643,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,322563.440433,201276.713653,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,693641.589806,43883.803566,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,805941.345157,91281.699006,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,340262.650047,152117.387028,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,325093.716261,56485.972228,"ops/s",directBuffer,STRUCT2,false
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-zerocopy.csv b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-zerocopy.csv
new file mode 100644
index 00000000000..503298291f9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/data/jmh-jdk-11-zerocopy.csv
@@ -0,0 +1,73 @@
+"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: array_size","Param: bufferType","Param: dataType","Param: references"
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,219333.990504,40075.312705,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,657754.887247,408901.031753,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,179604.045774,45387.509931,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,598421.278941,135411.381215,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,53100.903684,17709.358858,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,422147.154601,528539.529166,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,38572.001768,24685.893533,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,298929.116572,135040.133488,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,10672.872798,11519.184075,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,136934.604328,19269.032565,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,8561.694533,2137.867210,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,77950.612503,83587.484192,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,313986.053417,29311.641179,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,2400193.220466,242732.420524,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,294132.218623,60640.778775,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,2282550.111756,93004.652618,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,67209.107012,5947.935958,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,1805557.477810,5232839.112456,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,66108.014322,16869.542536,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,1644789.427010,54907.475118,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,14997.400124,12425.308762,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,811029.402136,39593.863849,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,15000.378818,2219.583522,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,477148.540850,34970.176073,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,986136.067809,274606.792449,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3302149.383135,3166455.521704,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,991807.969328,296490.837932,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3113115.471758,4861106.592529,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,205671.992736,127494.951753,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,2831942.848999,1720214.698856,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,202275.242341,56270.238293,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3397690.327371,146058.097383,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,40312.590172,11836.614114,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3296658.120035,2199676.238015,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,40413.743717,9893.735875,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3284441.570594,998247.999163,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8297232.942927,6613235.386482,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5123572.914045,9342104.794019,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8335248.350301,2796789.944593,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5400346.890126,7654935.504676,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8772856.921028,1984208.178343,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,4979590.929127,5568756.926202,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8207563.785251,4153794.222735,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5376191.775007,9167580.616022,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8027439.580226,6148996.477681,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5018916.322770,1424045.598203,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,7695981.988316,578662.201123,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5330897.682960,8055585.038901,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,146675.360652,23502.675233,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,1296284.787720,297204.673569,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,518713.299422,600548.228171,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,1004844.498712,552313.083272,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,30409.835023,9562.322209,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,721266.541130,62426.822891,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,112132.004609,6625.327605,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,592972.713203,511777.226637,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,6122.351228,3021.683209,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,147251.846111,278375.379465,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,21826.040410,2246.004993,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,148614.476829,87146.409451,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,147342.606262,138864.952435,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1985187.977633,70426.638387,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,972683.763633,604464.052899,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1739454.519770,1053963.541481,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,31395.721514,3652.506399,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1616159.671230,2722436.839807,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,209183.090868,25323.702489,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1377272.568510,203974.331559,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,6248.006967,783.226602,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,711287.533377,86363.201941,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,43565.678616,4221.267495,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,707092.956534,298737.951680,"ops/s",5000,directBuffer,BUFFER,false
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_deserialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_deserialize_compatible.png
new file mode 100644
index 00000000000..52dd292a3c0
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_deserialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_deserialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_deserialize_consistent.png
new file mode 100644
index 00000000000..a21445421a7
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_deserialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_serialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_serialize_compatible.png
new file mode 100644
index 00000000000..2142dfdbab0
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_serialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_serialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_serialize_consistent.png
new file mode 100644
index 00000000000..5703f724733
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_heap_serialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_deserialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_deserialize_compatible.png
new file mode 100644
index 00000000000..ce77bf6fb7c
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_deserialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_deserialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_deserialize_consistent.png
new file mode 100644
index 00000000000..04c3e3d04aa
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_deserialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_serialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_serialize_compatible.png
new file mode 100644
index 00000000000..8d9197121c8
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_serialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_serialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_serialize_consistent.png
new file mode 100644
index 00000000000..8bdea8f5598
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_offheap_serialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_repo_deserialization_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_repo_deserialization_throughput.png
new file mode 100644
index 00000000000..d64f5e77a19
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_repo_deserialization_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_repo_serialization_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_repo_serialization_throughput.png
new file mode 100644
index 00000000000..8f9824ffe1a
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_repo_serialization_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_zero_copy_deserialize.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_zero_copy_deserialize.png
new file mode 100644
index 00000000000..a91315eb345
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_zero_copy_deserialize.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_zero_copy_serialize.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_zero_copy_serialize.png
new file mode 100644
index 00000000000..a3f1b983464
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/native/java/java_zero_copy_serialize.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/_category_.json
new file mode 100644
index 00000000000..d2418b5e5e0
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 1,
+  "label": "Xlang",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/cpp/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/cpp/README.md
new file mode 100644
index 00000000000..36291851d6e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/cpp/README.md
@@ -0,0 +1,78 @@
+# C++ 基准测试性能报告
+
+_生成时间:2026-06-12 16:14:04_
+
+## 如何生成此报告
+
+```bash
+cd benchmarks/cpp/build
+./fory_benchmark --benchmark_format=json --benchmark_out=benchmark_results.json
+cd ..
+python benchmark_report.py --json-file build/benchmark_results.json --output-dir report
+```
+
+## 基准测试图表
+
+下图展示吞吐量(ops/sec);数值越高越好。
+
+![吞吐量](throughput.png)
+
+## 硬件和操作系统信息
+
+| 项目                   | 值                        |
+| ---------------------- | ------------------------- |
+| 操作系统               | Darwin 24.6.0             |
+| 机器架构               | arm64                     |
+| 处理器                 | arm                       |
+| CPU 核心数(物理)     | 12                        |
+| CPU 核心数(逻辑)     | 12                        |
+| 内存总量(GB)         | 48.0                      |
+| 基准测试日期           | 2026-06-12T16:13:27+08:00 |
+| CPU 核心数(基准测试) | 12                        |
+
+## 基准测试结果
+
+### 耗时结果(nanoseconds)
+
+| 数据类型          | 操作     | fory (ns) | protobuf (ns) | msgpack (ns) | 最快 |
+| ----------------- | -------- | --------- | ------------- | ------------ | ---- |
+| NumericStruct     | 序列化   | 25.7      | 48.2          | 85.4         | fory |
+| NumericStruct     | 反序列化 | 25.1      | 31.8          | 887.2        | fory |
+| Sample            | 序列化   | 60.6      | 96.4          | 361.6        | fory |
+| Sample            | 反序列化 | 176.7     | 397.0         | 2031.6       | fory |
+| MediaContent      | 序列化   | 113.5     | 471.0         | 290.4        | fory |
+| MediaContent      | 反序列化 | 247.3     | 641.9         | 2015.4       | fory |
+| NumericStructList | 序列化   | 83.3      | 372.9         | 446.9        | fory |
+| NumericStructList | 反序列化 | 158.1     | 268.2         | 4342.4       | fory |
+| SampleList        | 序列化   | 258.8     | 2829.7        | 2602.3       | fory |
+| SampleList        | 反序列化 | 1001.7    | 2794.4        | 12220.7      | fory |
+| MediaContentList  | 序列化   | 504.2     | 2589.8        | 1549.5       | fory |
+| MediaContentList  | 反序列化 | 1258.6    | 3620.3        | 10263.4      | fory |
+
+### 吞吐量结果(ops/sec)
+
+| 数据类型          | 操作     | fory TPS   | protobuf TPS | msgpack TPS | 最快 |
+| ----------------- | -------- | ---------- | ------------ | ----------- | ---- |
+| NumericStruct     | 序列化   | 38,845,461 | 20,734,963   | 11,707,994  | fory |
+| NumericStruct     | 反序列化 | 39,872,217 | 31,443,829   | 1,127,092   | fory |
+| Sample            | 序列化   | 16,496,488 | 10,372,657   | 2,765,312   | fory |
+| Sample            | 反序列化 | 5,660,852  | 2,518,926    | 492,232     | fory |
+| MediaContent      | 序列化   | 8,808,084  | 2,122,926    | 3,443,519   | fory |
+| MediaContent      | 反序列化 | 4,043,028  | 1,557,819    | 496,175     | fory |
+| NumericStructList | 序列化   | 11,999,598 | 2,681,661    | 2,237,536   | fory |
+| NumericStructList | 反序列化 | 6,323,730  | 3,728,133    | 230,285     | fory |
+| SampleList        | 序列化   | 3,864,068  | 353,391      | 384,276     | fory |
+| SampleList        | 反序列化 | 998,326    | 357,854      | 81,828      | fory |
+| MediaContentList  | 序列化   | 1,983,502  | 386,135      | 645,372     | fory |
+| MediaContentList  | 反序列化 | 794,544    | 276,221      | 97,434      | fory |
+
+### 序列化数据大小(bytes)
+
+| 数据类型          | fory | protobuf | msgpack |
+| ----------------- | ---- | -------- | ------- |
+| NumericStruct     | 78   | 93       | 87      |
+| Sample            | 445  | 375      | 530     |
+| MediaContent      | 362  | 301      | 480     |
+| NumericStructList | 255  | 475      | 449     |
+| SampleList        | 1978 | 1890     | 2664    |
+| MediaContentList  | 1531 | 1520     | 2421    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/cpp/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/cpp/throughput.png
new file mode 100644
index 00000000000..b2d6bfffb93
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/cpp/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/csharp/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/csharp/README.md
new file mode 100644
index 00000000000..898f69defbd
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/csharp/README.md
@@ -0,0 +1,89 @@
+# C# 基准测试性能报告
+
+_生成于 2026-05-08 17:54:45_
+
+## 如何生成本报告
+
+```bash
+cd benchmarks/csharp
+dotnet run -c Release --project ./Fory.CSharpBenchmark.csproj -- --output build/benchmark_results.json
+python3 benchmark_report.py --json-file build/benchmark_results.json --output-dir report
+```
+
+## 基准测试图表
+
+该图展示吞吐量(ops/sec);数值越高越好。
+
+![吞吐量](throughput.png)
+
+## 硬件和操作系统信息
+
+| 键                             | 值                                                                                                                           |
+| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
+| 操作系统                       | Darwin 24.6.0 Darwin Kernel Version 24.6.0: Wed Oct 15 21:12:15 PDT 2025; root:xnu-11417.140.69.703.14~1/RELEASE_ARM64_T6041 |
+| 操作系统架构                   | Arm64                                                                                                                        |
+| 机器架构                       | Arm64                                                                                                                        |
+| 运行时版本                     | 8.0.24                                                                                                                       |
+| 基准测试日期(UTC)            | 2026-05-08T08:17:48.7871870Z                                                                                                 |
+| 预热时间(秒)                 | 1                                                                                                                            |
+| 运行时间(秒)                 | 3                                                                                                                            |
+| CPU 逻辑核心数(来自基准测试) | 12                                                                                                                           |
+| CPU 核心数(物理)             | 12                                                                                                                           |
+| CPU 核心数(逻辑)             | 12                                                                                                                           |
+| 内存总量(GB)                 | 48.0                                                                                                                         |
+
+## 基准测试覆盖范围
+
+| 键                   | 值                                                                     |
+| -------------------- | ---------------------------------------------------------------------- |
+| 输入 JSON 中的用例数 | 36 / 36                                                                |
+| 序列化器             | fory, msgpack, protobuf                                                |
+| 数据类型             | struct, sample, mediacontent, structlist, samplelist, mediacontentlist |
+| 操作                 | serialize, deserialize                                                 |
+
+## 基准测试结果
+
+### 耗时结果(纳秒)
+
+| 数据类型          | 操作     | fory(ns) | protobuf(ns) | msgpack(ns) | 最快 |
+| ----------------- | -------- | ---------- | -------------- | ------------- | ---- |
+| NumericStruct     | 序列化   | 50.3       | 170.8          | 107.8         | fory |
+| NumericStruct     | 反序列化 | 82.4       | 252.0          | 143.4         | fory |
+| Sample            | 序列化   | 263.2      | 607.1          | 377.1         | fory |
+| Sample            | 反序列化 | 199.4      | 1191.7         | 785.6         | fory |
+| MediaContent      | 序列化   | 379.7      | 509.6          | 417.6         | fory |
+| MediaContent      | 反序列化 | 450.3      | 846.6          | 791.4         | fory |
+| NumericStructList | 序列化   | 183.7      | 641.8          | 447.8         | fory |
+| NumericStructList | 反序列化 | 288.3      | 974.3          | 702.1         | fory |
+| SampleList        | 序列化   | 1205.7     | 3559.1         | 1864.1        | fory |
+| SampleList        | 反序列化 | 895.1      | 5710.3         | 2757.4        | fory |
+| MediaContentList  | 序列化   | 1495.4     | 2473.6         | 1812.4        | fory |
+| MediaContentList  | 反序列化 | 1946.7     | 3789.3         | 3778.4        | fory |
+
+### 吞吐量结果(ops/sec)
+
+| 数据类型          | 操作     | fory TPS   | protobuf TPS | msgpack TPS | 最快 |
+| ----------------- | -------- | ---------- | ------------ | ----------- | ---- |
+| NumericStruct     | 序列化   | 19,881,457 | 5,853,473    | 9,276,378   | fory |
+| NumericStruct     | 反序列化 | 12,137,374 | 3,968,585    | 6,973,504   | fory |
+| Sample            | 序列化   | 3,799,418  | 1,647,119    | 2,652,142   | fory |
+| Sample            | 反序列化 | 5,016,006  | 839,129      | 1,272,975   | fory |
+| MediaContent      | 序列化   | 2,633,704  | 1,962,428    | 2,394,549   | fory |
+| MediaContent      | 反序列化 | 2,220,537  | 1,181,222    | 1,263,568   | fory |
+| NumericStructList | 序列化   | 5,445,002  | 1,558,156    | 2,232,996   | fory |
+| NumericStructList | 反序列化 | 3,469,207  | 1,026,402    | 1,424,322   | fory |
+| SampleList        | 序列化   | 829,415    | 280,973      | 536,448     | fory |
+| SampleList        | 反序列化 | 1,117,133  | 175,122      | 362,663     | fory |
+| MediaContentList  | 序列化   | 668,732    | 404,272      | 551,755     | fory |
+| MediaContentList  | 反序列化 | 513,699    | 263,899      | 264,664     | fory |
+
+### 序列化数据大小(字节)
+
+| 数据类型          | fory | protobuf | msgpack |
+| ----------------- | ---- | -------- | ------- |
+| NumericStruct     | 78   | 93       | 87      |
+| Sample            | 445  | 460      | 562     |
+| MediaContent      | 362  | 307      | 479     |
+| NumericStructList | 255  | 475      | 444     |
+| SampleList        | 1978 | 2315     | 2819    |
+| MediaContentList  | 1531 | 1550     | 2404    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/csharp/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/csharp/throughput.png
new file mode 100644
index 00000000000..2c6c7bdd8ce
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/csharp/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/dart/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/dart/README.md
new file mode 100644
index 00000000000..da607168fee
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/dart/README.md
@@ -0,0 +1,49 @@
+# Fory Dart 基准测试
+
+本基准测试对比 Apache Fory、Protocol Buffers 和 JSON 在 Dart 中的序列化与反序列化吞吐量。
+
+## 吞吐量图表
+
+![吞吐量](throughput.png)
+
+## 硬件和运行时信息
+
+| 键                       | 值                                                                |
+| ------------------------ | ----------------------------------------------------------------- |
+| 时间戳                   | 2026-05-08T08:23:10.201764Z                                       |
+| 操作系统                 | Version 15.7.2 (Build 24G325)                                     |
+| 主机                     | MacBook-Pro.local                                                 |
+| CPU 核心数(逻辑)       | 12                                                                |
+| 内存(GB)               | 48.00                                                             |
+| Dart                     | 3.10.7 (stable) (Tue Dec 23 00:01:57 2025 -0800) on "macos_arm64" |
+| 每个用例的样本数         | 5                                                                 |
+| 每个用例的预热时间(秒) | 1.0                                                               |
+| 每个用例的运行时间(秒) | 1.5                                                               |
+
+## 吞吐量结果
+
+| 数据类型          | 操作     |  Fory TPS | Protobuf TPS |  JSON TPS | 最快          |
+| ----------------- | -------- | --------: | -----------: | --------: | ------------- |
+| NumericStruct     | 序列化   | 9,007,809 |    1,582,003 |   774,574 | fory (5.69x)  |
+| NumericStruct     | 反序列化 | 9,039,403 |    3,343,459 | 1,391,036 | fory (2.70x)  |
+| Sample            | 序列化   | 2,434,800 |      538,385 |   133,800 | fory (4.52x)  |
+| Sample            | 反序列化 | 2,362,665 |      909,410 |   239,924 | fory (2.60x)  |
+| MediaContent      | 序列化   | 1,167,225 |      423,564 |   223,387 | fory (2.76x)  |
+| MediaContent      | 反序列化 | 1,987,141 |      770,107 |   254,156 | fory (2.58x)  |
+| NumericStructList | 序列化   | 2,551,102 |      283,827 |   139,615 | fory (8.99x)  |
+| NumericStructList | 反序列化 | 3,028,068 |      530,360 |   265,058 | fory (5.71x)  |
+| SampleList        | 序列化   |   568,937 |       47,426 |    25,386 | fory (12.00x) |
+| SampleList        | 反序列化 |   542,871 |      108,349 |    48,058 | fory (5.01x)  |
+| MediaContentList  | 序列化   |   226,507 |       81,828 |    41,780 | fory (2.77x)  |
+| MediaContentList  | 反序列化 |   458,667 |      139,395 |    50,183 | fory (3.29x)  |
+
+## 序列化大小(字节)
+
+| 数据类型          | Fory | Protobuf | JSON |
+| ----------------- | ---: | -------: | ---: |
+| NumericStruct     |   78 |       93 |  159 |
+| Sample            |  445 |      377 |  791 |
+| MediaContent      |  362 |      307 |  619 |
+| NumericStructList |  255 |      475 |  816 |
+| SampleList        | 1978 |     1900 | 3976 |
+| MediaContentList  | 1531 |     1550 | 3122 |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/dart/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/dart/throughput.png
new file mode 100644
index 00000000000..ee3833d8bc9
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/dart/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/README.md
new file mode 100644
index 00000000000..3ec8c1d2dad
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/README.md
@@ -0,0 +1,58 @@
+# Go 序列化基准测试报告
+
+生成时间:2026-08-07 12:14:23
+
+## 性能图表
+
+![吞吐量](throughput.png)
+
+## 系统信息
+
+- **操作系统**:Darwin 24.6.0
+- **架构**:arm64
+- **Python**:3.10.8
+
+## 性能摘要
+
+| 数据类型          | 操作     | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory 对比 PB | Fory 对比 MP |
+| ----------------- | -------- | ------------ | ---------------- | --------------- | ------------ | ------------ |
+| NumericStruct     | 序列化   | 18.49M       | 7.63M            | 3.78M           | 2.42x        | 4.90x        |
+| NumericStruct     | 反序列化 | 13.57M       | 8.55M            | 1.99M           | 1.59x        | 6.82x        |
+| Sample            | 序列化   | 8.2M         | 2.72M            | 683.53K         | 3.01x        | 12.00x       |
+| Sample            | 反序列化 | 3.91M        | 2.25M            | 372.3K          | 1.74x        | 10.50x       |
+| MediaContent      | 序列化   | 3.89M        | 2.07M            | 1.22M           | 1.87x        | 3.19x        |
+| MediaContent      | 反序列化 | 2.35M        | 1.77M            | 704.23K         | 1.32x        | 3.33x        |
+| NumericStructList | 序列化   | 1.5M         | 412.88K          | 212.81K         | 3.64x        | 7.06x        |
+| NumericStructList | 反序列化 | 1.18M        | 396.83K          | 104.62K         | 2.98x        | 11.29x       |
+| SampleList        | 序列化   | 484.73K      | 145.75K          | 38.43K          | 3.33x        | 12.61x       |
+| SampleList        | 反序列化 | 225.89K      | 103.72K          | 18.56K          | 2.18x        | 12.17x       |
+| MediaContentList  | 序列化   | 243.43K      | 110.25K          | 68.82K          | 2.21x        | 3.54x        |
+| MediaContentList  | 反序列化 | 132.59K      | 86.84K           | 35.41K          | 1.53x        | 3.74x        |
+
+## 详细耗时(ns/op)
+
+| 数据类型          | 操作     | Fory   | Protobuf | Msgpack |
+| ----------------- | -------- | ------ | -------- | ------- |
+| NumericStruct     | 序列化   | 54.1   | 131.1    | 264.9   |
+| NumericStruct     | 反序列化 | 73.7   | 117.0    | 502.2   |
+| Sample            | 序列化   | 121.9  | 367.4    | 1463.0  |
+| Sample            | 反序列化 | 255.8  | 444.6    | 2686.0  |
+| MediaContent      | 序列化   | 257.4  | 482.0    | 820.0   |
+| MediaContent      | 反序列化 | 426.3  | 564.3    | 1420.0  |
+| NumericStructList | 序列化   | 665.8  | 2422.0   | 4699.0  |
+| NumericStructList | 反序列化 | 846.8  | 2520.0   | 9558.0  |
+| SampleList        | 序列化   | 2063.0 | 6861.0   | 26023.0 |
+| SampleList        | 反序列化 | 4427.0 | 9641.0   | 53893.0 |
+| MediaContentList  | 序列化   | 4108.0 | 9070.0   | 14530.0 |
+| MediaContentList  | 反序列化 | 7542.0 | 11515.0  | 28241.0 |
+
+### 序列化数据大小(字节)
+
+| 数据类型          | Fory | Protobuf | Msgpack |
+| ----------------- | ---- | -------- | ------- |
+| NumericStruct     | 78   | 93       | 88      |
+| Sample            | 445  | 375      | 524     |
+| MediaContent      | 362  | 301      | 400     |
+| NumericStructList | 855  | 1900     | 1766    |
+| SampleList        | 7663 | 7560     | 10486   |
+| MediaContentList  | 5851 | 6080     | 8006    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/benchmark_results.txt b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/benchmark_results.txt
new file mode 100644
index 00000000000..2cbdf728d4d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/benchmark_results.txt
@@ -0,0 +1,326 @@
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     78 bytes
+  Protobuf: 93 bytes
+  Msgpack:  88 bytes
+Sample:
+  Fory:     445 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     362 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+NumericStructList:
+  Fory:     855 bytes
+  Protobuf: 1900 bytes
+  Msgpack:  1766 bytes
+SampleList:
+  Fory:     7663 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5851 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     78 bytes
+  Protobuf: 93 bytes
+  Msgpack:  88 bytes
+Sample:
+  Fory:     445 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     362 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+NumericStructList:
+  Fory:     855 bytes
+  Protobuf: 1900 bytes
+  Msgpack:  1766 bytes
+SampleList:
+  Fory:     7663 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5851 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     78 bytes
+  Protobuf: 93 bytes
+  Msgpack:  88 bytes
+Sample:
+  Fory:     445 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     362 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+NumericStructList:
+  Fory:     855 bytes
+  Protobuf: 1900 bytes
+  Msgpack:  1766 bytes
+SampleList:
+  Fory:     7663 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5851 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     78 bytes
+  Protobuf: 93 bytes
+  Msgpack:  88 bytes
+Sample:
+  Fory:     445 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     362 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+NumericStructList:
+  Fory:     855 bytes
+  Protobuf: 1900 bytes
+  Msgpack:  1766 bytes
+SampleList:
+  Fory:     7663 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5851 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     78 bytes
+  Protobuf: 93 bytes
+  Msgpack:  88 bytes
+Sample:
+  Fory:     445 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     362 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+NumericStructList:
+  Fory:     855 bytes
+  Protobuf: 1900 bytes
+  Msgpack:  1766 bytes
+SampleList:
+  Fory:     7663 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5851 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+goos: darwin
+goarch: arm64
+pkg: github.com/apache/fory/benchmarks/go
+cpu: Apple M4 Pro
+BenchmarkFory_NumericStruct_Serialize-12              	22048402	        54.53 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_NumericStruct_Serialize-12              	22058012	        54.45 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_NumericStruct_Serialize-12              	22176328	        55.38 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_NumericStruct_Serialize-12              	22106401	        54.22 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_NumericStruct_Serialize-12              	22254522	        54.07 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_NumericStruct_Serialize-12          	 8963738	       131.3 ns/op	     192 B/op	       2 allocs/op
+BenchmarkProtobuf_NumericStruct_Serialize-12          	 9236372	       129.2 ns/op	     192 B/op	       2 allocs/op
+BenchmarkProtobuf_NumericStruct_Serialize-12          	 9132246	       129.2 ns/op	     192 B/op	       2 allocs/op
+BenchmarkProtobuf_NumericStruct_Serialize-12          	 9175611	       131.4 ns/op	     192 B/op	       2 allocs/op
+BenchmarkProtobuf_NumericStruct_Serialize-12          	 8954976	       131.1 ns/op	     192 B/op	       2 allocs/op
+BenchmarkMsgpack_NumericStruct_Serialize-12           	 4606771	       264.5 ns/op	     240 B/op	       3 allocs/op
+BenchmarkMsgpack_NumericStruct_Serialize-12           	 4461562	       261.8 ns/op	     240 B/op	       3 allocs/op
+BenchmarkMsgpack_NumericStruct_Serialize-12           	 4631194	       261.1 ns/op	     240 B/op	       3 allocs/op
+BenchmarkMsgpack_NumericStruct_Serialize-12           	 4468142	       264.8 ns/op	     240 B/op	       3 allocs/op
+BenchmarkMsgpack_NumericStruct_Serialize-12           	 4402513	       264.9 ns/op	     240 B/op	       3 allocs/op
+BenchmarkFory_NumericStruct_Deserialize-12            	16227700	        74.24 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStruct_Deserialize-12            	16269540	        73.24 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStruct_Deserialize-12            	16324466	        73.70 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStruct_Deserialize-12            	16199805	        73.64 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStruct_Deserialize-12            	16368146	        73.67 ns/op	      48 B/op	       1 allocs/op
+BenchmarkProtobuf_NumericStruct_Deserialize-12        	10233286	       116.3 ns/op	      96 B/op	       1 allocs/op
+BenchmarkProtobuf_NumericStruct_Deserialize-12        	10415528	       116.1 ns/op	      96 B/op	       1 allocs/op
+BenchmarkProtobuf_NumericStruct_Deserialize-12        	10308709	       116.5 ns/op	      96 B/op	       1 allocs/op
+BenchmarkProtobuf_NumericStruct_Deserialize-12        	10203318	       117.5 ns/op	      96 B/op	       1 allocs/op
+BenchmarkProtobuf_NumericStruct_Deserialize-12        	10256920	       117.0 ns/op	      96 B/op	       1 allocs/op
+BenchmarkMsgpack_NumericStruct_Deserialize-12         	 2358616	       495.9 ns/op	      96 B/op	       2 allocs/op
+BenchmarkMsgpack_NumericStruct_Deserialize-12         	 2273918	       518.9 ns/op	      96 B/op	       2 allocs/op
+BenchmarkMsgpack_NumericStruct_Deserialize-12         	 2373148	       505.9 ns/op	      96 B/op	       2 allocs/op
+BenchmarkMsgpack_NumericStruct_Deserialize-12         	 2408899	       501.9 ns/op	      96 B/op	       2 allocs/op
+BenchmarkMsgpack_NumericStruct_Deserialize-12         	 2372222	       502.2 ns/op	      96 B/op	       2 allocs/op
+BenchmarkFory_NumericStructList_Serialize-12          	 1796719	       660.7 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStructList_Serialize-12          	 1756392	       647.7 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStructList_Serialize-12          	 1818304	       659.1 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStructList_Serialize-12          	 1822184	       652.0 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_NumericStructList_Serialize-12          	 1813196	       665.8 ns/op	      48 B/op	       1 allocs/op
+BenchmarkProtobuf_NumericStructList_Serialize-12      	  493580	      2430 ns/op	    4192 B/op	      23 allocs/op
+BenchmarkProtobuf_NumericStructList_Serialize-12      	  498306	      2463 ns/op	    4192 B/op	      23 allocs/op
+BenchmarkProtobuf_NumericStructList_Serialize-12      	  469477	      2432 ns/op	    4192 B/op	      23 allocs/op
+BenchmarkProtobuf_NumericStructList_Serialize-12      	  495613	      2431 ns/op	    4192 B/op	      23 allocs/op
+BenchmarkProtobuf_NumericStructList_Serialize-12      	  503056	      2422 ns/op	    4192 B/op	      23 allocs/op
+BenchmarkMsgpack_NumericStructList_Serialize-12       	  255328	      4788 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_NumericStructList_Serialize-12       	  250656	      4784 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_NumericStructList_Serialize-12       	  248538	      4766 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_NumericStructList_Serialize-12       	  249808	      4798 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_NumericStructList_Serialize-12       	  251359	      4699 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkFory_NumericStructList_Deserialize-12        	 1442926	       831.6 ns/op	    1072 B/op	       3 allocs/op
+BenchmarkFory_NumericStructList_Deserialize-12        	 1442542	       831.3 ns/op	    1072 B/op	       3 allocs/op
+BenchmarkFory_NumericStructList_Deserialize-12        	 1321963	       831.6 ns/op	    1072 B/op	       3 allocs/op
+BenchmarkFory_NumericStructList_Deserialize-12        	 1440138	       829.4 ns/op	    1072 B/op	       3 allocs/op
+BenchmarkFory_NumericStructList_Deserialize-12        	 1434574	       846.8 ns/op	    1072 B/op	       3 allocs/op
+BenchmarkProtobuf_NumericStructList_Deserialize-12    	  487072	      2443 ns/op	    3512 B/op	      28 allocs/op
+BenchmarkProtobuf_NumericStructList_Deserialize-12    	  491452	      2447 ns/op	    3512 B/op	      28 allocs/op
+BenchmarkProtobuf_NumericStructList_Deserialize-12    	  484132	      2477 ns/op	    3512 B/op	      28 allocs/op
+BenchmarkProtobuf_NumericStructList_Deserialize-12    	  486200	      2449 ns/op	    3512 B/op	      28 allocs/op
+BenchmarkProtobuf_NumericStructList_Deserialize-12    	  483763	      2520 ns/op	    3512 B/op	      28 allocs/op
+BenchmarkMsgpack_NumericStructList_Deserialize-12     	  124959	      9614 ns/op	    2193 B/op	       7 allocs/op
+BenchmarkMsgpack_NumericStructList_Deserialize-12     	  124986	      9663 ns/op	    2193 B/op	       7 allocs/op
+BenchmarkMsgpack_NumericStructList_Deserialize-12     	  124622	      9564 ns/op	    2193 B/op	       7 allocs/op
+BenchmarkMsgpack_NumericStructList_Deserialize-12     	  124821	      9517 ns/op	    2193 B/op	       7 allocs/op
+BenchmarkMsgpack_NumericStructList_Deserialize-12     	  126458	      9558 ns/op	    2193 B/op	       7 allocs/op
+BenchmarkFory_Sample_Serialize-12                     	 9952366	       120.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                     	 9720504	       120.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                     	 9936180	       121.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                     	 9867582	       120.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                     	 9773203	       121.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                 	 3359570	       354.6 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                 	 3318685	       354.4 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                 	 3402387	       354.2 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                 	 3316545	       361.8 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                 	 3286450	       367.4 ns/op	     704 B/op	       2 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                  	  756360	      1487 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                  	  797206	      1486 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                  	  804738	      1462 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                  	  797922	      1468 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                  	  832318	      1463 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkFory_Sample_Deserialize-12                   	 4585981	       255.6 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                   	 4675981	       255.6 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                   	 4639005	       258.4 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                   	 4741363	       254.5 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                   	 4678129	       255.8 ns/op	     676 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12               	 2786370	       433.2 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12               	 2750157	       430.1 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12               	 2780458	       458.7 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12               	 2428318	       444.5 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12               	 2688910	       444.6 ns/op	     708 B/op	       9 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12                	  439947	      2734 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12                	  447328	      2717 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12                	  438544	      2716 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12                	  442526	      2706 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12                	  442413	      2686 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkFory_SampleList_Serialize-12                 	  566211	      2039 ns/op	     288 B/op	       1 allocs/op
+BenchmarkFory_SampleList_Serialize-12                 	  578923	      2040 ns/op	     288 B/op	       1 allocs/op
+BenchmarkFory_SampleList_Serialize-12                 	  579772	      2075 ns/op	     288 B/op	       1 allocs/op
+BenchmarkFory_SampleList_Serialize-12                 	  593736	      2058 ns/op	     288 B/op	       1 allocs/op
+BenchmarkFory_SampleList_Serialize-12                 	  580461	      2063 ns/op	     288 B/op	       1 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12             	  167936	      7038 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12             	  168691	      6922 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12             	  168943	      6961 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12             	  175226	      6935 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12             	  175560	      6861 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12              	   45961	     26219 ns/op	   32792 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12              	   46327	     26028 ns/op	   32792 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12              	   44845	     25843 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12              	   45948	     26155 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12              	   46552	     26023 ns/op	   32792 B/op	      11 allocs/op
+BenchmarkFory_SampleList_Deserialize-12               	  265274	      4393 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12               	  270634	      4439 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12               	  268773	      4376 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12               	  268900	      4430 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12               	  268454	      4427 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12           	  129838	      9336 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12           	  129367	      9273 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12           	  127551	      9996 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12           	  123700	      9720 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12           	  125986	      9641 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12            	   22058	     54683 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12            	   22000	     53942 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12            	   22323	     53936 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12            	   22395	     54215 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12            	   22155	     53893 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkFory_MediaContent_Serialize-12               	 4720441	       257.8 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_MediaContent_Serialize-12               	 4677813	       256.8 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_MediaContent_Serialize-12               	 4663876	       257.4 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_MediaContent_Serialize-12               	 4563858	       258.3 ns/op	      48 B/op	       1 allocs/op
+BenchmarkFory_MediaContent_Serialize-12               	 4684438	       257.4 ns/op	      48 B/op	       1 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12           	 2540131	       483.0 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12           	 2528174	       471.4 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12           	 2564924	       472.3 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12           	 2504013	       472.9 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12           	 2551820	       482.0 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12            	 1498474	       807.0 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12            	 1495797	       808.8 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12            	 1513142	       809.3 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12            	 1510410	       809.4 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12            	 1501597	       820.0 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12             	 2872570	       422.5 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12             	 2838810	       420.0 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12             	 2818161	       425.1 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12             	 2772471	       429.5 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12             	 2795403	       426.3 ns/op	     656 B/op	      13 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12         	 2154655	       560.8 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12         	 2131860	       564.7 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12         	 2128532	       560.8 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12         	 2126889	       562.1 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12         	 2114772	       564.3 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12          	  848928	      1422 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12          	  850116	      1408 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12          	  847324	      1424 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12          	  830918	      1422 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12          	  851023	      1420 ns/op	     896 B/op	      17 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12           	  286959	      4177 ns/op	    1120 B/op	      21 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12           	  286754	      4239 ns/op	    1120 B/op	      21 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12           	  281565	      4186 ns/op	    1120 B/op	      21 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12           	  285084	      4179 ns/op	    1120 B/op	      21 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12           	  290010	      4108 ns/op	    1120 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12       	  132528	      9121 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12       	  130459	      9076 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12       	  127272	      9106 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12       	  128955	      9462 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12       	  131900	      9070 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12        	   83436	     14480 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12        	   83728	     14436 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12        	   83997	     14310 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12        	   84308	     14375 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12        	   82885	     14530 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12         	  145394	      7719 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12         	  157838	      7526 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12         	  154821	      7502 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12         	  157782	      7555 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12         	  161598	      7542 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12     	  105784	     11472 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12     	  104074	     11597 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12     	  103701	     11524 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12     	  102218	     11472 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12     	  105387	     11515 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12      	   42776	     27946 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12      	   42944	     27855 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12      	   42837	     27976 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12      	   43257	     27886 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12      	   42781	     28241 ns/op	   20058 B/op	     307 allocs/op
+PASS
+ok  	github.com/apache/fory/benchmarks/go	258.432s
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/serialized_sizes.txt b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/serialized_sizes.txt
new file mode 100644
index 00000000000..ae66f376b8b
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/serialized_sizes.txt
@@ -0,0 +1,27 @@
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     78 bytes
+  Protobuf: 93 bytes
+  Msgpack:  88 bytes
+Sample:
+  Fory:     445 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     362 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+NumericStructList:
+  Fory:     855 bytes
+  Protobuf: 1900 bytes
+  Msgpack:  1766 bytes
+SampleList:
+  Fory:     7663 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5851 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/throughput.png
new file mode 100644
index 00000000000..d93b9861854
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/go/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/java/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/java/README.md
new file mode 100644
index 00000000000..faed899e00d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/java/README.md
@@ -0,0 +1,44 @@
+# Java Xlang 序列化基准测试
+
+有关 fory-json、Jackson 和 Gson 的结果,请参阅 [Java JSON 基准测试报告](../../../json/java/README.md)。
+
+本报告涵盖由 `benchmarks/java/run.sh` 生成的 xlang 基准测试组。它不沿用单独的 [Java 原生模式报告](../../native/java/README.md) 中记录的环境或原生模式工作负载。仓库中检入的 xlang 快照没有记录主机、Fory 提交或依赖版本;在使用这些结果进行当前对比之前,请重新运行基准测试。
+
+新建或更新报告时所需的元数据,请参阅[基准测试方法](../../../methodology.md)。
+
+## 工作负载
+
+- `NumericStruct`:包含基本类型数值字段。
+- `Sample`:[Kryo 基准测试套件](https://github.com/EsotericSoftware/kryo/blob/master/benchmarks/src/main/java/com/esotericsoftware/kryo/benchmarks/data/Sample.java)使用的模型。
+- `MediaContent`:[jvm-serializers](https://github.com/eishay/jvm-serializers/blob/master/tpc/src/data/media/MediaContent.java) 中的媒体模型。
+- `*List`:对应模型的列表。
+
+## 运行基准测试
+
+从 `benchmarks/java/run.sh` 运行。原始 JMH JSON 保留在已忽略的本地 `benchmarks/java/reports/` 目录中;`throughput.png` 和这份 xlang 报告发布在 `docs/benchmarks/object-serialization/xlang/java/` 下。
+
+```bash
+cd benchmarks/java
+./run.sh
+```
+
+JMH 参数:`-f 1 -wi 3 -i 3 -t 1 -w 3s -r 3s -bm thrpt -tu s`。不要跳过预热。吞吐量越高越好。
+
+## 结果
+
+![Java Xlang 序列化吞吐量](throughput.png)
+
+| 数据类型          | 操作     | Fory ops/sec | Protobuf ops/sec | Flatbuffer ops/sec | 最快 |
+| ----------------- | -------- | ------------ | ---------------- | ------------------ | ---- |
+| NumericStruct     | 序列化   | 46,787,647   | 33,024,161       | 9,612,018          | Fory |
+| NumericStruct     | 反序列化 | 71,683,707   | 29,837,931       | 40,514,436         | Fory |
+| Sample            | 序列化   | 17,406,902   | 2,071,963        | 3,153,672          | Fory |
+| Sample            | 反序列化 | 17,772,123   | 1,867,967        | 4,179,494          | Fory |
+| MediaContent      | 序列化   | 10,783,325   | 1,781,338        | 1,444,737          | Fory |
+| MediaContent      | 反序列化 | 7,950,203    | 2,184,597        | 3,453,985          | Fory |
+| NumericStructList | 序列化   | 21,263,673   | 2,511,081        | 3,047,836          | Fory |
+| NumericStructList | 反序列化 | 19,249,877   | 2,067,204        | 8,168,569          | Fory |
+| SampleList        | 序列化   | 4,580,165    | 401,280          | 696,268            | Fory |
+| SampleList        | 反序列化 | 3,811,985    | 344,945          | 773,625            | Fory |
+| MediaContentList  | 序列化   | 1,657,717    | 353,717          | 296,868            | Fory |
+| MediaContentList  | 反序列化 | 1,111,043    | 435,956          | 516,192            | Fory |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/java/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/java/throughput.png
new file mode 100644
index 00000000000..025f8b4329d
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/java/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/javascript/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/javascript/README.md
new file mode 100644
index 00000000000..c32ddd84795
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/javascript/README.md
@@ -0,0 +1,82 @@
+# JavaScript 基准测试性能报告
+
+_生成于 2026-05-08 17:55:12_
+
+## 如何生成此报告
+
+```bash
+cd benchmarks/javascript
+./run.sh
+```
+
+## 基准测试语义
+
+计时的序列化器循环使用各序列化器原生的类型化值。Fory 接收其模式所使用的预规范化 Fory 值,protobuf 接收预先构建的 protobuf 形态值,JSON 接收基准测试所用的 JavaScript 对象。protobuf 的计时不包括 `toProto`、`fromProto`、`protobufjs.create` 或 `toObject` 的转换开销。
+
+## 基准测试图
+
+图中展示吞吐量(ops/sec);数值越高越好。
+
+![吞吐量](throughput.png)
+
+## 硬件和操作系统信息
+
+| 项目                       | 值                       |
+| -------------------------- | ------------------------ |
+| 操作系统                   | Darwin 24.6.0            |
+| 机器架构                   | arm64                    |
+| 处理器                     | arm                      |
+| CPU 核心数(物理)         | 12                       |
+| CPU 核心数(逻辑)         | 12                       |
+| 内存总量(GB)             | 48.0                     |
+| 基准测试日期               | 2026-05-08T08:07:36.073Z |
+| CPU 核心数(来自基准测试) | 12                       |
+| Node.js                    | v22.20.0                 |
+| V8                         | 12.4.254.21-node.33      |
+
+## 基准测试结果
+
+### 耗时结果(纳秒)
+
+| 数据类型          | 操作     | fory (ns) | protobuf (ns) | json (ns) | 最快     |
+| ----------------- | -------- | --------- | ------------- | --------- | -------- |
+| NumericStruct     | 序列化   | 76.0      | 613.0         | 496.0     | fory     |
+| NumericStruct     | 反序列化 | 56.9      | 94.8          | 333.0     | fory     |
+| Sample            | 序列化   | 318.0     | 2016.6        | 1409.3    | fory     |
+| Sample            | 反序列化 | 496.0     | 902.5         | 1609.6    | fory     |
+| MediaContent      | 序列化   | 494.1     | 1358.5        | 803.5     | fory     |
+| MediaContent      | 反序列化 | 539.3     | 628.3         | 1134.3    | fory     |
+| NumericStructList | 序列化   | 195.3     | 3019.3        | 2013.5    | fory     |
+| NumericStructList | 反序列化 | 183.7     | 606.9         | 1944.0    | fory     |
+| SampleList        | 序列化   | 1681.9    | 19346.7       | 11870.3   | fory     |
+| SampleList        | 反序列化 | 2571.9    | 5730.6        | 9074.5    | fory     |
+| MediaContentList  | 序列化   | 2785.9    | 7616.6        | 3611.5    | fory     |
+| MediaContentList  | 反序列化 | 3709.7    | 3018.6        | 5294.5    | protobuf |
+
+### 吞吐量结果(ops/sec)
+
+| 数据类型          | 操作     | fory TPS   | protobuf TPS | json TPS  | 最快     |
+| ----------------- | -------- | ---------- | ------------ | --------- | -------- |
+| NumericStruct     | 序列化   | 13,162,466 | 1,631,271    | 2,016,097 | fory     |
+| NumericStruct     | 反序列化 | 17,568,418 | 10,543,763   | 3,002,971 | fory     |
+| Sample            | 序列化   | 3,144,194  | 495,893      | 709,593   | fory     |
+| Sample            | 反序列化 | 2,015,942  | 1,108,010    | 621,285   | fory     |
+| MediaContent      | 序列化   | 2,023,719  | 736,097      | 1,244,512 | fory     |
+| MediaContent      | 反序列化 | 1,854,348  | 1,591,617    | 881,572   | fory     |
+| NumericStructList | 序列化   | 5,121,376  | 331,201      | 496,645   | fory     |
+| NumericStructList | 反序列化 | 5,444,504  | 1,647,728    | 514,414   | fory     |
+| SampleList        | 序列化   | 594,551    | 51,688       | 84,244    | fory     |
+| SampleList        | 反序列化 | 388,820    | 174,503      | 110,199   | fory     |
+| MediaContentList  | 序列化   | 358,954    | 131,293      | 276,891   | fory     |
+| MediaContentList  | 反序列化 | 269,561    | 331,275      | 188,876   | protobuf |
+
+### 序列化数据大小(字节)
+
+| 数据类型          | fory | protobuf | json |
+| ----------------- | ---- | -------- | ---- |
+| NumericStruct     | 78   | 93       | 159  |
+| Sample            | 445  | 377      | 724  |
+| MediaContent      | 388  | 307      | 596  |
+| NumericStructList | 255  | 475      | 817  |
+| SampleList        | 1978 | 1900     | 3642 |
+| MediaContentList  | 1661 | 1550     | 3009 |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/javascript/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/javascript/throughput.png
new file mode 100644
index 00000000000..54c24051d66
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/javascript/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/python/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/python/README.md
new file mode 100644
index 00000000000..db46fc47ee9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/python/README.md
@@ -0,0 +1,87 @@
+# Python 基准测试性能报告
+
+_生成于 2026-05-08 17:54:45_
+
+## 如何生成本报告
+
+```bash
+cd benchmarks/python
+./run.sh
+```
+
+## 基准测试图表
+
+图表显示吞吐量(ops/sec);越高越好。
+
+![吞吐量](throughput.png)
+
+## 硬件和操作系统信息
+
+| 键                 | 值                           |
+| ------------------ | ---------------------------- |
+| 操作系统           | Darwin 24.6.0                |
+| 机器架构           | arm64                        |
+| 处理器             | arm                          |
+| Python             | 3.10.8                       |
+| CPU 核心数(物理) | 12                           |
+| CPU 核心数(逻辑) | 12                           |
+| 内存总量(GB)     | 48.0                         |
+| Python 实现        | CPython                      |
+| 基准测试平台       | macOS-15.7.2-arm64-arm-64bit |
+
+## 基准测试配置
+
+| 键         | 值   |
+| ---------- | ---- |
+| warmup     | 3    |
+| iterations | 15   |
+| repeat     | 5    |
+| number     | 1000 |
+| list_size  | 5    |
+
+## 基准测试结果
+
+### 耗时结果(nanoseconds)
+
+| 数据类型          | 操作     | fory (ns) | protobuf (ns) | pickle (ns) | 最快 |
+| ----------------- | -------- | --------- | ------------- | ----------- | ---- |
+| NumericStruct     | 序列化   | 491.4     | 802.3         | 1119.8      | fory |
+| NumericStruct     | 反序列化 | 522.2     | 1211.6        | 1788.7      | fory |
+| Sample            | 序列化   | 1096.4    | 3315.8        | 10185.2     | fory |
+| Sample            | 反序列化 | 2772.0    | 6659.7        | 7061.9      | fory |
+| MediaContent      | 序列化   | 989.2     | 3433.2        | 4392.7      | fory |
+| MediaContent      | 反序列化 | 1518.7    | 4381.2        | 4305.1      | fory |
+| NumericStructList | 序列化   | 1111.2    | 4707.9        | 3235.8      | fory |
+| NumericStructList | 反序列化 | 1891.7    | 6891.0        | 3974.9      | fory |
+| SampleList        | 序列化   | 3447.2    | 18719.1       | 32125.7     | fory |
+| SampleList        | 反序列化 | 13131.6   | 35264.2       | 24154.4     | fory |
+| MediaContentList  | 序列化   | 2996.5    | 17597.4       | 11087.8     | fory |
+| MediaContentList  | 反序列化 | 6228.7    | 21562.0       | 10459.3     | fory |
+
+### 吞吐量结果(ops/sec)
+
+| 数据类型          | 操作     | fory TPS  | protobuf TPS | pickle TPS | 最快 |
+| ----------------- | -------- | --------- | ------------ | ---------- | ---- |
+| NumericStruct     | 序列化   | 2,035,025 | 1,246,379    | 893,009    | fory |
+| NumericStruct     | 反序列化 | 1,915,112 | 825,344      | 559,055    | fory |
+| Sample            | 序列化   | 912,072   | 301,590      | 98,182     | fory |
+| Sample            | 反序列化 | 360,751   | 150,158      | 141,605    | fory |
+| MediaContent      | 序列化   | 1,010,939 | 291,275      | 227,652    | fory |
+| MediaContent      | 反序列化 | 658,462   | 228,247      | 232,281    | fory |
+| NumericStructList | 序列化   | 899,960   | 212,407      | 309,040    | fory |
+| NumericStructList | 反序列化 | 528,636   | 145,116      | 251,580    | fory |
+| SampleList        | 序列化   | 290,092   | 53,421       | 31,128     | fory |
+| SampleList        | 反序列化 | 76,152    | 28,357       | 41,400     | fory |
+| MediaContentList  | 序列化   | 333,720   | 56,826       | 90,189     | fory |
+| MediaContentList  | 反序列化 | 160,547   | 46,378       | 95,609     | fory |
+
+### 序列化数据大小(bytes)
+
+| 数据类型          | fory | protobuf | pickle |
+| ----------------- | ---- | -------- | ------ |
+| NumericStruct     | 78   | 93       | 169    |
+| Sample            | 445  | 375      | 1176   |
+| MediaContent      | 366  | 301      | 624    |
+| NumericStructList | 219  | 475      | 582    |
+| SampleList        | 1914 | 1890     | 3546   |
+| MediaContentList  | 1614 | 1520     | 1415   |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/python/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/python/throughput.png
new file mode 100644
index 00000000000..7bd99a82e6d
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/python/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/rust/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/rust/README.md
new file mode 100644
index 00000000000..c5d2021d0f4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/rust/README.md
@@ -0,0 +1,78 @@
+# Rust 基准测试性能报告
+
+_生成时间:2026-05-08 17:55:12_
+
+## 如何生成此报告
+
+```bash
+cd benchmarks/rust
+cargo bench --manifest-path xlang/Cargo.toml --bench serialization_bench 2>&1 | tee results/cargo_bench.log
+cargo bench --manifest-path local/Cargo.toml --bench external_type_bench 2>&1 | tee -a results/cargo_bench.log
+cargo run --release --manifest-path xlang/Cargo.toml --bin fory_profiler -- --print-all-serialized-sizes | tee results/serialized_sizes.txt
+python benchmark_report.py --log-file results/cargo_bench.log --size-file results/serialized_sizes.txt --output-dir results
+```
+
+## 基准测试图表
+
+下图展示吞吐量(ops/sec);数值越高越好。
+
+![吞吐量](throughput.png)
+
+## 硬件和操作系统信息
+
+| 项目               | 值                  |
+| ------------------ | ------------------- |
+| 操作系统           | Darwin 24.6.0       |
+| 机器架构           | arm64               |
+| 处理器             | arm                 |
+| CPU 核心数(物理) | 12                  |
+| CPU 核心数(逻辑) | 12                  |
+| 内存总量(GB)     | 48.0                |
+| 基准测试日期       | 2026-05-08T16:47:49 |
+
+## 基准测试结果
+
+### 耗时结果(nanoseconds)
+
+| 数据类型          | 操作     | fory (ns) | protobuf (ns) | msgpack (ns) | 最快 |
+| ----------------- | -------- | --------- | ------------- | ------------ | ---- |
+| NumericStruct     | 序列化   | 38.1      | 94.6          | 239.5        | fory |
+| NumericStruct     | 反序列化 | 32.6      | 62.4          | 107.3        | fory |
+| Sample            | 序列化   | 95.3      | 591.8         | 601.1        | fory |
+| Sample            | 反序列化 | 410.1     | 925.8         | 805.9        | fory |
+| MediaContent      | 序列化   | 120.0     | 553.9         | 446.9        | fory |
+| MediaContent      | 反序列化 | 566.7     | 713.0         | 902.6        | fory |
+| NumericStructList | 序列化   | 121.5     | 512.0         | 618.0        | fory |
+| NumericStructList | 反序列化 | 137.9     | 404.9         | 615.9        | fory |
+| SampleList        | 序列化   | 267.7     | 2920.2        | 2011.1       | fory |
+| SampleList        | 反序列化 | 1831.9    | 4636.4        | 4141.4       | fory |
+| MediaContentList  | 序列化   | 367.1     | 2835.6        | 1441.7       | fory |
+| MediaContentList  | 反序列化 | 2703.8    | 3622.3        | 4832.3       | fory |
+
+### 吞吐量结果(ops/sec)
+
+| 数据类型          | 操作     | fory TPS   | protobuf TPS | msgpack TPS | 最快 |
+| ----------------- | -------- | ---------- | ------------ | ----------- | ---- |
+| NumericStruct     | 序列化   | 26,237,767 | 10,572,613   | 4,174,668   | fory |
+| NumericStruct     | 反序列化 | 30,720,079 | 16,035,920   | 9,322,271   | fory |
+| Sample            | 序列化   | 10,494,611 | 1,689,874    | 1,663,700   | fory |
+| Sample            | 反序列化 | 2,438,311  | 1,080,170    | 1,240,895   | fory |
+| MediaContent      | 序列化   | 8,331,945  | 1,805,445    | 2,237,687   | fory |
+| MediaContent      | 反序列化 | 1,764,633  | 1,402,426    | 1,107,960   | fory |
+| NumericStructList | 序列化   | 8,232,485  | 1,953,125    | 1,618,071   | fory |
+| NumericStructList | 反序列化 | 7,250,580  | 2,469,563    | 1,623,535   | fory |
+| SampleList        | 序列化   | 3,735,664  | 342,442      | 497,240     | fory |
+| SampleList        | 反序列化 | 545,881    | 215,685      | 241,464     | fory |
+| MediaContentList  | 序列化   | 2,724,350  | 352,659      | 693,626     | fory |
+| MediaContentList  | 反序列化 | 369,850    | 276,068      | 206,941     | fory |
+
+### 序列化数据大小(bytes)
+
+| 数据类型          | fory | protobuf | msgpack |
+| ----------------- | ---- | -------- | ------- |
+| NumericStruct     | 78   | 93       | 87      |
+| Sample            | 445  | 375      | 590     |
+| MediaContent      | 362  | 301      | 500     |
+| NumericStructList | 255  | 475      | 449     |
+| SampleList        | 1978 | 1890     | 2964    |
+| MediaContentList  | 1531 | 1520     | 2521    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/rust/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/rust/throughput.png
new file mode 100644
index 00000000000..5640e734e40
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/rust/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/swift/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/swift/README.md
new file mode 100644
index 00000000000..ddd72b81291
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/swift/README.md
@@ -0,0 +1,51 @@
+# Fory Swift 基准测试
+
+本基准测试比较 Apache Fory、Protocol Buffers 和 JSON 在 Swift 中的序列化与反序列化吞吐量。
+
+## 基准测试范围
+
+以下结果涵盖 `swift-benchmark` 运行的常规/xlang 测试用例。外部类型与载体对比使用独立的
+`swift-external-benchmark` 可执行文件,仅在明确请求时才会包含。
+
+## 吞吐量图
+
+![吞吐量](throughput.png)
+
+## 硬件和运行时信息
+
+| 项目                   | 值                            |
+| ---------------------- | ----------------------------- |
+| 时间戳                 | 2026-08-04T09:52:12Z          |
+| 操作系统               | Version 15.7.2 (Build 24G325) |
+| 主机                   | MacBook-Pro.local             |
+| CPU 核心数(逻辑)     | 12                            |
+| 内存 (GB)              | 48.00                         |
+| 每个测试用例的时长 (s) | 3                             |
+
+## 吞吐量结果
+
+| 数据类型          | 操作     |   Fory TPS | Protobuf TPS | JSON TPS | 最快         |
+| ----------------- | -------- | ---------: | -----------: | -------: | ------------ |
+| NumericStruct     | 序列化   | 14,759,606 |    7,572,190 |  481,278 | fory (1.95x) |
+| NumericStruct     | 反序列化 | 18,155,795 |    7,317,942 |  377,802 | fory (2.48x) |
+| Sample            | 序列化   |  5,633,231 |    1,380,130 |  102,372 | fory (4.08x) |
+| Sample            | 反序列化 |  1,509,740 |      916,626 |   52,897 | fory (1.65x) |
+| MediaContent      | 序列化   |  2,987,821 |      784,863 |  111,200 | fory (3.81x) |
+| MediaContent      | 反序列化 |  1,072,345 |      549,726 |   97,799 | fory (1.95x) |
+| NumericStructList | 序列化   |  5,515,769 |    1,093,924 |   93,635 | fory (5.04x) |
+| NumericStructList | 反序列化 |  2,598,609 |      746,527 |   76,161 | fory (3.48x) |
+| SampleList        | 序列化   |  1,201,868 |      220,772 |   20,772 | fory (5.44x) |
+| SampleList        | 反序列化 |    286,949 |      161,192 |   10,777 | fory (1.78x) |
+| MediaContentList  | 序列化   |    657,276 |      118,004 |   22,744 | fory (5.57x) |
+| MediaContentList  | 反序列化 |    215,726 |       99,445 |   19,521 | fory (2.17x) |
+
+## 序列化大小 (bytes)
+
+| 数据类型          | Fory | Protobuf | JSON |
+| ----------------- | ---: | -------: | ---: |
+| NumericStruct     |   78 |       93 |  159 |
+| Sample            |  445 |      375 |  696 |
+| MediaContent      |  362 |      301 |  608 |
+| NumericStructList |  255 |      475 |  816 |
+| SampleList        | 1978 |     1890 | 3501 |
+| MediaContentList  | 1531 |     1520 | 3067 |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/swift/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/swift/throughput.png
new file mode 100644
index 00000000000..3e1ee735404
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/benchmarks/object-serialization/xlang/swift/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/community.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/community.md
new file mode 100644
index 00000000000..31152159108
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/community.md
@@ -0,0 +1,84 @@
+---
+title: 社区
+sidebar_position: 0
+id: community
+---
+
+Apache Fory™ 是一个志愿者项目,依靠社区贡献蓬勃发展。
+无论您愿意投入多少精力,我们都诚邀您参与。以下是几种贡献方式:
+
+- 使用我们的项目并分享反馈。
+- 提供项目用例。
+- 报告 Bug 并贡献修复。
+- 贡献代码和改进文档。
+
+## 邮件列表
+
+| 名称                    | 说明             | 订阅                                             | 取消订阅                                               | 发帖                               | 存档                                                               |
+| ----------------------- | ---------------- | ------------------------------------------------ | ------------------------------------------------------ | ---------------------------------- | ------------------------------------------------------------------ |
+| dev@fory.apache.org     | 开发相关讨论     | [订阅](mailto:dev-subscribe@fory.apache.org)     | [取消订阅](mailto:dev-unsubscribe@fory.apache.org)     | [发帖](mailto:dev@fory.apache.org) | [存档](https://lists.apache.org/list.html?dev@fory.apache.org)     |
+| commits@fory.apache.org | 仓库中的所有提交 | [订阅](mailto:commits-subscribe@fory.apache.org) | [取消订阅](mailto:commits-unsubscribe@fory.apache.org) | 只读列表                           | [存档](https://lists.apache.org/list.html?commits@fory.apache.org) |
+
+尝试发帖前,请务必先订阅相应的邮件列表。
+
+如果您没有订阅邮件列表,您的消息将被拒绝,或者您将无法收到回复。
+
+### 如何订阅邮件列表
+
+要发布消息,请先按以下步骤订阅:
+
+1. 向 listname-subscribe@fory.apache.org 发送电子邮件,并相应替换 `listname`。
+2. 回复收到的确认邮件,并保持主题行不变。
+3. 随后您将收到欢迎邮件,表示订阅成功。
+
+通过电子邮件讨论代码片段时,请确保:
+
+- 不要链接到外部服务中的文件,因为这些文件可能会更改、被删除或链接可能失效,从而使存档的邮件讨论串失去价值。
+- 粘贴文本,而不是文字截图。
+- 粘贴代码时保留格式,以确保代码可读。
+- 包含足够的导入语句,以避免歧义。
+
+## Slack
+
+您可以加入 [Slack 上的 Apache Fory™ 社区](https://join.slack.com/t/fory-project/shared_invite/zt-1u8soj4qc-ieYEu7ciHOqA2mo47llS8A)。
+
+社区有以下几项规则:
+
+- 相互尊重,友善交流。
+- 所有重要决定和结论都必须同步到邮件列表。“如果没有在邮件列表中发生,就等于没有发生。”——[Apache 格言](https://theapacheway.com/on-list/)。
+- 使用 Slack 讨论串,避免并行对话淹没频道。
+- 请勿通过私信请求他人协助排查问题、分配 Issue 或评审 PR。这些工作应由社区成员自愿认领。
+
+## Issue 跟踪器
+
+我们使用 GitHub Issues 跟踪所有问题:
+
+- 代码相关问题:https://github.com/apache/fory/issues
+- 网站相关问题:https://github.com/apache/fory-site/issues
+
+您需要拥有 [GitHub 账号](https://github.com/signup)才能创建 Issue。
+如果您没有 [GitHub 账号](https://github.com/signup),可以向 dev@fory.apache.org 发送电子邮件。
+
+### Bug 报告
+
+报告 Bug 时:
+
+- 确认该 Bug 确实存在。
+- 搜索 [Issue 跟踪器](https://github.com/apache/fory/issues),确认其中没有报告您所发现 Bug 的现有 Issue。
+- 在 Issue 跟踪器中创建 [Bug 报告](https://github.com/apache/fory/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml)。
+- 如果可以,请深入研究 Fory 源代码,并为您报告的 Bug 提交补丁,这有助于确保 Bug 得到快速修复。
+
+### 报告安全漏洞
+
+Apache Fory™ 是 [Apache 软件基金会](https://apache.org/)的项目,并遵循 [ASF 漏洞处理流程](https://apache.org/security/#vulnerability-handling)。
+
+如需报告您发现的新漏洞,请遵循 [ASF 漏洞报告流程](https://apache.org/security/#reporting-a-vulnerability),该流程说明了如何私下向我们发送详细信息。
+
+### 功能增强
+
+我们也欢迎功能增强或新功能提案。提案越具体、理由越充分,被纳入未来版本的可能性就越大。
+
+## 源代码
+
+- Fory 核心仓库:https://github.com/apache/fory
+- Fory 网站仓库:https://github.com/apache/fory-site
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_join_community.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_join_community.md
new file mode 100644
index 00000000000..b9abbc30365
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_join_community.md
@@ -0,0 +1,105 @@
+---
+title: 如何加入 Apache Fory™
+sidebar_position: 0
+id: how_to_join_community
+---
+
+首先,为您选择加入开源贡献者行列点赞。其次,非常感谢您选择参与 Fory 社区,并为这个开源项目贡献力量。
+
+## Fory 贡献指南
+
+Fory 团队通常在 GitHub 上进行开发和维护 Issue。请打开 [GitHub 网站](https://github.com/),点击右上角的 `Sign up` 按钮,注册自己的账号,迈出开源之旅的第一步。
+
+在 [Fory 仓库](https://github.com/apache/fory)中,我们为所有开源贡献者准备了一份[指南](https://fory.apache.org/zh-CN/docs/community/),其中介绍了版本管理和分支管理等内容。**请花几分钟时间阅读并理解它**。
+
+## 您的第一个 Pull Request
+
+### 第 0 步:安装 Git
+
+Git 是一种版本控制系统,用于跟踪和管理软件开发项目中的代码变更。它可以帮助开发者记录和管理代码历史,便于团队协作、代码版本控制、代码合并等操作。借助 Git,您可以跟踪每个文件的各个版本,并轻松切换和比较不同版本。Git 还提供分支管理功能,允许同时开展多个并行开发任务。
+
+- 访问 Git 官方网站:[https://git-scm.com/] (https://git-scm.com/)
+- 下载最新版本的 Git 安装程序。
+- 运行下载的安装程序,并按照安装向导的提示完成安装。
+- 安装完成后,可以在命令行中使用 `git version` 命令确认是否安装成功。
+
+### 第 1 步:Fork 项目
+
+- 首先,您需要 Fork 此项目。进入 [Fory 项目页面](https://github.com/apache/fory),然后点击右上角的 Fork 按钮。
+- 在您的 GitHub 账号中,将会出现 xxxx(您的 GitHub 用户名)/fory 项目。
+- 在本地计算机上,使用以下命令获取 fory 文件夹:
+
+```
+// ssh
+git clone git@github.com:xxxx (your GitHub username)/fory.git
+// https
+git clone https://github.com/xxxx (your GitHub username)/fory.git
+```
+
+### 第 2 步:获取项目代码
+
+- 进入 fory 文件夹,并添加 fory 的远程地址:
+
+```
+git remote add upstream https://github.com/apache/fory.git
+```
+
+### 第 3 步:创建分支
+
+- 现在,您可以开始贡献代码了。Fory 的默认分支是 main 分支。无论是开发功能、修复 Bug 还是编写文档,请先创建新分支,再将其合并到 main 分支。使用以下代码创建分支:
+
+```
+// Create a function development branch
+git checkout -b feat/xxxx
+
+// Create a problem-fixing development branch
+git checkout -b fix/xxxx
+
+// Create a documentation, demo branch
+git checkout -b docs/add-java-demo
+```
+
+假设我们已创建文档修改分支 `docs/add-java-demo`,添加了一些代码并将其提交到了代码仓库。
+
+- `git add .`
+- `git commit -a -m "docs: add java demo and related docs"`
+
+### 第 4 步:合并修改
+
+- 切换回您的开发分支:
+
+```
+git checkout docs/add-java-demo
+```
+
+- 将更新后的代码提交到您的分支:
+
+```
+git push origin docs/add-java-demo
+```
+
+### 第 5 步:提交 Pull Request
+
+您可以在 GitHub 代码仓库页面点击 `Compare & pull request` 按钮,也可以通过 `contribute` 按钮创建。
+
+- 填写此次修改的类型。
+- 填写关联的 Issue。
+- 如果变更较为复杂,请说明背景和解决方案。
+
+填写相关信息后,点击 Create pull request 提交。
+
+## **轻松开启 Fory 开源贡献之旅**
+
+“**good first issue**”是开源社区中的常见标签,目的是帮助新贡献者找到适合入门的 Issue。
+
+您可以通过 [Issue 列表](https://github.com/apache/fory/issues)查看 Fory 的入门 Issue。
+
+如果您目前**有时间也有意愿**参与社区贡献,可以查看 Issue 中的 **good first issue**,选择一个自己感兴趣且适合认领的 Issue。
+
+## 融入 Apache Fory™ 社区
+
+在为 Fory 贡献代码的同时,我们也鼓励您参与其他有助于社区繁荣的活动,例如:
+
+- 为项目发展、功能规划等提出建议。
+- 创作文章和视频,举办讲座来推广 Fory。
+- 编写推广计划,并与团队共同执行。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_release.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_release.md
new file mode 100644
index 00000000000..227d59f5f53
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_release.md
@@ -0,0 +1,607 @@
+---
+title: 如何发布
+sidebar_position: 0
+id: how_to_release
+---
+
+本文主要介绍发布经理如何发布 Apache Fory™ 的新版本。
+
+## 简介
+
+源码发布是 Apache 最为重视的环节。
+
+请特别注意许可证和签名问题。发布软件是一件严肃的事情,并会产生法律后果。
+
+## 首次担任发布经理
+
+### 环境要求
+
+本发布流程在 Ubuntu 操作系统上执行,需要以下工具:
+
+- OpenJDK 25+
+- Apache Maven 3.6.3+
+- Python 3.8+
+- GnuPG 2.x
+- Git
+- SVN(Apache 使用 SVN 托管项目发布版本)
+- 可选的软件包发布与验证工具:Node.js LTS 和 npm、通过 rustup 安装的 Rust、Go 1.24+、Dart、.NET SDK 8.0+ 以及 sbt
+- 请注意设置环境变量:如果将 GPG 密钥配置在其他目录中,请执行 `export GNUPGHOME=$(xxx)`
+
+### 准备 GPG 密钥
+
+如果您是第一次担任发布经理,需要准备一个 GPG 密钥。
+
+下面提供快速设置步骤。更多详情请参阅 [Apache OpenPGP 文档](https://infra.apache.org/openpgp.html)。
+
+#### 安装 GPG
+
+```bash
+sudo apt install gnupg2
+```
+
+#### 生成 GPG 密钥
+
+请使用您的 Apache 用户名和电子邮件地址生成密钥。
+
+```bash
+$ gpg --full-gen-key
+gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+   (1) RSA and RSA (default)
+   (2) DSA and Elgamal
+   (3) DSA (sign only)
+   (4) RSA (sign only)
+  (14) Existing key from card
+Your selection? 1 # input 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096 # input 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+         0 = key does not expire
+      <n>  = key expires in n days
+      <n>w = key expires in n weeks
+      <n>m = key expires in n months
+      <n>y = key expires in n years
+Key is valid for? (0) 0 # input 0
+Key does not expire at all
+Is this correct? (y/N) y # input y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: Chaokun Yang                   # input your name
+Email address: chaokunyang@apache.org     # input your email
+Comment: CODE SIGNING KEY                 # input some annotations, optional
+You selected this USER-ID:
+    "Chaokun <ch...@apache.org>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O # input O
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+
+# Input the security key
+┌──────────────────────────────────────────────────────┐
+│ Please enter this passphrase                         │
+│                                                      │
+│ Passphrase: _______________________________          │
+│                                                      │
+│       <OK>                              <Cancel>     │
+└──────────────────────────────────────────────────────┘
+# key generation will be done after your inputting the key with the following output
+gpg: key E49B00F626B marked as ultimately trusted
+gpg: revocation certificate stored as '/Users/chaokunyang/.gnupg/openpgp-revocs.d/1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4.rev'
+public and secret key created and signed.
+
+pub   rsa4096 2022-07-12 [SC]
+      1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+uid           [ultimate] Chaokun <ch...@apache.org>
+sub   rsa4096 2022-07-12 [E]
+```
+
+#### 将公钥上传到公共 GPG 密钥服务器
+
+首先,列出您的密钥:
+
+```bash
+gpg --list-keys
+```
+
+输出类似如下:
+
+```bash
+--------------------------------------------------
+pub   rsa4096 2024-03-27 [SC]
+      1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+uid           [ultimate] chaokunyang (CODE SIGNING KEY) <ch...@apache.org>
+sub   rsa4096 2024-03-27 [E]
+```
+
+然后,将您的密钥 ID 发送到密钥服务器:
+
+```bash
+gpg --keyserver keys.openpgp.org --send-key <key-id> # e.g., 1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
+```
+
+这里随机选择了 `keys.openpgp.org` 作为密钥服务器,您也可以使用 keyserver.ubuntu.com 或其他功能完整的密钥服务器。
+
+#### 检查密钥是否创建成功
+
+上传大约需要一分钟,之后可以通过相应密钥服务器的电子邮件验证功能进行检查。
+
+将密钥上传到密钥服务器,主要是为了加入[信任网络(Web of Trust)](https://infra.apache.org/release-signing.html#web-of-trust)。
+
+#### 将 GPG 公钥添加到项目的 KEYS 文件
+
+发布分支的 SVN 仓库地址为:https://dist.apache.org/repos/dist/release/fory
+
+请将公钥添加到发布分支的 KEYS 文件中:
+
+```bash
+svn co --depth=files https://dist.apache.org/repos/dist/release/fory fory-dist
+cd fory-dist
+(gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append your key to the KEYS file
+svn add .   # It is not needed if the KEYS document exists before.
+svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a username and password, just use your apache username and password.
+```
+
+#### 将 GPG 公钥上传到您的 GitHub 账户
+
+- 访问 https://github.com/settings/keys 添加您的 GPG 密钥。
+- 如果添加后显示 "unverified",请记得将 GPG 密钥使用的电子邮件地址绑定到您的 GitHub 账户(https://github.com/settings/emails)。
+
+### 延伸阅读
+
+建议在发布前阅读以下文档,以进一步了解 Apache 发布流程,但这不是强制要求:
+
+- 发布政策:https://www.apache.org/legal/release-policy.html
+- TLP 发布:https://infra.apache.org/release-distribution
+- 发布签名:https://infra.apache.org/release-signing.html
+- 发布软件:https://infra.apache.org/release-publishing.html
+- 发布下载页面:https://infra.apache.org/release-download-pages.html
+- 发布 Maven artifacts:https://infra.apache.org/publishing-maven-artifacts.html
+
+## 发起发布讨论
+
+向 dev@fory.apache.org 发送电子邮件,发起关于下一版本的讨论:
+
+标题:
+
+```
+[DISCUSS] Release Apache Fory ${release_version}
+```
+
+正文:
+
+```
+Hello, Apache Fory Community,
+
+This is a call for a discussion to release Apache Fory version ${release_version}.
+
+The planned change list for this release:
+
+https://github.com/apache/fory/compare/v${previous_release_version}...main
+
+Please leave your comments here about this release plan. We will bump the version in repo and start the release process after the discussion.
+
+Thanks,
+
+${name}
+```
+
+## 准备发布
+
+如果讨论结果积极,则需要准备发布 artifacts。
+
+### GitHub 分支和标签
+
+- 创建名为 `releases-${release_version}` 的新分支。也可以运行 `python ci/release.py prepare -v ${release_version}` 来创建分支、更新所有版本并创建准备提交。
+- 将版本更新为 `${release_version}`:请执行命令 `python ci/release.py bump_version -l all -version ${release_version}`,但使用 `prepare` 时无需执行。
+- 创建 Git 提交并将分支推送到 `git@github.com:apache/fory.git`。
+- 使用 `git tag v${release_version}-${rc_version}` 创建新的候选发布标签,然后将其推送到 `git@github.com:apache/fory.git`。
+- 如果本次发布包含 `go/fory` 下的 Go 模块,请在投票通过后创建并推送 Go 子模块标签。例如,对于最终的 `${release_version}` 版本:
+
+```bash
+git remote add apache git@github.com:apache/fory.git
+git tag go/fory/v${release_version}
+git push apache go/fory/v${release_version}
+```
+
+### 构建 artifacts 并上传到 SVN dist/dev 仓库
+
+首先,执行 `python ci/release.py build -v ${release_version}` 构建源码发布 artifacts。
+
+然后,将其上传到 SVN dist 仓库。dev 分支的 dist 仓库地址为:https://dist.apache.org/repos/dist/dev/fory
+
+```bash
+# As this step will copy all the versions, it will take some time. If the network is broken, please use svn cleanup to delete the lock before re-execute it.
+svn co https://dist.apache.org/repos/dist/dev/fory fory-dist-dev
+```
+
+然后上传 artifacts:
+
+```bash
+cd fory-dist-dev
+# create a directory named by version
+mkdir ${release_version}-${rc_version}
+# copy source code and signature package to the versioned directory
+cp ${repo_dir}/dist/* ${release_version}-${rc_version}
+# check svn status
+svn status
+# add to svn
+svn add ${release_version}-${rc_version}
+# check svn status
+svn status
+# commit to SVN remote server
+svn commit -m "Prepare for fory ${release_version}-${rc_version}"
+```
+
+访问 https://dist.apache.org/repos/dist/dev/fory/ 检查 artifacts 是否已正确上传。
+
+### 出现问题时如何处理
+
+如果出现非预期文件,请使用 `svn delete` 删除,然后重复上述上传流程。
+
+## 投票
+
+### 检查版本
+
+Fory 发布需要获得 Fory 社区的投票。
+
+- release_version:Fory 的版本,例如 1.0.0。
+- release_candidate_version:用于投票的版本,例如 1.0.0-rc1。
+- maven_artifact_number:Maven 暂存 artifacts 的编号,例如 1001。可以在 https://repository.apache.org/#stagingRepositories 上搜索 "fory" 找到该编号。
+
+### 构建 Fory 源码并发布到 Nexus
+
+#### 配置 Apache 账户密码
+
+将 Fory 发布到 Nexus 之前,需要安全地配置 Apache 账户凭据。由于密码必须加密,此步骤至关重要。
+
+首先,打开 Maven 全局设置文件 `settings.xml`,该文件通常位于 `~/.m2/settings.xml`。添加或修改以下部分:
+
+```xml
+
+<servers>
+    <server>
+        <id>apache.snapshots.https</id>
+        <username>your-apache-username</username>
+        <password>{your-encrypted-password}</password>
+    </server>
+    <server>
+        <id>apache.releases.https</id>
+        <username>your-apache-username</username>
+        <password>{your-encrypted-password}</password>
+    </server>
+</servers>
+```
+
+**重要说明:**
+
+- 将 `your-apache-username` 替换为您的 Apache LDAP 用户名。
+- 密码必须使用 Maven 密码加密工具进行加密。
+- 加密后的密码应放在花括号 `{}` 中。
+
+有关详细的加密说明,请参阅官方文档:[发布 Maven Artifacts](https://infra.apache.org/publishing-maven-artifacts.html)
+
+密码加密步骤如下:
+
+1. 生成主密码(如果尚未生成):
+
+2. ```sh
+
+   mvn --encrypt-master-password your-master-password
+
+   ```
+
+   将输出保存到 `~/.m2/settings-security.xml`:
+
+3. ```xml
+
+   <settingsSecurity>
+       <master>{your-encrypted-master-password}</master>
+   </settingsSecurity>
+
+   ```
+
+4. 加密您的 Apache 账户密码:
+
+   ```sh
+
+   mvn --encrypt-password your-apache-password
+
+   ```
+
+   将加密后的输出写入 `password` 字段(位于 `settings.xml` 中)。
+
+#### 构建并发布 Java、Kotlin 和 Scala 模块
+
+在仓库根目录运行 JVM 发布命令。默认情况下,它会依次发布 Java、Kotlin 和 Scala:
+
+```sh
+python ci/release.py publish_jvm
+```
+
+发布脚本会选择 OpenJDK 25 运行时,在正确的模块目录中执行各模块的发布命令,并验证 `fory-core` 的 multi-release 二进制 JAR 和源码 JAR。在 macOS 以外的平台上,请先安装 OpenJDK 25,并在运行命令前设置 `JAVA_HOME` 和 `PATH`。
+
+如需重新运行或逐个发布模块,请使用相应命令:
+
+```sh
+python ci/release.py publish_java
+python ci/release.py publish_kotlin
+python ci/release.py publish_scala
+```
+
+单独使用这些命令时,请先发布 Java,并保留在 `java/fory-core/target` 下生成的 artifacts。Kotlin 和 Scala 发布流程需要使用这些 artifacts 完成最终的 `fory-core` 发布 JAR 验证。
+
+#### 在 Nexus 中关闭 Maven 暂存仓库
+
+完成所有模块的发布后,在 Nexus 中执行以下步骤:
+
+1. 登录 Apache Nexus 仓库管理界面。
+2. 前往暂存仓库页面。
+3. 找到最新的 Fory 暂存仓库,例如 `orgapachefory-1001`。
+4. 执行 "Close" 操作,验证所有已上传的 artifacts。
+5. 记录暂存仓库 ID,以便写入投票邮件。
+6. 在投票通过之前,不要执行 "Release" 操作。
+
+这些步骤可确保所有暂存 artifacts 在社区投票前都已通过验证。
+
+### 构建预发布版本
+
+投票前需要构建一个预发布版本,例如:
+https://github.com/apache/fory/releases/tag/v${release_version}-${rc_version}
+
+推送 `v*` 标签会触发 Python、compiler、JavaScript、Rust、Dart 和 C# 基于标签的软件包发布工作流。对于包含 `-` 的候选发布标签,各工作流会在相应生态系统支持的情况下发布预发布或暂存 artifacts,例如将 Python 软件包发布到 TestPyPI,以及为 npm 软件包使用 `next` 标签。开始投票前,请监控所有触发的工作流。
+
+### Fory 社区投票
+
+向 Fory 社区 dev@fory.apache.org 发送电子邮件:
+
+标题:
+
+```
+[VOTE] Release Apache Fory v${release_version}-${rc_version}
+```
+
+正文:
+
+```
+Hello, Apache Fory Community:
+
+This is a call for vote to release Apache Fory
+v${release_version}-${rc_version}.
+
+Apache Fory is a blazingly fast multi-language serialization framework
+for idiomatic domain objects, schema IDL, and cross-language data
+exchange.
+
+The discussion thread:
+https://lists.apache.org/thread/xxr3od301g6v3ndj14zqc05byp9qvclh
+
+The change lists about this release:
+https://github.com/apache/fory/compare/v${previous_release_version}...v${release_version}-${rc_version}
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/fory/${release_version}-${rc_version}/
+
+The maven staging for this release:
+https://repository.apache.org/content/repositories/orgapachefory-${maven_artifact_number}
+
+Git tag for the release:
+https://github.com/apache/fory/releases/tag/v${release_version}-${rc_version}
+
+If this release also publishes the Go module, include the Go submodule tag too:
+https://github.com/apache/fory/releases/tag/go/fory/v${release_version}
+
+Git commit for the release:
+https://github.com/apache/fory/commit/${release_commit}
+
+The artifacts signed with PGP key [${gpg_key_id}], corresponding to
+[${apache_email}], that can be found in keys file:
+https://downloads.apache.org/fory/KEYS
+
+The vote will be open for at least 72 hours until the necessary number of votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+To learn more about Fory, please see https://fory.apache.org/
+
+*Valid check is a requirement for a vote. *Checklist for reference:
+
+[ ] Download Fory is valid.
+[ ] Checksums and PGP signatures are valid.
+[ ] Source code distributions have correct names matching the current release.
+[ ] LICENSE and NOTICE files are correct.
+[ ] All files have license headers if necessary.
+[ ] No compiled archives bundled in source archive.
+[ ] Can compile from source.
+
+How to Build and Test, please refer to: https://github.com/apache/fory/blob/main/docs/development/index.md
+
+
+Thanks,
+${name}
+```
+
+在获得至少 3 票来自 Apache Fory PMC 成员且具有约束力的 +1 票,并且没有否决票后,请先回复上述投票邮件线程,通知投票已经结束。
+
+```
+Hi all,
+
+The vote for Release Apache Fory v${release_version}-${rc_version} is closed now.
+
+Thanks to everyone for helping checking and voting for the release.
+
+I will close the vote later in another thread.
+
+Best,
+${name}
+```
+
+随后立即发起一个新邮件线程,公布投票结果。
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache Fory v${release_version}-${rc_version}
+```
+
+正文:
+
+```
+Hello, Apache Fory Community,
+
+The vote to release Apache Fory v${release_version}-${rc_version} has passed.
+
+The vote PASSED with 3 binding +1 votes and 0 -1 votes:
+
+Binding votes:
+
+- xxx
+- yyy
+- zzz
+
+Vote thread: ${vote_thread_url}
+
+Thanks,
+
+${name}
+```
+
+### 投票失败时如何处理
+
+如果投票失败,请点击 "Drop" 删除暂存的 Maven artifacts。
+
+解决提出的问题,然后递增 `rc_version` 并重新发起投票。
+
+## 正式发布
+
+### 将 artifacts 发布到 SVN 发布目录
+
+- release_version:Fory 的发布版本,例如 1.0.0。
+- release_candidate_version:用于投票的版本,例如 1.0.0-rc1。
+
+```bash
+svn mv https://dist.apache.org/repos/dist/dev/fory/${release_version}-${rc_version} https://dist.apache.org/repos/dist/release/fory/${release_version} -m "Release fory ${release_version}"
+```
+
+发布 release_version 时,如果 https://dist.apache.org/repos/dist/dev/fory/ 仓库中还留有过期的 release_candidate_version,请将其清理,以保持 dev 仓库整洁。
+
+当 `https://archive.apache.org/dist/fory/${release_version}/` 可访问时,即可确认 release_version 已成功发布并归档。此时可以清理发布仓库中的上一发布版本,仅保留当前版本。
+
+### 更新 Fory 和 Fory-Site 内容
+
+向 https://github.com/apache/fory-site 提交 PR 以更新 Fory-Site。
+参考实现:[#283](https://github.com/apache/fory-site/pull/283) 和 [#285](https://github.com/apache/fory-site/pull/285)。
+
+#### 更新 Fory-Site
+
+通常需要修改以下关键部分:
+
+1. 编写一则新公告,例如:
+   在 blog 目录下添加新的 Markdown 文件:
+
+```
+The Apache Fory team is pleased to announce the [?] release. This is a major release that includes [? PR](https://github.com/apache/fory/compare/v[?]...v[?]) from ? distinct contributors. See [Getting Started](https://fory.apache.org/docs/start/) to choose a runtime and install the libraries for your platform.
+```
+
+2. 将旧版本号更新为新版本号。
+   例如,更新开发分支和最新发布分支的 [Java 配置](https://fory.apache.org/docs/start/java)及其链接的功能指南:
+
+```
+<dependency>
+ <groupId>org.apache.fory</groupId>
+ <artifactId>fory-core</artifactId>
+ <version>0.11.2</version>
+</dependency>
+```
+
+3. 更新下载页面、校验和与签名示例、发布说明链接、current 文档、zh-CN 翻译、versioned docs 快照、`versions.json` 以及 `docusaurus.config.ts` 中的默认文档版本。
+
+#### 更新 Fory
+
+向 https://github.com/apache/fory 提交 PR,更新 [README](https://github.com/apache/fory/blob/main/README.md)、下一开发版本的软件包元数据,以及应指向最新发布版本的面向用户的安装代码片段。
+
+### 在 GitHub 上正式发布
+
+需要在 Fory 项目中正式发布此版本。
+参考实现:https://github.com/apache/fory/releases/tag/v${release_version}
+
+投票通过后,根据通过投票的提交创建并推送最终的 `v${release_version}` 标签。此标签会触发 Python、compiler、JavaScript、Rust、Dart 和 C# 的最终软件包发布工作流。发送公告前,请监控每个工作流直至完成。
+
+### 发布 Maven artifacts
+
+- maven_artifact_number:Maven 暂存 artifacts 的编号,例如 1001。
+- 打开 https://repository.apache.org/#stagingRepositories。
+- 找到 artifact `orgapachefory-${maven_artifact_number}`,点击 "Release"。
+
+### 发送公告
+
+将发布公告发送到 dev@fory.apache.org,并抄送 announce@apache.org。
+
+标题:
+
+```
+[ANNOUNCE] Apache Fory ${release_version} released
+```
+
+正文:
+
+```
+Hi all,
+
+The Apache Fory community is pleased to announce
+that Apache Fory ${release_version} is now available.
+
+Apache Fory is a blazingly fast multi-language serialization framework
+for idiomatic domain objects, schema IDL, and cross-language data
+exchange.
+
+This release includes ${pr_count} PRs from ${contributor_count} contributors.
+
+Highlights in ${release_version} include:
+
+- ...
+
+Release blog, with details and examples:
+https://fory.apache.org/blog/fory_${release_version_with_underscores}_release
+
+The release notes are available here:
+https://github.com/apache/fory/releases/tag/v${release_version}
+
+For the complete list of changes:
+https://github.com/apache/fory/compare/v${previous_release_version}...v${release_version}
+
+Apache Fory website: https://fory.apache.org/
+
+Download Links: https://fory.apache.org/download
+
+Fory Resources:
+- Fory github repo: https://github.com/apache/fory
+- Issue: https://github.com/apache/fory/issues
+- Mailing list: dev@fory.apache.org
+
+We are looking to grow our community and welcome new contributors. If
+you are interested in contributing to Fory, please contact us on the
+mailing list or on GitHub. We will be happy to help you get started.
+
+------------------
+Best Regards,
+${your_name}
+```
+
+请使用纯文本而不是富文本格式,否则抄送 announce@apache.org 时邮件可能会被拒收。
+
+完成以上步骤后,Fory 发布流程至此结束。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_verify.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_verify.md
new file mode 100644
index 00000000000..01a3db3e041
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/community/how_to_verify.md
@@ -0,0 +1,125 @@
+---
+title: 如何验证
+sidebar_position: 0
+id: how_to_verify
+---
+
+## 下载候选版本
+
+```bash
+#If there is svn locally, you can clone to the local
+svn co https://dist.apache.org/repos/dist/dev/fory/${release_version}-${rc_version}/
+# You can download the material file directly
+wget https://dist.apache.org/repos/dist/dev/fory/${release_version}-${rc_version}/xxx.xxx
+```
+
+## 验证校验和与签名
+
+首先需要安装 gpg:
+
+```bash
+apt-get install gnupg
+# or
+yum install gnupg
+# or
+brew install gnupg
+```
+
+然后导入 Fory 发布经理的公钥:
+
+```bash
+curl https://downloads.apache.org/fory/KEYS > KEYS # Download KEYS
+gpg --import KEYS # Import KEYS to local
+# Then, trust the public key:
+gpg --edit-key <KEY-used-in-this-version> # Edit the key(mentioned in vote email)
+# It will enter the interactive mode, use the following command to trust the key:
+gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: unknown       validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <ch...@apache.org>
+
+gpg> trust
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: unknown       validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <ch...@apache.org>
+
+Please decide how far you trust this user to correctly verify other users' keys
+(by looking at passports, checking fingerprints from different sources, etc.)
+
+  1 = I don't know or won't say
+  2 = I do NOT trust
+  3 = I trust marginally
+  4 = I trust fully
+  5 = I trust ultimately
+  m = back to the main menu
+
+Your decision? 5
+Do you really want to set this key to ultimate trust? (y/N) y
+
+pub  4096R/5E580BA4  created: 2024-03-27  expires: never       usage: SC
+                     trust: ultimate      validity: unknown
+sub  4096R/A31EF728  created: 2024-03-27  expires: never       usage: E
+[ unknown] (1). chaokunyang (CODE SIGNING KEY) <ch...@apache.org>
+Please note that the shown key validity is not necessarily correct
+unless you restart the program.
+```
+
+接下来验证签名:
+
+```bash
+for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i; done
+```
+
+如果出现类似以下内容,则表示签名正确:
+
+```bash
+apache-fory-0.12.0-src.tar.gz
+gpg: Signature made Wed 17 Apr 2024 11:49:45 PM CST using RSA key ID 5E580BA4
+gpg: checking the trustdb
+gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
+gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
+gpg: Good signature from "chaokunyang (CODE SIGNING KEY) <ch...@apache.org>"
+```
+
+然后验证校验和:
+
+```bash
+for i in *.tar.gz; do echo $i; sha512sum --check  $i.sha512*; done
+```
+
+输出应类似于:
+
+```bash
+apache-fory-0.12.0-src.tar.gz
+apache-fory-0.12.0-src.tar.gz: OK
+```
+
+快速完成上述验证的方法是:
+
+```bash
+curl -s https://raw.githubusercontent.com/apache/fory/main/ci/release.py | python3 - verify -v 0.5.0
+```
+
+## 检查源代码包的文件内容
+
+解压 `apache-fory-${release_version}-${rc_version}-src.tar.gz`,并检查以下内容:
+
+- LICENSE 和 NOTICE 文件对于该仓库是正确的。
+- 所有需要许可证头的文件都带有 ASF 许可证头。
+- 可以正常构建。
+
+## 检查 fory-java 的 Maven 制品
+
+从 https://repository.apache.org/content/repositories/orgapachefory-${maven_artifact_number}/ 下载制品。
+
+可以检查以下内容:
+
+- JAR 的校验和与随附的校验和文件一致。
+- JAR 的签名与随附的签名文件一致。
+- JAR 可以在本地复现。这意味着您可以在自己的计算机上构建 JAR,并验证其校验和与随附制品的校验和相同。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/_category_.json
new file mode 100644
index 00000000000..eece8717d22
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 7,
+  "label": "Fory IDL 与编译器",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/build-integration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/build-integration.md
new file mode 100644
index 00000000000..e9af0bf8e06
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/build-integration.md
@@ -0,0 +1,230 @@
+---
+title: 构建集成
+sidebar_position: 2
+id: build-integration
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## Maven (Java)
+
+添加到 `pom.xml`:
+
+```xml
+<build>
+  <plugins>
+    <plugin>
+      <groupId>org.codehaus.mojo</groupId>
+      <artifactId>exec-maven-plugin</artifactId>
+      <version>3.1.0</version>
+      <executions>
+        <execution>
+          <id>generate-fory-types</id>
+          <phase>generate-sources</phase>
+          <goals>
+            <goal>exec</goal>
+          </goals>
+          <configuration>
+            <executable>foryc</executable>
+            <arguments>
+              <argument>${project.basedir}/src/main/fdl/schema.fdl</argument>
+              <argument>--java_out</argument>
+              <argument>${project.build.directory}/generated-sources/fory</argument>
+            </arguments>
+          </configuration>
+        </execution>
+      </executions>
+    </plugin>
+  </plugins>
+</build>
+```
+
+添加生成的源代码:
+
+```xml
+<build>
+  <plugins>
+    <plugin>
+      <groupId>org.codehaus.mojo</groupId>
+      <artifactId>build-helper-maven-plugin</artifactId>
+      <version>3.4.0</version>
+      <executions>
+        <execution>
+          <phase>generate-sources</phase>
+          <goals>
+            <goal>add-source</goal>
+          </goals>
+          <configuration>
+            <sources>
+              <source>${project.build.directory}/generated-sources/fory</source>
+            </sources>
+          </configuration>
+        </execution>
+      </executions>
+    </plugin>
+  </plugins>
+</build>
+```
+
+## Gradle (Java/Kotlin)
+
+添加到 `build.gradle`:
+
+```groovy
+task generateForyTypes(type: Exec) {
+    commandLine 'foryc',
+        "${projectDir}/src/main/fdl/schema.fdl",
+        '--java_out', "${buildDir}/generated/sources/fory"
+}
+
+compileJava.dependsOn generateForyTypes
+
+sourceSets {
+    main {
+        java {
+            srcDir "${buildDir}/generated/sources/fory"
+        }
+    }
+}
+```
+
+## Python (setuptools)
+
+添加到 `setup.py` 或 `pyproject.toml`:
+
+```python
+# setup.py
+from setuptools import setup
+from setuptools.command.build_py import build_py
+import subprocess
+
+class BuildWithForyIdl(build_py):
+    def run(self):
+        subprocess.run([
+            'foryc',
+            'schema.fdl',
+            '--python_out', 'src/generated'
+        ], check=True)
+        super().run()
+
+setup(
+    cmdclass={'build_py': BuildWithForyIdl},
+    # ...
+)
+```
+
+## Go (go generate)
+
+添加到 Go 文件:
+
+```go
+//go:generate foryc ../schema.fdl --lang go --output .
+package models
+```
+
+运行:
+
+```bash
+go generate ./...
+```
+
+## Rust (build.rs)
+
+添加到 `build.rs`:
+
+```rust
+use std::process::Command;
+
+fn main() {
+    println!("cargo:rerun-if-changed=schema.fdl");
+
+    let status = Command::new("foryc")
+        .args(&["schema.fdl", "--rust_out", "src/generated"])
+        .status()
+        .expect("Failed to run foryc");
+
+    if !status.success() {
+        panic!("Fory IDL compilation failed");
+    }
+}
+```
+
+## CMake (C++)
+
+添加到 `CMakeLists.txt`:
+
+```cmake
+find_program(FORY_COMPILER foryc)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/generated/example.h
+    COMMAND ${FORY_COMPILER}
+        ${CMAKE_CURRENT_SOURCE_DIR}/schema.fdl
+        --cpp_out ${CMAKE_CURRENT_SOURCE_DIR}/generated
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/schema.fdl
+    COMMENT "Generating Fory IDL types"
+)
+
+add_custom_target(generate_fory_idl DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generated/example.h)
+
+add_library(mylib ...)
+add_dependencies(mylib generate_fory_idl)
+target_include_directories(mylib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/generated)
+```
+
+## Bazel
+
+在 `BUILD` 中创建规则:
+
+```python
+genrule(
+    name = "generate_fdl",
+    srcs = ["schema.fdl"],
+    outs = ["generated/example.h"],
+    cmd = "$(location //:fory_compiler) $(SRCS) --cpp_out $(RULEDIR)/generated",
+    tools = ["//:fory_compiler"],
+)
+
+cc_library(
+    name = "models",
+    hdrs = [":generate_fdl"],
+    # ...
+)
+```
+
+## Dart / Flutter
+
+将 Fory 依赖添加到 `pubspec.yaml`:
+
+```yaml
+dependencies:
+  fory: ^1.7.0
+
+dev_dependencies:
+  build_runner: ^2.4.0
+```
+
+使用编译器生成 Schema 类型:
+
+```bash
+foryc schema.fdl --dart_out=lib/generated
+```
+
+然后运行 `build_runner` 生成序列化器:
+
+```bash
+dart run build_runner build
+```
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/cli.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/cli.md
new file mode 100644
index 00000000000..19f04b0624a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/cli.md
@@ -0,0 +1,663 @@
+---
+title: 编译器 CLI
+sidebar_position: 4
+id: cli
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 命令行界面
+
+### 基本用法
+
+```bash
+foryc [OPTIONS] FILES...
+```
+
+```bash
+foryc --scan-generated [OPTIONS]
+```
+
+### 选项
+
+编译选项:
+
+| 选项                                  | 说明                                             | 默认值        |
+| ------------------------------------- | ------------------------------------------------ | ------------- |
+| `--lang`                              | 以逗号分隔的目标语言                             | `all`         |
+| `--output`, `-o`                      | 输出目录                                         | `./generated` |
+| `-I`, `--proto_path`, `--import_path` | 向导入搜索路径添加目录(可重复指定)             | (无)        |
+| `--java_out=DST_DIR`                  | 在 DST_DIR 中生成 Java 代码                      | (无)        |
+| `--python_out=DST_DIR`                | 在 DST_DIR 中生成 Python 代码                    | (无)        |
+| `--cpp_out=DST_DIR`                   | 在 DST_DIR 中生成 C++ 代码                       | (无)        |
+| `--go_out=DST_DIR`                    | 在 DST_DIR 中生成 Go 代码                        | (无)        |
+| `--rust_out=DST_DIR`                  | 在 DST_DIR 中生成 Rust 代码                      | (无)        |
+| `--csharp_out=DST_DIR`                | 在 DST_DIR 中生成 C# 代码                        | (无)        |
+| `--javascript_out=DST_DIR`            | 在 DST_DIR 中生成 JavaScript/TypeScript 代码     | (无)        |
+| `--swift_out=DST_DIR`                 | 在 DST_DIR 中生成 Swift 代码                     | (无)        |
+| `--dart_out=DST_DIR`                  | 在 DST_DIR 中生成 Dart 代码                      | (无)        |
+| `--scala_out=DST_DIR`                 | 在 DST_DIR 中生成 Scala 3 代码                   | (无)        |
+| `--kotlin_out=DST_DIR`                | 在 DST_DIR 中生成 Kotlin 代码                    | (无)        |
+| `--go_nested_type_style`              | Go 嵌套类型命名风格:`camelcase` 或 `underscore` | `underscore`  |
+| `--swift_namespace_style`             | Swift 命名空间风格:`enum` 或 `flatten`          | `enum`        |
+| `--emit-fdl`                          | 输出转换后的 FDL(用于非 FDL 输入)              | `false`       |
+| `--emit-fdl-path`                     | 将转换后的 FDL 写入此路径(文件或目录)          | (标准输出)  |
+| `--grpc`                              | 为支持的输出生成 gRPC 服务配套代码               | `false`       |
+| `--grpc-python-mode=MODE`             | Python gRPC 模式:`async` 或 `sync`              | `async`       |
+| `--grpc-web`                          | 生成 JavaScript gRPC-Web 客户端配套代码          | `false`       |
+
+编译器支持使用 Schema 级文件选项控制特定语言的生成行为。
+当 `go_nested_type_style` 和 `swift_namespace_style` 同时出现在 CLI 与 Schema 中时,CLI 标志优先。
+Rust 时间类型代码生成没有 CLI 标志:在 Schema 中设置
+`option rust_use_chrono_temporal_types = true;`,即可生成
+`chrono::NaiveDate`、`chrono::NaiveDateTime` 和 `chrono::Duration`,而不是默认的
+`fory::Date`、`fory::Timestamp` 和 `fory::Duration`。编译这些基于 chrono 的 Rust 生成代码时,
+crate 必须依赖 `chrono` 并启用 Fory 的 `chrono` feature。
+
+扫描选项(与 `--scan-generated` 一起使用):
+
+| 选项         | 说明                   | 默认值  |
+| ------------ | ---------------------- | ------- |
+| `--root`     | 要扫描的根目录         | `.`     |
+| `--relative` | 输出相对于根目录的路径 | `false` |
+| `--delete`   | 删除匹配的生成文件     | `false` |
+| `--dry-run`  | 仅扫描并输出,不删除   | `false` |
+
+### 扫描生成文件
+
+使用 `--scan-generated` 查找 `foryc` 生成的文件。扫描器会递归遍历目录树,
+跳过 `build/`、`target/` 和隐藏目录,并在发现每个生成文件时输出其路径。
+
+```bash
+# Scan current directory
+foryc --scan-generated
+
+# Scan a specific root
+foryc --scan-generated --root ./src
+
+# Print paths relative to the scan root
+foryc --scan-generated --root ./src --relative
+
+# Delete scanned generated files
+foryc --scan-generated --root ./src --delete
+
+# Dry-run (scan and print only)
+foryc --scan-generated --root ./src --dry-run
+```
+
+### 示例
+
+**为所有语言编译:**
+
+```bash
+foryc schema.fdl
+```
+
+**为选定的语言子集编译:**
+
+```bash
+foryc schema.fdl --lang java,python,csharp,javascript,swift,dart,kotlin
+```
+
+**指定输出目录:**
+
+```bash
+foryc schema.fdl --output ./src/generated
+```
+
+**编译多个文件:**
+
+```bash
+foryc user.fdl order.fdl product.fdl --output ./generated
+```
+
+**编译包含服务定义的简单 Schema(Java + Python + Go + Rust + C# + Dart + Scala + Kotlin + JavaScript 模型):**
+
+```bash
+foryc compiler/examples/service.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript
+```
+
+**生成 Java、Python、Go、Rust、C++、C#、Dart、Scala、Kotlin、Node.js JavaScript 和 Swift gRPC 配套服务代码:**
+
+```bash
+foryc compiler/examples/service.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --cpp_out=./generated/cpp --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --swift_out=./generated/swift --grpc
+```
+
+生成的 gRPC 服务代码使用 Fory 序列化请求和响应体。Java 输出导入 grpc-java API,Python 输出默认使用 `grpc.aio`,Go 输出导入 grpc-go,Rust 输出导入 `tonic` 和 `bytes`。C++ 输出包含 gRPC C++ 的 `grpcpp` 头文件;编译这些文件的目标必须将生成目录加入头文件搜索路径,并链接 `fory::serialization` 和 `gRPC::grpc++`。Scala 输出导入 grpc-java API;Kotlin 输出导入 grpc-java 和 grpc-kotlin API,并使用协程 stub。C# 输出导入 `Grpc.Core.Api` 类型,可通过 `Grpc.AspNetCore` 等常规 .NET gRPC 包托管,或通过 `Grpc.Net.Client` 调用。Dart 输出导入 `package:grpc`,JavaScript 输出导入 `@grpc/grpc-js`。Swift 输出面向 grpc-swift 1.x,同时生成 `async`/`a [...]
+
+对于现有的同步 `grpcio` 应用,可使用以下命令生成同步 Python gRPC 配套代码:
+
+```bash
+foryc compiler/examples/service.fdl --python_out=./generated/python --grpc --grpc-python-mode=sync
+```
+
+**生成 JavaScript gRPC-Web 浏览器客户端:**
+
+```bash
+foryc compiler/examples/service.fdl --javascript_out=./generated/javascript --grpc-web
+```
+
+如果同一份 JavaScript 输出需要同时包含 Node.js 和浏览器配套代码,请同时使用 `--grpc` 和 `--grpc-web`。
+浏览器配套代码会导入 `grpc-web`;应用必须提供该软件包以及与 gRPC-Web 兼容的服务器或代理。
+
+**使用导入搜索路径:**
+
+```bash
+# Add a single import path
+foryc src/main.fdl -I libs/common
+
+# Add multiple import paths (repeated option)
+foryc src/main.fdl -I libs/common -I libs/types
+
+# Add multiple import paths (comma-separated)
+foryc src/main.fdl -I libs/common,libs/types,third_party/
+
+# Using --proto_path (protoc-compatible alias)
+foryc src/main.fdl --proto_path=libs/common
+
+# Mix all styles
+foryc src/main.fdl -I libs/common,libs/types --proto_path third_party/
+```
+
+**特定语言的输出目录(protoc 风格):**
+
+```bash
+# Generate only Java code to a specific directory
+foryc schema.fdl --java_out=./src/main/java
+
+# Generate multiple languages to different directories
+foryc schema.fdl --java_out=./java/gen --python_out=./python/src --cpp_out=./cpp/gen --go_out=./go/gen --rust_out=./rust/gen --csharp_out=./csharp/gen --javascript_out=./javascript/src --swift_out=./swift/gen --dart_out=./dart/gen --scala_out=./scala/gen --kotlin_out=./kotlin/gen
+
+# Combine with import paths
+foryc schema.fdl --java_out=./gen/java -I proto/ -I common/
+
+# Generate Scala 3 code to a specific directory
+foryc schema.fdl --scala_out=./src/main/scala
+
+# Generate Scala 3 models and gRPC service companions
+foryc service.fdl --scala_out=./src/main/scala --grpc
+
+# Generate Kotlin code to a specific directory
+foryc schema.fdl --kotlin_out=./src/main/kotlin
+```
+
+使用 `--{lang}_out` 选项时:
+
+- 仅生成指定语言,而不是所有语言
+- 编译器写入指定目录(特定语言的生成器仍可能创建 package/module 子目录)
+- 与 protoc 风格的工作流兼容
+
+**查看从 proto/fbs 输入转换得到的 Fory IDL:**
+
+```bash
+# Print translated Fory IDL to stdout
+foryc schema.proto --emit-fdl
+
+# Write translated Fory IDL to a directory
+foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
+```
+
+## 导入路径解析
+
+编译包含导入的 Fory IDL 文件时,编译器按以下顺序搜索被导入文件:
+
+1. **相对于发起导入的文件(默认)** - 编译器始终自动优先搜索包含 import 语句的文件所在目录。同目录导入不需要 `-I` 标志。
+2. **依次搜索每个 `-I` 路径** - 命令行中指定的其他搜索路径
+
+**同目录导入会自动生效:**
+
+```protobuf
+// main.fdl
+import "common.fdl";  // Found if common.fdl is in the same directory
+```
+
+```bash
+# No -I needed for same-directory imports
+foryc main.fdl
+```
+
+**项目结构示例:**
+
+```
+project/
+├── src/
+│   └── main.fdl          # import "common.fdl";
+└── libs/
+    └── common.fdl
+```
+
+**不使用 `-I`(失败):**
+
+```bash
+$ foryc src/main.fdl
+Import error: Import not found: common.fdl
+  Searched in: /project/src
+```
+
+**使用 `-I`(成功):**
+
+```bash
+$ foryc src/main.fdl -I libs/
+Compiling src/main.fdl...
+  Resolved 1 import(s)
+```
+
+## 支持的语言
+
+| 语言                  | 标志         | 输出扩展名 | 说明                          |
+| --------------------- | ------------ | ---------- | ----------------------------- |
+| Java                  | `java`       | `.java`    | 带 Fory 注解的 POJO           |
+| Python                | `python`     | `.py`      | 带类型提示的 dataclass        |
+| Go                    | `go`         | `.go`      | 带 struct tag 的结构体        |
+| Rust                  | `rust`       | `.rs`      | 带派生宏的结构体              |
+| C++                   | `cpp`        | `.h`       | 带 FORY 宏的结构体            |
+| C#                    | `csharp`     | `.cs`      | 带 Fory attribute 的类        |
+| JavaScript/TypeScript | `javascript` | `.ts`      | 带 Schema 模块辅助函数的接口  |
+| Swift                 | `swift`      | `.swift`   | Fory Swift 模型宏             |
+| Dart                  | `dart`       | `.dart`    | 带注解的 `@ForyStruct` 类     |
+| Scala                 | `scala`      | `.scala`   | 使用宏派生的 Scala 3 模型     |
+| Kotlin                | `kotlin`     | `.kt`      | 带 KSP 序列化器的 Kotlin 模型 |
+
+## 输出结构
+
+### Java
+
+```
+generated/
+└── java/
+    └── com/
+        └── example/
+            ├── User.java
+            ├── Order.java
+            ├── Status.java
+            └── ExampleForyModule.java
+```
+
+- 每个类型(枚举或消息)对应一个文件
+- package 结构与 Fory IDL package 一致
+- 生成 Schema 模块类
+
+### Python
+
+```
+generated/
+└── python/
+    └── example.py
+```
+
+- 所有类型位于单个模块中
+- 模块名派生自 package
+- 包含注册函数
+
+### Go
+
+```
+generated/
+└── go/
+    └── example/
+        └── example.go
+```
+
+- 所有类型位于单个文件中
+- 目录和 package 名派生自 `go_package` 或 Fory IDL package
+- 包含注册函数
+
+### Rust
+
+```
+generated/
+└── rust/
+    └── example.rs
+```
+
+- 所有类型位于单个模块中
+- 模块名派生自 package
+- 包含注册函数
+
+### C++
+
+```
+generated/
+└── cpp/
+    └── example.h
+```
+
+- 单个头文件
+- 命名空间与 package 一致(将点号转换为 `::`)
+- 包含头文件保护和前置声明
+
+### JavaScript/TypeScript
+
+```
+generated/
+└── javascript/
+    ├── example.ts
+    ├── example_grpc.ts      # with --grpc
+    └── example_grpc_web.ts  # with --grpc-web
+```
+
+- 每个 Schema 对应一个 `.ts` 文件
+- 消息使用 `export interface` 声明
+- 枚举使用 `export enum` 声明
+- 使用 case 枚举的可辨识联合类型
+- 包含 Schema 辅助函数 `registerXxxTypes(fory)`,以及默认的 `serializeX` 和
+  `deserializeX` 辅助函数
+- `--grpc` 输出使用 `@grpc/grpc-js` 的 Node.js 配套代码
+- `--grpc-web` 输出使用 `grpc-web` 的浏览器客户端配套代码
+
+### C\#
+
+```
+generated/
+└── csharp/
+    └── example/
+        └── Example.cs
+```
+
+- 每个 Schema 对应一个 `.cs` 文件,文件名取规范化为 PascalCase 的源文件主名
+- 命名空间使用 `csharp_namespace`(若已设置),否则使用 Fory IDL package
+- 包含以源文件名为前缀的 `XXXForyModule` 安装辅助类以及 `ToBytes`/`FromBytes` 方法
+- 传递式安装导入的 Schema(例如 `root.idl` 导入 `addressbook.fdl` 和 `tree.fdl`)
+- 使用 `--grpc` 时,每个服务会在 Schema 文件输出旁生成一个 `<ServiceName>Grpc.cs` 配套文件
+
+### Swift
+
+```
+generated/
+└── swift/
+    └── addressbook/
+        └── addressbook.swift
+```
+
+- 每个 Schema 生成一个 `.swift` 文件
+- 包名各段映射为嵌套 Swift 枚举,例如 `addressbook.*` 映射为 `Addressbook.*`
+- 生成的消息使用 `@ForyStruct`,枚举使用 `@ForyEnum`,联合类型使用 `@ForyUnion`/`@ForyCase`
+- 联合类型生成为携带关联载荷值的带标签枚举
+- 每个 Schema 包含一个 Schema 文件级模块及 `toBytes`/`fromBytes` 辅助方法
+- 生成的模块辅助方法会传递安装导入的 Schema
+- 使用 `--grpc` 时,在模型旁为每个服务生成一个面向 grpc-swift 1.x 的 `<ServiceName>Grpc.swift` 配套文件
+
+### Dart
+
+```
+generated/
+└── dart/
+    └── package/
+        ├── package.dart
+        └── package.fory.dart
+```
+
+- 每个 Schema 生成两个文件:包含注解类型的主 `.dart` 文件,以及包含生成序列化器的 `.fory.dart` part 文件
+- package 各段映射为目录(例如 `demo.foo` → `demo/foo/`)
+- 主文件包含 IDL 模块类,part 文件包含生成的序列化器元数据
+- 非 optional、非 ref 的基本类型列表使用类型化数组(例如 `Int32List`)
+- 使用 `--grpc` 时,每个 Schema 会在模型文件旁生成一个 `<stem>_grpc.dart` 配套文件,
+  其中包含每个服务的 `Client` 和 `ServiceBase`,并导入 `package:grpc`
+
+### Scala
+
+```
+generated/
+└── scala/
+    └── example/
+        ├── User.scala
+        ├── Status.scala
+        ├── Animal.scala
+        ├── ExampleServiceGrpc.scala
+        └── ExampleForyModule.scala
+```
+
+- 每个生成类型对应一个 Scala 3 源文件
+- package 结构与 Fory IDL package 一致
+- 消息派生 `org.apache.fory.scala.ForySerializer`
+- `optional T` 字段使用 `Option[T]`
+- 枚举使用 Scala 3 `enum`
+- 联合类型使用 Scala 3 ADT `enum`,并带有 `@ForyUnion`、`@ForyCase` 和 `Unknown`
+- 包含 Schema 模块对象
+- 每个本地服务定义在使用 `--grpc` 时生成一个 `<ServiceName>Grpc.scala` 服务配套文件
+
+### Kotlin
+
+```
+generated/
+└── kotlin/
+    └── example/
+        ├── User.kt
+        ├── Status.kt
+        ├── Animal.kt
+        └── ExampleForyModule.kt
+```
+
+- 每个生成类型对应一个 Kotlin 源文件
+- 设置 `kotlin_package` 时使用该 package 结构,否则使用 Fory IDL package
+- 消息使用 `@ForyStruct` 和 KSP 生成的序列化器
+- 枚举使用稳定的 Fory 枚举 ID
+- 联合类型使用带 `@ForyUnion`、`@ForyCase` 和未知 case 载体的密封类
+- 包含 Schema 模块对象
+- 使用 `--grpc` 时,每个服务生成一个 `<ServiceName>GrpcKt.kt` 协程服务配套文件
+
+### C# IDL 矩阵验证
+
+运行端到端 C# IDL 矩阵(FDL/IDL/Proto/FBS 生成及往返测试):
+
+```bash
+cd integration_tests/idl_tests
+./run_csharp_tests.sh
+```
+
+此脚本会对以下内容执行同 Schema 和兼容模式的往返测试:
+
+- `addressbook`、`auto_id`、`complex_pb` 基本类型
+- `collection` 以及 union/list 变体
+- `optional_types`
+- `any_example`(`.fdl`)和 `any_example`(`.proto`)
+- `tree` 和 `graph` 引用跟踪用例
+- `monster.fbs` 和 `complex_fbs.fbs`
+- `root.idl` 跨 package 导入覆盖
+- Schema 演进兼容性用例
+
+### Swift IDL 矩阵验证
+
+运行端到端 Swift IDL 矩阵(FDL/IDL/Proto/FBS 生成及往返测试):
+
+```bash
+cd integration_tests/idl_tests
+./run_swift_tests.sh
+```
+
+该脚本会运行:
+
+- 兼容模式和同 Schema 模式下的本地 Swift IDL 往返测试
+- 使用 `IDL_PEER_LANG=swift` 的 Java 驱动对端往返验证
+
+该脚本还会设置 `DATA_FILE*` 变量,以覆盖基于文件的往返路径。
+
+## 错误处理
+
+### 语法错误
+
+```
+Error: Line 5, Column 12: Expected ';' after field declaration
+```
+
+修复方法:检查指定行是否缺少分号或存在语法问题。
+
+### 类型名称重复
+
+```
+Error: Duplicate type name: User
+```
+
+修复方法:确保文件中的每个枚举和消息都有唯一名称。
+
+### 类型 ID 重复
+
+```
+Error: Duplicate type ID 100: User and Order
+```
+
+修复方法:为每个类型分配唯一的类型 ID。
+
+### 未知类型引用
+
+```
+Error: Unknown type 'Address' in Customer.address
+```
+
+修复方法:使用类型之前先定义它,或检查拼写错误。
+
+服务 RPC 的请求和响应类型使用相同方式验证:例如
+`rpc SayHello (HelloRequest) returns (HelloReply);` 这样的 RPC 必须引用已定义的消息类型,
+否则验证器会在 RPC 所在行报告 `Unknown type '...'` 错误。
+
+### 字段编号重复
+
+```
+Error: Duplicate field number 1 in User: name and id
+```
+
+修复方法:在每个消息中分配唯一的字段编号。
+
+## 最佳实践
+
+### 项目结构
+
+```
+project/
+├── fdl/
+│   ├── common.fdl       # Shared types
+│   ├── user.fdl         # User domain
+│   └── order.fdl        # Order domain
+├── src/
+│   └── generated/       # Generated code (git-ignored)
+└── build.gradle
+```
+
+### 版本控制
+
+- **跟踪**:Fory IDL Schema 文件
+- **忽略**:生成的代码(可重新生成)
+
+添加到 `.gitignore`:
+
+```
+# Generated Fory IDL code
+src/generated/
+generated/
+```
+
+### CI/CD 集成
+
+每次构建时都重新生成:
+
+```yaml
+# GitHub Actions example
+steps:
+  - name: Install Fory IDL Compiler
+    run: pip install ./compiler
+
+  - name: Generate Types
+    run: foryc fdl/*.fdl --output src/generated
+
+  - name: Build
+    run: ./gradlew build
+```
+
+### Schema 演进
+
+修改 Schema 时:
+
+1. **切勿重用字段编号** - 应将其标记为保留
+2. **切勿更改类型 ID** - 它们是二进制格式的一部分
+3. **添加新字段** - 使用新的字段编号
+4. **使用 `optional`** - 保持向后兼容性
+
+```protobuf
+message User [id=100] {
+    string id = 1;
+    string name = 2;
+    // Field 3 was removed, don't reuse
+    optional string email = 4;  // New field
+}
+```
+
+## 故障排查
+
+### 找不到命令
+
+```
+foryc: command not found
+```
+
+**解决方法:**确保编译器已安装并位于 PATH 中:
+
+```bash
+pip install -e ./compiler
+# Or add to PATH
+export PATH=$PATH:~/.local/bin
+```
+
+### 权限被拒绝
+
+```
+Permission denied: ./generated
+```
+
+**解决方法:**确保拥有输出目录的写入权限:
+
+```bash
+chmod -R u+w ./generated
+```
+
+### 生成代码中的导入错误
+
+**Java:**确保项目中包含 Fory 依赖:
+
+```xml
+<dependency>
+  <groupId>org.apache.fory</groupId>
+  <artifactId>fory-core</artifactId>
+  <version>${fory.version}</version>
+</dependency>
+```
+
+**Python:**确保已安装 pyfory:
+
+```bash
+pip install pyfory
+```
+
+**Go:**确保 fory 模块可用:
+
+```bash
+go get github.com/apache/fory/go/fory
+```
+
+**Rust:**确保 `Cargo.toml` 中包含 fory crate:
+
+```toml
+[dependencies]
+fory = "x.y.z"
+```
+
+**C++:**确保 Fory 头文件位于 include 路径中。
+
+**Dart:**确保 `pubspec.yaml` 中包含 fory 软件包:
+
+```yaml
+dependencies:
+  fory: ^1.7.0
+```
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/flatbuffers-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/flatbuffers-idl.md
new file mode 100644
index 00000000000..4fa333e8f49
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/flatbuffers-idl.md
@@ -0,0 +1,215 @@
+---
+title: FlatBuffers IDL 支持
+sidebar_position: 6
+id: flatbuffers-idl
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+本页介绍 Apache Fory 如何读取 FlatBuffers Schema(`.fbs`),并将其转换为 Fory IR 以
+生成代码。
+
+## 本页内容
+
+- 何时在 Fory 中使用 FlatBuffers 输入
+- FlatBuffers 到 Fory 的确切映射行为
+- `.fbs` 中支持的 Fory 特有属性
+- 采用说明和生成代码差异
+
+## 为什么使用 Apache Fory
+
+- 符合语言习惯的生成代码:Fory 生成可直接用作领域对象的语言原生类/struct。
+- Java 性能:在 Java 对象序列化工作负载中,Fory 基准测试显示 Fory 比 FlatBuffers 更快。
+- 其他语言:序列化性能通常处于相近范围。
+- 实际反序列化:调用方直接从 FlatBuffers 缓冲区读取时,FlatBuffers 可能更快;但需要
+  原生对象的应用仍需转换,而转换步骤可能主导读取成本。在这些情况下,Fory 端到端
+  反序列化通常更快。
+- 更简单的 API:Fory 直接使用原生对象,因此无需反向构建 table 或手动管理偏移量。
+- 更好的对象图建模:共享引用和循环引用是 Fory 的一等功能。
+
+## 快速决策指南
+
+| 场景                                           | 推荐路径                |
+| ---------------------------------------------- | ----------------------- |
+| 已有 `.fbs` Schema,希望使用 Fory API/代码生成 | 使用 FlatBuffers 输入   |
+| 开始新的 Schema 工作,希望完整控制 Fory 语法   | 使用原生 Fory IDL       |
+| 需要 FlatBuffers 编码兼容性                    | 保留 FlatBuffers 技术栈 |
+| 需要 Fory 对象图语义(`ref`、弱引用等)        | 使用 Fory               |
+
+## FlatBuffers 到 Fory 的映射
+
+### Schema 级规则
+
+- `namespace` 映射到 Fory 包命名空间。
+- `include` 条目映射到 Fory import。
+- `table` 转换为 `evolving=true`。
+- `struct` 转换为 `evolving=false`。
+- `root_type` 会被解析,但 Fory 代码生成会忽略它。
+- `file_identifier` 和 `file_extension` 会被解析,但 Fory 代码生成不会使用它们。
+
+### 字段编号
+
+FlatBuffers 字段没有显式字段 ID。Fory 按源代码声明顺序分配字段编号,从 `1` 开始。
+
+### 标量类型映射
+
+| FlatBuffers | Fory 类型 |
+| ----------- | --------- |
+| `byte`      | `int8`    |
+| `ubyte`     | `uint8`   |
+| `short`     | `int16`   |
+| `ushort`    | `uint16`  |
+| `int`       | `int32`   |
+| `uint`      | `uint32`  |
+| `long`      | `int64`   |
+| `ulong`     | `uint64`  |
+| `float`     | `float32` |
+| `double`    | `float64` |
+| `bool`      | `bool`    |
+| `string`    | `string`  |
+
+Vector(`[T]`)映射到 Fory list。
+
+### 联合
+
+FlatBuffers 联合映射到 Fory 联合。
+
+- Case ID 按声明顺序分配,从 `1` 开始。
+- Case 名称从类型名称派生,使用 snake_case 字段命名。
+
+**FlatBuffers**
+
+```fbs
+union Payload {
+  Note,
+  Metric
+}
+
+table Container {
+  payload: Payload;
+}
+```
+
+**转换后的 Fory 形式**
+
+```protobuf
+union Payload {
+    Note note = 1;
+    Metric metric = 2;
+}
+
+message Container {
+    Payload payload = 1;
+}
+```
+
+### 服务
+
+FlatBuffers 的 `rpc_service` 定义会转换为 Fory 服务。使用 `--grpc` 时,编译器会为 Java、Python、Go、Rust、C#、Swift、Dart、Scala、Kotlin 和 JavaScript 等受支持的输出生成 gRPC 配套服务代码。JavaScript 浏览器客户端使用 `--grpc-web` 生成。这些代码使用 Fory 序列化请求和响应载荷。
+
+```fbs
+rpc_service SearchService {
+  Lookup(SearchRequest):SearchResponse;
+  StreamLookup(SearchRequest):SearchResponse (streaming: "server");
+}
+```
+
+```bash
+foryc api.fbs --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --grpc
+```
+
+生成的服务代码会导入 grpc API,因此应用在编译或运行这些文件时,必须提供 grpc-java、
+grpc-kotlin、Scala grpc-java API、`grpcio`、grpc-go、Rust `tonic` 和 `bytes`、
+`@grpc/grpc-js`、C# `Grpc.Core.Api` 及服务端/客户端依赖,或 Dart `package:grpc`。
+Python 配套代码默认使用 `grpc.aio`,也可通过 `--grpc-python-mode=sync` 生成同步模式。
+Fory 软件包不会将 gRPC 添加为硬依赖项。对 JavaScript 输出使用 `--grpc-web` 可生成导入
+`grpc-web` 的浏览器客户端。
+
+### 默认值与元数据
+
+- FlatBuffers 默认值会被解析,但不会作为 Fory 默认值应用。
+- 非 Fory 元数据属性会作为通用选项保留在 IR 中,并可由下游工具使用。
+
+## FlatBuffers 中的 Fory 特有属性
+
+FlatBuffers 元数据属性使用 `key:value`。对于 Fory 特有选项,使用 `fory_`
+(或 `fory.`)前缀;解析时会从 `.fbs` 中移除该前缀。
+
+### 支持的字段属性
+
+| FlatBuffers 属性                 | 在 Fory 中的效果                                                 |
+| -------------------------------- | ---------------------------------------------------------------- |
+| `fory_ref:true`                  | 为字段启用引用跟踪                                               |
+| `fory_nullable:true`             | 将字段标记为可选/可空                                            |
+| `fory_weak_ref:true`             | 启用弱引用语义,并隐含 `ref`                                     |
+| `fory_thread_safe_pointer:false` | 对 ref 字段选择 Rust `Rc`/`RcWeak`,而不是默认的 `Arc`/`ArcWeak` |
+
+语义:
+
+- `fory_weak_ref:true` 隐含 `ref`。
+- `fory_thread_safe_pointer` 默认为 `true`,仅在字段跟踪引用时生效,并且不会改变编码格式。
+- 在 Rust 代码生成中,`fory_weak_ref:true` 默认使用 `ArcWeak`,只会切换为
+  `RcWeak`;切换条件是设置 `fory_thread_safe_pointer:false`。
+- 对于 list 字段,`fory_ref:true` 应用于 list 元素。
+
+示例:
+
+```fbs
+table Node {
+  parent: Node (fory_weak_ref: true);
+  children: [Node] (fory_ref: true);
+  local: Node (fory_ref: true, fory_thread_safe_pointer: false);
+}
+```
+
+## 生成代码差异
+
+将 `.fbs` 用作 Fory 输入时,仍会生成常规 Fory 代码,而不是 FlatBuffers `ByteBuffer`
+风格的 API。
+
+- Java、Scala 和 Kotlin:带 Fory 元数据和注册辅助方法的 JVM 模型类型
+- Python:dataclass 加注册辅助方法
+- C++、Go 和 Rust:原生 struct 和 Fory 元数据
+- JavaScript/TypeScript:TypeScript 接口和 Schema 辅助方法
+- C#、Swift 和 Dart:带注册辅助方法的注解或基于宏的模型类型
+
+序列化格式是 Fory 二进制协议,而不是 FlatBuffers 编码格式。
+
+## 使用方式
+
+直接编译 FlatBuffers Schema:
+
+```bash
+foryc schema.fbs --lang java,python --output ./generated
+```
+
+检查转换后的 Schema 语法以进行调试:
+
+```bash
+foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
+```
+
+## 采用说明
+
+1. 保持现有 `namespace` 值稳定,以保持类型注册稳定。
+2. 检查依赖 FlatBuffers 默认字面量的字段,并根据需要在应用代码中设置显式默认值。
+3. 在需要对象图语义的位置添加 `fory_ref`/`fory_weak_ref`。
+4. 替换现有序列化路径之前,使用往返测试验证生成模型的行为。
+
+## 总结
+
+FlatBuffers 输入允许在迁移到 Fory 序列化和代码生成模型时复用现有 `.fbs` Schema。这有助于
+在保留 Schema 投入并使用 Fory 原生对象 API 的同时逐步采用 Fory。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/_category_.json
new file mode 100644
index 00000000000..67ef51834f1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 8,
+  "label": "生成的代码",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/cpp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/cpp.md
new file mode 100644
index 00000000000..1e3df5573eb
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/cpp.md
@@ -0,0 +1,157 @@
+---
+title: C++
+sidebar_position: 5
+id: cpp
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+C++ 输出为每个 Schema 文件生成一个头文件,例如:
+
+- `<cpp_out>/addressbook.h`
+
+## 类型生成
+
+消息生成带类型化访问器和字节辅助方法的 `final` 类:
+
+```cpp
+class Person final {
+ public:
+  class PhoneNumber final {
+   public:
+    const std::string& number() const;
+    std::string* mutable_number();
+    template <class Arg, class... Args>
+    void set_number(Arg&& arg, Args&&... args);
+
+    fory::Result<std::vector<uint8_t>, fory::Error> to_bytes() const;
+    static fory::Result<PhoneNumber, fory::Error> from_bytes(
+        const uint8_t* data, std::size_t size);
+    static fory::Result<PhoneNumber, fory::Error> from_bytes(const std::vector<uint8_t>& data);
+  };
+
+  const std::string& name() const;
+  std::string* mutable_name();
+  template <class Arg, class... Args>
+  void set_name(Arg&& arg, Args&&... args);
+
+  const Animal& pet() const;
+  Animal* mutable_pet();
+};
+```
+
+可选消息字段生成 `has_xxx`、`mutable_xxx` 和 `clear_xxx` API:
+
+```cpp
+class Envelope final {
+ public:
+  bool has_payload() const { return payload_ != nullptr; }
+  const Envelope::Payload& payload() const { return *payload_; }
+  Envelope::Payload* mutable_payload() {
+    if (!payload_) {
+      payload_ = std::make_unique<Envelope::Payload>();
+    }
+    return payload_.get();
+  }
+  void clear_payload() { payload_.reset(); }
+
+ private:
+  std::unique_ptr<Envelope::Payload> payload_;
+};
+```
+
+联合生成 `std::variant` 包装器:
+
+```cpp
+class Animal final {
+ public:
+  enum class AnimalCase : uint32_t {
+    DOG = 1,
+    CAT = 2,
+  };
+
+  static Animal dog(Dog v);
+  static Animal cat(Cat v);
+
+  AnimalCase animal_case() const noexcept;
+  uint32_t animal_case_id() const noexcept;
+
+  bool is_dog() const noexcept;
+  const Dog* as_dog() const noexcept;
+  Dog* as_dog() noexcept;
+  const Dog& dog() const;
+  Dog& dog();
+
+  template <class Visitor>
+  decltype(auto) visit(Visitor&& vis) const;
+
+ private:
+  std::variant<Dog, Cat> value_;
+};
+```
+
+生成的头文件包含用于序列化元数据的 `FORY_UNION`、`FORY_ENUM` 和 `FORY_STRUCT` 宏。
+字段和载荷配置嵌入生成的 `FORY_STRUCT`/`FORY_UNION` 条目中。
+
+## 注册
+
+生成的注册函数:
+
+```cpp
+inline void register_types(fory::serialization::BaseFory& fory) {
+    fory.register_union<Animal>(106);
+    fory.register_enum<Person::PhoneType>(101);
+    fory.register_struct<Person::PhoneNumber>(102);
+    fory.register_struct<Person>(100);
+    fory.register_struct<Dog>(104);
+    fory.register_struct<Cat>(105);
+    fory.register_struct<AddressBook>(103);
+}
+```
+
+对于没有显式 `[id=...]` 的 Schema,生成的注册代码使用计算得到的数字 ID:
+
+```cpp
+fory.register_enum<Status>(1124725126);
+fory.register_union<Wrapper>(1471345060);
+fory.register_struct<Envelope>(3022445236);
+fory.register_union<Envelope::Detail>(1609214087);
+fory.register_struct<Envelope::Payload>(2862577837);
+```
+
+如果设置了 `option enable_auto_type_id = false;`:
+
+```cpp
+fory.register_struct<Config>("myapp.models.Config");
+fory.register_union<Holder>("myapp.models.Holder");
+```
+
+## 使用方式
+
+```cpp
+addressbook::Person person;
+person.set_name("Alice");
+*person.mutable_pet() = addressbook::Animal::dog(addressbook::Dog{});
+
+auto bytes = person.to_bytes();
+auto restored = addressbook::Person::from_bytes(bytes.value());
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,C++ 会生成 `<stem>.service.h`、`<stem>.service.grpc.h` 和 `<stem>.service.grpc.cc`。API 头文件在 `::<namespace>::service` 下包含同步接口和路由常量;绑定头文件包含生成的 `grpc::SerializationTraits` 以及位于 `::<namespace>::service::grpc` 下的客户端和服务端包装器。构建和使用指南请参阅 [C++ gRPC](../../grpc/cpp.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/csharp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/csharp.md
new file mode 100644
index 00000000000..6a80683fc31
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/csharp.md
@@ -0,0 +1,103 @@
+---
+title: C#
+sidebar_position: 7
+id: csharp
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+C# 输出为每个 Schema 生成一个 `.cs` 文件,例如:
+
+- `<csharp_out>/addressbook/Addressbook.cs`
+
+C# 模型文件名使用规范化的 PascalCase 源文件主名(stem)。例如,`service.fdl` 生成
+`Service.cs`,`order-events.fdl` 生成 `OrderEvents.cs`,`123-schema.fdl` 生成
+`Schema123Schema.cs`。
+
+## 类型生成
+
+消息生成带 C# 属性和字节辅助方法的 `[ForyStruct]` 类:
+
+```csharp
+[ForyStruct]
+public sealed partial class Person
+{
+    public string Name { get; set; } = string.Empty;
+    public int Id { get; set; }
+    public List<Person.PhoneNumber> Phones { get; set; } = new();
+    public Animal Pet { get; set; } = null!;
+
+    public byte[] ToBytes() { ... }
+    public static Person FromBytes(byte[] data) { ... }
+}
+```
+
+联合生成 `[ForyUnion]` ADT。`Unknown(UnknownCase)` 是 Fory 提供的向前兼容载体,使用
+`[ForyUnknownCase]` 标记。该标记只选择载体,不会向 Schema case 表添加条目。Schema
+定义的 case 使用非负 `[ForyCase]` ID。如果 case 需要非默认 Schema 编码,生成的
+`[ForyCase]` 会携带 `Type`。已知 case record 名称采用 PascalCase FDL case 名称;需要
+避免名称冲突时,载荷类型生成为限定引用。类型化联合必须至少包含一个非 `Unknown` case。
+
+```csharp
+[ForyUnion]
+public abstract partial record Animal
+{
+    private Animal() {}
+
+    [ForyUnknownCase]
+    public sealed partial record Unknown(UnknownCase Value) : Animal;
+
+    [ForyCase(0)]
+    public sealed partial record Dog(global::addressbook.Dog Value) : Animal;
+
+    [ForyCase(1)]
+    public sealed partial record Cat(global::addressbook.Cat Value) : Animal;
+}
+```
+
+## 模块安装
+
+每个 Schema 都会生成一个模块类,该类先安装导入的模块,再注册本地 Schema 类型:
+
+```csharp
+public static class AddressbookForyModule
+{
+    public static void Install(Fory fory)
+    {
+        fory.Register<addressbook.Animal>((uint)106);
+        fory.Register<addressbook.Person>((uint)100);
+        // ...
+    }
+}
+```
+
+C# 模型文件的基础文件名和模块类都使用规范化的源文件主名。它们不使用
+`csharp_namespace`,也不使用 gRPC 服务名称。例如,`service.fdl` 生成 `Service.cs` 和
+`ServiceForyModule`,而 `order-events.fdl` 生成 `OrderEvents.cs` 和
+`OrderEventsForyModule`。名为 `Greeter` 的 gRPC 服务生成服务配套文件 `GreeterGrpc.cs`;
+它不会更改 Schema 模块名称。要获得 `GreeterForyModule`,请将 Schema 文件命名为
+`greeter.fdl` 或 `Greeter.fdl`。
+
+此源文件规则允许多个 Schema 指向同一个 C# 命名空间而不发生冲突。不会生成从命名空间
+或服务派生的模块别名。
+
+未提供显式类型 ID 时,生成的安装代码使用计算得到的数字 ID(与其他目标行为相同)。
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,C# 为每个服务生成一个 `<ServiceName>Grpc.cs`。其静态服务持有者包含描述符、`<ServiceName>Base`、`<ServiceName>Client` 和两个 `BindService` 重载。托管、客户端、依赖项和流式处理请参阅 [C# gRPC](../../grpc/csharp.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/dart.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/dart.md
new file mode 100644
index 00000000000..7c58d6547dd
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/dart.md
@@ -0,0 +1,190 @@
+---
+title: Dart
+sidebar_position: 10
+id: dart
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+Dart 为每个 Schema 输出两个文件:包含注解类型和 IDL 模块所有者的主 `.dart` 文件,以及包含生成序列化器和元数据的 `.fory.dart` part 文件。
+
+- `<dart_out>/package/package.dart`
+- `<dart_out>/package/package.fory.dart`
+
+## 类型生成
+
+消息生成带 `@ForyStruct` 注解的 `final class` 声明,每个字段都带有 `@ForyField`:
+
+```dart
+@ForyStruct()
+final class Person {
+  Person();
+
+  @ForyField(id: 1)
+  String name = '';
+
+  @ForyField(id: 2, type: Int32Type())
+  int id = 0;
+
+  @ForyField(id: 7)
+  List<Person_PhoneNumber> phones = <Person_PhoneNumber>[];
+
+  @ForyField(id: 8)
+  Animal pet = Animal._empty();
+}
+```
+
+枚举生成 Dart `enum` 声明,并提供 `rawValue` getter 和 `fromRawValue` 工厂:
+
+```dart
+enum Person_PhoneType {
+  mobile,
+  home,
+  work;
+
+  int get rawValue => switch (this) {
+    Person_PhoneType.mobile => 0,
+    Person_PhoneType.home => 1,
+    Person_PhoneType.work => 2,
+  };
+
+  static Person_PhoneType fromRawValue(int value) => switch (value) {
+    0 => Person_PhoneType.mobile,
+    1 => Person_PhoneType.home,
+    2 => Person_PhoneType.work,
+    _ => throw StateError('Unknown Person_PhoneType raw value $value.'),
+  };
+}
+```
+
+联合生成带 `@ForyUnion` 注解的类,其中包含工厂构造函数、case 枚举和自定义序列化器:
+
+```dart
+enum AnimalCase {
+  dog,
+  cat;
+
+  int get id => switch (this) {
+    AnimalCase.dog => 1,
+    AnimalCase.cat => 2,
+  };
+}
+
+@ForyUnion()
+final class Animal {
+  final AnimalCase _case;
+  final Object? _value;
+
+  const Animal._(this._case, this._value);
+
+  factory Animal.dog(Dog value) => Animal._(AnimalCase.dog, value);
+  factory Animal.cat(Cat value) => Animal._(AnimalCase.cat, value);
+
+  bool get isDog => _case == AnimalCase.dog;
+  Dog get dogValue => _value as Dog;
+  // ...
+}
+```
+
+嵌套类型使用扁平下划线命名(例如 `Person_PhoneNumber`、`Person_PhoneType`)。
+
+`list<T>` 字段生成有序集合载体并使用 Fory list 协议。`array<T>` 字段生成一维稠密 bool
+或数值载体,并使用专用稠密数组协议。生成的代码不得仅仅因为某种语言具有优化的类 list
+载体就选择 `array<T>`;Schema 种类来自 IDL。
+
+| IDL Schema          | Dart 生成的载体 | 说明                       |
+| ------------------- | --------------- | -------------------------- |
+| `list<int32>`       | `List<int>`     | List 协议,varint 元素编码 |
+| `list<fixed int32>` | `List<int>`     | List 协议,固定宽度元素段  |
+| `array<bool>`       | `BoolList`      | 每个 bool 一个字节         |
+| `array<int8>`       | `Int8List`      | 稠密有符号字节             |
+| `array<int16>`      | `Int16List`     | 稠密小端 int16             |
+| `array<int32>`      | `Int32List`     | 稠密小端 int32             |
+| `array<int64>`      | `Int64List`     | 稠密小端 int64             |
+| `array<uint8>`      | `Uint8List`     | 稠密无符号字节             |
+| `array<uint16>`     | `Uint16List`    | 稠密小端 uint16            |
+| `array<uint32>`     | `Uint32List`    | 稠密小端 uint32            |
+| `array<uint64>`     | `Uint64List`    | 稠密小端 uint64            |
+| `array<float16>`    | `Float16List`   | 稠密 binary16 存储         |
+| `array<bfloat16>`   | `Bfloat16List`  | 稠密 bfloat16 存储         |
+| `array<float32>`    | `Float32List`   | 稠密小端 float32           |
+| `array<float64>`    | `Float64List`   | 稠密小端 float64           |
+
+使用 `ArrayType(element: BoolType())` 的生成 Dart 字段必须使用 `BoolList`;普通
+`List<bool>` 仍是 `list<bool>` 的生成和手写载体。
+
+list 元素或 map 值的引用跟踪使用容器语法糖注解:
+
+```dart
+@ListField(element: DeclaredType(ref: true))
+@ForyField(id: 3)
+List<Node> children = <Node>[];
+
+@MapField(value: DeclaredType(ref: true))
+@ForyField(id: 2)
+Map<String, Node> byName = <String, Node>{};
+```
+
+## 模块安装
+
+每个生成的 Dart IDL 库都包含根据输入文件命名的模块所有者,例如 `AddressbookForyModule`
+对应 `addressbook.dart`。该模块先安装导入的模块,再使用默认 IDL 身份注册每个本地
+Schema 类型:
+
+```dart
+abstract final class AddressbookForyModule {
+  static void install(Fory fory) {
+    complex_pb.ComplexPbForyModule.install(fory);
+    _registerType(fory, Person);
+    _registerType(fory, Dog);
+  }
+
+  static Fory getFory() { ... }
+
+  static void _registerType(Fory fory, Type type) {
+    if (type == Person) {
+      registerGeneratedStruct(fory, _personForySchema, id: 100, namespace: null, typeName: null);
+      return;
+    }
+    // ... other types
+  }
+}
+```
+
+## 使用方式
+
+```dart
+import 'package:fory/fory.dart';
+import 'generated/addressbook/addressbook.dart';
+
+void main() {
+  final fory = Fory();
+  AddressbookForyModule.install(fory);
+
+  final person = Person()
+    ..name = 'Alice'
+    ..id = 1;
+
+  final bytes = fory.serialize(person);
+  final roundTrip = fory.deserialize<Person>(bytes);
+}
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Dart 为每个 Schema 生成一个 `<stem>_grpc.dart`,其中包含 `<Service>Client` 和 `<Service>ServiceBase`。服务基类会注册自己的方法描述符,因此不会生成单独的 registrar。生成模块命名、Fory 安装和使用方式请参阅 [Dart gRPC](../../grpc/dart.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/go.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/go.md
new file mode 100644
index 00000000000..dab08a9855e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/go.md
@@ -0,0 +1,148 @@
+---
+title: Go
+sidebar_position: 6
+id: go
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+Go 输出路径取决于 Schema 选项和 `--go_out`。
+
+对于 `addressbook.fdl`,配置 `go_package` 后,生成的输出遵循所配置的导入路径/包(例如位于 `--go_out` 根目录下)。
+
+如果没有 `go_package`,输出使用请求的 `--go_out` 目录和从包派生的文件命名。
+
+## 类型生成
+
+嵌套类型默认使用下划线命名(`Person_PhoneType`、`Person_PhoneNumber`):
+
+```go
+type Person_PhoneType int32
+
+const (
+    Person_PhoneTypeMobile Person_PhoneType = 0
+    Person_PhoneTypeHome   Person_PhoneType = 1
+    Person_PhoneTypeWork   Person_PhoneType = 2
+)
+
+type Person_PhoneNumber struct {
+    Number    string           `fory:"id=1"`
+    PhoneType Person_PhoneType `fory:"id=2"`
+}
+```
+
+消息生成带 `fory` tag 和字节辅助方法的 struct:
+
+```go
+type Person struct {
+    Name   string               `fory:"id=1"`
+    Id     int32                `fory:"id=2"`
+    Phones []Person_PhoneNumber `fory:"id=7,type=list"`
+    Pet    Animal               `fory:"id=8"`
+}
+
+func (m *Person) ToBytes() ([]byte, error) { ... }
+func (m *Person) FromBytes(data []byte) error { ... }
+```
+
+联合生成带构造函数、访问器和 visitor API 的类型化 case struct:
+
+```go
+type AnimalCase uint32
+
+type Animal struct {
+    case_ AnimalCase
+    value any
+}
+
+func DogAnimal(v *Dog) Animal { ... }
+func CatAnimal(v *Cat) Animal { ... }
+
+func (u Animal) Case() AnimalCase { ... }
+func (u Animal) AsDog() (*Dog, bool) { ... }
+func (u Animal) Visit(visitor AnimalVisitor) error { ... }
+```
+
+## 注册
+
+生成的注册函数:
+
+```go
+func RegisterTypes(f *fory.Fory) error {
+    if err := f.RegisterUnion(Animal{}, 106, fory.NewUnionSerializer(...)); err != nil {
+        return err
+    }
+    if err := f.RegisterEnum(Person_PhoneType(0), 101); err != nil {
+        return err
+    }
+    if err := f.RegisterStruct(Person_PhoneNumber{}, 102); err != nil {
+        return err
+    }
+    if err := f.RegisterStruct(Person{}, 100); err != nil {
+        return err
+    }
+    return nil
+}
+```
+
+对于没有显式 `[id=...]` 的 Schema,生成的注册代码使用计算得到的数字 ID:
+
+```go
+if err := f.RegisterEnum(Status(0), 1124725126); err != nil { ... }
+if err := f.RegisterUnion(Wrapper{}, 1471345060, fory.NewUnionSerializer(...)); err != nil { ... }
+if err := f.RegisterStruct(Envelope{}, 3022445236); err != nil { ... }
+if err := f.RegisterUnion(Envelope_Detail{}, 1609214087, fory.NewUnionSerializer(...)); err != nil { ... }
+if err := f.RegisterStruct(Envelope_Payload{}, 2862577837); err != nil { ... }
+```
+
+如果设置了 `option enable_auto_type_id = false;`:
+
+```go
+if err := f.RegisterStructByName(Config{}, "myapp.models.Config"); err != nil { ... }
+if err := f.RegisterUnionByName(Holder{}, "myapp.models.Holder", fory.NewUnionSerializer(...)); err != nil { ... }
+```
+
+`go_nested_type_style` 控制嵌套类型命名:
+
+```protobuf
+option go_nested_type_style = "camelcase";
+```
+
+两者都设置时,CLI flag `--go_nested_type_style` 会覆盖此 Schema 选项。
+
+## 使用方式
+
+```go
+person := &Person{
+    Name: "Alice",
+    Pet:  DogAnimal(&Dog{Name: "Rex"}),
+}
+
+data, err := person.ToBytes()
+if err != nil {
+    panic(err)
+}
+var restored Person
+if err := restored.FromBytes(data); err != nil {
+    panic(err)
+}
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Go 生成 `<module>_grpc.go`,其中包含生成的 `CodecV2`、客户端和服务端接口、流类型、描述符及注册辅助方法。codec 配置和使用方式请参阅 [Go gRPC](../../grpc/go.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/index.md
new file mode 100644
index 00000000000..1af56c7e1b0
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/index.md
@@ -0,0 +1,175 @@
+---
+title: 概述
+sidebar_position: 1
+id: index
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+本文档介绍各目标语言生成的代码。
+
+Fory IDL 生成的类型遵循宿主语言习惯,可以直接用作领域对象。根据目标语言,生成的类型还包含 `to/from bytes` 辅助方法以及 Schema 模块或注册辅助方法。
+
+生成的 Schema 模块根据 Schema 源文件命名,而不是根据包或命名空间命名。对于在语言
+包或命名空间中直接公开模块的目标,`AddressbookForyModule` 或
+`ComplexPbForyModule` 等名称允许多个 IDL 文件指向同一个包或命名空间,而不会生成
+冲突的 `ForyModule` 类型。
+
+## 参考 Schema
+
+以下示例使用两个真实 Schema:
+
+1. `addressbook.fdl`(显式类型 ID)
+2. `auto_id.fdl`(无显式类型 ID)
+
+### `addressbook.fdl` 摘录
+
+```protobuf
+package addressbook;
+
+option go_package = "github.com/myorg/myrepo/gen/addressbook;addressbook";
+
+message Person [id=100] {
+    string name = 1;
+    int32 id = 2;
+
+    enum PhoneType [id=101] {
+        PHONE_TYPE_MOBILE = 0;
+        PHONE_TYPE_HOME = 1;
+        PHONE_TYPE_WORK = 2;
+    }
+
+    message PhoneNumber [id=102] {
+        string number = 1;
+        PhoneType phone_type = 2;
+    }
+
+    list<PhoneNumber> phones = 7;
+    Animal pet = 8;
+}
+
+message Dog [id=104] {
+    string name = 1;
+    int32 bark_volume = 2;
+}
+
+message Cat [id=105] {
+    string name = 1;
+    int32 lives = 2;
+}
+
+union Animal [id=106] {
+    Dog dog = 1;
+    Cat cat = 2;
+}
+
+message AddressBook [id=103] {
+    list<Person> people = 1;
+    map<string, Person> people_by_name = 2;
+}
+```
+
+### `auto_id.fdl` 摘录
+
+```protobuf
+package auto_id;
+
+enum Status {
+    UNKNOWN = 0;
+    OK = 1;
+}
+
+message Envelope {
+    string id = 1;
+
+    message Payload {
+        int32 value = 1;
+    }
+
+    union Detail {
+        Payload payload = 1;
+        string note = 2;
+    }
+
+    Payload payload = 2;
+    Detail detail = 3;
+    Status status = 4;
+}
+
+union Wrapper {
+    Envelope envelope = 1;
+    string raw = 2;
+}
+```
+
+## 跨语言说明
+
+### 类型 ID 行为
+
+- 生成的模块安装或注册辅助方法直接使用显式 `[id=...]` 值。
+- 省略类型 ID 时,生成的代码使用计算得到的数字 ID(参见 `auto_id.*` 输出)。
+- 如果设置了 `option enable_auto_type_id = false;`,生成的模块安装或注册辅助方法会使用基于名称的 API,而不是数字 ID。
+
+### 嵌套类型形式
+
+| 语言                  | 嵌套类型形式                 |
+| --------------------- | ---------------------------- |
+| Java                  | `Person.PhoneNumber`         |
+| Python                | `Person.PhoneNumber`         |
+| Rust                  | `person::PhoneNumber`        |
+| C++                   | `Person::PhoneNumber`        |
+| Go                    | `Person_PhoneNumber`(默认) |
+| C#                    | `Person.PhoneNumber`         |
+| JavaScript/TypeScript | `Person.PhoneNumber`         |
+| Swift                 | `Person.PhoneNumber`         |
+| Dart                  | `Person_PhoneNumber`         |
+| Kotlin                | `PersonPhoneNumber`          |
+| Scala                 | `Person.PhoneNumber`         |
+
+### 字节辅助方法命名
+
+| 语言                  | 辅助方法                    |
+| --------------------- | --------------------------- |
+| Java                  | `toBytes` / `fromBytes`     |
+| Kotlin                | `toBytes` / `fromBytes`     |
+| Scala                 | `toBytes` / `fromBytes`     |
+| Python                | `to_bytes` / `from_bytes`   |
+| Rust                  | `to_bytes` / `from_bytes`   |
+| C++                   | `to_bytes` / `from_bytes`   |
+| Go                    | `ToBytes` / `FromBytes`     |
+| C#                    | `ToBytes` / `FromBytes`     |
+| JavaScript/TypeScript | (通过 `fory.serialize()`) |
+| Swift                 | `toBytes` / `fromBytes`     |
+| Dart                  | (通过 `fory.serialize()`) |
+
+## 语言参考
+
+请选择目标语言对应的生成代码参考。生成的模型仍是普通的语言原生类型,并使用该语言支持的
+Fory 序列化 API。
+
+| 语言                  | 生成代码参考                           |
+| --------------------- | -------------------------------------- |
+| Java                  | [Java](java.md)                        |
+| Python                | [Python](python.md)                    |
+| C++                   | [C++](cpp.md)                          |
+| Go                    | [Go](go.md)                            |
+| Rust                  | [Rust](rust.md)                        |
+| JavaScript/TypeScript | [JavaScript/TypeScript](javascript.md) |
+| C#                    | [C#](csharp.md)                        |
+| Swift                 | [Swift](swift.md)                      |
+| Dart                  | [Dart](dart.md)                        |
+| Scala                 | [Scala](scala.md)                      |
+| Kotlin                | [Kotlin](kotlin.md)                    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/java.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/java.md
new file mode 100644
index 00000000000..df05824ae3b
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/java.md
@@ -0,0 +1,149 @@
+---
+title: Java
+sidebar_position: 2
+id: java
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+对于 `package addressbook`,Java 输出生成在:
+
+- `<java_out>/addressbook/`
+- 类型文件:`AddressBook.java`、`Person.java`、`Dog.java`、`Cat.java`、`Animal.java`
+- Schema 模块:`AddressbookForyModule.java`
+
+对于没有 Java 包的 Schema,Schema 模块名称从源文件主名(stem)派生,例如 `main.fdl`
+生成 `MainForyModule.java`。Java 导入图不能混用默认包 Schema 和命名 Java 包。
+
+## 类型生成
+
+消息生成带 `@ForyField`、默认构造函数、getter/setter 和字节辅助方法的 Java 类:
+
+```java
+public class Person {
+    public static enum PhoneType {
+        MOBILE,
+        HOME,
+        WORK;
+    }
+
+    public static class PhoneNumber {
+        @ForyField(id = 1)
+        private String number;
+
+        @ForyField(id = 2)
+        private PhoneType phoneType;
+
+        public byte[] toBytes() { ... }
+        public static PhoneNumber fromBytes(byte[] bytes) { ... }
+    }
+
+    @ForyField(id = 1)
+    private String name;
+
+    @ForyField(id = 8)
+    private Animal pet;
+
+    public byte[] toBytes() { ... }
+    public static Person fromBytes(byte[] bytes) { ... }
+}
+```
+
+带 `evolving=false` 的消息使用 Java 固定 Schema struct 编码生成。
+
+联合生成扩展 `org.apache.fory.type.union.Union` 的类:
+
+```java
+public final class Animal extends Union {
+    public enum AnimalCase {
+        DOG(1),
+        CAT(2);
+        public final int id;
+        AnimalCase(int id) { this.id = id; }
+    }
+
+    public static Animal ofDog(Dog v) { ... }
+    public AnimalCase getAnimalCase() { ... }
+    public int getAnimalCaseId() { ... }
+
+    public boolean hasDog() { ... }
+    public Dog getDog() { ... }
+    public void setDog(Dog v) { ... }
+}
+```
+
+## Schema 模块
+
+每个 JVM Schema 都会生成一个 `ForyModule`。导入的 Schema 模块通过
+`fory.register(...)` 安装,因此共享导入由 Fory 实例去重。
+
+```java
+public final class AddressbookForyModule implements org.apache.fory.ForyModule {
+  public static final AddressbookForyModule INSTANCE = new AddressbookForyModule();
+
+  static ThreadSafeFory getFory() { ... }
+
+  @Override
+  public void install(Fory fory) {
+    org.apache.fory.resolver.TypeResolver resolver = fory.getTypeResolver();
+    resolver.registerUnion(Animal.class, 106L, new org.apache.fory.serializer.UnionSerializer(resolver, Animal.class));
+    resolver.register(Person.class, 100L);
+    resolver.register(Person.PhoneType.class, 101L);
+    resolver.register(Person.PhoneNumber.class, 102L);
+    resolver.register(Dog.class, 104L);
+    resolver.register(Cat.class, 105L);
+    resolver.register(AddressBook.class, 103L);
+  }
+}
+```
+
+对于没有显式 `[id=...]` 的 Schema,生成的注册代码使用计算得到的数字 ID(例如来自 `auto_id.fdl`):
+
+```java
+resolver.register(Status.class, 1124725126L);
+resolver.registerUnion(Wrapper.class, 1471345060L, new org.apache.fory.serializer.UnionSerializer(resolver, Wrapper.class));
+resolver.register(Envelope.class, 3022445236L);
+resolver.registerUnion(Envelope.Detail.class, 1609214087L, new org.apache.fory.serializer.UnionSerializer(resolver, Envelope.Detail.class));
+resolver.register(Envelope.Payload.class, 2862577837L);
+```
+
+如果设置了 `option enable_auto_type_id = false;`,注册使用符号名称:
+
+```java
+resolver.register(Config.class, "myapp.models", "Config");
+resolver.registerUnion(
+    Holder.class,
+    "myapp.models",
+    "Holder",
+    new org.apache.fory.serializer.UnionSerializer(resolver, Holder.class));
+```
+
+## 使用方式
+
+```java
+Person person = new Person();
+person.setName("Alice");
+person.setPet(Animal.ofDog(new Dog()));
+
+byte[] data = person.toBytes();
+Person restored = Person.fromBytes(data);
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Java 为每个服务生成一个 `<ServiceName>Grpc.java`。它公开 `SERVICE_NAME`、服务和方法描述符、`<ServiceName>ImplBase`,以及异步、阻塞和 future stub 工厂。依赖项以及服务端、客户端和流式用法请参阅 [Java gRPC](../../grpc/java.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/javascript.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/javascript.md
new file mode 100644
index 00000000000..3bc6e6520bd
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/javascript.md
@@ -0,0 +1,93 @@
+---
+title: JavaScript/TypeScript
+sidebar_position: 8
+id: javascript
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+JavaScript/TypeScript 输出为每个 Schema 生成一个 `.ts` 文件,例如:
+
+- `<javascript_out>/addressbook.ts`
+
+当 Schema 包含服务时,JavaScript 还可以生成服务配套代码:
+
+- `<javascript_out>/addressbook_grpc.ts`(使用 `--grpc` 生成)
+- `<javascript_out>/addressbook_grpc_web.ts`(使用 `--grpc-web` 生成)
+
+## 类型生成
+
+消息生成字段名称为 camelCase 的 `export interface` 声明:
+
+```typescript
+export interface Person {
+  name: string;
+  id: number;
+  phones: PhoneNumber[];
+  pet?: Animal | null;
+}
+```
+
+枚举生成 `export enum` 声明:
+
+```typescript
+export enum PhoneType {
+  MOBILE = 0,
+  HOME = 1,
+  WORK = 2,
+}
+```
+
+联合生成带 case 枚举的可辨识联合:
+
+```typescript
+export enum AnimalCase {
+  DOG = 1,
+  CAT = 2,
+}
+
+export type Animal =
+  { case: AnimalCase.DOG; value: Dog } | { case: AnimalCase.CAT; value: Cat };
+```
+
+## Schema 辅助方法
+
+每个生成的模型文件都会导出用于自定义 `Fory` 实例的注册辅助方法和根序列化辅助方法。
+公共 API 如下:
+
+```typescript
+import type Fory, { Serializer } from "@apache-fory/core";
+
+export function registerAddressbookTypes(fory: Fory): {
+  person: {
+    serialize: (value: Person | null) => Uint8Array;
+    deserialize: (bytes: Uint8Array) => Person;
+    serializer: Serializer;
+  };
+};
+export const serializePerson: (value: Person | null) => Uint8Array;
+export const deserializePerson: (bytes: Uint8Array) => Person;
+```
+
+导入的 Schema 模块由 `registerXxxTypes(fory)` 自动注册。生成的默认序列化路径请使用
+`serializeX` 和 `deserializeX`。当应用自行管理实例时,调用
+`registerXxxTypes(fory)` 并传入应用的 `Fory` 实例。生成的 gRPC 配套代码会自动导入生成的辅助方法。
+
+## gRPC 服务配套代码
+
+`--grpc` 生成 `<module>_grpc.ts`,其中包含服务和路径常量、handler 接口、服务定义和注册辅助方法,以及 `<Service>Client` 类和 `create<Service>Client` 工厂。`--grpc-web` 生成 `<module>_grpc_web.ts`,其中包含回调客户端以及一元 RPC 的 promise 客户端;两种客户端类及其工厂函数都会导出。Node.js 和浏览器用法请参阅 [JavaScript gRPC](../../grpc/javascript.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/kotlin.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/kotlin.md
new file mode 100644
index 00000000000..dfba66192e6
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/kotlin.md
@@ -0,0 +1,147 @@
+---
+title: Kotlin
+sidebar_position: 11
+id: kotlin
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+Kotlin 目标只生成 Kotlin 源代码。编译器不会生成 Java 文件。
+
+## 输出布局
+
+对于源文件 `addressbook.fdl`,当它包含 `package addressbook` 时,Kotlin 输出生成在:
+
+- `<kotlin_out>/addressbook/`
+- 类型文件:`AddressBook.kt`、`Person.kt`、`Dog.kt`、`Cat.kt`、`Animal.kt`
+- Schema 模块:`AddressbookForyModule.kt`
+
+Schema 模块名称从源文件主名(stem)派生。同一 Kotlin 包中的 Schema 需要不同的生成文件名;
+写入文件之前会拒绝重复的生成 Kotlin 文件路径。
+
+如果存在 `option kotlin_package = "...";`,输出路径和 Kotlin 包使用该选项。否则
+Kotlin 使用 FDL 包。Kotlin 导入图不能混用默认包 Schema 和命名 Kotlin 包。
+注册仍使用 FDL 包,以保持跨语言类型名称稳定。
+
+## 类型生成
+
+消息默认生成 Kotlin `data class` 声明:
+
+```kotlin
+@ForyStruct
+public data class Person(
+  @field:ForyField(id = 1)
+  public val name: String,
+
+  @field:ForyField(id = 7)
+  public val phones: List<PersonPhoneNumber>,
+
+  @field:ForyField(id = 8)
+  public val pet: Animal,
+) {
+  public fun toBytes(): ByteArray = AddressbookForyModule.getFory().serialize(this)
+
+  public companion object {
+    public fun fromBytes(bytes: ByteArray): Person =
+      AddressbookForyModule.getFory().deserialize(bytes, Person::class.java)
+  }
+}
+```
+
+参与编译器检测到的构造环的消息会生成普通可变类,使生成的序列化器能够在读取反向引用前
+发布实例:
+
+```kotlin
+@ForyStruct
+public class Node() {
+  @ForyField(id = 1)
+  public var id: String = ""
+
+  @Ref
+  @ForyField(id = 2)
+  public var parent: Node? = null
+}
+```
+
+生成的 Kotlin IDL 源代码使用 Kotlin `?` 表示可空性,而不是 Fory `@Nullable`;为编译器
+检测到的构造环生成的可变类也遵循此规则。
+
+枚举生成具有稳定 Fory 枚举 ID 的 Kotlin 枚举类。联合生成带 `@ForyUnion` 的密封类;Fory
+提供的 `Unknown(UnknownCase)` 载体使用 `@ForyUnknownCase` 标记。该标记只选择载体,不会
+向 Schema case 表添加条目。Schema 定义的 case 可以使用 case ID `0..N`,并保存一个
+`value` 属性。类型化联合必须至少包含一个非 `Unknown` case。
+
+```kotlin
+package addressbook
+
+import org.apache.fory.annotation.ForyCase
+import org.apache.fory.annotation.ForyUnion
+import org.apache.fory.annotation.ForyUnknownCase
+import org.apache.fory.type.union.UnknownCase
+
+@ForyUnion
+public sealed class Animal {
+  @ForyUnknownCase
+  public data class Unknown(public val value: UnknownCase) : Animal()
+
+  @ForyCase(id = 0)
+  public data class Dog(public val value: addressbook.Dog) : Animal()
+}
+```
+
+当 Schema case 名称与载荷类型具有相同简单名称时,带包的 Kotlin 输出会保留 Schema
+case 名称并限定载荷类型。如果目标输出模式无法为冲突表达合法限定名,编译器会在生成的
+case 类名后追加 `Case`。
+
+Kotlin `int32`、`int64`、`uint32` 和 `uint64` 字段默认使用 xlang varint 编码,因此生成的
+Kotlin 不会为默认情况生成 `@VarInt`。只有 Schema 请求相应非默认编码时,才生成
+`@Fixed` 或 `@Tagged`。`duration` 映射到 `kotlin.time.Duration`,编码时会拒绝无限
+duration。稠密 `array<float16>` 和 `array<bfloat16>` 使用 Java 核心 `Float16Array` 和
+`BFloat16Array` 载体。生成的 Kotlin IDL 使用 `@ArrayType ByteArray` 表示 `array<int8>`,
+包括嵌套位置。
+
+## Schema 模块
+
+生成的 Schema 模块注册 Schema 类型,并根据目标类名解析 KSP 生成的序列化器。包拥有
+的辅助 Fory 实例使用已安装 Schema 模块的 `ForyKotlin.builder().withXlang(true)`,因此
+消息 `toBytes`/`fromBytes` 辅助方法无需调用方管理 Fory 设置即可工作。对于
+`addressbook.fdl`:
+
+```kotlin
+public object AddressbookForyModule : ForyModule {
+  private val fory: ThreadSafeFory by lazy {
+    ForyKotlin.builder()
+      .withXlang(true)
+      .withRefTracking(true)
+      .withModule(this)
+      .buildThreadSafeFory()
+  }
+
+  internal fun getFory(): ThreadSafeFory = fory
+
+  override fun install(fory: Fory) {
+    KotlinSerializers.registerType(fory, Person::class.java, 100L)
+    KotlinSerializers.registerSerializer(fory, Person::class.java)
+    KotlinSerializers.registerUnion(fory, Animal::class.java, 106L)
+  }
+}
+```
+
+`registerUnion` 会发现生成的 `<Target>_ForySerializer`;调用方无需传入序列化器实例。
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Kotlin 为每个服务生成一个 `<ServiceName>GrpcKt.kt`,而不是 Java 配套代码。生成的对象公开 `SERVICE_NAME`、服务和方法描述符、`<ServiceName>CoroutineImplBase` 和 `<ServiceName>CoroutineStub`。依赖项、KSP 设置以及协程和 `Flow` 用法请参阅 [Kotlin gRPC](../../grpc/kotlin.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/python.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/python.md
new file mode 100644
index 00000000000..441e2dbdbdd
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/python.md
@@ -0,0 +1,120 @@
+---
+title: Python
+sidebar_position: 3
+id: python
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+Python 输出为每个 Schema 文件生成一个模块,例如:
+
+- `<python_out>/addressbook.py`
+
+## 类型生成
+
+联合生成 case 枚举和带类型化辅助方法的 `Union` 子类:
+
+```python
+class AnimalCase(Enum):
+    DOG = 1
+    CAT = 2
+
+class Animal(Union):
+    @classmethod
+    def dog(cls, v: Dog) -> "Animal": ...
+
+    def case(self) -> AnimalCase: ...
+    def case_id(self) -> int: ...
+
+    def is_dog(self) -> bool: ...
+    def dog_value(self) -> Dog: ...
+    def set_dog(self, v: Dog) -> None: ...
+```
+
+消息生成 `@pyfory.dataclass` 类型,嵌套类型保持嵌套:
+
+```python
+@pyfory.dataclass
+class Person:
+    class PhoneType(IntEnum):
+        MOBILE = 0
+        HOME = 1
+        WORK = 2
+
+    @pyfory.dataclass
+    class PhoneNumber:
+        number: str = pyfory.field(id=1, default="")
+        phone_type: Person.PhoneType = pyfory.field(id=2, default=None)
+
+    name: str = pyfory.field(id=1, default="")
+    phones: List[Person.PhoneNumber] = pyfory.field(id=7, default_factory=list)
+    pet: Animal = pyfory.field(id=8, default=None)
+
+    def to_bytes(self) -> bytes: ...
+    @classmethod
+    def from_bytes(cls, data: bytes) -> "Person": ...
+```
+
+## 注册
+
+生成的注册函数:
+
+```python
+def register_addressbook_types(fory: pyfory.Fory):
+    fory.register_union(Animal, type_id=106, serializer=AnimalSerializer(fory))
+    fory.register_type(Person, type_id=100)
+    fory.register_type(Person.PhoneType, type_id=101)
+    fory.register_type(Person.PhoneNumber, type_id=102)
+    fory.register_type(Dog, type_id=104)
+    fory.register_type(Cat, type_id=105)
+    fory.register_type(AddressBook, type_id=103)
+```
+
+对于没有显式 `[id=...]` 的 Schema,生成的注册代码使用计算得到的数字 ID:
+
+```python
+fory.register_type(Status, type_id=1124725126)
+fory.register_union(Wrapper, type_id=1471345060, serializer=WrapperSerializer(fory))
+fory.register_type(Envelope, type_id=3022445236)
+fory.register_union(Envelope.Detail, type_id=1609214087, serializer=Envelope.DetailSerializer(fory))
+fory.register_type(Envelope.Payload, type_id=2862577837)
+```
+
+如果设置了 `option enable_auto_type_id = false;`:
+
+```python
+fory.register_type(Config, name="myapp.models.Config")
+fory.register_union(
+    Holder,
+    name="myapp.models.Holder",
+    serializer=HolderSerializer(fory),
+)
+```
+
+## 使用方式
+
+```python
+person = Person(name="Alice", pet=Animal.dog(Dog(name="Rex", bark_volume=10)))
+
+data = person.to_bytes()
+restored = Person.from_bytes(data)
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Python 生成包含 stub、servicer 基类和注册函数的 `<module>_grpc.py`。默认使用异步 `grpc.aio`;`--grpc-python-mode=sync` 保持相同文件名和公共名称。依赖项和使用方式请参阅 [Python gRPC](../../grpc/python.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/rust.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/rust.md
new file mode 100644
index 00000000000..19087a1982e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/rust.md
@@ -0,0 +1,150 @@
+---
+title: Rust
+sidebar_position: 4
+id: rust
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+Rust 输出为每个 Schema 生成一个模块文件,例如:
+
+- `<rust_out>/addressbook.rs`
+
+使用 `--grpc` 且 Schema 包含服务时,Rust 还会生成:
+
+- `<rust_out>/addressbook_service.rs`
+- `<rust_out>/addressbook_service_grpc.rs`
+
+## 类型生成
+
+联合映射到带 `#[fory(id = ...)]` Schema case 属性的 Rust 枚举。
+`#[fory(unknown)] Unknown(::fory::UnknownCase)` 标记 Fory 提供的向前兼容载体。该标记
+只选择载体,不会向 Schema case 表添加条目;Schema case 仍使用完整的 `0..N` ID 范围。
+生成的类型化联合必须至少包含一个非 `Unknown` case。编译器将第一个声明的非 `Unknown`
+case 标记为 `#[fory(default)]`。当该 case 的载荷实现 Rust 标准 `Default` trait 时,编译器
+还会从该 case 生成标准 `Default` 实现:
+
+```rust
+#[derive(::fory::ForyUnion, Clone, Debug, PartialEq, Eq, Hash)]
+pub enum Animal {
+    #[fory(unknown)]
+    Unknown(::fory::UnknownCase),
+    #[fory(id = 0, default)]
+    Dog(self::Dog),
+    #[fory(id = 1)]
+    Cat(self::Cat),
+}
+
+impl ::std::default::Default for Animal {
+    fn default() -> Self {
+        Self::Dog(<self::Dog as ::std::default::Default>::default())
+    }
+}
+```
+
+如果所选载荷没有实现标准 `Default`,例如 `any` 载荷,则生成的联合没有不会失败的
+`Default` 实现。此模型级默认值独立于 Fory 可失败的反序列化默认值;后者通过相应 codec
+和当前读取上下文重建所选 case。
+
+嵌套类型生成嵌套模块:
+
+```rust
+pub mod person {
+    #[derive(ForyEnum, Debug, Clone, PartialEq, Default)]
+    #[repr(i32)]
+    pub enum PhoneType {
+        #[default]
+        Mobile = 0,
+        Home = 1,
+        Work = 2,
+    }
+
+    #[derive(ForyStruct, Debug, Clone, PartialEq, Default)]
+    pub struct PhoneNumber {
+        #[fory(id = 1)]
+        pub number: String,
+        #[fory(id = 2)]
+        pub phone_type: PhoneType,
+    }
+}
+```
+
+消息派生 `ForyStruct`,并包含 `to_bytes`/`from_bytes` 辅助方法:
+
+```rust
+#[derive(ForyStruct, Debug, Clone, PartialEq, Default)]
+pub struct Person {
+    #[fory(id = 1)]
+    pub name: String,
+    #[fory(id = 7)]
+    pub phones: Vec<person::PhoneNumber>,
+    #[fory(id = 8)]
+    pub pet: Animal,
+}
+```
+
+## 注册
+
+生成的注册函数:
+
+```rust
+pub fn register_types(fory: &mut Fory) -> Result<(), fory::Error> {
+    fory.register_union::<Animal>(106)?;
+    fory.register::<person::PhoneType>(101)?;
+    fory.register::<person::PhoneNumber>(102)?;
+    fory.register::<Person>(100)?;
+    fory.register::<Dog>(104)?;
+    fory.register::<Cat>(105)?;
+    fory.register::<AddressBook>(103)?;
+    Ok(())
+}
+```
+
+对于没有显式 `[id=...]` 的 Schema,生成的注册代码使用计算得到的数字 ID:
+
+```rust
+fory.register::<Status>(1124725126)?;
+fory.register_union::<Wrapper>(1471345060)?;
+fory.register::<Envelope>(3022445236)?;
+fory.register_union::<envelope::Detail>(1609214087)?;
+fory.register::<envelope::Payload>(2862577837)?;
+```
+
+如果设置了 `option enable_auto_type_id = false;`:
+
+```rust
+fory.register_by_name::<Config>("myapp.models.Config")?;
+fory.register_union_by_name::<Holder>("myapp.models.Holder")?;
+```
+
+## 使用方式
+
+```rust
+let person = Person {
+    name: "Alice".into(),
+    pet: Animal::Dog(self::Dog::default()),
+    ..Default::default()
+};
+
+let bytes = person.to_bytes()?;
+let restored = Person::from_bytes(&bytes)?;
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Rust 生成包含异步服务 trait 和路径常量的 `<module>_service.rs`,以及 `<module>_service_grpc.rs`;后者包含 tonic 客户端、服务端、codec 和 `ForyGrpcPayload` 实现,这些实现由模型的 `to_bytes` 和 `from_bytes` 辅助方法支持。依赖项和使用方式请参阅 [Rust gRPC](../../grpc/rust.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/scala.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/scala.md
new file mode 100644
index 00000000000..e1370859175
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/scala.md
@@ -0,0 +1,156 @@
+---
+title: Scala
+sidebar_position: 12
+id: scala
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+Scala 目标只生成 Scala 3 源代码。`fory-scala` 产物仍支持 Scala 2.13 和 Scala 3,但生成的
+IDL 源代码和宏派生需要 Scala 3。
+
+## 输出布局
+
+对于 `package addressbook`,Scala 输出生成在:
+
+- `<scala_out>/addressbook/`
+- 类型文件:`AddressBook.scala`、`Person.scala`、`Dog.scala`、`Cat.scala`、`Animal.scala`
+- Schema 模块:`AddressbookForyModule.scala`
+
+对于没有 Scala 包的 Schema,Schema 模块名称从源文件主名(stem)派生,例如 `main.fdl`
+生成 `MainForyModule.scala`。Scala 导入图不能混用默认包 Schema 和命名 Scala 包。
+
+## 类型生成
+
+不在编译器检测到的构造环中的消息会生成 case class:
+
+```scala
+import org.apache.fory.annotation.{ForyField, ForyStruct}
+import org.apache.fory.scala.ForySerializer
+
+@ForyStruct
+final case class Person(
+  @ForyField(id = 1) name: String,
+  @ForyField(id = 3) email: Option[String],
+  @ForyField(id = 7) phones: List[Person.PhoneNumber],
+  @ForyField(id = 8) pet: Animal
+) derives ForySerializer {
+  def toBytes(): Array[Byte] =
+    AddressbookForyModule.getFory.serialize(this)
+}
+
+object Person {
+  def fromBytes(bytes: Array[Byte]): Person =
+    AddressbookForyModule.getFory.deserialize(bytes).asInstanceOf[Person]
+}
+```
+
+循环构造环中的消息会生成具有可变序列化字段的普通类,使读取代码可以在读取反向引用前
+注册对象:
+
+```scala
+import org.apache.fory.annotation.{ForyField, ForyStruct, Ref}
+import org.apache.fory.scala.ForySerializer
+
+@ForyStruct
+final class Node() derives ForySerializer {
+  @ForyField(id = 1)
+  var id: String = ""
+
+  @Ref
+  @ForyField(id = 2)
+  var parent: Option[Node] = None
+}
+```
+
+枚举生成具有稳定 Fory ID 的 Scala 3 枚举:
+
+```scala
+import org.apache.fory.annotation.ForyEnumId
+
+enum PhoneType {
+  @ForyEnumId(0)
+  case Mobile
+
+  @ForyEnumId(1)
+  case Home
+
+  @ForyEnumId(2)
+  case Work
+}
+```
+
+联合生成 Scala 3 ADT 枚举。`Unknown(UnknownCase)` 是 Fory 提供的向前兼容载体,使用
+`@ForyUnknownCase` 标记。它不会出现在 Schema case 表中,因为该标记只选择载体,不会
+添加 Schema 条目。Schema 定义的 case 使用非负 `@ForyCase` ID。类型化联合必须至少
+包含一个非 `Unknown` case。
+
+```scala
+package addressbook
+
+import org.apache.fory.annotation.{ForyCase, ForyUnion, ForyUnknownCase}
+import org.apache.fory.scala.ForySerializer
+import org.apache.fory.`type`.union.UnknownCase
+
+@ForyUnion
+enum Animal derives ForySerializer {
+  @ForyUnknownCase
+  case Unknown(value: UnknownCase)
+
+  @ForyCase(id = 0)
+  case Dog(value: _root_.addressbook.Dog)
+
+  @ForyCase(id = 1)
+  case Cat(value: _root_.addressbook.Cat)
+}
+```
+
+当 Schema case 名称与载荷类型具有相同简单名称时,带包的 Scala 输出会保留 Schema
+case 名称并限定载荷类型。如果目标输出模式无法为冲突表达合法限定名,编译器会在生成的
+case 名称后追加 `Case`。
+
+`optional T` 字段生成 `Option[T]`。顶层消息引用在字段或构造函数参数上使用 `@Ref`。
+嵌套元素/值引用使用 `List[Node @Ref]` 等类型使用位置注解。
+
+## Schema 模块
+
+生成的 Schema 模块注册 Schema 序列化器、枚举、struct 和联合。包拥有的辅助 Fory
+实例使用已安装 Schema 模块的 `ForyScala.builder().withXlang(true)`,因此消息
+`toBytes`/`fromBytes` 辅助方法无需调用方管理 Fory 设置即可工作:
+
+```scala
+object AddressbookForyModule extends org.apache.fory.ForyModule {
+  private lazy val fory: ThreadSafeFory =
+    ForyScala.builder()
+      .withXlang(true)
+      .withRefTracking(true)
+      .withModule(this)
+      .buildThreadSafeFory()
+
+  private[addressbook] def getFory: ThreadSafeFory = fory
+
+  override def install(fory: Fory): Unit = {
+    ScalaSerializers.registerEnum(fory, classOf[Person.PhoneType], 101L)
+    ForySerializer.register(fory, classOf[Person.PhoneNumber], 102L)
+    ForySerializer.register(fory, classOf[Person], 100L)
+    ForySerializer.register(fory, classOf[Animal], 106L)
+  }
+}
+```
+
+## gRPC 服务配套代码
+
+使用 `--grpc` 时,Scala 在生成模型的包中为每个本地服务生成一个 `<ServiceName>Grpc.scala` 对象。它公开 `SERVICE_NAME`、服务和方法描述符、`<ServiceName>ImplBase` 和 `<ServiceName>Client`。`RpcFuture`、`RpcIterator`、grpc-java 变体和生命周期指南请参阅 [Scala gRPC](../../grpc/scala.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/swift.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/swift.md
new file mode 100644
index 00000000000..673083d0889
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/generated-code/swift.md
@@ -0,0 +1,108 @@
+---
+title: Swift
+sidebar_position: 9
+id: swift
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+## 输出布局
+
+Swift 输出为每个 Schema 生成一个 `.swift` 文件,例如:
+
+- `<swift_out>/addressbook/addressbook.swift`
+
+## 类型生成
+
+生成器使用拆分模型宏和稳定字段/case ID 创建 Swift 模型。类型化联合必须包含
+`@ForyUnknownCase case unknown(UnknownCase)` 和至少一个非 `unknown` case;
+`unknown(UnknownCase)` 只是 Fory 提供的向前兼容载体。该标记只选择载体,不会向 Schema
+case 表添加条目。
+
+当包/命名空间非空时,命名空间形状由 `swift_namespace_style` 控制:
+
+- `enum`(默认):嵌套枚举命名空间包装器。
+- `flatten`:顶层类型名称使用从包派生的前缀(例如 `Demo_Foo_User`)。
+
+当包/命名空间为空时,不应用枚举包装器或扁平化前缀。
+
+对于使用默认 `enum` 风格的非空包:
+
+```swift
+public enum Addressbook {
+    @ForyUnion
+    public enum Animal {
+        @ForyUnknownCase
+        case unknown(UnknownCase)
+        @ForyCase(id: 0)
+        case dog(Addressbook.Dog)
+        @ForyCase(id: 1)
+        case cat(Addressbook.Cat)
+    }
+
+    @ForyStruct
+    public struct Person: Equatable {
+        @ForyField(id: 1)
+        public var name: String = ""
+        @ForyField(id: 8)
+        public var pet: Addressbook.Animal =
+            Addressbook.Animal.dog(Addressbook.Dog())
+    }
+}
+```
+
+对于使用 `flatten` 风格的非空包:
+
+```swift
+@ForyStruct
+public struct Addressbook_Person: Equatable { ... }
+```
+
+两者都设置时,CLI flag `--swift_namespace_style` 会覆盖 Schema 选项 `swift_namespace_style`。
+
+联合生成为带关联载荷值的 tagged Swift 枚举。递归联合生成为 `indirect` 枚举。第一个已知
+联合 case 必须具有有限、可递归构造的默认值;编译器会拒绝第一个 case 的默认值环,而
+不是生成不会终止的初始化器。带 `ref`/`weak_ref` 字段的消息生成为 `final class` 模型,
+以保留引用语义。直接存储的消息环必须将至少一条环边标记为 `ref`;否则编译器会拒绝
+Schema,因为 Swift 值类型无法表示这种结构。list/map 字段中的固定或 tagged 整数编码
+生成为 Swift 字段类型提示,例如 `@ListField(element: .encoding(.fixed))` 或
+`@MapField(value: .encoding(.tagged))`。对于非空固定宽度整数 list 元素,Swift 将字段
+分类为对应的 Fory 基本类型 packed-array 类型;固定宽度整数 set 仍为 Fory set。
+
+## 模块安装
+
+每个 Schema 都包含一个具有传递导入安装能力的 `ForyModule` 所有者:
+
+```swift
+public enum ForyModule {
+    public static func install(_ fory: Fory) throws {
+        try ComplexPb.ForyModule.install(fory)
+        try fory.register(Addressbook.Person.self, id: 100)
+        try fory.register(Addressbook.Animal.self, id: 106)
+    }
+}
+```
+
+对于非空包和 `flatten` 风格,辅助类型也会添加前缀(例如 `Addressbook_ForyModule`)。
+
+对于没有显式 `[id=...]` 的 Schema,安装代码使用计算得到的数字 ID。如果设置了
+`option enable_auto_type_id = false;`,生成的代码使用基于名称的注册 API。
+
+当所有字段都支持时,生成的模型会声明 `Equatable`,但不会声明 `Sendable`。请以 Swift 5 语言模式编译;Swift 6 严格并发检查会拒绝将它们传递跨越隔离边界。
+
+## gRPC 配套服务代码 {#grpc-service-companions}
+
+使用 `--grpc` 时,Swift 为每个服务生成一个 `<Service>Grpc.swift`,包含 `<Base>Provider`、`<Base>AsyncProvider`、`<Base>AsyncClient` 和 `<Base>Metadata`,其中 `<Base>` 带有包名前缀。依赖、流式调用形式和使用方法见 [Swift gRPC](../../grpc/swift.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/getting-started.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/getting-started.md
new file mode 100644
index 00000000000..5989bfa88f7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/getting-started.md
@@ -0,0 +1,46 @@
+---
+title: 快速开始
+sidebar_position: 1
+id: getting-started
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+本指南介绍 Fory IDL 编译器的安装、使用和集成。
+
+## 安装
+
+### 从源代码安装
+
+```bash
+cd compiler
+pip install -e .
+```
+
+### 验证安装
+
+```bash
+foryc --help
+```
+
+## 第一次生成
+
+```bash
+foryc example.fdl --lang java,python --output ./generated
+```
+
+继续阅读 [CLI 参考](cli.md)以了解前端和输出选项,或阅读
+[构建集成](build-integration.md)以从应用构建中运行代码生成。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/index.md
new file mode 100644
index 00000000000..9d43ce86cd1
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/index.md
@@ -0,0 +1,252 @@
+---
+title: 概述
+sidebar_position: 0
+id: index
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+Fory IDL 是 Apache Fory 的 Schema 定义语言,用于实现类型安全的跨语言序列化。只需定义一次数据结构,即可为 Java、Python、C++、Go、Rust、JavaScript/TypeScript、C#、Swift、Dart、Scala 和 Kotlin 生成原生数据结构代码。Fory IDL 也可描述 RPC 服务;编译器可为 Java、Python、Go、Rust、C++、C#、Swift、Dart、Scala、Kotlin 和 JavaScript 生成使用 Fory 序列化请求与响应载荷的 gRPC 配套服务代码。
+
+## Schema 示例
+
+Fory IDL 提供简单直观的语法来定义跨语言数据结构:
+
+```protobuf
+package example;
+
+enum Status {
+    PENDING = 0;
+    ACTIVE = 1;
+    COMPLETED = 2;
+}
+
+message User {
+    string name = 1;
+    int32 age = 2;
+    optional string email = 3;
+    list<string> tags = 4;
+}
+
+message Item {
+    string sku = 1;
+    int32 quantity = 2;
+}
+
+message Order {
+    ref User customer = 1;
+    list<Item> items = 2;
+    Status status = 3;
+    map<string, int32> metadata = 4;
+}
+
+message Dog [id=104] {
+    string name = 1;
+    int32 bark_volume = 2;
+}
+
+message Cat [id=105] {
+    string name = 1;
+    int32 lives = 2;
+}
+
+union Animal [id=106] {
+    Dog dog = 1;
+    Cat cat = 2;
+}
+
+message LookupRequest [id=107] {
+    string name = 1;
+}
+
+message LookupResponse [id=108] {
+    Animal animal = 1;
+}
+
+service AnimalService {
+    rpc Lookup (LookupRequest) returns (LookupResponse);
+    rpc Classify (Animal) returns (Animal);
+}
+```
+
+使用以下命令生成 Java、Python、Go、Rust、C++、C#、Swift、Dart、Scala、Kotlin 和 JavaScript 模型及 gRPC 配套服务代码:
+
+```bash
+foryc animals.fdl --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --cpp_out=./generated/cpp --csharp_out=./generated/csharp --swift_out=./generated/swift --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --grpc
+```
+
+生成的服务代码使用常规 gRPC API,但请求和响应对象通过 Fory 序列化。各语言的依赖项、
+服务端和客户端设置、流式模式、浏览器支持及互操作性边界请参阅
+[Fory gRPC](../grpc/index.md)。
+
+## 为什么选择 Fory IDL?
+
+### Schema 优先开发
+
+只需在 Fory IDL 中定义一次数据模型,即可为所有语言生成一致且类型安全的代码。这可以确保:
+
+- **类型安全**:在编译时而不是代码运行时发现类型错误
+- **一致性**:所有语言使用相同的字段名称、类型和结构
+- **文档**:Schema 可作为持续更新的文档
+- **演进**:统一管理所有实现中的 Schema 变更
+
+### Fory 原生功能
+
+与通用 IDL 不同,Fory IDL 专为 Fory 序列化设计:
+
+- **引用跟踪**:通过 `ref` 对共享引用和循环引用提供一等支持
+- **可空字段**:通过显式 `optional` 修饰符表示可空类型
+- **类型注册**:内置支持数字 ID 和基于名称的注册
+- **原生代码生成**:生成带 Fory 注解/宏且符合语言习惯的代码
+
+### 较低的集成开销
+
+生成的代码使用原生语言构造:
+
+- Java:带 `@ForyField` 注解的普通 POJO
+- Python:带类型提示的 dataclass
+- Go:带 struct tag 的 struct
+- Rust:带 `#[derive(ForyStruct)]` 的 struct
+- C++:带 `FORY_STRUCT` 宏的 struct
+- C#:`[ForyStruct]` 类、`[ForyEnum]` 枚举、`[ForyUnion]` 联合和注册辅助方法
+- JavaScript/TypeScript:带 Schema 模块辅助方法的接口
+- Swift:带字段/case 元数据和注册辅助方法的 Fory 模型宏
+- Dart:使用 `@ForyStruct` 的类,带有 `@ForyField` 注解和注册辅助方法
+- Scala:带宏派生序列化器的 Scala 3 `case class`、普通类、枚举和 ADT 枚举模型
+- Kotlin:带 KSP 生成序列化器的 Kotlin `data class`、枚举和密封类模型
+
+## 快速开始
+
+### 1. 安装编译器
+
+```bash
+pip install fory-compiler
+```
+
+或者从源代码安装:
+
+```bash
+cd compiler
+pip install -e .
+```
+
+### 2. 编写 Schema
+
+创建 `example.fdl`:
+
+```protobuf
+package example;
+
+message Person {
+    string name = 1;
+    int32 age = 2;
+    optional string email = 3;
+}
+```
+
+### 3. 生成代码
+
+```bash
+# Generate for all languages
+foryc example.fdl --output ./generated
+
+# Generate for specific languages
+foryc example.fdl --lang java,python,cpp,csharp,javascript,swift,dart,scala,kotlin --output ./generated
+```
+
+### 4. 使用生成的代码
+
+**Java:**
+
+```java
+Person person = new Person();
+person.setName("Alice");
+person.setAge(30);
+byte[] data = person.toBytes();
+```
+
+**Python:**
+
+```python
+import pyfory
+from example import Person
+
+person = Person(name="Alice", age=30)
+data = bytes(person) # or `person.to_bytes()`
+```
+
+**JavaScript/TypeScript:**
+
+```ts
+import { deserializePerson, serializePerson } from "./generated/example";
+
+const data = serializePerson({ name: "Alice", age: 30, email: null });
+const person = deserializePerson(data);
+```
+
+## 文档
+
+| 文档                                         | 说明                                     |
+| -------------------------------------------- | ---------------------------------------- |
+| [Fory IDL 语法](schema-idl.md)               | 完整的语言语法和文法                     |
+| [类型系统](schema-idl.md#type-system)        | 基本类型、集合和类型规则                 |
+| [RPC 服务](schema-idl.md#service-definition) | 服务和 RPC 方法语法                      |
+| [编译器 CLI](cli.md)                         | 编译器命令和选项                         |
+| [构建集成](build-integration.md)             | Maven、Gradle、build.rs、CMake、Bazel 等 |
+| [生成的代码](generated-code/index.md)        | 各目标语言的输出格式                     |
+| [Protocol Buffers IDL 支持](protobuf-idl.md) | Protobuf 映射规则和采用指南              |
+| [FlatBuffers IDL 支持](flatbuffers-idl.md)   | FlatBuffers 映射规则和代码生成差异       |
+
+## 核心概念
+
+### 字段修饰符
+
+- **`optional`**:字段可以为 null/None
+- **`ref`**:为共享引用/循环引用启用引用跟踪
+- **`list`**:字段是有序集合(别名:`repeated`)
+- **`array`**:字段是一维稠密 bool 或数值数据
+
+```protobuf
+message Example {
+    optional string nullable = 1;
+    ref Node parent = 2;
+    list<int32> numbers = 3;
+}
+```
+
+### 跨语言兼容性
+
+Fory IDL 类型映射到各语言的原生类型:
+
+| Fory IDL 类型 | Java      | Python         | C++           | Go       | Rust     | JavaScript/TypeScript | C#       | Swift    | Dart     | Scala     | Kotlin    |
+| ------------- | --------- | -------------- | ------------- | -------- | -------- | --------------------- | -------- | -------- | -------- | --------- | --------- |
+| `int32`       | `int`     | `pyfory.Int32` | `int32_t`     | `int32`  | `i32`    | `number`              | `int`    | `Int32`  | `int`    | `Int`     | `Int`     |
+| `string`      | `String`  | `str`          | `std::string` | `string` | `String` | `string`              | `string` | `String` | `String` | `String`  | `String`  |
+| `bool`        | `boolean` | `bool`         | `bool`        | `bool`   | `bool`   | `boolean`             | `bool`   | `Bool`   | `bool`   | `Boolean` | `Boolean` |
+
+完整映射请参阅[类型系统](schema-idl.md#type-system)。
+
+## 最佳实践
+
+1. **使用有意义的包名称**:将相关类型组织在一起
+2. **为性能分配类型 ID**:数字 ID 比基于名称的注册更快
+3. **预留 ID 范围**:为未来新增内容留出空档(例如用户使用 100-199,订单使用 200-299)
+4. **显式使用 `optional`**:在 Schema 中清楚表达可空性
+5. **对共享对象使用 `ref`**:对象共享时启用引用跟踪
+
+## 示例
+
+完整的可运行示例请参阅 [examples](https://github.com/apache/fory/tree/main/compiler/examples) 目录。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/protobuf-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/protobuf-idl.md
new file mode 100644
index 00000000000..743800e47cc
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/protobuf-idl.md
@@ -0,0 +1,348 @@
+---
+title: Protobuf IDL 支持
+sidebar_position: 5
+id: protobuf-idl
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+本页介绍 Apache Fory 如何处理 Protocol Buffers(`.proto`)Schema、protobuf 概念如何
+映射到 Fory,以及如何使用 protobuf 专属的 Fory 扩展选项。
+
+## 本页内容
+
+- 根据使用场景选择 protobuf 或 Fory
+- 采用过程中需要关注的语法和语义差异
+- protobuf 文件中支持的 Fory 扩展选项
+- 从 protobuf 迁移到 Fory 的实用模式
+
+## 快速决策指南
+
+| 场景                                       | 推荐格式         |
+| ------------------------------------------ | ---------------- |
+| 正在构建 gRPC API 并依赖 protobuf 工具     | Protocol Buffers |
+| 需要最佳对象图性能和引用跟踪               | Fory             |
+| 序列化数据中需要循环引用/共享引用          | Fory             |
+| 编码兼容性需要强大的未知字段行为           | Protocol Buffers |
+| 需要原生 struct/类,而不是 protobuf 包装器 | Fory             |
+
+## Protobuf 与 Fory 对比概览
+
+| 方面      | Protocol Buffers      | Fory                                                             |
+| --------- | --------------------- | ---------------------------------------------------------------- |
+| 主要用途  | RPC/消息契约          | 高性能对象序列化                                                 |
+| 编码模型  | 标签-长度-值          | Fory 二进制协议                                                  |
+| 引用跟踪  | 未内置                | 一等功能(`ref`)                                                |
+| 循环引用  | 不支持                | 支持                                                             |
+| 未知字段  | 保留                  | 不保留                                                           |
+| 生成类型  | Protobuf 特有模型类型 | 原生语言构造                                                     |
+| gRPC 生态 | 原生                  | Java/Python/Go/Rust/C#/Dart/Scala/Kotlin/JavaScript 服务代码生成 |
+
+Fory 可以使用 `--grpc` 生成 Java、Python、Go、Rust、C#、Dart、Scala、Kotlin 和 JavaScript
+gRPC 服务配套代码。JavaScript 浏览器客户端使用 `--grpc-web` 生成。这些服务使用常规 gRPC
+传输,但通过 Fory 而不是 protobuf 序列化请求和响应载荷。对于广泛的 gRPC 生态工具、
+Schema 反射和 protobuf 原生 interceptor,protobuf 仍是成熟的默认选择。
+
+## 为什么使用 Apache Fory
+
+- 符合语言习惯的生成代码:Fory IDL 生成可直接用作领域对象的语言原生类和 struct。
+- 更快的序列化:在 Fory 基准测试中,对于对象序列化工作负载,Fory 可比 protobuf 快约 10 倍。
+- 更好的对象图建模:共享引用和循环引用是一等功能,无需应用级 ID 链接变通方案。
+
+基准测试详情请参阅[性能参考](#performance-references)。
+
+## 语法和语义映射
+
+### 包和文件选项
+
+**Protocol Buffers**
+
+```protobuf
+syntax = "proto3";
+package example.models;
+option java_package = "com.example.models";
+option go_package = "example.com/models";
+```
+
+**Fory**
+
+```protobuf
+package example.models;
+```
+
+Fory 使用一个包命名空间进行跨语言注册。代码生成仍可配置语言特有的包位置。
+
+### 消息和枚举定义
+
+**Protocol Buffers**
+
+```protobuf
+message User {
+  string id = 1;
+  string name = 2;
+  optional string email = 3;
+  int32 age = 4;
+  repeated string tags = 5;
+  map<string, string> metadata = 6;
+}
+
+enum Status {
+  STATUS_UNSPECIFIED = 0;
+  STATUS_ACTIVE = 1;
+}
+```
+
+**Fory**
+
+```protobuf
+message User [id=101] {
+    string id = 1;
+    string name = 2;
+    optional string email = 3;
+    int32 age = 4;
+    list<string> tags = 5;
+    map<string, string> metadata = 6;
+}
+
+enum Status [id=102] {
+    UNKNOWN = 0;
+    ACTIVE = 1;
+}
+```
+
+主要差异:
+
+- Fory 可以直接分配稳定的类型 ID(`[id=...]`)。
+- Fory 使用 `list<T>`(`repeated T` 作为别名)。
+- 枚举命名约定由语言决定,而不是 protobuf 前缀风格。
+
+### `oneof` 到 `union`
+
+Protobuf `oneof` 会转换为嵌套 Fory `union`,再加上引用该联合的可选字段。
+
+**Protocol Buffers**
+
+```protobuf
+message Event {
+  oneof payload {
+    string text = 1;
+    int32 number = 2;
+  }
+}
+```
+
+**转换后的 Fory 风格形式**
+
+```protobuf
+message Event {
+    union payload {
+        string text = 1;
+        int32 number = 2;
+    }
+    optional payload payload = 1;
+}
+```
+
+说明:
+
+- 联合 case ID 从原始 `oneof` 字段编号派生。
+- 合成的联合字段使用最小的 `oneof` case 编号。
+
+### 导入和常用类型
+
+支持 Protobuf import。常见 well-known 类型直接映射:
+
+- `google.protobuf.Timestamp` -> `timestamp`
+- `google.protobuf.Duration` -> `duration`
+- `google.protobuf.Any` -> `any`
+
+## 类型映射要点
+
+| Protobuf 类型                            | Fory 映射                  |
+| ---------------------------------------- | -------------------------- |
+| `bool`                                   | `bool`                     |
+| `int32`, `uint32`                        | 变长 32 位整数类型         |
+| `sint32`                                 | zigzag 32 位整数           |
+| `int64`, `uint64`                        | 变长 64 位整数类型         |
+| `sint64`                                 | zigzag 64 位整数           |
+| `fixed32`, `fixed64`                     | 固定宽度无符号整数类型     |
+| `sfixed32`, `sfixed64`                   | 固定宽度有符号整数类型     |
+| `float`, `double`                        | `float32`, `float64`       |
+| `string`, `bytes`                        | `string`, `bytes`          |
+| `repeated T`                             | `list<T>`                  |
+| `map<K, V>`                              | `map<K, V>`                |
+| `optional T`                             | `optional T`               |
+| `oneof`                                  | `union` + 可选联合引用字段 |
+| `int64 [(fory).type = "tagged int64"]`   | `tagged int64` 编码        |
+| `uint64 [(fory).type = "tagged uint64"]` | `tagged uint64` 编码       |
+
+## Fory 扩展选项(Protobuf) {#fory-extension-options-protobuf}
+
+`.proto` 中的 Fory 特有选项使用 `(fory).` 前缀。
+
+```protobuf
+option (fory).enable_auto_type_id = true;
+
+message TreeNode {
+  TreeNode parent = 1 [(fory).weak_ref = true];
+  repeated TreeNode children = 2 [(fory).ref = true];
+}
+```
+
+### 文件级选项
+
+| 选项                                 | 类型   | 说明                                                             |
+| ------------------------------------ | ------ | ---------------------------------------------------------------- |
+| `(fory).use_record_for_java_message` | bool   | 为此文件中的所有消息生成 Java record                             |
+| `(fory).polymorphism`                | bool   | 默认启用多态序列化元数据                                         |
+| `(fory).enable_auto_type_id`         | bool   | 省略时自动生成类型 ID(编译器默认为 true)                       |
+| `(fory).evolving`                    | bool   | 消息的默认 Schema 演进行为                                       |
+| `(fory).go_nested_type_style`        | string | Go 嵌套命名风格:`underscore`(默认)或 `camelcase`              |
+| `(fory).swift_namespace_style`       | string | Swift 命名空间风格:`enum`(默认)或 `flatten`;仅在包非空时适用 |
+
+### 消息和枚举选项
+
+| 选项                         | 适用于        | 类型   | 说明                        |
+| ---------------------------- | ------------- | ------ | --------------------------- |
+| `(fory).id`                  | message, enum | int    | 用于注册的显式类型 ID       |
+| `(fory).alias`               | message, enum | string | 用于自动 ID hash 的替代名称 |
+| `(fory).evolving`            | message       | bool   | 覆盖文件级演进设置          |
+| `(fory).use_record_for_java` | message       | bool   | 为此消息生成 Java record    |
+| `(fory).deprecated`          | message, enum | bool   | 将类型标记为已弃用          |
+| `(fory).namespace`           | message       | string | 覆盖基于包的默认命名空间    |
+
+### 字段级选项 {#field-level-options}
+
+| 选项                         | 类型   | 说明                                                                                 |
+| ---------------------------- | ------ | ------------------------------------------------------------------------------------ |
+| `(fory).ref`                 | bool   | 为此字段启用引用跟踪                                                                 |
+| `(fory).nullable`            | bool   | 将字段视为可空(`optional`)                                                         |
+| `(fory).weak_ref`            | bool   | 生成弱指针语义(C++/Rust 代码生成)                                                  |
+| `(fory).thread_safe_pointer` | bool   | Rust ref 载体选择;默认 `true` 使用 `Arc`/`ArcWeak`,显式 `false` 使用 `Rc`/`RcWeak` |
+| `(fory).deprecated`          | bool   | 将字段标记为已弃用                                                                   |
+| `(fory).type`                | string | 用于 tagged 64 位整数编码的基本类型覆盖                                              |
+
+引用选项行为:
+
+- `weak_ref = true` 隐含引用跟踪。
+- 对于 `repeated` 字段,`(fory).ref = true` 应用于 list 元素。
+- 对于 `map<K, V>` 字段,`(fory).ref = true` 应用于 map 值。
+- `weak_ref` 和 `thread_safe_pointer` 是 C++/Rust 代码生成提示。
+- `thread_safe_pointer` 默认为 `true`;它只改变生成的 Rust 指针载体,不会改变编码格式。
+- 在 Rust 代码生成中,`(fory).weak_ref = true` 默认使用 `ArcWeak`,只会切换为
+  `RcWeak`;切换条件是设置 `(fory).thread_safe_pointer = false`。
+
+### 按形状展示选项示例
+
+```protobuf
+message Graph {
+  Node root = 1 [(fory).ref = true];
+  repeated Node nodes = 2 [(fory).ref = true];
+  map<string, Node> cache = 3 [(fory).ref = true];
+  Node parent = 4 [(fory).weak_ref = true];
+  Node local = 5 [(fory).ref = true, (fory).thread_safe_pointer = false];
+}
+```
+
+## 引用跟踪与 Protobuf ID 对比
+
+Protobuf 本身不保留共享/循环对象图。使用 Fory protobuf 扩展可以选择启用对象图语义。
+
+**不使用 Fory ref 选项(protobuf 风格 ID):**
+
+```protobuf
+message TreeNode {
+  string id = 1;
+  string parent_id = 2;
+  repeated string child_ids = 3;
+}
+```
+
+**使用 Fory ref 选项(对象图):**
+
+```protobuf
+message TreeNode {
+  TreeNode parent = 1 [(fory).weak_ref = true];
+  repeated TreeNode children = 2 [(fory).ref = true];
+}
+```
+
+## 将 Protobuf Schema 迁移到 Fory
+
+### 第 1 步:转换 Schema 语法
+
+- 保持包名称稳定。
+- 将 `repeated T` 替换为 `list<T>`(或保留 `repeated` 别名)。
+- 在需要稳定数字注册的位置添加显式 `[id=...]`。
+
+### 第 2 步:转换 `oneof` 和特殊类型
+
+- `oneof` -> `union` + 可选联合字段。
+- 将 protobuf well-known 类型映射到 Fory 基本类型(`timestamp`、`duration`、`any`)。
+
+### 第 3 步:使用 `ref` 替换 Protobuf 变通方案
+
+对于 protobuf 使用手动 ID 链接表示对象图的位置,改用 Fory `ref` 修饰符(并在需要时
+使用可选的 `ref(weak=true)`)。
+
+### 第 4 步:更新构建/代码生成
+
+使用目标语言的 Fory 编译器调用替换 protobuf 生成步骤。
+
+对于支持的服务输出,添加 `--grpc` 以生成 gRPC 配套代码:
+
+```bash
+foryc api.proto --java_out=./generated/java --python_out=./generated/python --go_out=./generated/go --rust_out=./generated/rust --csharp_out=./generated/csharp --dart_out=./generated/dart --scala_out=./generated/scala --kotlin_out=./generated/kotlin --javascript_out=./generated/javascript --grpc
+```
+
+生成的 Java 服务文件依赖 grpc-java 编译;生成的 Python 服务模块默认使用 `grpc.aio`;
+生成的 Rust 服务文件导入 `tonic` 和 `bytes`;生成的 Go 服务文件导入 grpc-go;生成的
+JavaScript Node.js 服务文件导入 `@grpc/grpc-js`;生成的 C# 服务文件导入
+`Grpc.Core.Api` 类型;生成的 Dart 服务文件导入 `package:grpc`;生成的 Scala 服务文件
+依赖 grpc-java 编译;生成的 Kotlin 服务文件依赖 grpc-java 和 grpc-kotlin 编译。请在应用
+构建中添加这些依赖项;Fory 软件包不会将 gRPC 添加为硬依赖项。请使用
+`--grpc-python-mode=sync` 生成同步 Python `grpcio` 配套代码。对 JavaScript 输出使用 `--grpc-web` 可生成导入
+`grpc-web` 的浏览器客户端。Protobuf `oneof` 字段会转换为请求和响应消息中的 Fory 联合
+字段。直接使用联合作为 RPC 请求或响应类型不属于常规 protobuf RPC 语法。
+
+### 第 5 步:运行兼容性检查
+
+对于分阶段迁移,请并行保留两种格式,并通过集成测试验证载荷级一致性。
+
+## 共存策略
+
+在分阶段迁移期间,可以并行运行 protobuf 和 Fory:
+
+```java
+public byte[] serialize(Object obj, Format format) {
+    if (format == Format.PROTOBUF) {
+        return ((MessageLite) obj).toByteArray();
+    }
+    return fory.serialize(obj);
+}
+```
+
+在服务边界使用转换器,同时优先迁移大量使用对象图的内部路径。
+
+## 性能参考 {#performance-references}
+
+- 基准测试:https://fory.apache.org/docs/benchmarks/
+- 基准测试代码:https://github.com/apache/fory/tree/main/benchmarks
+
+## 总结
+
+主要关注 API 契约和 gRPC 生态集成时,请使用 protobuf。主要关注对象图性能、原生模型和
+引用语义时,请使用 Fory。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/schema-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/schema-idl.md
new file mode 100644
index 00000000000..d77254570a8
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/compiler/schema-idl.md
@@ -0,0 +1,1711 @@
+---
+title: Schema IDL 语法
+sidebar_position: 3
+id: schema-idl
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+本文档提供 Fory IDL 的语法和语义参考。
+
+有关编译器的使用和构建集成,请参阅
+[编译指南](cli.md)。用于 protobuf/FlatBuffers 前端映射
+规则,请参见[协议缓冲区 IDL 支持](protobuf-idl.md) 和
+[FlatBuffers IDL 支持](flatbuffers-idl.md)。
+
+## 文件结构
+
+Fory IDL 文件通常包含:
+
+1. 可选的 package 声明
+2. 可选的文件级选项
+3. 可选的 import 语句
+4. 类型定义(枚举、消息和联合类型)
+5. 可选的服务定义
+
+```protobuf
+// Optional package declaration
+package com.example.models;
+
+// Optional file-level options
+option java_package = "com.example.models";
+
+// Import statements
+import "common/types.fdl";
+
+// Type definitions
+enum Color [id=100] { ... }
+message User [id=101] { ... }
+message OrderRequest [id=102] { ... }
+message Order [id=103] { ... }
+union Event [id=104] { ... }
+
+// Service definitions
+service OrderService {
+    rpc GetOrder (OrderRequest) returns (Order);
+}
+```
+
+## 注释
+
+Fory IDL 支持单行注释和块注释:
+
+```protobuf
+// This is a single-line comment
+
+/*
+ * This is a block comment
+ * that spans multiple lines
+ */
+
+message Example {
+    string name = 1;  // Inline comment
+}
+```
+
+## Package 声明
+
+包声明定义文件中所有类型的命名空间。
+
+```protobuf
+package com.example.models;
+```
+
+您可以选择指定用于自动生成的类型 ID 的包别名:
+
+```protobuf
+package com.example.models alias models_v1;
+```
+
+**规则:**
+
+- 可选但推荐
+- 必须出现在任何类型定义之前
+- 每个文件只有一个包声明
+- 用于基于名称的类型注册
+- 包别名用于自动 ID 哈希
+
+**语言映射:**
+
+| 语言                  | 包的用途               |
+| --------------------- | ---------------------- |
+| Java                  | Java 包                |
+| Python                | 模块名称(点到下划线) |
+| Go                    | 包名称(最后一个组件) |
+| Rust                  | 模块名称(点到下划线) |
+| C++                   | 命名空间(点到 `::`)  |
+| C#                    | 命名空间               |
+| JavaScript/TypeScript | TypeScript 模块名称    |
+| Swift                 | 命名空间包装器或前缀   |
+| Dart                  | 库名称(包段)         |
+| Scala                 | Scala包                |
+| Kotlin                | Kotlin包               |
+
+## 文件级选项
+
+可以在文件级别指定选项来控制特定于语言的代码生成。
+
+### 语法
+
+```protobuf
+option option_name = value;
+```
+
+### Java Package 选项
+
+覆盖生成代码的 Java 包:
+
+```protobuf
+package payment;
+option java_package = "com.mycorp.payment.v1";
+
+message Payment {
+    string id = 1;
+}
+```
+
+**影响:**
+
+- 生成的Java文件将位于`com/mycorp/payment/v1/`目录中
+- Java 包声明将为 `package com.mycorp.payment.v1;`
+- 类型注册仍然使用Fory IDL包(`payment`)以实现跨语言兼容性
+
+### Go Package 选项
+
+指定Go导入路径和包名:
+
+```protobuf
+package payment;
+option go_package = "github.com/mycorp/apis/gen/payment/v1;paymentv1";
+
+message Payment {
+    string id = 1;
+}
+```
+
+**格式:** `"import/path;package_name"` 或 `"import/path"` (最后一段用作包名称)
+
+**影响:**
+
+- 生成的 Go文件将有`package paymentv1`
+- 导入路径可以在其他Go代码中使用
+- 类型注册仍然使用Fory IDL包(`payment`)以实现跨语言兼容性
+
+### C# 命名空间选项
+
+覆盖生成代码的 C# 命名空间:
+
+```protobuf
+package payment;
+option csharp_namespace = "MyCorp.Payment.V1";
+
+message Payment {
+    string id = 1;
+}
+```
+
+**影响:**
+
+- 生成的 C# 文件使用 `namespace MyCorp.Payment.V1;`
+- 输出路径遵循命名空间段(`MyCorp/Payment/V1/` 位于 `--csharp_out` 下)
+- 类型注册仍然使用Fory IDL包(`payment`)以实现跨语言兼容性
+
+### Kotlin Package 选项
+
+覆盖生成源的 Kotlin 包:
+
+```protobuf
+package payment;
+option kotlin_package = "com.mycorp.payment.v1";
+
+message Payment {
+    string id = 1;
+}
+```
+
+**影响:**
+
+- 生成的 Kotlin 文件写入 `com/mycorp/payment/v1/`
+- Kotlin 源使用 `package com.mycorp.payment.v1`
+- 为保持跨语言兼容性,类型注册仍使用 Fory IDL package(`payment`)
+
+如果未设置 `kotlin_package`,Kotlin 将使用 FDL package。Kotlin 导入图不能混用默认 package Schema 与具名 Kotlin package。
+
+### Go 嵌套类型样式选项
+
+控制嵌套消息/枚举/联合类型的 Go 命名:
+
+```protobuf
+package payment;
+option go_nested_type_style = "camelcase";
+
+message Envelope {
+    message Payload {
+        string id = 1;
+    }
+}
+```
+
+**可选值:**
+
+- `underscore`(默认):`Envelope_Payload`
+- `camelcase`:`EnvelopePayload`
+
+如果两者都设置,CLI 标志 `--go_nested_type_style` 会覆盖 Schema 选项。
+
+### Swift 命名空间样式选项
+
+控制包命名空间如何反映在 Swift 生成的类型名称中:
+
+```protobuf
+package payment.v1;
+option swift_namespace_style = "flatten";
+
+message Payment {
+    string id = 1;
+}
+```
+
+**可选值:**
+
+- `enum`(默认):命名空间包装器(例如 `Payment.V1.Payment`)
+- `flatten`:为顶层类型添加 package 前缀(例如 `Payment_V1_Payment`)
+
+**重要:**命名空间包装器/前缀仅在包非空时应用。如果包为空,Swift 会直接为两种样式发出顶级类型。
+
+如果两者都设置,CLI 标志 `--swift_namespace_style` 会覆盖 Schema 选项。
+
+### Rust Chrono 时间类型选项
+
+Rust 生成的代码默认使用 Fory 的轻量级时间载体类型:
+`fory::Date`、`fory::Timestamp` 和 `fory::Duration`。如果生成的 Rust API
+需要公开 chrono 时间类型,请设置 `rust_use_chrono_temporal_types`:
+
+```protobuf
+package payment;
+option rust_use_chrono_temporal_types = true;
+
+message Event {
+    date business_day = 1;
+    timestamp created_at = 2;
+    duration timeout = 3;
+}
+```
+
+启用此选项后,Rust 代码会将 `date` 映射为 `chrono::NaiveDate`,将 `timestamp`
+映射为 `chrono::NaiveDateTime`,并将 `duration` 映射为 `chrono::Duration`。
+编译生成代码的 Rust crate 必须依赖 `chrono`,并启用 Fory 的 `chrono` feature。
+
+### Java 外层类名选项
+
+生成所有类型作为单个外部包装类的内部类:
+
+```protobuf
+package payment;
+option java_outer_classname = "DescriptorProtos";
+
+enum Status {
+    UNKNOWN = 0;
+    ACTIVE = 1;
+}
+
+message Payment {
+    string id = 1;
+    Status status = 2;
+}
+```
+
+**影响:**
+
+- 生成单个文件 `DescriptorProtos.java` 而不是单独的文件
+- 所有枚举和消息成为 `public static` 内部类
+- 外部类是带有私有构造函数的 `public final`
+- 用于将相关类型分组在一起
+
+**生成的结构:**
+
+```java
+public final class DescriptorProtos {
+    private DescriptorProtos() {}
+
+    public static enum Status {
+        UNKNOWN,
+        ACTIVE;
+    }
+
+    public static class Payment {
+        private String id;
+        private Status status;
+        // ...
+    }
+}
+```
+
+**与java_package结合使用:**
+
+```protobuf
+package payment;
+option java_package = "com.example.proto";
+option java_outer_classname = "PaymentProtos";
+
+message Payment {
+    string id = 1;
+}
+```
+
+这会生成 `com/example/proto/PaymentProtos.java`,所有类型都作为内部类。
+
+### Java 多文件选项
+
+控制类型是在单独的文件中生成还是作为内部类生成:
+
+```protobuf
+package payment;
+option java_outer_classname = "PaymentProtos";
+option java_multiple_files = true;
+
+message Payment {
+    string id = 1;
+}
+
+message Receipt {
+    string id = 1;
+}
+```
+
+**行为:**
+
+| `java_outer_classname` | `java_multiple_files` | 结果                         |
+| ---------------------- | --------------------- | ---------------------------- |
+| 未设置                 | 任何                  | 单独的文件(每种类型一个)   |
+| 放                     | `false`(默认)       | 所有类型作为内部类的单个文件 |
+| 放                     | `true`                | 单独的文件(覆盖外部类)     |
+
+**`java_multiple_files = true`的效果:**
+
+- 每个顶级枚举和消息都有自己的 `.java` 文件
+- 覆盖 `java_outer_classname` 行为
+- 当您想要单独的文件但仍为其他目的指定外部类名称时很有用
+
+**没有 java_multiple_files 的示例(默认):**
+
+```protobuf
+option java_outer_classname = "PaymentProtos";
+// Generates: PaymentProtos.java containing Payment and Receipt as inner classes
+```
+
+**java_multiple_files = true 的示例:**
+
+```protobuf
+option java_outer_classname = "PaymentProtos";
+option java_multiple_files = true;
+// Generates: Payment.java, Receipt.java (separate files)
+```
+
+### 多个选项
+
+可以指定多个选项:
+
+```protobuf
+package payment;
+option java_package = "com.mycorp.payment.v1";
+option go_package = "github.com/mycorp/apis/gen/payment/v1;paymentv1";
+option deprecated = true;
+
+message Payment {
+    string id = 1;
+}
+```
+
+### Protobuf 扩展语法
+
+在 `.fdl` 文件中,仅使用 Fory IDL 原生语法(例如,`[id=100]`、`ref`、
+`optional`、`nullable=true`)。
+
+`(fory).` Protobuf 扩展语法仅适用于 `.proto` 文件和 protobuf 前端。
+
+有关 protobuf 扩展选项,请参阅
+[协议缓冲区 IDL 支持](protobuf-idl.md#fory-extension-options-protobuf)。
+
+### 选项优先级
+
+对于特定于语言的包/命名空间:
+
+1. 特定语言的选项(`java_package`、`go_package`、`csharp_namespace`、
+   `kotlin_package`)
+2. Fory IDL package 声明(回退选项)
+
+**示例:**
+
+```protobuf
+package myapp.models;
+option java_package = "com.example.generated";
+```
+
+| 场景                  | 使用的 Java 包          |
+| --------------------- | ----------------------- |
+| 存在 `java_package`   | `com.example.generated` |
+| 不存在 `java_package` | `myapp.models`(回退)  |
+
+### 跨语言类型注册
+
+特定于语言的选项仅影响代码的生成位置,而不影响用于序列化的类型命名空间。这确保了跨语言兼容性:
+
+```protobuf
+package myapp.models;
+option java_package = "com.mycorp.generated";
+option go_package = "github.com/mycorp/gen;genmodels";
+
+message User {
+    string name = 1;
+}
+```
+
+所有语言都将注册 `User`,并使用命名空间 `myapp.models`,从而实现:
+
+- Java序列化数据→Go反序列化
+- Go序列化数据→Java反序列化
+- 任何语言组合均可无缝运行
+
+## Import 语句
+
+Import 语句允许您使用其他 Fory IDL 文件中定义的类型。
+
+### 基本语法
+
+```protobuf
+import "path/to/file.fdl";
+```
+
+### 多个 Import
+
+```protobuf
+import "common/types.fdl";
+import "common/enums.fdl";
+import "models/address.fdl";
+```
+
+### 路径解析
+
+导入路径是相对于导入文件解析的:
+
+```
+project/
+├── common/
+│   └── types.fdl
+├── models/
+│   ├── user.fdl      # import "../common/types.fdl"
+│   └── order.fdl     # import "../common/types.fdl"
+└── main.fdl          # import "common/types.fdl"
+```
+
+**规则:**
+
+- 导入路径是带引号的字符串(双引号或单引号)
+- 路径相对于导入文件的目录进行解析
+- 导入的类型变得可用,就像在当前文件中定义的一样
+- 循环导入被检测并报告为错误
+- 传递导入有效(如果 A 导入 B 并且 B 导入 C,则 A 可以访问 C 的类型)
+
+### 完整示例
+
+**常见/类型.fdl:**
+
+```protobuf
+package common;
+
+enum Status [id=100] {
+    PENDING = 0;
+    ACTIVE = 1;
+    COMPLETED = 2;
+}
+
+message Address [id=101] {
+    string street = 1;
+    string city = 2;
+    string country = 3;
+}
+```
+
+**模型/user.fdl:**
+
+```protobuf
+package models;
+import "../common/types.fdl";
+
+message User [id=200] {
+    string id = 1;
+    string name = 2;
+    Address home_address = 3;  // Uses imported type
+    Status status = 4;          // Uses imported enum
+}
+```
+
+### 不支持的导入语法
+
+**不支持**以下 protobuf 导入修饰符:
+
+```protobuf
+// NOT SUPPORTED - will produce an error
+import public "other.fdl";
+import weak "other.fdl";
+```
+
+**`import public`**:Fory IDL 使用更简单的导入模型。所有导入的类型仅适用于导入文件。不支持重新导出。在需要的地方直接导入每个文件。
+
+**`import weak`**:Fory IDL 要求所有导入在编译时都存在。不支持可选依赖项。
+
+### 导入错误
+
+编译器报告错误:
+
+- **文件未找到**:导入的文件不存在
+- **循环导入**:A 导入 B,B 又导入 A(直接或间接)
+- **解析错误**:导入文件中的语法错误
+- **不支持的语法**:`import public` 或 `import weak`
+
+## 枚举定义
+
+枚举定义一组命名整数常量。
+
+### 基本语法
+
+```protobuf
+enum Status {
+    PENDING = 0;
+    ACTIVE = 1;
+    COMPLETED = 2;
+}
+```
+
+### 使用显式类型 ID
+
+```protobuf
+enum Status [id=100] {
+    PENDING = 0;
+    ACTIVE = 1;
+    COMPLETED = 2;
+}
+```
+
+### 保留值
+
+保留字段编号或名称以防止重复使用:
+
+```protobuf
+enum Status {
+    reserved 2, 15, 9 to 11, 40 to max;  // Reserved numbers
+    reserved "OLD_STATUS", "DEPRECATED"; // Reserved names
+    PENDING = 0;
+    ACTIVE = 1;
+    COMPLETED = 3;
+}
+```
+
+### 枚举类型选项
+
+枚举级选项在枚举名称之后的 `[]` 中内联声明:
+
+```protobuf
+enum Status [deprecated=true] {
+    PENDING = 0;
+    ACTIVE = 1;
+}
+```
+
+FDL 不支持枚举体内的 `option ...;` 语句。
+
+**不支持:**
+
+- **不支持** `allow_alias`。每个枚举值必须有一个唯一的整数。
+
+### 语言映射
+
+| 语言                  | 执行                                   |
+| --------------------- | -------------------------------------- |
+| Java                  | `enum Status { UNKNOWN, ACTIVE, ... }` |
+| Python                | `class Status(IntEnum): UNKNOWN = 0`   |
+| Go                    | `type Status int32` 带常数             |
+| Rust                  | `#[repr(i32)] enum Status { Unknown }` |
+| C++                   | `enum class Status : int32_t { ... }`  |
+| C#                    | `enum Status { Unknown, Active, ... }` |
+| JavaScript/TypeScript | `export enum Status { UNKNOWN, ... }`  |
+| Swift                 | `enum Status` 具有稳定的 ID            |
+| Dart                  | `enum Status { unknown, active, ... }` |
+| Scala                 | Scala 3 `enum Status`                  |
+| Kotlin                | `enum class Status`                    |
+
+### 枚举前缀剥离
+
+当枚举值使用 protobuf 样式前缀(UPPER_SNAKE_CASE 中的枚举名称)时,编译器会自动删除具有范围枚举的语言的前缀:
+
+```protobuf
+// Input with prefix
+enum DeviceTier {
+    DEVICE_TIER_UNKNOWN = 0;
+    DEVICE_TIER_TIER1 = 1;
+    DEVICE_TIER_TIER2 = 2;
+}
+```
+
+**生成的代码:**
+
+| 语言                  | 输出                                      | 风格         |
+| --------------------- | ----------------------------------------- | ------------ |
+| Java                  | `UNKNOWN, TIER1, TIER2`                   | 作用域枚举   |
+| Rust                  | `Unknown, Tier1, Tier2`                   | 作用域枚举   |
+| C++                   | `UNKNOWN, TIER1, TIER2`                   | 作用域枚举   |
+| Python                | `UNKNOWN, TIER1, TIER2`                   | 范围内枚举   |
+| Go                    | `DeviceTierUnknown, DeviceTierTier1, ...` | 无作用域常量 |
+| JavaScript/TypeScript | `UNKNOWN, TIER1, TIER2`                   | 作用域枚举   |
+| C#                    | `Unknown, Tier1, Tier2`                   | 作用域枚举   |
+| Swift                 | `unknown, tier1, tier2`                   | 作用域枚举   |
+| Dart                  | `unknown, tier1, tier2`                   | 作用域枚举   |
+| Scala                 | `Unknown, Tier1, Tier2`                   | 作用域枚举   |
+| Kotlin                | `UNKNOWN, TIER1, TIER2`                   | 作用域枚举   |
+
+**注意:** 仅当其余部分是有效标识符时才会删除前缀。例如,`DEVICE_TIER_1` 保持不变,因为 `1` 不是有效的标识符名称。
+
+**语法:**
+
+```
+enum_def     := 'enum' IDENTIFIER [type_options] '{' enum_body '}'
+type_options := '[' type_option (',' type_option)* ']'
+type_option  := IDENTIFIER '=' option_value
+enum_body    := (reserved_stmt | enum_value)*
+reserved_stmt := 'reserved' reserved_items ';'
+enum_value   := IDENTIFIER '=' INTEGER ';'
+```
+
+**规则:**
+
+- 枚举名称在文件中必须是唯一的
+- 枚举值必须具有显式整数赋值
+- 值整数在枚举中必须是唯一的(无别名)
+- 类型 ID (`[id=100]`) 对于枚举来说是可选的,但建议跨语言使用
+
+**具有所有功能的示例:**
+
+```protobuf
+// HTTP status code categories
+enum HttpCategory [id=200] {
+    reserved 10 to 20;           // Reserved for future use
+    reserved "UNKNOWN";          // Reserved name
+    INFORMATIONAL = 1;
+    SUCCESS = 2;
+    REDIRECTION = 3;
+    CLIENT_ERROR = 4;
+    SERVER_ERROR = 5;
+}
+```
+
+## 消息定义
+
+消息使用类型化字段定义结构化数据类型。
+
+### 基本语法
+
+```protobuf
+message Person {
+    string name = 1;
+    int32 age = 2;
+}
+```
+
+### 使用显式类型 ID
+
+```protobuf
+message Person [id=101] {
+    string name = 1;
+    int32 age = 2;
+}
+```
+
+### 不使用显式类型 ID
+
+```protobuf
+message Person {  // Auto-generated when enable_auto_type_id = true
+    string name = 1;
+    int32 age = 2;
+}
+```
+
+### 语言映射
+
+| 语言                  | 执行                           |
+| --------------------- | ------------------------------ |
+| Java                  | 带有 getter/setter 的 POJO 类  |
+| Python                | `@dataclass`级                 |
+| Go                    | 具有导出字段的结构             |
+| Rust                  | 结构为 `#[derive(ForyStruct)]` |
+| C++                   | 具有 `FORY_STRUCT` 宏的结构    |
+| C#                    | `[ForyStruct]`级               |
+| JavaScript/TypeScript | `export interface`声明         |
+| Swift                 | `@ForyStruct` 结构或类         |
+| Dart                  | `@ForyStruct` `final class`    |
+| Scala                 | Scala 3 `case class` 或类      |
+| Kotlin                | `data class`或类               |
+
+类型 ID 控制消息、联合和枚举的跨语言注册。看
+[类型 ID](#type-ids) 用于自动生成、别名和冲突处理。
+
+### 保留字段
+
+保留字段编号或名称以防止删除字段后重复使用:
+
+```protobuf
+message User {
+    reserved 2, 15, 9 to 11;       // Reserved field numbers
+    reserved "old_field", "temp";  // Reserved field names
+    string id = 1;
+    string name = 3;
+}
+```
+
+### 消息类型选项
+
+消息级选项在消息名称之后的 `[]` 中内联声明:
+
+```protobuf
+message User [deprecated=true] {
+    string id = 1;
+    string name = 2;
+}
+```
+
+FDL 不支持消息或枚举主体内的 `option ...;` 语句。
+
+**语法:**
+
+```
+message_def  := 'message' IDENTIFIER [type_options] '{' message_body '}'
+type_options := '[' type_option (',' type_option)* ']'
+type_option  := IDENTIFIER '=' option_value
+message_body := (reserved_stmt | nested_type | field_def)*
+nested_type  := enum_def | message_def | union_def
+```
+
+**规则:**
+
+- 类型 ID 遵循[类型 ID](#type-ids) 中的规则。
+
+## 嵌套类型
+
+消息可以包含嵌套消息、枚举和联合定义。这对于定义与其父消息密切相关的类型非常有用。
+
+### 嵌套消息
+
+```protobuf
+message SearchResponse {
+    message Result {
+        string url = 1;
+        string title = 2;
+        list<string> snippets = 3;
+    }
+    list<Result> results = 1;
+}
+```
+
+### 嵌套枚举
+
+```protobuf
+message Container {
+    enum Status {
+        STATUS_UNKNOWN = 0;
+        STATUS_ACTIVE = 1;
+        STATUS_INACTIVE = 2;
+    }
+    Status status = 1;
+}
+```
+
+### 限定类型名称
+
+可以使用限定名称 (Parent.Child) 从其他消息引用嵌套类型:
+
+```protobuf
+message SearchResponse {
+    message Result {
+        string url = 1;
+        string title = 2;
+    }
+}
+
+message SearchResultCache {
+    // Reference nested type with qualified name
+    SearchResponse.Result cached_result = 1;
+    list<SearchResponse.Result> all_results = 2;
+}
+```
+
+### 深度嵌套类型
+
+嵌套可以是多层深度:
+
+```protobuf
+message Outer {
+    message Middle {
+        message Inner {
+            string value = 1;
+        }
+        Inner inner = 1;
+    }
+    Middle middle = 1;
+}
+
+message OtherMessage {
+    // Reference deeply nested type
+    Outer.Middle.Inner deep_ref = 1;
+}
+```
+
+### 特定语言的生成
+
+| 语言                  | 嵌套类型生成                                                  |
+| --------------------- | ------------------------------------------------------------- |
+| Java                  | 静态内部类(`SearchResponse.Result`)                         |
+| Python                | 数据类中的嵌套类                                              |
+| Go                    | 带下划线的平面结构(`SearchResponse_Result`,可配置为驼峰式) |
+| Rust                  | 嵌套模块(`search_response::Result`)                         |
+| C++                   | 嵌套类(`SearchResponse::Result`)                            |
+| C#                    | 嵌套类(`SearchResponse.Result`)                             |
+| JavaScript/TypeScript | 单位名称 (`Result`)                                           |
+| Swift                 | 嵌套命名空间包装器或扁平化名称                                |
+| Dart                  | 带下划线的扁平类(`SearchResponse_Result`)                   |
+| Scala                 | 嵌套 companion/object 作用域                                  |
+| Kotlin                | 平面生成的名称                                                |
+
+**注意:**Go 默认使用下划线分隔嵌套名称;设置 `option go_nested_type_style = "camelcase";` 可使用拼接名称。Rust 会为嵌套类型生成嵌套模块。
+
+### 嵌套类型规则
+
+- 嵌套类型名称在其父消息中必须是唯一的
+- 嵌套类型可以有自己的类型 ID
+- 数字类型 ID 必须全局唯一(包括嵌套类型);自动生成和冲突处理请参阅[类型 ID](#type-ids)
+- 在消息中,您可以通过简单名称引用嵌套类型
+- 从外部引用时,使用限定名称(Parent.Child)
+
+## 联合定义
+
+联合类型定义一个值,该值只能包含多个 case 类型中的一个。
+
+### 基本语法
+
+```protobuf
+union Animal [id=106] {
+    Dog dog = 1;
+    Cat cat = 2;
+}
+```
+
+### 在消息中使用联合
+
+```protobuf
+message Person [id=100] {
+    Animal pet = 1;
+    optional Animal favorite_pet = 2;
+}
+```
+
+### 规则
+
+- case ID 必须为非负数,并且在联合类型中唯一
+- 特定语言的未知 case 标记只选择前向兼容载体,不会在 Schema case 表中新增条目
+- case 不能是 `optional` 或 `ref`
+- 联合 case 支持载荷元数据的字段选项,例如标量编码
+  和集合元素元数据
+- Case 类型可以是基本类型、枚举、消息或其他命名类型
+- 联合类型 ID 遵循 [类型 ID](#type-ids) 中的规则。
+
+**语法:**
+
+```
+union_def  := 'union' IDENTIFIER [type_options] '{' union_field* '}'
+union_field := ['repeated'] field_type IDENTIFIER '=' INTEGER [field_options] ';'
+```
+
+## 服务定义 {#service-definition}
+
+服务在 Fory IDL 中定义 RPC 方法契约。服务是可选的:包含服务的 Schema 仍会生成常规数据模型类型;只有在编译器使用 `--grpc` 且输出语言受支持时,才生成 gRPC 服务代码,例如 Java、Python、Go、Rust、C#、Swift、Dart、Scala、Kotlin 和 JavaScript。JavaScript 浏览器 gRPC-Web 客户端使用 `--grpc-web` 生成。
+
+```protobuf
+message GetPetRequest [id=200] {
+    string name = 1;
+}
+
+message PetRecord [id=201] {
+    string name = 1;
+    Animal animal = 2;
+}
+
+service PetDirectory {
+    rpc GetPet (GetPetRequest) returns (PetRecord);
+    rpc Classify (Animal) returns (Animal);
+}
+```
+
+第一个方法使用消息作为请求和响应类型。第二个方法展示 Fory IDL 对直接使用联合类型作为请求和响应类型的支持。
+
+### 流式 RPC
+
+在请求类型、响应类型或两者之前使用 `stream`:
+
+```protobuf
+service PetDirectory {
+    rpc GetPet (GetPetRequest) returns (PetRecord);              // unary
+    rpc WatchPets (GetPetRequest) returns (stream PetRecord);    // server streaming
+    rpc ImportPets (stream PetRecord) returns (PetRecord);       // client streaming
+    rpc ChatPets (stream Animal) returns (stream Animal);        // bidirectional streaming
+}
+```
+
+### RPC 类型规则
+
+- 请求和响应类型必须引用命名消息或联合类型。
+- 枚举、基本类型、集合、Map 和数组不能直接作为 RPC 请求或响应类型。在服务契约中使用这些值时,请将其包装在消息中。
+- 生成的 gRPC 配套代码使用 Fory 序列化每个 RPC 载荷。
+  编译或运行这些配套代码的应用需要自行提供 gRPC
+  依赖项,例如 grpc-java、grpc-kotlin、`grpcio`、grpc-go、Rust `tonic`
+  和 `bytes`、Scala grpc-java API、`@grpc/grpc-js`、`grpc-web`、C#
+  `Grpc.Core.Api` 及服务端或客户端软件包,或 Dart `package:grpc`。Python
+  配套代码默认使用 `grpc.aio`;通过 `--grpc-python-mode=sync` 也可生成同步模式代码。
+
+**语法:**
+
+```
+service_def := 'service' IDENTIFIER '{' rpc_method* '}'
+rpc_method  := 'rpc' IDENTIFIER '(' ['stream'] named_type ')'
+               'returns' '(' ['stream'] named_type ')' ';'
+```
+
+## 字段定义
+
+字段定义消息的属性。
+
+### 基本语法
+
+```protobuf
+field_type field_name = field_number;
+```
+
+### 带修饰符
+
+```protobuf
+optional list<string> tags = 1;  // Nullable list
+list<optional string> tags = 2;  // Elements may be null
+list<ref Node> nodes = 3;        // Elements tracked as references
+```
+
+**语法:**
+
+```
+field_def    := [modifiers] field_type IDENTIFIER '=' INTEGER ';'
+modifiers    := { 'optional' | 'ref' }
+field_type   := primitive_type | named_type | list_type | array_type | map_type
+list_type    := 'list' '<' { 'optional' | 'ref' | scalar_encoding } field_type '>'
+array_type   := 'array' '<' array_element_type '>'
+```
+
+`optional` 位于 `list` 之前时作用于集合字段。不能将 `optional` 直接应用于
+`any`;请使用 `any`、`list<any>` 或 `map<K, any>`,不要使用 `optional any`、
+`list<optional any>` 或 `map<K, optional any>`。`ref` 仅适用于具名 message/union
+字段;对于集合内容,请使用 `list<ref T>` 或 `map<K, ref V>`。`repeated` 可作为
+`list` 的别名。
+
+### 字段修饰符 {#field-modifiers}
+
+#### `optional`
+
+将字段标记为可为空:
+
+```protobuf
+message User {
+    string name = 1;           // Required, non-null
+    optional string email = 2; // Nullable
+}
+```
+
+请勿直接使用 `optional` 或 `[nullable = true]` 修饰 `any`。编译器
+拒绝 `optional any`、`any [nullable = true]`、`list<optional any>` 和
+`map<K, optional any>`;请改用 `any`、`list<any>` 或 `map<K, any>`。
+
+**生成的代码:**
+
+| 语言                  | 非可选             | 选修的                            |
+| --------------------- | ------------------ | --------------------------------- |
+| Java                  | `String name`      | `@Nullable String email`          |
+| Python                | `name: str`        | `name: Optional[str]`             |
+| Go                    | `Name string`      | `Name *string`                    |
+| Rust                  | `name: String`     | `name: Option<String>`            |
+| C++                   | `std::string name` | `std::optional<std::string> name` |
+| C#                    | `string name`      | `string? email`                   |
+| JavaScript/TypeScript | `name: string`     | `name?: string \| null`           |
+| Swift                 | `String name`      | `String? email`                   |
+| Dart                  | `String name`      | `String? email`                   |
+| Scala                 | `name: String`     | `email: Option[String]`           |
+| Kotlin                | `name: String`     | `email: String?`                  |
+
+**默认值:**
+
+| 类型       | 默认值              |
+| ---------- | ------------------- |
+| 非可选类型 | 默认语言            |
+| 可选类型   | `null`/`None`/`nil` |
+
+#### `ref`
+
+启用共享/循环引用的引用跟踪:
+
+```protobuf
+message Node {
+    string value = 1;
+    ref Node parent = 2;     // Can point to shared object
+    list<ref Node> children = 3;
+}
+```
+
+**使用案例:**
+
+- 共享对象(同一对象被多次引用)
+- 循环引用(带有循环的对象图)
+- 具有父指针的树结构
+
+**生成的代码:**
+
+| 语言                  | 不带`ref`      | 配`ref`                                   |
+| --------------------- | -------------- | ----------------------------------------- |
+| Java                  | `Node parent`  | `Node parent`,带 `@Ref`                  |
+| Python                | `parent: Node` | `parent: Node = pyfory.field(ref=True)`   |
+| Go                    | `Parent Node`  | `Parent *Node`,带 `fory:"ref"`           |
+| Rust                  | `parent: Node` | `parent: Arc<Node>`                       |
+| C++                   | `Node parent`  | `std::shared_ptr<Node> parent`            |
+| C#                    | `Node parent`  | 带引用跟踪的 `Node? parent`               |
+| JavaScript/TypeScript | `parent: Node` | `parent: Node`(不区分 ref)              |
+| Swift                 | `Node parent`  | 带引用跟踪的类引用                        |
+| Dart                  | `Node parent`  | `Node parent`,带 `@ForyField(ref: true)` |
+| Scala                 | `parent: Node` | `@Ref parent: Node`                       |
+| Kotlin                | `parent: Node` | `@Ref parent: Node?`                      |
+
+Rust 默认对引用跟踪字段使用 `Arc` 和 `ArcWeak`。设置 `ref(thread_safe=false)` 后,
+生成的 Rust 类型将改用单线程 `Rc` 或 `RcWeak` 载体。该设置只选择 Rust 代码生成
+使用的载体;它不会改变 wire format,也不会使被引用的值本身变为线程安全。
+protobuf 选项语法参见 [Protocol Buffers IDL 支持](protobuf-idl.md#field-level-options)。
+
+Rust 指针载体映射:
+
+| Fory IDL                                        | Rust 类型       |
+| ----------------------------------------------- | --------------- |
+| `ref Node parent`                               | `Arc<Node>`     |
+| `ref(thread_safe=false) Node parent`            | `Rc<Node>`      |
+| `ref(weak=true) Node parent`                    | `ArcWeak<Node>` |
+| `ref(weak=true, thread_safe=false) Node parent` | `RcWeak<Node>`  |
+
+#### `list`
+
+将字段标记为有序集合:
+
+```protobuf
+message Document {
+    list<string> tags = 1;
+    list<User> authors = 2;
+}
+```
+
+**生成的代码:**
+
+| 语言                  | 类型                       |
+| --------------------- | -------------------------- |
+| Java                  | `List<String>`             |
+| Python                | `List[str]`                |
+| Go                    | `[]string`                 |
+| Rust                  | `Vec<String>`              |
+| C++                   | `std::vector<std::string>` |
+| C#                    | `List<string>`             |
+| JavaScript/TypeScript | `string[]`                 |
+| Swift                 | `[String]`                 |
+| Dart                  | `List<String>`             |
+| Scala                 | `List[String]`             |
+| Kotlin                | `List<String>`             |
+
+### 组合修饰符
+
+修饰符可以组合:
+
+```fdl
+message Example {
+    optional list<string> tags = 1;  // Nullable list
+    list<optional string> aliases = 2; // Elements may be null
+    list<ref Node> children = 3;       // Elements tracked as references
+    optional ref User owner = 4;       // Nullable tracked reference
+}
+```
+
+`optional` 位于 `list` 之前时作用于字段/集合。`ref` 不能位于 `list` 或 `map`
+之前;请将 `ref` 放入元素类型或值类型中。`repeated` 可作为 `list` 的别名。
+
+**列表修饰符映射:**
+
+| Fory IDL                | Java                         | Python                | Go                      | Rust                  | C++                                       | Dart                                                          | Scala                  |
+| ----------------------- | ---------------------------- | --------------------- | ----------------------- | --------------------- | ----------------------------------------- | ------------------------------------------------------------- | ---------------------- |
+| `optional list<string>` | `@Nullable List<String>`     | `Optional[List[str]]` | `[]string` + `nullable` | `Option<Vec<String>>` | `std::optional<std::vector<std::string>>` | `List<String>?`                                               | `Option[List[String]]` |
+| `list<optional string>` | `List<String>`(可为空元素) | `List[Optional[str]]` | `[]*string`             | `Vec<Option<String>>` | `std::vector<std::optional<std::string>>` | `List<String?>`                                               | `List[Option[String]]` |
+| `list<ref User>`        | `List<@Ref User>`            | `List[User]`          | `[]*User` + `ref=false` | `Vec<Arc<User>>`      | `std::vector<std::shared_ptr<User>>`      | `List<User>` + `@ListField(element: DeclaredType(ref: true))` | `List[User @Ref]`      |
+
+在 Fory IDL 中使用 `ref(thread_safe=false)`(或
+protobuf中的`[(fory).thread_safe_pointer = false]`)生成`Rc`而不是
+Rust 中的 `Arc`。
+
+## 字段编号
+
+每个字段必须有一个唯一的正整数标识符:
+
+```protobuf
+message Example {
+    string first = 1;
+    string second = 2;
+    string third = 3;
+}
+```
+
+**规则和最佳实践:**
+
+- 消息中的数字必须是唯一的。
+- 数字必须是正整数。
+- 允许有间隙,并且在删除字段时很有用。
+- 优先选择从 `1` 开始的顺序编号。
+- 切勿将已删除的字段编号重复用于其他字段。
+
+## 类型系统 {#type-system}
+
+Fory IDL 为基本类型、命名类型和集合提供统一类型系统。字段修饰符(`optional`、`ref`)控制可空性和
+引用跟踪,而 `list<T>` 和 `array<T>` 用于选择集合 Schema 类型
+(参见[字段修饰符](#field-modifiers))。
+
+本节中的简表列出常见的生成载体。完整的 1.0 语言支持范围(包括 C#、Swift、Dart、Scala 和 Kotlin)请参见
+[xlang 类型映射规范](../specification/xlang_type_mapping.md)。
+
+### 基本类型
+
+| 类型        | 描述                                | 尺寸   |
+| ----------- | ----------------------------------- | ------ |
+| `bool`      | 布尔值                              | 1 字节 |
+| `int8`      | 有符号 8 位整数                     | 1 字节 |
+| `int16`     | 有符号 16 位整数                    | 2 字节 |
+| `int32`     | 有符号 32 位整数,默认为 varint     | 4 字节 |
+| `int64`     | 有符号 64 位整数,默认为 PVL varint | 8 字节 |
+| `uint8`     | 无符号 8 位整数                     | 1字节  |
+| `uint16`    | 无符号 16 位整数                    | 2 字节 |
+| `uint32`    | 无符号 32 位整数,默认为 varint     | 4 字节 |
+| `uint64`    | 无符号 64 位整数,默认为 PVL varint | 8 字节 |
+| `float16`   | IEEE 754 binary16 浮点              | 2 字节 |
+| `bfloat16`  | Brain Floating Point                | 2 字节 |
+| `float32`   | 32 位浮点数                         | 4 字节 |
+| `float64`   | 64 位浮点数                         | 8 字节 |
+| `string`    | UTF-8 字符串                        | 可变   |
+| `bytes`     | 二进制数据                          | 可变   |
+| `date`      | 日历日期                            | 可变   |
+| `timestamp` | 带时区的日期和时间                  | 可变   |
+| `duration`  | 时长                                | 可变   |
+| `decimal`   | 十进制值                            | 可变   |
+| `any`       | 动态值(具体类型)                  | 可变   |
+
+#### 布尔值
+
+| 语言                  | 类型                  | 说明       |
+| --------------------- | --------------------- | ---------- |
+| Java                  | `boolean` / `Boolean` | 基本或装箱 |
+| Python                | `bool`                |            |
+| Go                    | `bool`                |            |
+| Rust                  | `bool`                |            |
+| C++                   | `bool`                |            |
+| JavaScript/TypeScript | `boolean`             |            |
+| Dart                  | `bool`                |            |
+
+#### 整数类型
+
+Fory IDL 提供固定宽度有符号整数(32/64 位整数默认使用变长编码):
+
+| Fory IDL 类型 | 位宽  | 范围              |
+| ------------- | ----- | ----------------- |
+| `int8`        | 8 位  | -128 至 127       |
+| `int16`       | 16 位 | -32,768 至 32,767 |
+| `int32`       | 32 位 | -2^31 至 2^31 - 1 |
+| `int64`       | 64 位 | -2^63 至 2^63 - 1 |
+
+**语言映射(有符号):**
+
+| Fory IDL | Java    | Python         | Go      | Rust  | C++       | JavaScript/TypeScript | Dart    |
+| -------- | ------- | -------------- | ------- | ----- | --------- | --------------------- | ------- |
+| `int8`   | `byte`  | `pyfory.Int8`  | `int8`  | `i8`  | `int8_t`  | `number`              | `int`   |
+| `int16`  | `short` | `pyfory.Int16` | `int16` | `i16` | `int16_t` | `number`              | `int`   |
+| `int32`  | `int`   | `pyfory.Int32` | `int32` | `i32` | `int32_t` | `number`              | `int`   |
+| `int64`  | `long`  | `pyfory.Int64` | `int64` | `i64` | `int64_t` | `bigint \| number`    | `Int64` |
+
+Fory IDL 提供固定宽度无符号整数(32/64 位整数默认使用变长编码):
+
+| Fory IDL | 位宽  | 范围          |
+| -------- | ----- | ------------- |
+| `uint8`  | 8 位  | 0 至 255      |
+| `uint16` | 16 位 | 0 至 65,535   |
+| `uint32` | 32 位 | 0 至 2^32 - 1 |
+| `uint64` | 64 位 | 0 至 2^64 - 1 |
+
+**语言映射(无符号):**
+
+| Fory IDL | Java    | Python          | Go       | Rust  | C++        | JavaScript/TypeScript | Dart     |
+| -------- | ------- | --------------- | -------- | ----- | ---------- | --------------------- | -------- |
+| `uint8`  | `short` | `pyfory.UInt8`  | `uint8`  | `u8`  | `uint8_t`  | `number`              | `int`    |
+| `uint16` | `int`   | `pyfory.UInt16` | `uint16` | `u16` | `uint16_t` | `number`              | `int`    |
+| `uint32` | `long`  | `pyfory.UInt32` | `uint32` | `u32` | `uint32_t` | `number`              | `int`    |
+| `uint64` | `long`  | `pyfory.UInt64` | `uint64` | `u64` | `uint64_t` | `bigint \| number`    | `Uint64` |
+
+#### 整数编码修饰符
+
+对于 32/64 位整数,Fory IDL 默认使用变长编码。需要其他编码格式时,请添加标量编码修饰符:
+
+| 修饰符   | 有效类型                             | 说明             |
+| -------- | ------------------------------------ | ---------------- |
+| `varint` | `int32`、`int64`、`uint32`、`uint64` | 默认值的显式拼写 |
+| `fixed`  | `int32`、`int64`、`uint32`、`uint64` | 固定宽度小端序   |
+| `tagged` | `int64`、`uint64`                    | 标记 64 位编码   |
+
+修饰符是标量类型表达式的一部分,因此也可用于嵌套 list 和 map 位置:
+
+```protobuf
+fixed int32 id = 1;
+list<fixed int32> offsets = 2;
+map<string, tagged uint64> counters = 3;
+```
+
+带下划线的整数编码名称不是 FDL 类型名称。
+
+#### 浮点类型
+
+| Fory IDL 类型 | 位宽  | 精度            |
+| ------------- | ----- | --------------- |
+| `float32`     | 32 位 | 约 7 位数字     |
+| `float64`     | 64 位 | 约 15-16 位数字 |
+
+**语言映射:**
+
+| Fory IDL   | Java       | Python 注解/值              | Go                  | Rust       | C++                | JavaScript/TypeScript | Dart      |
+| ---------- | ---------- | --------------------------- | ------------------- | ---------- | ------------------ | --------------------- | --------- |
+| `float16`  | `Float16`  | `pyfory.Float16` / `float`  | `float16.Float16`   | `Float16`  | `fory::float16_t`  | `number`              | `double`  |
+| `bfloat16` | `BFloat16` | `pyfory.BFloat16` / `float` | `bfloat16.BFloat16` | `BFloat16` | `fory::bfloat16_t` | `number`              | `double`  |
+| `float32`  | `float`    | `pyfory.Float32`            | `float32`           | `f32`      | `float`            | `number`              | `Float32` |
+| `float64`  | `double`   | `pyfory.Float64`            | `float64`           | `f64`      | `double`           | `number`              | `double`  |
+
+#### 字符串类型
+
+| 语言                  | 类型          | 说明         |
+| --------------------- | ------------- | ------------ |
+| Java                  | `String`      | 不可变的     |
+| Python                | `str`         |              |
+| Go                    | `string`      | 不可变的     |
+| Rust                  | `String`      | 拥有,堆分配 |
+| C++                   | `std::string` |              |
+| JavaScript/TypeScript | `string`      |              |
+| Dart                  | `String`      |              |
+
+#### 字节类型
+
+| 语言                  | 类型                   | 说明     |
+| --------------------- | ---------------------- | -------- |
+| Java                  | `byte[]`               |          |
+| Python                | `bytes`                | 不可变的 |
+| Go                    | `[]byte`               |          |
+| Rust                  | `Vec<u8>`              |          |
+| C++                   | `std::vector<uint8_t>` |          |
+| JavaScript/TypeScript | `Uint8Array`           |          |
+| Dart                  | `Uint8List`            |          |
+
+#### 时间类型
+
+##### 日期
+
+| 语言                  | 类型                  | 说明                                                                  |
+| --------------------- | --------------------- | --------------------------------------------------------------------- |
+| Java                  | `java.time.LocalDate` |                                                                       |
+| Python                | `datetime.date`       |                                                                       |
+| Go                    | `time.Time`           | 时间部分被忽略                                                        |
+| Rust                  | `fory::Date`          | 设置 `rust_use_chrono_temporal_types = true` 生成 `chrono::NaiveDate` |
+| C++                   | `fory::Date`          |                                                                       |
+| JavaScript/TypeScript | `Date`                |                                                                       |
+| Dart                  | `LocalDate`           | Fory 封装类型                                                         |
+
+##### 时间戳
+
+| 语言                  | 类型                | 说明                                                                      |
+| --------------------- | ------------------- | ------------------------------------------------------------------------- |
+| Java                  | `java.time.Instant` | 基于 UTC                                                                  |
+| Python                | `datetime.datetime` |                                                                           |
+| Go                    | `time.Time`         |                                                                           |
+| Rust                  | `fory::Timestamp`   | 设置 `rust_use_chrono_temporal_types = true` 生成 `chrono::NaiveDateTime` |
+| C++                   | `fory::Timestamp`   |                                                                           |
+| JavaScript/TypeScript | `Date`              |                                                                           |
+| Dart                  | `Timestamp`         | Fory 封装类型                                                             |
+
+##### Duration
+
+| 语言   | 类型                 | 说明                                                                 |
+| ------ | -------------------- | -------------------------------------------------------------------- |
+| Java   | `java.time.Duration` |                                                                      |
+| Python | `datetime.timedelta` |                                                                      |
+| Go     | `time.Duration`      |                                                                      |
+| Rust   | `fory::Duration`     | 设置 `rust_use_chrono_temporal_types = true` 生成 `chrono::Duration` |
+| C++    | `fory::Duration`     |                                                                      |
+| Dart   | `Duration`           |                                                                      |
+
+#### Any
+
+| 语言                  | 类型                         | 说明                   |
+| --------------------- | ---------------------------- | ---------------------- |
+| Java                  | `Object`                     | 写入的具体值类型元数据 |
+| Python                | `Any`                        | 写入的具体值类型元数据 |
+| Go                    | `any`                        | 写入的具体值类型元数据 |
+| Rust                  | `Arc<dyn Any + Send + Sync>` | 写入具体值的类型元数据 |
+| C++                   | `std::any`                   | 写入的具体值类型元数据 |
+| JavaScript/TypeScript | `any`                        | 写入的具体值类型元数据 |
+| Dart                  | `Object?`                    | 写入具体值的类型元数据 |
+
+**示例:**
+
+```protobuf
+enum EventType [id=120] {
+    CREATED = 0;
+    DELETED = 1;
+}
+
+message UserCreated [id=121] {
+    string user_id = 1;
+}
+
+message Envelope [id=122] {
+    EventType type = 1;
+    any payload = 2;
+}
+```
+
+**生成的代码(`Envelope.payload`):**
+
+| 语言                  | 生成的字段类型                        |
+| --------------------- | ------------------------------------- |
+| Java                  | `Object payload`                      |
+| Python                | `payload: Any`                        |
+| Go                    | `Payload any`                         |
+| Rust                  | `payload: Arc<dyn Any + Send + Sync>` |
+| C++                   | `std::any payload`                    |
+| JavaScript/TypeScript | `payload: any`                        |
+| Dart                  | `Object? payload`                     |
+
+**说明:**
+
+- `any` 始终写入 null 标志(与 `nullable` 相同),因为值可能为空。
+- `optional` 和 `[nullable = true]` 不能直接用于 `any`;请使用
+  `any`、`list<any>` 或 `map<K, any>` 而不是 `optional any`,
+  `list<optional any>` 或 `map<K, optional any>`。
+- 允许的动态值仅限于 `bool`、`string`、`enum`、`message` 和 `union`。
+  不支持其他基本类型(数字、字节、日期/时间)和 list/map;请将它们包装在消息中,或改用显式字段。
+- `ref` 不允许用于 `any` 字段(包括 list/map 值)。如果需要引用跟踪,请将 `any` 包装在消息中。
+- 具体类型必须在目标语言 Schema/IDL 注册表中注册;未知类型无法反序列化。
+
+### 命名类型
+
+按名称引用其他消息、枚举或联合:
+
+```protobuf
+enum Status { ... }
+message User { ... }
+
+message Order {
+    User customer = 1;    // Reference to User message
+    Status status = 2;    // Reference to Status enum
+}
+```
+
+### 集合类型
+
+#### 列表 (`list`)
+
+列表字段使用 `list<...>` 类型。`repeated` 也可作为别名。修饰符组合和语言映射请参阅[字段修饰符](#field-modifiers)。
+
+嵌套集合支持取决于目标语言能力。C++ 生成器接受 `list<list<...>>`、
+`list<map<...>>` 和 `map<..., list<...>>` 等嵌套集合 Schema;尚未实现嵌套字段
+Schema 的目标语言仍会拒绝这些写法。如果需要跨所有目标语言的可移植 Schema,请使用消息包装器。
+
+#### 数组 (`array`)
+
+对于动态长度的密集数值数据,请使用 `array<T>`。`array<T>` 是与 `list<T>` 不同的
+Schema 类型,使用紧凑的基本类型数组编码载荷。
+
+```protobuf
+message Embedding {
+    array<int32> indices = 1;
+    array<float32> values = 2;
+    array<uint8> pixels = 3;
+}
+```
+
+`array<T>` 仅接受 `bool`、整数和浮点元素类型。它不接受 `optional`、`ref`、
+命名/对象类型、`string`、`bytes`、map,也不接受 `array<fixed int32>` 等标量整数编码修饰符;
+根据数组约定,数组元素始终采用固定宽度编码。
+
+生成的载体因语言而异,但 Schema 类型保持一致:
+
+| IDL Schema        | Java 默认值                  | Python 默认值          | Dart 默认值    | JavaScript/TypeScript    |
+| ----------------- | ---------------------------- | ---------------------- | -------------- | ------------------------ |
+| `list<bool>`      | `BoolList` / `List<Boolean>` | `List[bool]`           | `List<bool>`   | `Type.list(Type.bool())` |
+| `array<bool>`     | `boolean[]`                  | `pyfory.BoolArray`     | `BoolList`     | `Type.boolArray()`       |
+| `array<int8>`     | `@Int8Type byte[]`           | `pyfory.Int8Array`     | `Int8List`     | `Type.int8Array()`       |
+| `array<int16>`    | `short[]`                    | `pyfory.Int16Array`    | `Int16List`    | `Type.int16Array()`      |
+| `array<int32>`    | `int[]`                      | `pyfory.Int32Array`    | `Int32List`    | `Type.int32Array()`      |
+| `array<int64>`    | `long[]`                     | `pyfory.Int64Array`    | `Int64List`    | `Type.int64Array()`      |
+| `array<uint8>`    | `@UInt8Type byte[]`          | `pyfory.UInt8Array`    | `Uint8List`    | `Type.uint8Array()`      |
+| `array<uint16>`   | `@UInt16Type short[]`        | `pyfory.UInt16Array`   | `Uint16List`   | `Type.uint16Array()`     |
+| `array<uint32>`   | `@UInt32Type int[]`          | `pyfory.UInt32Array`   | `Uint32List`   | `Type.uint32Array()`     |
+| `array<uint64>`   | `@UInt64Type long[]`         | `pyfory.UInt64Array`   | `Uint64List`   | `Type.uint64Array()`     |
+| `array<float16>`  | `Float16Array`               | `pyfory.Float16Array`  | `Float16List`  | `Type.float16Array()`    |
+| `array<bfloat16>` | `BFloat16Array`              | `pyfory.BFloat16Array` | `Bfloat16List` | `Type.bfloat16Array()`   |
+| `array<float32>`  | `float[]`                    | `pyfory.Float32Array`  | `Float32List`  | `Type.float32Array()`    |
+| `array<float64>`  | `double[]`                   | `pyfory.Float64Array`  | `Float64List`  | `Type.float64Array()`    |
+
+对于手写 Dart 模型,`array<bool>` 需要 `BoolList`,并添加
+`@ArrayField(element: BoolType())` 或
+`@ForyField(type: ArrayType(element: BoolType()))`;`List<bool>` 仍对应
+`list<bool>`。对于手写 Java 模型,无符号基本类型数组在元素类型上使用类型注解,
+例如 `private @UInt32Type int[] ids;`。
+对于生成的 Kotlin 模型,`array<int8>` 使用 `@ArrayType ByteArray`,
+包括嵌套集合和 map 位置。
+
+#### Map
+
+具有指定键和值类型的 Map:
+
+```protobuf
+message Config {
+    map<string, string> properties = 1;
+    map<string, int32> counts = 2;
+    map<int32, User> users = 3;
+}
+```
+
+**语言映射:**
+
+| Fory IDL             | Java                   | Python            | Go                 | Rust                    | C++                                        | JavaScript/TypeScript | Dart                |
+| -------------------- | ---------------------- | ----------------- | ------------------ | ----------------------- | ------------------------------------------ | --------------------- | ------------------- |
+| `map<string, int32>` | `Map<String, Integer>` | `Dict[str, int]`  | `map[string]int32` | `HashMap<String, i32>`  | `std::unordered_map<std::string, int32_t>` | `Map<string, number>` | `Map<String, int>`  |
+| `map<string, User>`  | `Map<String, User>`    | `Dict[str, User]` | `map[string]User`  | `HashMap<String, User>` | `std::unordered_map<std::string, User>`    | `Map<string, User>`   | `Map<String, User>` |
+
+**键类型限制:**
+
+- `string`(最常见)
+- `bool`
+- 整数类型(`int8`、`int16`、`int32`、`int64`、`uint8`、`uint16`、`uint32`、`uint64`)
+- 时间标量类型(`date`、`timestamp`、`duration`)
+- 枚举
+
+Map 键不支持 `any`、二进制 `bytes`、浮点类型、`decimal`、消息类型、联合类型、
+`list<T>`、`array<T>` 或嵌套 `map<K, V>`。请将这些类型用于 Map 值,或使用可移植的标量或枚举键将它们包装在消息中。
+
+### 类型兼容性矩阵
+
+该矩阵显示了哪些类型转换在不同语言中是安全的:
+
+| 从 -> 到 | bool | int8 | int16 | int32 | int64 | float32 | float64 | string |
+| -------- | ---- | ---- | ----- | ----- | ----- | ------- | ------- | ------ |
+| bool     | 是   | 是   | 是    | 是    | 是    | -       | -       | -      |
+| int8     | -    | 是   | 是    | 是    | 是    | 是      | 是      | -      |
+| int16    | -    | -    | 是    | 是    | 是    | 是      | 是      | -      |
+| int32    | -    | -    | -     | 是    | 是    | -       | 是      | -      |
+| int64    | -    | -    | -     | -     | 是    | -       | -       | -      |
+| float32  | -    | -    | -     | -     | -     | 是      | 是      | -      |
+| float64  | -    | -    | -     | -     | -     | -       | 是      | -      |
+| string   | -    | -    | -     | -     | -     | -       | -       | 是     |
+
+Y = 安全转换,- = 不推荐
+
+### 最佳实践
+
+- 使用 `int32` 作为大多数整数的默认值;对于较大值,请使用 `int64`。
+- 对于文本数据 (UTF-8) 使用 `string`,对于二进制数据使用 `bytes`。
+- 仅当该字段可能合法地不存在时才使用 `optional`。
+- 仅当需要共享或循环引用时才使用 `ref`。
+- 对于有序序列,首选 `list`;对于键值查找,首选 `map`。
+
+## 类型 ID {#type-ids}
+
+类型 ID 用于消息、联合类型和枚举,可实现高效的跨语言序列化。当
+`enable_auto_type_id = true`(默认)且省略 `id` 时,编译器通过
+`MurmurHash3(utf8(package.type_name))`(32 位)自动生成 ID,并在生成的代码中注明。
+当 `enable_auto_type_id = false` 时,没有显式 ID 的类型改为按命名空间和名称注册。
+编译器会在当前文件和所有导入文件中检测冲突;发生冲突时,
+编译器会引发错误并要求显式 `id` 或 `alias`。
+对于 Java 和 Scala 生成的代码,嵌套名称注册会把父级路径附加到 namespace,
+同时保留嵌套类型的简单名称。例如,
+`package demo; message Envelope { message Payload { ... } }` 在这些 JVM 目标中
+会注册 `Payload`:其 namespace 为 `demo.Envelope`,类型名称为 `Payload`。
+
+```protobuf
+enum Color [id=100] { ... }
+message User [id=101] { ... }
+union Event [id=102] { ... }
+```
+
+枚举类型 ID 仍是可选的;当 `enable_auto_type_id = true` 时,如果省略 ID,
+编译器会使用相同的哈希算法自动生成 ID。
+
+### 使用显式类型 ID
+
+```protobuf
+message User [id=101] { ... }
+message User [id=101, deprecated=true] { ... }  // Multiple options
+```
+
+### 不使用显式类型 ID
+
+```protobuf
+message Config { ... }  // Auto-generated when enable_auto_type_id = true
+```
+
+您可以设置 `[alias="..."]` 来更改哈希源,而无需重命名类型。
+
+### 实用说明
+
+- 如果类型省略 `id` 且 `enable_auto_type_id = true`,Fory 会使用
+  `MurmurHash3(utf8(package.type_name))`(32 位)生成 ID。
+- 包别名和类型别名会改变哈希输入,可在不重命名公共类型的情况下解决哈希冲突。
+- 小 varint 范围(`0-127`)内的手动 ID 在 wire format 中更紧凑;自动生成的 ID
+  通常更大,一般占用 4-5 字节。
+
+### ID 分配策略
+
+```protobuf
+// Enums: 100-199
+enum Status [id=100] { ... }
+enum Priority [id=101] { ... }
+
+// User domain: 200-299
+message User [id=200] { ... }
+message UserProfile [id=201] { ... }
+
+// Order domain: 300-399
+message Order [id=300] { ... }
+message OrderItem [id=301] { ... }
+```
+
+## 完整示例
+
+```protobuf
+// E-commerce domain model
+package com.shop.models;
+
+// Enums with type IDs
+enum OrderStatus [id=100] {
+    PENDING = 0;
+    CONFIRMED = 1;
+    SHIPPED = 2;
+    DELIVERED = 3;
+    CANCELLED = 4;
+}
+
+enum PaymentMethod [id=101] {
+    CREDIT_CARD = 0;
+    DEBIT_CARD = 1;
+    PAYPAL = 2;
+    BANK_TRANSFER = 3;
+}
+
+// Messages with type IDs
+message Address [id=200] {
+    string street = 1;
+    string city = 2;
+    string state = 3;
+    string country = 4;
+    string postal_code = 5;
+}
+
+message Customer [id=201] {
+    string id = 1;
+    string name = 2;
+    optional string email = 3;
+    optional string phone = 4;
+    optional Address billing_address = 5;
+    optional Address shipping_address = 6;
+}
+
+message Product [id=202] {
+    string sku = 1;
+    string name = 2;
+    string description = 3;
+    float64 price = 4;
+    int32 stock = 5;
+    list<string> categories = 6;
+    map<string, string> attributes = 7;
+}
+
+message OrderItem [id=203] {
+    ref Product product = 1;  // Track reference to avoid duplication
+    int32 quantity = 2;
+    float64 unit_price = 3;
+}
+
+message Order [id=204] {
+    string id = 1;
+    ref Customer customer = 2;
+    list<OrderItem> items = 3;
+    OrderStatus status = 4;
+    PaymentMethod payment_method = 5;
+    float64 total = 6;
+    optional string notes = 7;
+    timestamp created_at = 8;
+    optional timestamp shipped_at = 9;
+}
+
+// Config without explicit type ID (auto-generated when enable_auto_type_id = true)
+message ShopConfig {
+    string store_name = 1;
+    string currency = 2;
+    float64 tax_rate = 3;
+    list<string> supported_countries = 4;
+}
+```
+
+有关 protobuf 特定的扩展选项和 `(fory).` 语法,请参阅
+[协议缓冲区 IDL 支持](protobuf-idl.md#fory-extension-options-protobuf)。
+
+## 语法总结
+
+```
+file         := [package_decl] file_option* import_decl* definition*
+
+package_decl := 'package' package_name ['alias' package_name] ';'
+package_name := IDENTIFIER ('.' IDENTIFIER)*
+
+file_option  := 'option' option_name '=' option_value ';'
+option_name  := IDENTIFIER
+
+import_decl  := 'import' STRING ';'
+
+definition   := type_def | service_def
+type_def     := enum_def | message_def | union_def
+
+enum_def     := 'enum' IDENTIFIER [type_options] '{' enum_body '}'
+enum_body    := (reserved_stmt | enum_value)*
+enum_value   := IDENTIFIER '=' INTEGER ';'
+
+message_def  := 'message' IDENTIFIER [type_options] '{' message_body '}'
+message_body := (reserved_stmt | nested_type | field_def)*
+nested_type  := enum_def | message_def | union_def
+field_def    := [modifiers] field_type IDENTIFIER '=' INTEGER [field_options] ';'
+
+union_def    := 'union' IDENTIFIER [type_options] '{' union_field* '}'
+union_field  := ['repeated'] field_type IDENTIFIER '=' INTEGER [field_options] ';'
+
+service_def  := 'service' IDENTIFIER '{' rpc_method* '}'
+rpc_method   := 'rpc' IDENTIFIER '(' ['stream'] named_type ')'
+                'returns' '(' ['stream'] named_type ')' ';'
+option_value := 'true' | 'false' | IDENTIFIER | INTEGER | STRING
+
+reserved_stmt := 'reserved' reserved_items ';'
+reserved_items := reserved_item (',' reserved_item)*
+reserved_item := INTEGER | INTEGER 'to' INTEGER | INTEGER 'to' 'max' | STRING
+
+modifiers    := { 'optional' | 'ref' | 'repeated' }
+
+field_type   := [scalar_encoding] (primitive_type | named_type | list_type | array_type | map_type)
+primitive_type := 'bool'
+               | 'int8' | 'int16' | 'int32' | 'int64'
+               | 'uint8' | 'uint16' | 'uint32' | 'uint64'
+               | 'float16' | 'bfloat16' | 'float32' | 'float64'
+               | 'string' | 'bytes'
+               | 'date' | 'timestamp' | 'duration' | 'decimal'
+               | 'any'
+scalar_encoding := 'varint' | 'fixed' | 'tagged'
+named_type   := qualified_name
+qualified_name := IDENTIFIER ('.' IDENTIFIER)*   // e.g., Parent.Child
+list_type    := 'list' '<' { 'optional' | 'ref' | scalar_encoding } field_type '>'
+array_type   := 'array' '<' array_element_type '>'
+map_type     := 'map' '<' field_type ',' field_type '>'
+
+type_options := '[' type_option (',' type_option)* ']'
+type_option  := IDENTIFIER '=' option_value         // e.g., id=100, deprecated=true
+field_options := '[' field_option (',' field_option)* ']'
+field_option := IDENTIFIER '=' option_value         // e.g., deprecated=true, ref=true
+
+STRING       := '"' [^"\n]* '"' | "'" [^'\n]* "'"
+IDENTIFIER   := [a-zA-Z_][a-zA-Z0-9_]*
+INTEGER      := '-'? [0-9]+
+```
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/_category_.json
new file mode 100644
index 00000000000..fcbc87b9bf3
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 9,
+  "label": "开发",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/cpp-debugging.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/cpp-debugging.md
new file mode 100644
index 00000000000..15e2f31a7e9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/cpp-debugging.md
@@ -0,0 +1,46 @@
+---
+layout: global
+title: 调试 C++
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+import JumpGeneratedFile from "@site/docs/development/jmp_generate_file.png";
+import VscodeDebugFory from "@site/docs/development/vscode_debug_fory.jpg";
+import VscodeSelectDebugRun from "@site/docs/development/vscode_select_debug_run.png";
+
+## 调试 C++
+
+调试 C++ 并不容易,如果没有调试支持,二进制协议中的缺陷很难定位,而为 bazel 项目配置
+调试支持也并非易事。
+
+Apache Fory™ 提供了开箱即用的 `launch.json/tasks.json` 配置,该配置位于 `.vscode` 目录中,用于调试 C++。
+
+只需在 vscode 中打开 fory 根目录,然后打开 `src/fory/row/row_test.cc` 等测试文件,
+按下 `F5`,便可像调试 java/python 一样在 vscode 中逐行调试 C++ 代码、监视变量并添加断点。
+
+<img src={VscodeDebugFory} alt="Apache Fory™ 调试示例" width="50%" height="50%" />
+
+## 注意事项
+
+- 对于 Macos:安装 `CodeLLDB` vscode 插件
+- 对于 Linux:
+  - 使用 `sudo yum install -y gdb` 为 fedora/centos 安装 gdb
+  - 使用 `sudo apt-get install gdb` 为 fedora/centos 安装 gdb
+- 如果无法调试,请选择正确的调试/运行选项:
+  <img src={VscodeSelectDebugRun} alt="选择正确的调试/运行选项" width="50%" height="50%" />
+- 调试时会跳转到 bazel 生成目录中的源文件,需要返回源代码树中的原始文件才能再次调试:
+  <img src={JumpGeneratedFile} alt="跳转到生成的文件" width="50%" height="50%" />
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/index.md
new file mode 100644
index 00000000000..d053f8a8be2
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/index.md
@@ -0,0 +1,141 @@
+---
+title: 构建与测试
+sidebar_position: 1
+id: index
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+贡献者文档涵盖仓库设置、构建、测试、调试和面向发布的工作流程。
+这部分文档与已发布构件的用户指南相互独立。
+
+从 https://github.com/apache/fory 克隆源代码树。
+
+## Java
+
+```bash
+cd java
+mvn -T16 package
+```
+
+环境要求:
+
+- JDK 17+
+- Maven 3.6.3+
+
+## Python
+
+```bash
+cd python
+pip install -v -e .
+
+# Optional: build Cython extension (replace X.Y with your Python version)
+bazel build //:cp_fory_so --@rules_python//python/config_settings:python_version=X.Y
+```
+
+环境要求:
+
+- CPython 3.8+
+- Bazel 8+(构建 Cython 扩展时必需)
+
+## C++
+
+```bash
+cd cpp
+bazel build //cpp/...
+```
+
+环境要求:
+
+- C++17 编译器
+- Bazel 8+
+
+## Go
+
+```bash
+cd go/fory
+go test -v ./...
+```
+
+从 Java 测试模块运行 Go xlang 测试:
+
+```bash
+cd java
+mvn -T16 install -DskipTests
+cd fory-core
+FORY_GO_JAVA_CI=1 ENABLE_FORY_DEBUG_OUTPUT=1 mvn test -Dtest=org.apache.fory.xlang.GoXlangTest
+```
+
+环境要求:Go 1.24+。
+
+## Rust
+
+```bash
+cd rust
+cargo build
+cargo test --features tests
+
+# Debug a specific test
+RUST_BACKTRACE=1 FORY_PANIC_ON_ERROR=1 ENABLE_FORY_DEBUG_OUTPUT=1 \
+  cargo test --test mod $dir$::$test_file::$test_method -- --nocapture
+```
+
+环境要求:
+
+- 通过 rustup 安装的 Rust 工具链
+- `cargo-expand`(可选,用于调试宏展开)
+
+## JavaScript
+
+```bash
+cd javascript
+npm install
+
+npm run build
+node ./node_modules/.bin/jest --ci --reporters=default --reporters=jest-junit
+```
+
+环境要求:
+
+- Node.js (LTS)
+- npm
+
+## Markdown
+
+```bash
+cd docs
+npx prettier --write "**/*.md"
+```
+
+环境要求:
+
+- Node.js (LTS)
+- npm
+
+## 调试
+
+仓库中的 VS Code、Bazel、LLDB 和 GDB 配置请参阅[调试 C++](cpp-debugging.md)。
+
+不属于共享仓库构建的语言特定贡献者说明,仍保留在各语言的源代码树和贡献者
+README 中。
+
+## 参与贡献
+
+有关贡献的详细信息,请参阅
+[如何为 Apache Fory™ 做贡献](https://github.com/apache/fory/blob/main/CONTRIBUTING.md)。
+对于 AI 辅助的贡献,请遵循
+[AI 贡献政策](https://github.com/apache/fory/blob/main/AI_POLICY.md),包括大量使用 AI 辅助时
+所需的自我审查、双审查者 AI 审查流程、披露和验证证据。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/jmp_generate_file.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/jmp_generate_file.png
new file mode 100644
index 00000000000..ac142162bd8
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/jmp_generate_file.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/vscode_debug_fory.jpg b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/vscode_debug_fory.jpg
new file mode 100644
index 00000000000..2badccaa97e
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/vscode_debug_fory.jpg differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/vscode_select_debug_run.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/vscode_select_debug_run.png
new file mode 100644
index 00000000000..674c830a9d7
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/development/vscode_select_debug_run.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/_category_.json
new file mode 100644
index 00000000000..44de805e1ac
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 8,
+  "label": "Fory gRPC",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/cpp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/cpp.md
new file mode 100644
index 00000000000..163dbf30b4f
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/cpp.md
@@ -0,0 +1,262 @@
+---
+title: C++ gRPC
+sidebar_position: 6
+id: cpp
+license: |
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+---
+
+对于定义了服务的 Schema,Fory 可以生成 C++ gRPC 服务配套代码。生成的代码使用
+gRPC C++ 进行传输,并使用 Fory 序列化请求和响应载荷。该功能要求 gRPC C++
+1.39.0 或更高版本。
+
+当所有 RPC 对等端都由同一份 Fory IDL、protobuf IDL 或 FlatBuffers IDL 生成,
+并且你希望结合 gRPC 传输语义与 Fory 载荷编码时,请使用此模式。如果客户端或工具
+必须直接处理 protobuf 消息字节,请使用标准的 protobuf gRPC 代码生成。
+
+## 添加依赖
+
+使用 Bazel 时,请使用工作区内可见的 Fory 标签。下面的示例适用于将 Fory 作为名为
+`fory` 的外部模块引入的项目:
+
+```bazel
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+cc_library(
+    name = "greeter_generated",
+    srcs = ["generated/demo_greeter.service.grpc.cc"],
+    hdrs = glob(["generated/*.h"]),
+    includes = ["generated"],
+    deps = [
+        "@fory//cpp/fory/serialization:fory_serialization",
+        "@grpc//:grpc++",
+    ],
+)
+```
+
+在 Fory 仓库内,请使用 `//cpp/fory/serialization:fory_serialization`,而不是
+`@fory//cpp/fory/serialization:fory_serialization`。
+
+使用 CMake 时,请先确保 Fory C++ 目标可见。如果使用已安装的 Fory 包,请调用
+`find_package(Fory CONFIG REQUIRED)`,然后添加生成的源文件,并显式链接这两个库:
+
+```cmake
+find_package(Fory CONFIG REQUIRED)
+find_package(gRPC 1.39.0 CONFIG REQUIRED)
+
+add_library(greeter_generated
+    generated/demo_greeter.service.grpc.cc
+)
+target_compile_features(greeter_generated PUBLIC cxx_std_17)
+target_include_directories(greeter_generated PUBLIC generated)
+target_link_libraries(greeter_generated PUBLIC
+    fory::serialization
+    gRPC::grpc++
+)
+```
+
+如果项目通过 `FetchContent` 或 `add_subdirectory` 引入 Fory,请先完成引入,再链接
+`fory::serialization`。
+
+请使用与服务技术栈其余部分兼容的依赖版本。
+
+## 定义服务
+
+服务定义可以来自 Fory IDL、protobuf IDL 或 FlatBuffers `rpc_service` 定义。
+Fory IDL 服务如下所示:
+
+```protobuf
+package demo.greeter;
+
+message HelloRequest {
+  string name = 1;
+}
+
+message HelloReply {
+  string reply = 1;
+}
+
+service Greeter {
+  rpc SayHello (HelloRequest) returns (HelloReply);
+}
+```
+
+使用 `--grpc` 生成 C++ 模型和 gRPC 配套代码:
+
+```bash
+foryc service.fdl --cpp_out=./generated/cpp --grpc
+```
+
+对于此 Schema,C++ 生成器会输出:
+
+| 文件                           | 用途                                     |
+| ------------------------------ | ---------------------------------------- |
+| `demo_greeter.h`               | Fory 模型类型和注册辅助函数              |
+| `demo_greeter.service.h`       | 同步服务接口和路径常量                   |
+| `demo_greeter.service.grpc.h`  | 同步客户端、服务器适配器和 Fory 编解码器 |
+| `demo_greeter.service.grpc.cc` | Stub 调用和服务器路由实现                |
+
+在应用代码中包含生成的 gRPC 头文件,并在构建目标中只编译一次
+`demo_greeter.service.grpc.cc`。编解码器会直接生成在 gRPC 头文件中;没有单独的
+Fory gRPC 运行时源文件。
+
+## 实现服务器
+
+实现生成的同步接口,并将生成的服务器适配器注册到常规 gRPC C++ 服务器。
+
+```cpp
+#include "demo_greeter.service.grpc.h"
+
+#include <memory>
+#include <grpcpp/server_builder.h>
+#include <grpcpp/security/server_credentials.h>
+
+class MyGreeter final : public demo::greeter::service::Greeter {
+ public:
+  ::grpc::Status SayHello(::grpc::ServerContext* context,
+                          const ::demo::greeter::HelloRequest* request,
+                          ::demo::greeter::HelloReply* response) override {
+    (void)context;
+    response->set_reply("Hello, " + request->name());
+    return ::grpc::Status::OK;
+  }
+};
+
+MyGreeter implementation;
+demo::greeter::service::grpc::GreeterServiceGrpc service(&implementation);
+::grpc::ServerBuilder builder;
+builder.AddListeningPort("0.0.0.0:50051", ::grpc::InsecureServerCredentials());
+builder.RegisterService(&service);
+std::unique_ptr<::grpc::Server> server = builder.BuildAndStart();
+server->Wait();
+```
+
+生成的服务代码会序列化生成的请求和响应类型,因此服务实现无需手动执行 Fory 注册。
+
+## 创建客户端
+
+使用生成的同步客户端 Stub:
+
+```cpp
+#include "demo_greeter.service.grpc.h"
+
+#include <iostream>
+#include <grpcpp/create_channel.h>
+#include <grpcpp/security/credentials.h>
+
+auto channel =
+    ::grpc::CreateChannel("localhost:50051", ::grpc::InsecureChannelCredentials());
+auto stub = demo::greeter::service::grpc::GreeterStub::NewStub(channel);
+
+demo::greeter::HelloRequest request;
+request.set_name("Fory");
+demo::greeter::HelloReply response;
+::grpc::ClientContext context;
+::grpc::Status status = stub->SayHello(&context, request, &response);
+if (status.ok()) {
+  std::cout << response.reply() << std::endl;
+}
+```
+
+通道配置、凭证、截止时间、元数据、取消、重试策略和传输生命周期仍由 gRPC C++ 负责。
+
+## 流式 RPC
+
+Fory 服务定义可以使用一元、服务器流式、客户端流式和双向流式 RPC 形式:
+
+```protobuf
+service Greeter {
+  rpc SayHello (HelloRequest) returns (HelloReply);
+  rpc LotsOfReplies (HelloRequest) returns (stream HelloReply);
+  rpc LotsOfGreetings (stream HelloRequest) returns (HelloReply);
+  rpc Chat (stream HelloRequest) returns (stream HelloReply);
+}
+```
+
+生成的 C++ 代码遵循同步 gRPC C++ 约定:
+
+- 一元方法返回 `grpc::Status`,并使用请求和响应指针。
+- 服务器流式方法在客户端返回 `std::unique_ptr<grpc::ClientReader<U>>`,在服务器端
+  接收 `grpc::ServerWriter<U>*`。
+- 客户端流式方法在客户端返回 `std::unique_ptr<grpc::ClientWriter<T>>`,在服务器端
+  接收 `grpc::ServerReader<T>*`。
+- 双向流式方法在客户端返回 `std::unique_ptr<grpc::ClientReaderWriter<T, U>>`,
+  在服务器端接收 `grpc::ServerReaderWriter<U, T>*`。
+- 每个消息帧(包括流式消息帧)都使用生成的编解码器。
+
+在服务实现中,请以生成的方法签名作为具体请求和响应类型的准确信息来源:
+
+```cpp
+::grpc::Status LotsOfReplies(
+    ::grpc::ServerContext* context,
+    const ::demo::greeter::HelloRequest* request,
+    ::grpc::ServerWriter<::demo::greeter::HelloReply>* writer) override {
+  (void)context;
+  ::demo::greeter::HelloReply reply;
+  reply.set_reply("Hello, " + request->name());
+  writer->Write(reply);
+  reply.set_reply("Welcome, " + request->name());
+  writer->Write(reply);
+  return ::grpc::Status::OK;
+}
+```
+
+生成的客户端会返回标准 gRPC C++ 流式辅助对象:
+
+```cpp
+demo::greeter::HelloRequest request;
+request.set_name("Fory");
+
+::grpc::ClientContext context;
+auto reader = stub->LotsOfReplies(&context, request);
+demo::greeter::HelloReply reply;
+while (reader->Read(&reply)) {
+  std::cout << reply.reply() << std::endl;
+}
+::grpc::Status status = reader->Finish();
+```
+
+使用 `WritesDone()` 结束客户端流,并始终调用 `Finish()` 获取最终状态。
+
+生成的描述符会为 gRPC 路径保留 IDL 中准确的服务名和方法名。
+
+## gRPC 栈行为
+
+生成的服务配套代码只提供 Fory 序列化和 gRPC C++ 绑定。运行行为仍遵循标准 gRPC C++
+行为:
+
+- 截止时间和取消
+- TLS 和身份认证
+- 状态码和元数据
+- 通道和服务器生命周期
+- 同步流式反压
+
+## 故障排除
+
+### 缺少 gRPC C++ 头文件或符号
+
+将上文所示的 gRPC C++ 依赖添加到编译生成服务文件的目标中,并确保生成的
+`.service.grpc.cc` 文件只编译一次。
+
+### `UNIMPLEMENTED`
+
+确认已通过 `ServerBuilder::RegisterService(...)` 注册生成的服务器适配器,并确认
+客户端和服务器由相同的包名、服务名和方法名生成。
+
+### Protobuf 客户端无法解码服务
+
+Fory gRPC 配套代码的消息不使用 protobuf 编码格式。对于 Fory 生成的服务,请使用
+Fory 生成的客户端;如果需要支持通用 protobuf 客户端,请另行提供 protobuf 服务端点。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/csharp.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/csharp.md
new file mode 100644
index 00000000000..90e47065b1f
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-1.7.0/grpc/csharp.md
@@ -0,0 +1,300 @@
... 97341 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fory.apache.org
For additional commands, e-mail: commits-help@fory.apache.org


(fory-site) 01/03: docs: announce Apache Fory 1.7.0

Posted by ch...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch release_fory_1.7
in repository https://gitbox.apache.org/repos/asf/fory-site.git

commit c49f3cc62ea051b8bddb1c21d7fe36775f84075c
Author: chaokunyang <sh...@gmail.com>
AuthorDate: Mon Aug 31 11:41:23 2026 +0800

    docs: announce Apache Fory 1.7.0
---
 blog/2026-08-28-fory_1_7_0_released.md  | 178 ++++++++++++++++++++++++++++++++
 docs/benchmarks/index.md                |   6 +-
 docs/benchmarks/json/kotlin/README.md   |  12 +--
 docs/json/kotlin.md                     |   5 +-
 src/components/home/HomepageLanding.tsx |  24 ++---
 src/pages/download/index.md             |  12 +--
 6 files changed, 202 insertions(+), 35 deletions(-)

diff --git a/blog/2026-08-28-fory_1_7_0_released.md b/blog/2026-08-28-fory_1_7_0_released.md
new file mode 100644
index 00000000000..5c8a52ae459
--- /dev/null
+++ b/blog/2026-08-28-fory_1_7_0_released.md
@@ -0,0 +1,178 @@
+---
+slug: fory_1_7_0_release
+title: Fory v1.7.0 Released
+description: "Fory 1.7.0 adds JSON support for Scala and Kotlin and incremental decoding for JSON arrays and NDJSON streams."
+authors: [chaokunyang]
+tags: [fory, java, scala, kotlin, swift]
+---
+
+The Apache Fory team is pleased to announce the 1.7.0 release. This release includes [26 PRs](https://github.com/apache/fory/compare/v1.6.1...v1.7.0). See the [Getting Started](https://fory.apache.org/docs/start/) page to get the libraries for your platform.
+
+## Highlights
+
+- Added Fory JSON support for Scala 2.13 and Scala 3.
+- Added Fory JSON support for Kotlin on Android, the JVM, and GraalVM Native Image.
+- Enhanced Fory JSON on GraalVM Native Image with build-time code generation enabled by default and fine-grained generated codec caching.
+- Added incremental JSON stream decoding for top-level arrays and newline-delimited JSON (NDJSON), allowing values to be processed progressively from chunked UTF-8 input.
+- Expanded Swift platform support to visionOS, watchOS, tvOS, and Linux, and added Swift gRPC code generation.
+
+## JSON Support for Scala
+
+Fory 1.7.0 introduces `fory-json-scala` for Scala 2.13 and Scala 3. Scala applications can read and write standard JSON using case classes, constructor defaults, `Option`, `Either`, tuples, collections, maps, and value classes. The module works on the JVM and GraalVM Native Image.
+
+Add the Scala JSON module to your sbt build:
+
+```sbt
+libraryDependencies += "org.apache.fory" %% "fory-json-scala" % "1.7.0"
+```
+
+Create a reusable `ForyJson` instance with `ForyJsonScala.builder()`. Missing defaulted parameters use Scala's compiler-generated constructor defaults, so immutable case classes do not need a zero-argument constructor or mutable fields:
+
+```scala
+import org.apache.fory.json.scala.ForyJsonScala
+
+case class Person(name: String, age: Int = 18, aliases: List[String] = Nil)
+
+val json = ForyJsonScala.builder().build()
+val person = json.fromJson("""{"name":"Ada"}""", classOf[Person])
+assert(person == Person("Ada", 18, Nil))
+
+val text = json.toJson(person)
+```
+
+Fory JSON annotations work on Scala constructor properties. Scala 2 `Enumeration` values can use `JsonEnumeration` to retain their owning enumeration, including values inside collections and maps. On Scala 3, `derives ScalaJsonCodec` supports enums with parameterized cases and, together with `JsonSubTypes`, sealed hierarchies whose allowed subtypes are declared by the application.
+
+Use a complete `TypeRef` for parameterized types, or `ScalaTypeRef` when Scala value-type arguments would otherwise be erased. See the [Scala JSON guide](/docs/json/scala) for supported types, annotations, and Native Image setup.
+
+## JSON Support for Kotlin
+
+The new `fory-json-kotlin` module maps Kotlin models to standard JSON while preserving constructor defaults, nullability, unsigned types, value classes, and generic arguments. It supports the JVM, Android API 26 and later, and GraalVM Native Image without requiring `kotlin-reflect`.
+
+Add the runtime dependency:
+
+```kotlin
+dependencies {
+  implementation("org.apache.fory:fory-json-kotlin:1.7.0")
+}
+```
+
+Use `jsonTypeRef<T>()` to retain Kotlin type information at the root and in nested values. Ordinary Java type tokens cannot represent every Kotlin distinction, such as nullable collection elements or a value class lowered to a primitive:
+
+```kotlin
+import org.apache.fory.json.kotlin.ForyJsonKotlin
+import org.apache.fory.json.kotlin.jsonTypeRef
+
+data class Account(
+  val id: ULong,
+  val name: String,
+  val nickname: String? = null,
+)
+
+val json = ForyJsonKotlin.builder().build()
+val accountType = jsonTypeRef<Account>()
+
+val account = json.fromJson("""{"id":7,"name":"Alice"}""", accountType)
+val text = json.toJson(account, accountType)
+```
+
+A missing member invokes its constructor default when one exists. An explicit JSON `null` is checked against the Kotlin declaration and never requests a default. Fory calls the model's constructor, so initialization and validation still run. Sealed classes and interfaces can use `JsonSubTypes` to declare a closed set of logical subtype names.
+
+On Android, runtime JSON code generation is disabled. Use the `fory-json-kotlin-ksp` processor when R8 or ProGuard shrinks Kotlin models, together with `JsonType` on application models or an exact `JsonMixin` for third-party targets. For Native Image, install `ForyJsonKotlin` in a reachable `ForyJsonProvider` configuration and make the required models and exact generic bindings reachable at build time. See the [Kotlin JSON guide](/docs/json/kotlin), [Android guide](/docs/json/android), a [...]
+
+## Incremental JSON Stream Decoding
+
+Fory JSON can now decode a top-level array or NDJSON stream as UTF-8 chunks arrive. Applications can process each completed element or record without buffering the complete document or waiting for the end of the stream. Chunks are supplied as `ByteBuffer` instances and can end partway through a JSON value.
+
+Use `newArrayStreamDecoder` for one top-level JSON array. Each successful `decodeNext` call exposes one decoded element through `value()`:
+
+```java
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import org.apache.fory.json.ForyJson;
+import org.apache.fory.json.JsonStreamDecoder;
+
+public final class User {
+  public long id;
+  public String name;
+}
+
+ForyJson json = ForyJson.builder().build();
+JsonStreamDecoder<User> decoder =
+    json.newArrayStreamDecoder(User.class, 1024 * 1024);
+
+ByteBuffer[] chunks = {
+  ByteBuffer.wrap("[{\"id\":1,\"name\":\"Ada\"},".getBytes(StandardCharsets.UTF_8)),
+  ByteBuffer.wrap("{\"id\":2,\"name\":\"Al".getBytes(StandardCharsets.UTF_8)),
+  ByteBuffer.wrap("ice\"}]".getBytes(StandardCharsets.UTF_8))
+};
+
+for (ByteBuffer chunk : chunks) {
+  while (decoder.decodeNext(chunk)) {
+    User user = decoder.value();
+    System.out.println(user.id + ": " + user.name);
+  }
+}
+decoder.finish();
+```
+
+Use `newNdjsonStreamDecoder` for records separated by LF or CRLF. Call `finish()` at the end of input and consume its value when it returns `true`: this handles a final record without a trailing newline.
+
+```java
+JsonStreamDecoder<User> decoder =
+    json.newNdjsonStreamDecoder(User.class, 1024 * 1024);
+
+ByteBuffer chunk = ByteBuffer.wrap(
+    ("{\"id\":1,\"name\":\"Ada\"}\n"
+        + "{\"id\":2,\"name\":\"Alice\"}").getBytes(StandardCharsets.UTF_8));
+while (decoder.decodeNext(chunk)) {
+  User user = decoder.value();
+  System.out.println(user.id + ": " + user.name);
+}
+if (decoder.finish()) {
+  User user = decoder.value();
+  System.out.println(user.id + ": " + user.name);
+}
+```
+
+Drain each chunk before supplying the next one. The required `maxValueBytes` argument limits each array element or NDJSON record, rather than the complete stream. A decoder belongs to one stream, is not thread-safe, and cannot be reused after completion or failure. See [Incremental JSON streams](/docs/json/getting-started#incremental-json-streams) for buffer ownership, null values, and byte-limit details.
+
+## Features
+
+- feat(scala): add json support for scala by @chaokunyang in https://github.com/apache/fory/pull/3934
+- feat(scala): add scala2 json enumeration annotation by @chaokunyang in https://github.com/apache/fory/pull/3935
+- perf(scala): streamline exact List JSON writes by @chaokunyang in https://github.com/apache/fory/pull/3936
+- feat(json): add Kotlin JSON support by @chaokunyang in https://github.com/apache/fory/pull/3937
+- ci: reduce Android Kotlin setup time by @chaokunyang in https://github.com/apache/fory/pull/3951
+- feat: harden deserialization paths by @chaokunyang in https://github.com/apache/fory/pull/3955
+- feat(java): add incremental JSON stream decoding by @chaokunyang in https://github.com/apache/fory/pull/3956
+- ci: isolate Scala snapshot dependencies by @chaokunyang in https://github.com/apache/fory/pull/3957
+- refactor(java): remove unbounded metadata decompression by @chaokunyang in https://github.com/apache/fory/pull/3958
+- feat(json): expose stream value limit errors by @chaokunyang in https://github.com/apache/fory/pull/3959
+- perf(java): optimize GraalVM JSON interpreted access by @chaokunyang in https://github.com/apache/fory/pull/3960
+- perf(json): add ordered field read fast path by @chaokunyang in https://github.com/apache/fory/pull/3962
+- feat(java): refactor java generated codec cache granularity by @chaokunyang in https://github.com/apache/fory/pull/3963
+- feat(java): parse quoted JSON scalar values by @chaokunyang in https://github.com/apache/fory/pull/3967
+- feat(java): add sealed interface json subtypes support by @chaokunyang in https://github.com/apache/fory/pull/3968
+- feat(compiler): Add grpc support for Swift by @yash-agarwa-l in https://github.com/apache/fory/pull/3776
+- feat(swift): support more platforms by @chaokunyang in https://github.com/apache/fory/pull/3973
+
+## Bug Fix
+
+- fix(scala): target Java 8 bytecode for fory-scala by @KarasevRob in https://github.com/apache/fory/pull/3941
+- fix(scala): support Enumeration JSON on Scala 3 by @chaokunyang in https://github.com/apache/fory/pull/3952
+- ci: stabilize JVM snapshot publishing by @chaokunyang in https://github.com/apache/fory/pull/3953
+- fix: fix source release artifact by @chaokunyang in https://github.com/apache/fory/pull/3969
+
+## Other Improvements
+
+- chore: Bump org.apache.logging.log4j:log4j-api from 2.25.4 to 2.25.5 in /java/fory-test-core by @dependabot[bot] in https://github.com/apache/fory/pull/3933
+- chore: update release version to 1.6.1 by @chaokunyang in https://github.com/apache/fory/pull/3938
+- ci: update sbt setup action by @chaokunyang in https://github.com/apache/fory/pull/3939
+- chore: upgrade scala dependencies by @pjfanning in https://github.com/apache/fory/pull/3943
+- docs: update jackson annotations license by @chaokunyang in https://github.com/apache/fory/pull/3944
+
+## New Contributors
+
+- @KarasevRob made their first contribution in https://github.com/apache/fory/pull/3941
+
+**Full Changelog**: https://github.com/apache/fory/compare/v1.6.1...v1.7.0
diff --git a/docs/benchmarks/index.md b/docs/benchmarks/index.md
index fd940fac3e2..622bac1b725 100644
--- a/docs/benchmarks/index.md
+++ b/docs/benchmarks/index.md
@@ -52,10 +52,8 @@ For additional benchmark notes, raw data, and the complete Java benchmark README
 ## Kotlin JSON Benchmark
 
 The Kotlin JSON harness compares Fory JSON Kotlin, kotlinx.serialization, Moshi, and Jackson Kotlin
-with one immutable model and 16 isolated String/UTF-8 operations. The
-[Kotlin JSON report](json/kotlin/README.md) is intentionally marked pending until a complete
-measured run is published; no placeholder performance result is inferred from another language or
-project.
+with one immutable model and 16 String/UTF-8 operations. See [Kotlin JSON benchmarks](json/kotlin/README.md)
+for the workloads and benchmark setup.
 
 ## Python Benchmark
 
diff --git a/docs/benchmarks/json/kotlin/README.md b/docs/benchmarks/json/kotlin/README.md
index 02220e384f0..4d430099a78 100644
--- a/docs/benchmarks/json/kotlin/README.md
+++ b/docs/benchmarks/json/kotlin/README.md
@@ -1,10 +1,6 @@
-# Kotlin JSON Benchmark Report
+# Kotlin JSON Benchmarks
 
-Measured results are pending. This page will be replaced only by a complete run of the repository
-Kotlin JSON benchmark harness; no performance number or chart is inferred from the Java, Scala, or
-historical external benchmark projects.
-
-The source-aligned harness is in
+The benchmark harness is in
 [`benchmarks/kotlin`](https://github.com/apache/fory/tree/main/benchmarks/kotlin).
 It compares Fory JSON Kotlin, kotlinx.serialization, Moshi, and Jackson Kotlin with:
 
@@ -16,7 +12,3 @@ It compares Fory JSON Kotlin, kotlinx.serialization, Moshi, and Jackson Kotlin w
 - one standard JMH invocation for all 16 methods;
 - retained declared-type serializers, adapters, readers, and writers prepared outside timing;
 - fixture decode, own-output round-trip, and all-output JSON-tree equivalence checks before timing.
-
-The eventual measured report will record the source revision, date, hardware, operating system,
-JDK, Kotlin, JMH, Moshi codegen KSP plugin, library versions, and the exact benchmark settings.
-Standard JMH JSON and the process log remain available together.
diff --git a/docs/json/kotlin.md b/docs/json/kotlin.md
index 0a6825f3c77..0d004a3433f 100644
--- a/docs/json/kotlin.md
+++ b/docs/json/kotlin.md
@@ -363,6 +363,5 @@ See [Troubleshooting](troubleshooting.md) for Kotlin metadata, nullability, gene
 Android shrinking, Native Image, syntax, limits, custom codecs, subtypes, and root-operation
 failures.
 
-The source-aligned four-library benchmark methodology and publication status are in the
-[Kotlin JSON benchmark report](../benchmarks/json/kotlin/README.md). No Kotlin result is inferred
-from the Java or Scala benchmark.
+See [Kotlin JSON benchmarks](../benchmarks/json/kotlin/README.md) for the workloads and setup
+used to compare Fory JSON Kotlin, kotlinx.serialization, Moshi, and Jackson Kotlin.
diff --git a/src/components/home/HomepageLanding.tsx b/src/components/home/HomepageLanding.tsx
index cd929c9d238..5bc29a614de 100644
--- a/src/components/home/HomepageLanding.tsx
+++ b/src/components/home/HomepageLanding.tsx
@@ -138,7 +138,7 @@ const runtimeExamples: RuntimeExample[] = [
     install: `<dependency>
   <groupId>org.apache.fory</groupId>
   <artifactId>fory-core</artifactId>
-  <version>1.6.1</version>
+  <version>1.7.0</version>
 </dependency>`,
     codeLanguage: "java",
     guide: "/docs/object-serialization/java/",
@@ -159,7 +159,7 @@ Person out = (Person) fory.deserialize(bytes);`,
     id: "python",
     label: "Python",
     installLanguage: "bash",
-    install: `pip install pyfory==1.6.1`,
+    install: `pip install pyfory==1.7.0`,
     codeLanguage: "python",
     guide: "/docs/object-serialization/python/",
     summary: "pyfory supports xlang, Python native mode, dataclasses, row format, and out-of-band buffers.",
@@ -181,7 +181,7 @@ out = fory.deserialize(data)`,
     id: "rust",
     label: "Rust",
     installLanguage: "bash",
-    install: `cargo add fory@1.6.1`,
+    install: `cargo add fory@1.7.0`,
     codeLanguage: "rust",
     guide: "/docs/object-serialization/rust/",
     summary: "Rust uses derive macros for type-safe structs and supports both xlang and native payloads.",
@@ -206,7 +206,7 @@ fn main() -> Result<(), Error> {
     id: "go",
     label: "Go",
     installLanguage: "bash",
-    install: `go get github.com/apache/fory/go/fory@v1.6.1`,
+    install: `go get github.com/apache/fory/go/fory@v1.7.0`,
     codeLanguage: "go",
     guide: "/docs/object-serialization/go/",
     summary: "Go supports xlang and native modes with exported structs, circular references, and schema-aware serializers.",
@@ -230,7 +230,7 @@ _ = f.Deserialize(payload, &out)`,
 FetchContent_Declare(
   fory
   GIT_REPOSITORY https://github.com/apache/fory.git
-  GIT_TAG v1.6.1
+  GIT_TAG v1.7.0
   SOURCE_SUBDIR cpp
 )
 FetchContent_MakeAvailable(fory)`,
@@ -257,7 +257,7 @@ auto out = fory.deserialize<Person>(bytes).value();`,
     id: "javascript",
     label: "JavaScript",
     installLanguage: "bash",
-    install: `npm install @apache-fory/core@1.6.1 @apache-fory/hps@1.6.1`,
+    install: `npm install @apache-fory/core@1.7.0 @apache-fory/hps@1.7.0`,
     codeLanguage: "typescript",
     guide: "/docs/object-serialization/javascript/",
     summary: "JavaScript/TypeScript is xlang-only, schema-driven, and runs in Node.js or browsers.",
@@ -278,7 +278,7 @@ const out = deserialize(payload);`,
     id: "csharp",
     label: "C#",
     installLanguage: "bash",
-    install: `dotnet add package Apache.Fory --version 1.6.1`,
+    install: `dotnet add package Apache.Fory --version 1.7.0`,
     codeLanguage: "csharp",
     guide: "/docs/object-serialization/csharp/",
     summary: ".NET support uses source-generated serializers for Fory structs, enums, and unions.",
@@ -301,7 +301,7 @@ Person out = fory.Deserialize<Person>(payload);`,
     id: "swift",
     label: "Swift",
     installLanguage: "swift",
-    install: `.package(url: "https://github.com/apache/fory.git", exact: "1.6.1")`,
+    install: `.package(url: "https://github.com/apache/fory.git", exact: "1.7.0")`,
     codeLanguage: "swift",
     guide: "/docs/object-serialization/swift/",
     summary: "Swift uses @ForyStruct, @ForyEnum, and @ForyUnion macros for xlang-compatible models.",
@@ -324,7 +324,7 @@ let out: Person = try fory.deserialize(payload)`,
     label: "Dart",
     installLanguage: "yaml",
     install: `dependencies:
-  fory: ^1.6.1
+  fory: ^1.7.0
 
 dev_dependencies:
   build_runner: ^2.4.13`,
@@ -359,7 +359,7 @@ final out = fory.deserialize<Person>(payload);`,
     id: "scala",
     label: "Scala",
     installLanguage: "sbt",
-    install: `libraryDependencies += "org.apache.fory" %% "fory-scala" % "1.6.1"`,
+    install: `libraryDependencies += "org.apache.fory" %% "fory-scala" % "1.7.0"`,
     codeLanguage: "scala",
     guide: "/docs/object-serialization/scala/",
     summary: "Scala builds on Fory Java with optimized serializers for case classes, collections, tuples, and Option.",
@@ -379,8 +379,8 @@ val out = fory.deserialize(payload).asInstanceOf[Person]`,
     id: "kotlin",
     label: "Kotlin",
     installLanguage: "kotlin",
-    install: `implementation("org.apache.fory:fory-kotlin:1.6.1")
-ksp("org.apache.fory:fory-kotlin-ksp:1.6.1")`,
+    install: `implementation("org.apache.fory:fory-kotlin:1.7.0")
+ksp("org.apache.fory:fory-kotlin-ksp:1.7.0")`,
     codeLanguage: "kotlin",
     guide: "/docs/object-serialization/kotlin/",
     summary: "Kotlin adds data-class support, Android guidance, and KSP static serializers for xlang/schema mode.",
diff --git a/src/pages/download/index.md b/src/pages/download/index.md
index 19fd5854ca7..d5e6ada6fa2 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.6.1:
+The latest source release is 1.7.0:
 
 | Version | Date       | Source                                                                                                                                                                                                                                                                              | Release Notes                                                        |
 | ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
-| 1.6.1   | 2026-08-16 | [source](https://www.apache.org/dyn/closer.lua/fory/1.6.1/apache-fory-1.6.1-src.tar.gz?action=download) [asc](https://downloads.apache.org/fory/1.6.1/apache-fory-1.6.1-src.tar.gz.asc) [sha512](https://downloads.apache.org/fory/1.6.1/apache-fory-1.6.1-src.tar.gz.sha512) | [release notes](https://github.com/apache/fory/releases/tag/v1.6.1) |
+| 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) |
 
 ## 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.6.1-src.tar.gz.sha512
+sha512sum --check apache-fory-1.7.0-src.tar.gz.sha512
 ```
 
 It should output something like:
 
 ```bash
-apache-fory-1.6.1-src.tar.gz: OK
+apache-fory-1.7.0-src.tar.gz: OK
 ```
 
 ### Verifying Signatures
@@ -54,13 +54,13 @@ gpg --import KEYS
 Then you can verify signature:
 
 ```bash
-gpg --verify apache-fory-1.6.1-src.tar.gz.asc apache-fory-1.6.1-src.tar.gz
+gpg --verify apache-fory-1.7.0-src.tar.gz.asc apache-fory-1.7.0-src.tar.gz
 ```
 
 If something like the following appears, it means the signature is correct:
 
 ```bash
-gpg: Signature made Wed Aug 12 20:28:26 2026 CST
+gpg: Signature made Tue Aug 25 18:38:25 2026 CST
 gpg:                using RSA key 1E2CDAE4C08AD7D694D1CB139D7BE8E45E580BA4
 gpg: Good signature from "chaokunyang (CODE SIGNING KEY) <ch...@apache.org>" [unknown]
 ```


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fory.apache.org
For additional commands, e-mail: commits-help@fory.apache.org