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/04/19 16:21:15 UTC

(fory-site) 07/09: Create docs snapshot for 0.17

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

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

commit 6f871be75db9b7e7d51bc6619570cc8bdedc5343
Author: 慕白 <ch...@antgroup.com>
AuthorDate: Sun Apr 19 23:29:47 2026 +0800

    Create docs snapshot for 0.17
---
 docusaurus.config.ts                               |    3 +-
 .../version-0.17/.keep                             |    0
 .../version-0.17/benchmarks/cpp/README.md          |   60 +
 .../version-0.17/benchmarks/cpp/REPORT.md          |  116 ++
 .../version-0.17/benchmarks/cpp/mediacontent.png   |  Bin 0 -> 51863 bytes
 .../benchmarks/cpp/mediacontentlist.png            |  Bin 0 -> 54504 bytes
 .../version-0.17/benchmarks/cpp/sample.png         |  Bin 0 -> 48714 bytes
 .../version-0.17/benchmarks/cpp/samplelist.png     |  Bin 0 -> 51686 bytes
 .../version-0.17/benchmarks/cpp/struct.png         |  Bin 0 -> 47309 bytes
 .../version-0.17/benchmarks/cpp/structlist.png     |  Bin 0 -> 48428 bytes
 .../version-0.17/benchmarks/cpp/throughput.png     |  Bin 0 -> 73763 bytes
 .../version-0.17/benchmarks/csharp/README.md       |  129 ++
 .../benchmarks/csharp/mediacontent.png             |  Bin 0 -> 53148 bytes
 .../benchmarks/csharp/mediacontentlist.png         |  Bin 0 -> 52044 bytes
 .../version-0.17/benchmarks/csharp/sample.png      |  Bin 0 -> 51280 bytes
 .../version-0.17/benchmarks/csharp/samplelist.png  |  Bin 0 -> 55993 bytes
 .../version-0.17/benchmarks/csharp/struct.png      |  Bin 0 -> 53639 bytes
 .../version-0.17/benchmarks/csharp/structlist.png  |  Bin 0 -> 47081 bytes
 .../version-0.17/benchmarks/csharp/throughput.png  |  Bin 0 -> 77537 bytes
 .../version-0.17/benchmarks/dart/README.md         |   73 +
 .../version-0.17/benchmarks/dart/mediacontent.png  |  Bin 0 -> 52584 bytes
 .../benchmarks/dart/mediacontentlist.png           |  Bin 0 -> 55357 bytes
 .../version-0.17/benchmarks/dart/sample.png        |  Bin 0 -> 42105 bytes
 .../version-0.17/benchmarks/dart/samplelist.png    |  Bin 0 -> 51598 bytes
 .../version-0.17/benchmarks/dart/struct.png        |  Bin 0 -> 38645 bytes
 .../version-0.17/benchmarks/dart/structlist.png    |  Bin 0 -> 44541 bytes
 .../version-0.17/benchmarks/dart/throughput.png    |  Bin 0 -> 89092 bytes
 .../version-0.17/benchmarks/go/README.md           |   58 +
 .../benchmarks/go/benchmark_combined.png           |  Bin 0 -> 193421 bytes
 .../benchmarks/go/benchmark_mediacontent.png       |  Bin 0 -> 63179 bytes
 .../benchmarks/go/benchmark_mediacontentlist.png   |  Bin 0 -> 75245 bytes
 .../version-0.17/benchmarks/go/benchmark_report.md |   84 ++
 .../benchmarks/go/benchmark_results.json           |  184 +++
 .../benchmarks/go/benchmark_results.txt            |  326 +++++
 .../benchmarks/go/benchmark_sample.png             |  Bin 0 -> 64836 bytes
 .../benchmarks/go/benchmark_samplelist.png         |  Bin 0 -> 70519 bytes
 .../benchmarks/go/benchmark_struct.png             |  Bin 0 -> 65532 bytes
 .../benchmarks/go/benchmark_structlist.png         |  Bin 0 -> 63835 bytes
 .../benchmarks/go/serialized_sizes.txt             |   27 +
 .../version-0.17/benchmarks/java/README.md         |  239 ++++
 .../java/data/jmh-jdk-11-deserialization.csv       |  153 ++
 .../java/data/jmh-jdk-11-serialization.csv         |  153 ++
 .../benchmarks/java/data/jmh-jdk-11-zerocopy.csv   |   73 +
 .../java/java_heap_deserialize_compatible.png      |  Bin 0 -> 99247 bytes
 .../java/java_heap_deserialize_consistent.png      |  Bin 0 -> 107832 bytes
 .../java/java_heap_serialize_compatible.png        |  Bin 0 -> 108196 bytes
 .../java/java_heap_serialize_consistent.png        |  Bin 0 -> 106382 bytes
 .../java/java_offheap_deserialize_compatible.png   |  Bin 0 -> 104602 bytes
 .../java/java_offheap_deserialize_consistent.png   |  Bin 0 -> 108056 bytes
 .../java/java_offheap_serialize_compatible.png     |  Bin 0 -> 119826 bytes
 .../java/java_offheap_serialize_consistent.png     |  Bin 0 -> 121717 bytes
 .../java/java_repo_deserialization_throughput.png  |  Bin 0 -> 116455 bytes
 .../java/java_repo_serialization_throughput.png    |  Bin 0 -> 124190 bytes
 .../benchmarks/java/java_zero_copy_deserialize.png |  Bin 0 -> 98312 bytes
 .../benchmarks/java/java_zero_copy_serialize.png   |  Bin 0 -> 98680 bytes
 .../version-0.17/benchmarks/javascript/README.md   |  104 ++
 .../benchmarks/javascript/mediacontent.png         |  Bin 0 -> 55168 bytes
 .../benchmarks/javascript/mediacontentlist.png     |  Bin 0 -> 56815 bytes
 .../version-0.17/benchmarks/javascript/sample.png  |  Bin 0 -> 57185 bytes
 .../benchmarks/javascript/samplelist.png           |  Bin 0 -> 57215 bytes
 .../version-0.17/benchmarks/javascript/struct.png  |  Bin 0 -> 50777 bytes
 .../benchmarks/javascript/structlist.png           |  Bin 0 -> 54735 bytes
 .../benchmarks/javascript/throughput.png           |  Bin 0 -> 81947 bytes
 .../version-0.17/benchmarks/python/README.md       |  127 ++
 .../benchmarks/python/mediacontent.png             |  Bin 0 -> 49948 bytes
 .../benchmarks/python/mediacontentlist.png         |  Bin 0 -> 57263 bytes
 .../version-0.17/benchmarks/python/sample.png      |  Bin 0 -> 53682 bytes
 .../version-0.17/benchmarks/python/samplelist.png  |  Bin 0 -> 60171 bytes
 .../version-0.17/benchmarks/python/struct.png      |  Bin 0 -> 54218 bytes
 .../version-0.17/benchmarks/python/structlist.png  |  Bin 0 -> 52290 bytes
 .../version-0.17/benchmarks/python/throughput.png  |  Bin 0 -> 79016 bytes
 .../version-0.17/benchmarks/rust/README.md         |  104 ++
 .../version-0.17/benchmarks/rust/company.png       |  Bin 0 -> 44643 bytes
 .../benchmarks/rust/ecommerce_data.png             |  Bin 0 -> 44956 bytes
 .../version-0.17/benchmarks/rust/mediacontent.png  |  Bin 0 -> 54130 bytes
 .../benchmarks/rust/mediacontentlist.png           |  Bin 0 -> 54154 bytes
 .../version-0.17/benchmarks/rust/person.png        |  Bin 0 -> 40224 bytes
 .../version-0.17/benchmarks/rust/sample.png        |  Bin 0 -> 44641 bytes
 .../version-0.17/benchmarks/rust/samplelist.png    |  Bin 0 -> 46992 bytes
 .../version-0.17/benchmarks/rust/simple_list.png   |  Bin 0 -> 39423 bytes
 .../version-0.17/benchmarks/rust/simple_map.png    |  Bin 0 -> 45555 bytes
 .../version-0.17/benchmarks/rust/simple_struct.png |  Bin 0 -> 43007 bytes
 .../version-0.17/benchmarks/rust/struct.png        |  Bin 0 -> 49558 bytes
 .../version-0.17/benchmarks/rust/structlist.png    |  Bin 0 -> 45987 bytes
 .../version-0.17/benchmarks/rust/system_data.png   |  Bin 0 -> 41417 bytes
 .../version-0.17/benchmarks/rust/throughput.png    |  Bin 0 -> 75422 bytes
 .../version-0.17/benchmarks/swift/README.md        |   46 +
 .../version-0.17/benchmarks/swift/throughput.png   |  Bin 0 -> 84759 bytes
 .../version-0.17/community/community.md            |   85 ++
 .../community/how_to_join_community.md             |  108 ++
 .../version-0.17/community/how_to_release.md       |  431 ++++++
 .../version-0.17/community/how_to_verify.md        |  119 ++
 .../version-0.17/compiler/_category_.json          |    6 +
 .../version-0.17/compiler/compiler-guide.md        |  655 +++++++++
 .../version-0.17/compiler/flatbuffers-idl.md       |  183 +++
 .../version-0.17/compiler/generated-code.md        |  714 ++++++++++
 .../version-0.17/compiler/index.md                 |  212 +++
 .../version-0.17/compiler/protobuf-idl.md          |  321 +++++
 .../version-0.17/compiler/schema-idl.md            |  737 ++++++++++
 .../version-0.17/guide/DEVELOPMENT.md              |  146 ++
 .../version-0.17/guide/_category_.json             |    1 +
 .../version-0.17/guide/cpp/_category_.json         |    6 +
 .../version-0.17/guide/cpp/basic-serialization.md  |  238 ++++
 .../version-0.17/guide/cpp/configuration.md        |  189 +++
 .../version-0.17/guide/cpp/cross-language.md       |  271 ++++
 .../version-0.17/guide/cpp/custom-serializers.md   |  371 +++++
 .../version-0.17/guide/cpp/field-configuration.md  |  504 +++++++
 .../version-0.17/guide/cpp/index.md                |  264 ++++
 .../version-0.17/guide/cpp/polymorphism.md         |  480 +++++++
 .../version-0.17/guide/cpp/row-format.md           |  516 +++++++
 .../version-0.17/guide/cpp/schema-evolution.md     |  404 ++++++
 .../version-0.17/guide/cpp/supported-types.md      |  277 ++++
 .../version-0.17/guide/cpp/type-registration.md    |  225 +++
 .../version-0.17/guide/csharp/index.md             |  104 ++
 .../version-0.17/guide/dart/_category_.json        |    6 +
 .../version-0.17/guide/dart/basic-serialization.md |  144 ++
 .../version-0.17/guide/dart/code-generation.md     |  113 ++
 .../version-0.17/guide/dart/configuration.md       |  121 ++
 .../version-0.17/guide/dart/cross-language.md      |  193 +++
 .../version-0.17/guide/dart/custom-serializers.md  |  139 ++
 .../version-0.17/guide/dart/field-configuration.md |  127 ++
 .../version-0.17/guide/dart/index.md               |  141 ++
 .../version-0.17/guide/dart/schema-evolution.md    |   92 ++
 .../version-0.17/guide/dart/supported-types.md     |  102 ++
 .../version-0.17/guide/dart/troubleshooting.md     |  103 ++
 .../version-0.17/guide/dart/type-registration.md   |   98 ++
 .../version-0.17/guide/go/_category_.json          |    6 +
 .../version-0.17/guide/go/basic-serialization.md   |  404 ++++++
 .../version-0.17/guide/go/codegen.md               |  420 ++++++
 .../version-0.17/guide/go/configuration.md         |  339 +++++
 .../version-0.17/guide/go/cross-language.md        |  280 ++++
 .../version-0.17/guide/go/custom-serializers.md    |  285 ++++
 .../version-0.17/guide/go/index.md                 |  164 +++
 .../version-0.17/guide/go/references.md            |  356 +++++
 .../version-0.17/guide/go/schema-evolution.md      |  340 +++++
 .../version-0.17/guide/go/struct-tags.md           |  335 +++++
 .../version-0.17/guide/go/supported-types.md       |  369 +++++
 .../version-0.17/guide/go/thread-safety.md         |  347 +++++
 .../version-0.17/guide/go/troubleshooting.md       |  448 ++++++
 .../version-0.17/guide/go/type-registration.md     |  260 ++++
 .../version-0.17/guide/graalvm_guide.md            |  318 +++++
 .../version-0.17/guide/java/_category_.json        |    6 +
 .../version-0.17/guide/java/advanced-features.md   |  208 +++
 .../version-0.17/guide/java/basic-serialization.md |  137 ++
 .../version-0.17/guide/java/compression.md         |  136 ++
 .../version-0.17/guide/java/configuration.md       |   77 +
 .../version-0.17/guide/java/cross-language.md      |  231 +++
 .../version-0.17/guide/java/custom-serializers.md  |  659 +++++++++
 .../version-0.17/guide/java/enum-configuration.md  |  104 ++
 .../version-0.17/guide/java/field-configuration.md |  605 ++++++++
 .../version-0.17/guide/java/index.md               |  193 +++
 .../version-0.17/guide/java/migration.md           |  120 ++
 .../version-0.17/guide/java/row-format.md          |  183 +++
 .../version-0.17/guide/java/schema-evolution.md    |  215 +++
 .../version-0.17/guide/java/troubleshooting.md     |  213 +++
 .../version-0.17/guide/java/type-registration.md   |  112 ++
 .../version-0.17/guide/java/virtual-threads.md     |  114 ++
 .../version-0.17/guide/javascript/_category_.json  |    6 +
 .../guide/javascript/basic-serialization.md        |  219 +++
 .../guide/javascript/cross-language.md             |  128 ++
 .../version-0.17/guide/javascript/index.md         |  141 ++
 .../version-0.17/guide/javascript/references.md    |  111 ++
 .../guide/javascript/schema-evolution.md           |   99 ++
 .../guide/javascript/supported-types.md            |  177 +++
 .../guide/javascript/troubleshooting.md            |  105 ++
 .../guide/javascript/type-registration.md          |  200 +++
 .../version-0.17/guide/kotlin/_category_.json      |    6 +
 .../version-0.17/guide/kotlin/default-values.md    |  137 ++
 .../version-0.17/guide/kotlin/fory-creation.md     |  116 ++
 .../version-0.17/guide/kotlin/index.md             |  108 ++
 .../guide/kotlin/type-serialization.md             |  184 +++
 .../version-0.17/guide/python/_category_.json      |    6 +
 .../guide/python/basic-serialization.md            |  145 ++
 .../version-0.17/guide/python/configuration.md     |  181 +++
 .../version-0.17/guide/python/cross-language.md    |  140 ++
 .../guide/python/custom-serializers.md             |  146 ++
 .../guide/python/field-configuration.md            |  492 +++++++
 .../version-0.17/guide/python/index.md             |  160 +++
 .../version-0.17/guide/python/migration.md         |   85 ++
 .../version-0.17/guide/python/numpy-integration.md |  103 ++
 .../version-0.17/guide/python/out-of-band.md       |  179 +++
 .../version-0.17/guide/python/python-native.md     |  205 +++
 .../version-0.17/guide/python/row-format.md        |  169 +++
 .../version-0.17/guide/python/schema-evolution.md  |   77 +
 .../version-0.17/guide/python/security.md          |  150 ++
 .../version-0.17/guide/python/troubleshooting.md   |  186 +++
 .../version-0.17/guide/python/type-registration.md |  146 ++
 .../version-0.17/guide/rust/_category_.json        |    6 +
 .../version-0.17/guide/rust/basic-serialization.md |  166 +++
 .../version-0.17/guide/rust/configuration.md       |  125 ++
 .../version-0.17/guide/rust/cross-language.md      |  165 +++
 .../version-0.17/guide/rust/custom-serializers.md  |  147 ++
 .../version-0.17/guide/rust/field-configuration.md |  460 ++++++
 .../version-0.17/guide/rust/index.md               |  184 +++
 .../version-0.17/guide/rust/polymorphism.md        |  232 +++
 .../version-0.17/guide/rust/references.md          |  213 +++
 .../version-0.17/guide/rust/row-format.md          |  126 ++
 .../version-0.17/guide/rust/schema-evolution.md    |  204 +++
 .../version-0.17/guide/rust/troubleshooting.md     |  164 +++
 .../version-0.17/guide/rust/type-registration.md   |  126 ++
 .../version-0.17/guide/scala/_category_.json       |    6 +
 .../version-0.17/guide/scala/default-values.md     |  186 +++
 .../version-0.17/guide/scala/fory-creation.md      |  139 ++
 .../version-0.17/guide/scala/index.md              |  100 ++
 .../version-0.17/guide/scala/type-serialization.md |  171 +++
 .../version-0.17/guide/xlang/_category_.json       |    6 +
 .../version-0.17/guide/xlang/field-nullability.md  |  251 ++++
 .../guide/xlang/field-reference-tracking.md        |  260 ++++
 .../version-0.17/guide/xlang/field-type-meta.md    |  301 ++++
 .../version-0.17/guide/xlang/getting-started.md    |  298 ++++
 .../version-0.17/guide/xlang/index.md              |  125 ++
 .../version-0.17/guide/xlang/row_format.md         |  190 +++
 .../version-0.17/guide/xlang/serialization.md      |  542 +++++++
 .../version-0.17/guide/xlang/troubleshooting.md    |  321 +++++
 .../version-0.17/guide/xlang/type-mapping.md       |  113 ++
 .../version-0.17/guide/xlang/zero-copy.md          |  207 +++
 .../version-0.17/introduction/_category_.json      |    1 +
 .../version-0.17/introduction/benchmark.md         |   90 ++
 .../version-0.17/introduction/features.md          |  210 +++
 .../version-0.17/introduction/overview.md          |  200 +++
 .../version-0.17/start/_category_.json             |    1 +
 .../version-0.17/start/install.md                  |  167 +++
 .../version-0.17/start/usage.md                    |  595 ++++++++
 .../version-0.17/benchmarks/cpp/README.md          |  104 ++
 .../version-0.17/benchmarks/cpp/REPORT.md          |  116 ++
 .../version-0.17/benchmarks/cpp/mediacontent.png   |  Bin 0 -> 52226 bytes
 .../benchmarks/cpp/mediacontentlist.png            |  Bin 0 -> 57111 bytes
 .../version-0.17/benchmarks/cpp/sample.png         |  Bin 0 -> 55251 bytes
 .../version-0.17/benchmarks/cpp/samplelist.png     |  Bin 0 -> 53909 bytes
 .../version-0.17/benchmarks/cpp/struct.png         |  Bin 0 -> 51352 bytes
 .../version-0.17/benchmarks/cpp/structlist.png     |  Bin 0 -> 53820 bytes
 .../version-0.17/benchmarks/cpp/throughput.png     |  Bin 0 -> 78902 bytes
 .../version-0.17/benchmarks/csharp/README.md       |  115 ++
 .../benchmarks/csharp/mediacontent.png             |  Bin 0 -> 53148 bytes
 .../benchmarks/csharp/mediacontentlist.png         |  Bin 0 -> 52044 bytes
 .../version-0.17/benchmarks/csharp/sample.png      |  Bin 0 -> 51280 bytes
 .../version-0.17/benchmarks/csharp/samplelist.png  |  Bin 0 -> 55993 bytes
 .../version-0.17/benchmarks/csharp/struct.png      |  Bin 0 -> 53639 bytes
 .../version-0.17/benchmarks/csharp/structlist.png  |  Bin 0 -> 47081 bytes
 .../version-0.17/benchmarks/csharp/throughput.png  |  Bin 0 -> 77537 bytes
 .../version-0.17/benchmarks/dart/README.md         |   73 +
 .../version-0.17/benchmarks/dart/mediacontent.png  |  Bin 0 -> 52584 bytes
 .../benchmarks/dart/mediacontentlist.png           |  Bin 0 -> 55357 bytes
 .../version-0.17/benchmarks/dart/sample.png        |  Bin 0 -> 42105 bytes
 .../version-0.17/benchmarks/dart/samplelist.png    |  Bin 0 -> 51598 bytes
 .../version-0.17/benchmarks/dart/struct.png        |  Bin 0 -> 38645 bytes
 .../version-0.17/benchmarks/dart/structlist.png    |  Bin 0 -> 44541 bytes
 .../version-0.17/benchmarks/dart/throughput.png    |  Bin 0 -> 89092 bytes
 .../version-0.17/benchmarks/go/README.md           |   58 +
 .../benchmarks/go/benchmark_combined.png           |  Bin 0 -> 193421 bytes
 .../benchmarks/go/benchmark_mediacontent.png       |  Bin 0 -> 63179 bytes
 .../benchmarks/go/benchmark_mediacontentlist.png   |  Bin 0 -> 75245 bytes
 .../benchmarks/go/benchmark_results.txt            |  326 +++++
 .../benchmarks/go/benchmark_sample.png             |  Bin 0 -> 64836 bytes
 .../benchmarks/go/benchmark_samplelist.png         |  Bin 0 -> 70519 bytes
 .../benchmarks/go/benchmark_struct.png             |  Bin 0 -> 65532 bytes
 .../benchmarks/go/benchmark_structlist.png         |  Bin 0 -> 63835 bytes
 .../benchmarks/go/serialized_sizes.txt             |   27 +
 .../version-0.17/benchmarks/java/README.md         |  239 ++++
 .../java/data/jmh-jdk-11-deserialization.csv       |  153 ++
 .../java/data/jmh-jdk-11-serialization.csv         |  153 ++
 .../benchmarks/java/data/jmh-jdk-11-zerocopy.csv   |   73 +
 .../java/java_heap_deserialize_compatible.png      |  Bin 0 -> 95479 bytes
 .../java/java_heap_deserialize_consistent.png      |  Bin 0 -> 104022 bytes
 .../java/java_heap_serialize_compatible.png        |  Bin 0 -> 104969 bytes
 .../java/java_heap_serialize_consistent.png        |  Bin 0 -> 102858 bytes
 .../java/java_offheap_deserialize_compatible.png   |  Bin 0 -> 100158 bytes
 .../java/java_offheap_deserialize_consistent.png   |  Bin 0 -> 104245 bytes
 .../java/java_offheap_serialize_compatible.png     |  Bin 0 -> 115647 bytes
 .../java/java_offheap_serialize_consistent.png     |  Bin 0 -> 117336 bytes
 .../java/java_repo_deserialization_throughput.png  |  Bin 0 -> 112116 bytes
 .../java/java_repo_serialization_throughput.png    |  Bin 0 -> 120005 bytes
 .../benchmarks/java/java_zero_copy_deserialize.png |  Bin 0 -> 93509 bytes
 .../benchmarks/java/java_zero_copy_serialize.png   |  Bin 0 -> 94327 bytes
 .../version-0.17/benchmarks/javascript/README.md   |  104 ++
 .../benchmarks/javascript/mediacontent.png         |  Bin 0 -> 55168 bytes
 .../benchmarks/javascript/mediacontentlist.png     |  Bin 0 -> 56815 bytes
 .../version-0.17/benchmarks/javascript/sample.png  |  Bin 0 -> 57185 bytes
 .../benchmarks/javascript/samplelist.png           |  Bin 0 -> 57215 bytes
 .../version-0.17/benchmarks/javascript/struct.png  |  Bin 0 -> 50777 bytes
 .../benchmarks/javascript/structlist.png           |  Bin 0 -> 54735 bytes
 .../benchmarks/javascript/throughput.png           |  Bin 0 -> 81947 bytes
 .../version-0.17/benchmarks/python/README.md       |  113 ++
 .../benchmarks/python/mediacontent.png             |  Bin 0 -> 51723 bytes
 .../benchmarks/python/mediacontentlist.png         |  Bin 0 -> 56440 bytes
 .../version-0.17/benchmarks/python/sample.png      |  Bin 0 -> 47563 bytes
 .../version-0.17/benchmarks/python/samplelist.png  |  Bin 0 -> 48300 bytes
 .../version-0.17/benchmarks/python/struct.png      |  Bin 0 -> 53286 bytes
 .../version-0.17/benchmarks/python/structlist.png  |  Bin 0 -> 50022 bytes
 .../version-0.17/benchmarks/python/throughput.png  |  Bin 0 -> 74287 bytes
 .../version-0.17/benchmarks/rust/README.md         |  103 ++
 .../version-0.17/benchmarks/rust/company.png       |  Bin 0 -> 44643 bytes
 .../benchmarks/rust/ecommerce_data.png             |  Bin 0 -> 44956 bytes
 .../version-0.17/benchmarks/rust/mediacontent.png  |  Bin 0 -> 54130 bytes
 .../benchmarks/rust/mediacontentlist.png           |  Bin 0 -> 54154 bytes
 .../version-0.17/benchmarks/rust/person.png        |  Bin 0 -> 40224 bytes
 .../version-0.17/benchmarks/rust/sample.png        |  Bin 0 -> 44641 bytes
 .../version-0.17/benchmarks/rust/samplelist.png    |  Bin 0 -> 46992 bytes
 .../version-0.17/benchmarks/rust/simple_list.png   |  Bin 0 -> 39423 bytes
 .../version-0.17/benchmarks/rust/simple_map.png    |  Bin 0 -> 45555 bytes
 .../version-0.17/benchmarks/rust/simple_struct.png |  Bin 0 -> 43007 bytes
 .../version-0.17/benchmarks/rust/struct.png        |  Bin 0 -> 49558 bytes
 .../version-0.17/benchmarks/rust/structlist.png    |  Bin 0 -> 45987 bytes
 .../version-0.17/benchmarks/rust/system_data.png   |  Bin 0 -> 41417 bytes
 .../version-0.17/benchmarks/rust/throughput.png    |  Bin 0 -> 75422 bytes
 .../version-0.17/benchmarks/swift/README.md        |   44 +
 .../version-0.17/benchmarks/swift/throughput.png   |  Bin 0 -> 84759 bytes
 versioned_docs/version-0.17/community/community.md |   90 ++
 .../community/how_to_join_community.md             |  105 ++
 .../version-0.17/community/how_to_release.md       |  645 +++++++++
 .../version-0.17/community/how_to_verify.md        |  125 ++
 .../version-0.17/compiler/_category_.json          |    6 +
 .../version-0.17/compiler/compiler-guide.md        |  805 +++++++++++
 .../version-0.17/compiler/flatbuffers-idl.md       |  199 +++
 .../version-0.17/compiler/generated-code.md        | 1040 ++++++++++++++
 versioned_docs/version-0.17/compiler/index.md      |  217 +++
 .../version-0.17/compiler/protobuf-idl.md          |  336 +++++
 versioned_docs/version-0.17/compiler/schema-idl.md | 1492 ++++++++++++++++++++
 versioned_docs/version-0.17/guide/DEVELOPMENT.md   |  131 ++
 versioned_docs/version-0.17/guide/_category_.json  |    4 +
 .../version-0.17/guide/cpp/_category_.json         |    6 +
 .../version-0.17/guide/cpp/basic-serialization.md  |  305 ++++
 .../version-0.17/guide/cpp/configuration.md        |  189 +++
 .../version-0.17/guide/cpp/cross-language.md       |  271 ++++
 .../version-0.17/guide/cpp/custom-serializers.md   |  371 +++++
 .../version-0.17/guide/cpp/field-configuration.md  |  568 ++++++++
 versioned_docs/version-0.17/guide/cpp/index.md     |  266 ++++
 .../version-0.17/guide/cpp/polymorphism.md         |  480 +++++++
 .../version-0.17/guide/cpp/row-format.md           |  512 +++++++
 .../version-0.17/guide/cpp/schema-evolution.md     |  416 ++++++
 .../version-0.17/guide/cpp/supported-types.md      |  278 ++++
 .../version-0.17/guide/cpp/type-registration.md    |  226 +++
 .../version-0.17/guide/csharp/_category_.json      |    6 +
 .../guide/csharp/basic-serialization.md            |  131 ++
 .../version-0.17/guide/csharp/configuration.md     |  125 ++
 .../version-0.17/guide/csharp/cross-language.md    |  107 ++
 .../guide/csharp/custom-serializers.md             |   84 ++
 .../guide/csharp/field-configuration.md            |   75 +
 versioned_docs/version-0.17/guide/csharp/index.md  |  104 ++
 .../version-0.17/guide/csharp/references.md        |   72 +
 .../version-0.17/guide/csharp/schema-evolution.md  |   90 ++
 .../version-0.17/guide/csharp/supported-types.md   |   97 ++
 .../version-0.17/guide/csharp/thread-safety.md     |   73 +
 .../version-0.17/guide/csharp/troubleshooting.md   |   94 ++
 .../version-0.17/guide/csharp/type-registration.md |   82 ++
 .../version-0.17/guide/dart/_category_.json        |    6 +
 .../version-0.17/guide/dart/basic-serialization.md |  144 ++
 .../version-0.17/guide/dart/code-generation.md     |  113 ++
 .../version-0.17/guide/dart/configuration.md       |  121 ++
 .../version-0.17/guide/dart/cross-language.md      |  193 +++
 .../version-0.17/guide/dart/custom-serializers.md  |  139 ++
 .../version-0.17/guide/dart/field-configuration.md |  127 ++
 versioned_docs/version-0.17/guide/dart/index.md    |  141 ++
 .../version-0.17/guide/dart/schema-evolution.md    |   92 ++
 .../version-0.17/guide/dart/supported-types.md     |  102 ++
 .../version-0.17/guide/dart/troubleshooting.md     |  103 ++
 .../version-0.17/guide/dart/type-registration.md   |   98 ++
 .../version-0.17/guide/go/_category_.json          |    6 +
 .../version-0.17/guide/go/basic-serialization.md   |  404 ++++++
 versioned_docs/version-0.17/guide/go/codegen.md    |  430 ++++++
 .../version-0.17/guide/go/configuration.md         |  344 +++++
 .../version-0.17/guide/go/cross-language.md        |  282 ++++
 .../version-0.17/guide/go/custom-serializers.md    |  285 ++++
 versioned_docs/version-0.17/guide/go/index.md      |  157 ++
 versioned_docs/version-0.17/guide/go/references.md |  356 +++++
 .../version-0.17/guide/go/schema-evolution.md      |  354 +++++
 .../version-0.17/guide/go/struct-tags.md           |  373 +++++
 .../version-0.17/guide/go/supported-types.md       |  369 +++++
 .../version-0.17/guide/go/thread-safety.md         |  347 +++++
 .../version-0.17/guide/go/troubleshooting.md       |  448 ++++++
 .../version-0.17/guide/go/type-registration.md     |  264 ++++
 versioned_docs/version-0.17/guide/graalvm_guide.md |  329 +++++
 .../version-0.17/guide/java/_category_.json        |    6 +
 .../version-0.17/guide/java/advanced-features.md   |  209 +++
 .../version-0.17/guide/java/basic-serialization.md |  127 ++
 .../version-0.17/guide/java/compression.md         |  136 ++
 .../version-0.17/guide/java/configuration.md       |   79 ++
 .../version-0.17/guide/java/cross-language.md      |  231 +++
 .../version-0.17/guide/java/custom-serializers.md  |  227 +++
 .../version-0.17/guide/java/enum-configuration.md  |  111 ++
 .../version-0.17/guide/java/field-configuration.md |  607 ++++++++
 versioned_docs/version-0.17/guide/java/index.md    |  210 +++
 .../version-0.17/guide/java/migration.md           |  120 ++
 .../version-0.17/guide/java/row-format.md          |  181 +++
 .../version-0.17/guide/java/schema-evolution.md    |  231 +++
 .../version-0.17/guide/java/troubleshooting.md     |  203 +++
 .../version-0.17/guide/java/type-registration.md   |  117 ++
 .../version-0.17/guide/java/virtual-threads.md     |  127 ++
 .../version-0.17/guide/javascript/_category_.json  |    6 +
 .../guide/javascript/basic-serialization.md        |  244 ++++
 .../guide/javascript/cross-language.md             |  128 ++
 .../version-0.17/guide/javascript/index.md         |  141 ++
 .../version-0.17/guide/javascript/references.md    |  111 ++
 .../guide/javascript/schema-evolution.md           |   99 ++
 .../guide/javascript/supported-types.md            |  177 +++
 .../guide/javascript/troubleshooting.md            |  105 ++
 .../guide/javascript/type-registration.md          |  200 +++
 .../version-0.17/guide/kotlin/_category_.json      |    6 +
 .../version-0.17/guide/kotlin/default-values.md    |  137 ++
 .../version-0.17/guide/kotlin/fory-creation.md     |  112 ++
 versioned_docs/version-0.17/guide/kotlin/index.md  |  108 ++
 .../guide/kotlin/type-serialization.md             |  184 +++
 .../version-0.17/guide/python/_category_.json      |    6 +
 .../guide/python/basic-serialization.md            |  145 ++
 .../version-0.17/guide/python/configuration.md     |  183 +++
 .../version-0.17/guide/python/cross-language.md    |  140 ++
 .../guide/python/custom-serializers.md             |  138 ++
 .../guide/python/field-configuration.md            |  492 +++++++
 versioned_docs/version-0.17/guide/python/index.md  |  160 +++
 .../version-0.17/guide/python/migration.md         |   85 ++
 .../version-0.17/guide/python/numpy-integration.md |  103 ++
 .../version-0.17/guide/python/out-of-band.md       |  179 +++
 .../version-0.17/guide/python/python-native.md     |  205 +++
 .../version-0.17/guide/python/row-format.md        |  167 +++
 .../version-0.17/guide/python/schema-evolution.md  |   98 ++
 .../version-0.17/guide/python/security.md          |  150 ++
 .../version-0.17/guide/python/troubleshooting.md   |  186 +++
 .../version-0.17/guide/python/type-registration.md |  146 ++
 .../version-0.17/guide/rust/_category_.json        |    6 +
 .../version-0.17/guide/rust/basic-serialization.md |  166 +++
 .../version-0.17/guide/rust/configuration.md       |  125 ++
 .../version-0.17/guide/rust/cross-language.md      |  165 +++
 .../version-0.17/guide/rust/custom-serializers.md  |  153 ++
 .../version-0.17/guide/rust/field-configuration.md |  460 ++++++
 versioned_docs/version-0.17/guide/rust/index.md    |  184 +++
 .../version-0.17/guide/rust/polymorphism.md        |  232 +++
 .../version-0.17/guide/rust/references.md          |  213 +++
 .../version-0.17/guide/rust/row-format.md          |  126 ++
 .../version-0.17/guide/rust/schema-evolution.md    |  218 +++
 .../version-0.17/guide/rust/troubleshooting.md     |  164 +++
 .../version-0.17/guide/rust/type-registration.md   |  126 ++
 .../version-0.17/guide/scala/_category_.json       |    6 +
 .../version-0.17/guide/scala/default-values.md     |  186 +++
 .../version-0.17/guide/scala/fory-creation.md      |  136 ++
 versioned_docs/version-0.17/guide/scala/index.md   |  100 ++
 .../version-0.17/guide/scala/type-serialization.md |  171 +++
 .../version-0.17/guide/swift/_category_.json       |    6 +
 .../guide/swift/basic-serialization.md             |  114 ++
 .../version-0.17/guide/swift/configuration.md      |  100 ++
 .../version-0.17/guide/swift/cross-language.md     |   97 ++
 .../version-0.17/guide/swift/custom-serializers.md |   84 ++
 .../guide/swift/field-configuration.md             |   92 ++
 versioned_docs/version-0.17/guide/swift/index.md   |   84 ++
 .../version-0.17/guide/swift/polymorphism.md       |   80 ++
 .../version-0.17/guide/swift/references.md         |  111 ++
 .../version-0.17/guide/swift/row-format.md         |   38 +
 .../version-0.17/guide/swift/schema-evolution.md   |   77 +
 .../version-0.17/guide/swift/troubleshooting.md    |   92 ++
 .../version-0.17/guide/swift/type-registration.md  |   76 +
 .../version-0.17/guide/xlang/_category_.json       |    6 +
 .../version-0.17/guide/xlang/field-nullability.md  |  250 ++++
 .../guide/xlang/field-reference-tracking.md        |  264 ++++
 .../version-0.17/guide/xlang/field-type-meta.md    |  301 ++++
 .../version-0.17/guide/xlang/getting-started.md    |  298 ++++
 versioned_docs/version-0.17/guide/xlang/index.md   |  162 +++
 .../version-0.17/guide/xlang/row_format.md         |  190 +++
 .../version-0.17/guide/xlang/serialization.md      |  548 +++++++
 .../version-0.17/guide/xlang/troubleshooting.md    |  302 ++++
 .../version-0.17/guide/xlang/zero-copy.md          |  209 +++
 .../version-0.17/introduction/_category_.json      |    4 +
 .../version-0.17/introduction/benchmark.md         |   96 ++
 .../version-0.17/introduction/features.md          |  210 +++
 .../version-0.17/introduction/overview.md          |  200 +++
 .../specification/java_serialization_spec.md       |  485 +++++++
 .../version-0.17/specification/row_format_spec.md  |  540 +++++++
 .../specification/xlang_implementation_guide.md    |  439 ++++++
 .../specification/xlang_serialization_spec.md      | 1464 +++++++++++++++++++
 .../specification/xlang_type_mapping.md            |  145 ++
 versioned_docs/version-0.17/start/_category_.json  |    4 +
 versioned_docs/version-0.17/start/install.md       |  167 +++
 versioned_docs/version-0.17/start/usage.md         |  595 ++++++++
 versioned_sidebars/version-0.17-sidebars.json      |   64 +
 versions.json                                      |    1 +
 473 files changed, 66438 insertions(+), 2 deletions(-)

diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 970d8d0fc..4eacdbdfd 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -38,7 +38,7 @@ const config: Config = {
       {
         docs: {
           sidebarCollapsible: true,
-          lastVersion: '0.16',
+          lastVersion: '0.17',
           versions: {
             current: {
               label: 'dev',
@@ -279,4 +279,3 @@ const config: Config = {
 };
 
 export default config;
-
diff --git a/i18n/en-US/docusaurus-plugin-content-docs/version-0.17/.keep b/i18n/en-US/docusaurus-plugin-content-docs/version-0.17/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/README.md
new file mode 100644
index 000000000..a2be4452e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/README.md
@@ -0,0 +1,60 @@
+# C++ 基准性能报告
+
+_生成时间:2025-12-15 23:03:06_
+
+## 如何生成本报告
+
+```bash
+cd benchmarks/cpp_benchmark/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
+```
+
+## 硬件与系统信息
+
+| Key                        | Value                     |
+| -------------------------- | ------------------------- |
+| OS                         | Darwin 24.6.0             |
+| Machine                    | arm64                     |
+| Processor                  | arm                       |
+| CPU Cores (Physical)       | 12                        |
+| CPU Cores (Logical)        | 12                        |
+| Total RAM (GB)             | 48.0                      |
+| Benchmark Date             | 2025-12-15T23:02:49+08:00 |
+| CPU Cores (from benchmark) | 12                        |
+
+## 基准图表
+
+![Throughput](throughput.png)
+
+## 基准结果
+
+### 耗时结果(纳秒)
+
+| Datatype     | Operation   | Fory (ns) | Protobuf (ns) | Faster      |
+| ------------ | ----------- | --------- | ------------- | ----------- |
+| Mediacontent | Serialize   | 443.5     | 1982.5        | Fory (4.5x) |
+| Mediacontent | Deserialize | 1349.0    | 2525.2        | Fory (1.9x) |
+| Sample       | Serialize   | 235.4     | 309.7         | Fory (1.3x) |
+| Sample       | Deserialize | 1068.7    | 1397.0        | Fory (1.3x) |
+| Struct       | Serialize   | 109.4     | 170.0         | Fory (1.6x) |
+| Struct       | Deserialize | 129.1     | 161.2         | Fory (1.2x) |
+
+### 吞吐结果(ops/sec)
+
+| Datatype     | Operation   | Fory TPS  | Protobuf TPS | Faster      |
+| ------------ | ----------- | --------- | ------------ | ----------- |
+| Mediacontent | Serialize   | 2,254,915 | 504,410      | Fory (4.5x) |
+| Mediacontent | Deserialize | 741,303   | 396,013      | Fory (1.9x) |
+| Sample       | Serialize   | 4,248,973 | 3,229,102    | Fory (1.3x) |
+| Sample       | Deserialize | 935,709   | 715,837      | Fory (1.3x) |
+| Struct       | Serialize   | 9,143,618 | 5,881,005    | Fory (1.6x) |
+| Struct       | Deserialize | 7,746,787 | 6,202,164    | Fory (1.2x) |
+
+### 序列化数据大小(字节)
+
+| Datatype | Fory | Protobuf |
+| -------- | ---- | -------- |
+| Struct   | 32   | 61       |
+| Sample   | 384  | 375      |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/REPORT.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/REPORT.md
new file mode 100644
index 000000000..cb2ed0a96
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/REPORT.md
@@ -0,0 +1,116 @@
+# C++ 基准性能报告
+
+_生成时间:2026-02-06 20:01:02_
+
+## 如何生成本报告
+
+```bash
+cd benchmarks/cpp_benchmark/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
+```
+
+## 硬件与系统信息
+
+| Key                        | Value                     |
+| -------------------------- | ------------------------- |
+| OS                         | Darwin 24.6.0             |
+| Machine                    | arm64                     |
+| Processor                  | arm                       |
+| CPU Cores (Physical)       | 12                        |
+| CPU Cores (Logical)        | 12                        |
+| Total RAM (GB)             | 48.0                      |
+| Benchmark Date             | 2026-02-06T20:00:20+08:00 |
+| CPU Cores (from benchmark) | 12                        |
+
+## 基准图表
+
+### Mediacontent
+
+<p align="center">
+<img src="mediacontent.png" width="90%" />
+</p>
+
+### Mediacontentlist
+
+<p align="center">
+<img src="mediacontentlist.png" width="90%" />
+</p>
+
+### Sample
+
+<p align="center">
+<img src="sample.png" width="90%" />
+</p>
+
+### Samplelist
+
+<p align="center">
+<img src="samplelist.png" width="90%" />
+</p>
+
+### Struct
+
+<p align="center">
+<img src="struct.png" width="90%" />
+</p>
+
+### Structlist
+
+<p align="center">
+<img src="structlist.png" width="90%" />
+</p>
+
+### Throughput
+
+<p align="center">
+<img src="throughput.png" width="90%" />
+</p>
+
+## 基准结果
+
+### 耗时结果(纳秒)
+
+| Datatype         | Operation   | Fory (ns) | Protobuf (ns) | Faster       |
+| ---------------- | ----------- | --------- | ------------- | ------------ |
+| Mediacontent     | Serialize   | 512.0     | 1990.9        | Fory (3.9x)  |
+| Mediacontent     | Deserialize | 1674.1    | 2516.6        | Fory (1.5x)  |
+| Mediacontentlist | Serialize   | 2261.0    | 10804.2       | Fory (4.8x)  |
+| Mediacontentlist | Deserialize | 6943.5    | 13375.9       | Fory (1.9x)  |
+| Sample           | Serialize   | 241.7     | 309.4         | Fory (1.3x)  |
+| Sample           | Deserialize | 1055.8    | 1361.5        | Fory (1.3x)  |
+| Samplelist       | Serialize   | 963.2     | 11716.7       | Fory (12.2x) |
+| Samplelist       | Deserialize | 5295.9    | 12162.2       | Fory (2.3x)  |
+| Struct           | Serialize   | 117.1     | 169.6         | Fory (1.4x)  |
+| Struct           | Deserialize | 138.6     | 156.2         | Fory (1.1x)  |
+| Structlist       | Serialize   | 308.4     | 1299.4        | Fory (4.2x)  |
+| Structlist       | Deserialize | 706.2     | 1188.0        | Fory (1.7x)  |
+
+### 吞吐结果(ops/sec)
+
+| Datatype         | Operation   | Fory TPS  | Protobuf TPS | Faster       |
+| ---------------- | ----------- | --------- | ------------ | ------------ |
+| Mediacontent     | Serialize   | 1,952,940 | 502,295      | Fory (3.9x)  |
+| Mediacontent     | Deserialize | 597,343   | 397,356      | Fory (1.5x)  |
+| Mediacontentlist | Serialize   | 442,277   | 92,557       | Fory (4.8x)  |
+| Mediacontentlist | Deserialize | 144,020   | 74,761       | Fory (1.9x)  |
+| Sample           | Serialize   | 4,138,037 | 3,232,073    | Fory (1.3x)  |
+| Sample           | Deserialize | 947,188   | 734,472      | Fory (1.3x)  |
+| Samplelist       | Serialize   | 1,038,236 | 85,348       | Fory (12.2x) |
+| Samplelist       | Deserialize | 188,825   | 82,222       | Fory (2.3x)  |
+| Struct           | Serialize   | 8,542,313 | 5,896,325    | Fory (1.4x)  |
+| Struct           | Deserialize | 7,217,541 | 6,403,969    | Fory (1.1x)  |
+| Structlist       | Serialize   | 3,242,105 | 769,562      | Fory (4.2x)  |
+| Structlist       | Deserialize | 1,416,005 | 841,739      | Fory (1.7x)  |
+
+### 序列化数据大小(字节)
+
+| Datatype         | Fory | Protobuf |
+| ---------------- | ---- | -------- |
+| Struct           | 58   | 61       |
+| Sample           | 446  | 375      |
+| MediaContent     | 365  | 301      |
+| StructList       | 184  | 315      |
+| SampleList       | 1980 | 1890     |
+| MediaContentList | 1535 | 1520     |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/mediacontent.png
new file mode 100644
index 000000000..3c42b14f3
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/mediacontentlist.png
new file mode 100644
index 000000000..604663b68
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/sample.png
new file mode 100644
index 000000000..2932de24b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/samplelist.png
new file mode 100644
index 000000000..6d903f53c
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/struct.png
new file mode 100644
index 000000000..94209b375
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/structlist.png
new file mode 100644
index 000000000..fe2dca4ca
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/throughput.png
new file mode 100644
index 000000000..1aa86b16b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/cpp/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/README.md
new file mode 100644
index 000000000..d613c04eb
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/README.md
@@ -0,0 +1,129 @@
+# C# 基准性能报告
+
+_生成于 2026-03-11 02:14:01_
+
+## 如何生成本报告
+
+```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
+```
+
+## 硬件与操作系统信息
+
+| 键                                 | 值                                                                                                                           |
+| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| 操作系统                           | 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-03-10T18:14:00.0852460Z                                                                                                 |
+| 预热秒数                           | 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                                                 |
+
+## 基准图表
+
+下列各类图表均展示吞吐量(ops/sec)。
+
+### 总吞吐量
+
+<p align="center">
+<img src="throughput.png" width="90%" />
+</p>
+
+### `MediaContent` 基准
+
+<p align="center">
+<img src="mediacontent.png" width="90%" />
+</p>
+
+### `MediaContentList` 基准
+
+<p align="center">
+<img src="mediacontentlist.png" width="90%" />
+</p>
+
+### Sample
+
+<p align="center">
+<img src="sample.png" width="90%" />
+</p>
+
+### Samplelist
+
+<p align="center">
+<img src="samplelist.png" width="90%" />
+</p>
+
+### Struct
+
+<p align="center">
+<img src="struct.png" width="90%" />
+</p>
+
+### Structlist
+
+<p align="center">
+<img src="structlist.png" width="90%" />
+</p>
+
+## 基准结果
+
+### 延迟结果(纳秒)
+
+| 数据类型         | 操作        | fory (ns) | protobuf (ns) | msgpack (ns) | 最快    |
+| ---------------- | ----------- | --------- | ------------- | ------------ | ------- |
+| Struct           | Serialize   | 39.2      | 121.5         | 66.0         | fory    |
+| Struct           | Deserialize | 58.3      | 180.1         | 102.6        | fory    |
+| Sample           | Serialize   | 269.2     | 562.6         | 339.6        | fory    |
+| Sample           | Deserialize | 175.6     | 1084.9        | 531.8        | fory    |
+| MediaContent     | Serialize   | 306.3     | 434.7         | 351.5        | fory    |
+| MediaContent     | Deserialize | 379.4     | 718.8         | 676.9        | fory    |
+| StructList       | Serialize   | 136.1     | 468.5         | 266.9        | fory    |
+| StructList       | Deserialize | 221.1     | 687.0         | 488.5        | fory    |
+| SampleList       | Serialize   | 1198.9    | 2811.9        | 1635.7       | fory    |
+| SampleList       | Deserialize | 791.5     | 5174.5        | 2629.2       | fory    |
+| MediaContentList | Serialize   | 1393.9    | 2199.4        | 1710.9       | fory    |
+| MediaContentList | Deserialize | 1719.5    | 3373.1        | 3401.2       | fory    |
+
+### 吞吐结果(ops/sec)
+
+| 数据类型         | 操作        | fory TPS   | protobuf TPS | msgpack TPS | 最快    |
+| ---------------- | ----------- | ---------- | ------------ | ----------- | ------- |
+| Struct           | Serialize   | 25,535,535 | 8,233,006    | 15,153,903  | fory    |
+| Struct           | Deserialize | 17,164,793 | 5,553,220    | 9,745,096   | fory    |
+| Sample           | Serialize   | 3,715,302  | 1,777,405    | 2,944,981   | fory    |
+| Sample           | Deserialize | 5,696,108  | 921,760      | 1,880,420   | fory    |
+| MediaContent     | Serialize   | 3,264,890  | 2,300,297    | 2,845,038   | fory    |
+| MediaContent     | Deserialize | 2,635,449  | 1,391,138    | 1,477,346   | fory    |
+| StructList       | Serialize   | 7,347,503  | 2,134,576    | 3,746,866   | fory    |
+| StructList       | Deserialize | 4,522,114  | 1,455,557    | 2,046,988   | fory    |
+| SampleList       | Serialize   | 834,086    | 355,633      | 611,365     | fory    |
+| SampleList       | Deserialize | 1,263,450  | 193,254      | 380,338     | fory    |
+| MediaContentList | Serialize   | 717,408    | 454,670      | 584,497     | fory    |
+| MediaContentList | Deserialize | 581,554    | 296,459      | 294,015     | fory    |
+
+### 序列化数据大小(字节)
+
+| 数据类型         | fory | protobuf | msgpack |
+| ---------------- | ---- | -------- | ------- |
+| Struct           | 58   | 61       | 55      |
+| Sample           | 446  | 460      | 562     |
+| MediaContent     | 365  | 307      | 479     |
+| StructList       | 184  | 315      | 284     |
+| SampleList       | 1980 | 2315     | 2819    |
+| MediaContentList | 1535 | 1550     | 2404    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/mediacontent.png
new file mode 100644
index 000000000..052229ba8
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/mediacontentlist.png
new file mode 100644
index 000000000..81854b876
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/sample.png
new file mode 100644
index 000000000..77ccabc0c
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/samplelist.png
new file mode 100644
index 000000000..93a9c5018
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/struct.png
new file mode 100644
index 000000000..39e32751b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/structlist.png
new file mode 100644
index 000000000..792559337
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/throughput.png
new file mode 100644
index 000000000..77b696c9b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/csharp/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/README.md
new file mode 100644
index 000000000..090c930bf
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/README.md
@@ -0,0 +1,73 @@
+# Fory Dart Benchmark
+
+This benchmark compares serialization and deserialization throughput for Apache Fory and Protocol Buffers in Dart.
+
+## Hardware and Runtime Info
+
+| Key                   | Value                                                            |
+| --------------------- | ---------------------------------------------------------------- |
+| Timestamp             | 2026-04-13T21:55:28.456625Z                                      |
+| OS                    | Version 26.2 (Build 25C56)                                       |
+| Host                  | Macbook-Air.local                                                |
+| CPU Cores (Logical)   | 8                                                                |
+| Memory (GB)           | 8.00                                                             |
+| Dart                  | 3.10.4 (stable) (Tue Dec 9 00:01:55 2025 -0800) on "macos_arm64" |
+| Samples per case      | 5                                                                |
+| Warmup per case (s)   | 1.0                                                              |
+| Duration per case (s) | 1.5                                                              |
+
+## Throughput Results
+
+![Throughput](throughput.png)
+
+| Datatype         | Operation   |  Fory TPS | Protobuf TPS | Fastest      |
+| ---------------- | ----------- | --------: | -----------: | ------------ |
+| Struct           | Serialize   | 3,989,432 |    1,884,653 | fory (2.12x) |
+| Struct           | Deserialize | 5,828,197 |    4,199,680 | fory (1.39x) |
+| Sample           | Serialize   | 1,649,722 |      500,167 | fory (3.30x) |
+| Sample           | Deserialize | 2,060,113 |      785,109 | fory (2.62x) |
+| MediaContent     | Serialize   |   800,876 |      391,235 | fory (2.05x) |
+| MediaContent     | Deserialize | 1,315,115 |      683,533 | fory (1.92x) |
+| StructList       | Serialize   | 1,456,396 |      367,506 | fory (3.96x) |
+| StructList       | Deserialize | 1,921,006 |      645,958 | fory (2.97x) |
+| SampleList       | Serialize   |   411,144 |       48,508 | fory (8.48x) |
+| SampleList       | Deserialize |   464,273 |      103,558 | fory (4.48x) |
+| MediaContentList | Serialize   |   186,870 |       77,029 | fory (2.43x) |
+| MediaContentList | Deserialize |   330,293 |      128,215 | fory (2.58x) |
+
+## Serialized Size (bytes)
+
+| Datatype         | Fory | Protobuf |
+| ---------------- | ---: | -------: |
+| Struct           |   58 |       61 |
+| Sample           |  446 |      377 |
+| MediaContent     |  365 |      307 |
+| StructList       |  184 |      315 |
+| SampleList       | 1980 |     1900 |
+| MediaContentList | 1535 |     1550 |
+
+## Per-workload Plots
+
+### Struct
+
+![Struct](struct.png)
+
+### Sample
+
+![Sample](sample.png)
+
+### MediaContent
+
+![MediaContent](mediacontent.png)
+
+### StructList
+
+![StructList](structlist.png)
+
+### SampleList
+
+![SampleList](samplelist.png)
+
+### MediaContentList
+
+![MediaContentList](mediacontentlist.png)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/mediacontent.png
new file mode 100644
index 000000000..17bd33a9b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/mediacontentlist.png
new file mode 100644
index 000000000..a0d404e06
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/sample.png
new file mode 100644
index 000000000..11f2d7743
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/samplelist.png
new file mode 100644
index 000000000..a4b8cb1c0
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/struct.png
new file mode 100644
index 000000000..7d616cbed
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/structlist.png
new file mode 100644
index 000000000..01484cfe9
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/throughput.png
new file mode 100644
index 000000000..f0c4d91d8
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/dart/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/README.md
new file mode 100644
index 000000000..7227dc092
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/README.md
@@ -0,0 +1,58 @@
+# Go 序列化基准报告
+
+生成时间:2026-02-06 11:26:58
+
+## 系统信息
+
+- **OS**: Darwin 24.6.0
+- **Architecture**: arm64
+- **Python**: 3.10.8
+
+## 性能图表
+
+![Benchmark](benchmark_combined.png)
+
+## 性能汇总
+
+| Data Type        | Operation   | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
+| ---------------- | ----------- | ------------ | ---------------- | --------------- | ---------- | ---------- |
+| Struct           | Serialize   | 15.16M       | 10.23M           | 5.41M           | 1.48x      | 2.80x      |
+| Struct           | Deserialize | 12.10M       | 11.01M           | 3.23M           | 1.10x      | 3.75x      |
+| Structlist       | Serialize   | 1.58M        | 561K             | 299K            | 2.82x      | 5.28x      |
+| Structlist       | Deserialize | 1.10M        | 529K             | 175K            | 2.09x      | 6.30x      |
+| Sample           | Serialize   | 7.28M        | 2.72M            | 670K            | 2.68x      | 10.87x     |
+| Sample           | Deserialize | 3.79M        | 2.37M            | 376K            | 1.60x      | 10.09x     |
+| Samplelist       | Serialize   | 510K         | 141K             | 38K             | 3.61x      | 13.34x     |
+| Samplelist       | Deserialize | 236K         | 107K             | 19K             | 2.20x      | 12.66x     |
+| Mediacontent     | Serialize   | 3.72M        | 2.12M            | 1.29M           | 1.75x      | 2.88x      |
+| Mediacontent     | Deserialize | 2.34M        | 1.81M            | 698K            | 1.30x      | 3.35x      |
+| Mediacontentlist | Serialize   | 268K         | 110K             | 72K             | 2.44x      | 3.72x      |
+| Mediacontentlist | Deserialize | 138K         | 87K              | 36K             | 1.58x      | 3.86x      |
+
+## 详细耗时(ns/op)
+
+| Data Type        | Operation   | Fory   | Protobuf | Msgpack |
+| ---------------- | ----------- | ------ | -------- | ------- |
+| Struct           | Serialize   | 66.0   | 97.8     | 184.9   |
+| Struct           | Deserialize | 82.7   | 90.9     | 309.6   |
+| Structlist       | Serialize   | 632.8  | 1783.0   | 3340.0  |
+| Structlist       | Deserialize | 906.4  | 1891.0   | 5709.0  |
+| Sample           | Serialize   | 137.3  | 367.3    | 1492.0  |
+| Sample           | Deserialize | 263.6  | 422.2    | 2661.0  |
+| Samplelist       | Serialize   | 1962.0 | 7087.0   | 26169.0 |
+| Samplelist       | Deserialize | 4234.0 | 9321.0   | 53615.0 |
+| Mediacontent     | Serialize   | 268.8  | 471.1    | 773.7   |
+| Mediacontent     | Deserialize | 426.9  | 553.1    | 1432.0  |
+| Mediacontentlist | Serialize   | 3736.0 | 9107.0   | 13911.0 |
+| Mediacontentlist | Deserialize | 7247.0 | 11435.0  | 27975.0 |
+
+### 序列化数据大小(字节)
+
+| Data Type        | Fory | Protobuf | Msgpack |
+| ---------------- | ---- | -------- | ------- |
+| Struct           | 58   | 61       | 57      |
+| Sample           | 446  | 375      | 524     |
+| MediaContent     | 342  | 301      | 400     |
+| StructList       | 560  | 1260     | 1146    |
+| SampleList       | 7600 | 7560     | 10486   |
+| MediaContentList | 5776 | 6080     | 8006    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_combined.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_combined.png
new file mode 100644
index 000000000..fe3ede6c2
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_combined.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_mediacontent.png
new file mode 100644
index 000000000..dd914fc25
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_mediacontentlist.png
new file mode 100644
index 000000000..8c10cb933
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_report.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_report.md
new file mode 100644
index 000000000..f73aacf0a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_report.md
@@ -0,0 +1,84 @@
+# Go 序列化基准报告
+
+生成时间:2026-02-06 11:50:36
+
+## 系统信息
+
+- **操作系统**: Darwin 24.6.0
+- **架构**: arm64
+- **Python**: 3.9.6
+
+## 性能摘要
+
+| 数据类型         | 操作     | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
+| ---------------- | -------- | ------------ | ---------------- | --------------- | ---------- | ---------- |
+| Struct           | 序列化   | 15.16M       | 10.23M           | 5.41M           | 1.48x      | 2.80x      |
+| Struct           | 反序列化 | 12.10M       | 11.01M           | 3.23M           | 1.10x      | 3.75x      |
+| Structlist       | 序列化   | 1.58M        | 561K             | 299K            | 2.82x      | 5.28x      |
+| Structlist       | 反序列化 | 1.10M        | 529K             | 175K            | 2.09x      | 6.30x      |
+| Sample           | 序列化   | 7.28M        | 2.72M            | 670K            | 2.68x      | 10.87x     |
+| Sample           | 反序列化 | 3.79M        | 2.37M            | 376K            | 1.60x      | 10.09x     |
+| Samplelist       | 序列化   | 510K         | 141K             | 38K             | 3.61x      | 13.34x     |
+| Samplelist       | 反序列化 | 236K         | 107K             | 19K             | 2.20x      | 12.66x     |
+| Mediacontent     | 序列化   | 3.72M        | 2.12M            | 1.29M           | 1.75x      | 2.88x      |
+| Mediacontent     | 反序列化 | 2.34M        | 1.81M            | 698K            | 1.30x      | 3.35x      |
+| Mediacontentlist | 序列化   | 268K         | 110K             | 72K             | 2.44x      | 3.72x      |
+| Mediacontentlist | 反序列化 | 138K         | 87K              | 36K             | 1.58x      | 3.86x      |
+
+## 详细耗时(ns/op)
+
+| 数据类型         | 操作     | Fory   | Protobuf | Msgpack |
+| ---------------- | -------- | ------ | -------- | ------- |
+| Struct           | 序列化   | 66.0   | 97.8     | 184.9   |
+| Struct           | 反序列化 | 82.7   | 90.9     | 309.6   |
+| Structlist       | 序列化   | 632.8  | 1783.0   | 3340.0  |
+| Structlist       | 反序列化 | 906.4  | 1891.0   | 5709.0  |
+| Sample           | 序列化   | 137.3  | 367.3    | 1492.0  |
+| Sample           | 反序列化 | 263.6  | 422.2    | 2661.0  |
+| Samplelist       | 序列化   | 1962.0 | 7087.0   | 26169.0 |
+| Samplelist       | 反序列化 | 4234.0 | 9321.0   | 53615.0 |
+| Mediacontent     | 序列化   | 268.8  | 471.1    | 773.7   |
+| Mediacontent     | 反序列化 | 426.9  | 553.1    | 1432.0  |
+| Mediacontentlist | 序列化   | 3736.0 | 9107.0   | 13911.0 |
+| Mediacontentlist | 反序列化 | 7247.0 | 11435.0  | 27975.0 |
+
+### 序列化后数据大小(字节)
+
+| 数据类型         | Fory | Protobuf | Msgpack |
+| ---------------- | ---- | -------- | ------- |
+| Struct           | 58   | 61       | 57      |
+| Sample           | 446  | 375      | 524     |
+| MediaContent     | 342  | 301      | 400     |
+| StructList       | 560  | 1260     | 1146    |
+| SampleList       | 7600 | 7560     | 10486   |
+| MediaContentList | 5776 | 6080     | 8006    |
+
+## 性能图表
+
+### 综合概览
+
+![Combined Benchmark](benchmark_combined.png)
+
+### Struct
+
+![Struct Benchmark](benchmark_struct.png)
+
+### Structlist
+
+![Structlist Benchmark](benchmark_structlist.png)
+
+### Sample
+
+![Sample Benchmark](benchmark_sample.png)
+
+### Samplelist
+
+![Samplelist Benchmark](benchmark_samplelist.png)
+
+### Mediacontent
+
+![Mediacontent Benchmark](benchmark_mediacontent.png)
+
+### Mediacontentlist
+
+![Mediacontentlist Benchmark](benchmark_mediacontentlist.png)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_results.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_results.json
new file mode 100644
index 000000000..a56018d44
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_results.json
@@ -0,0 +1,184 @@
+{"Time":"2026-02-06T11:26:00.8242+08:00","Action":"start","Package":"github.com/apache/fory/benchmarks/go_benchmark"}
+{"Time":"2026-02-06T11:26:02.038023+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes"}
+{"Time":"2026-02-06T11:26:02.038063+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"=== RUN   TestPrintSerializedSizes\n"}
+{"Time":"2026-02-06T11:26:02.039886+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"============================================\n"}
+{"Time":"2026-02-06T11:26:02.039942+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"Serialized Sizes (bytes):\n"}
+{"Time":"2026-02-06T11:26:02.03996+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"============================================\n"}
+{"Time":"2026-02-06T11:26:02.039966+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"NumericStruct:\n"}
+{"Time":"2026-02-06T11:26:02.039976+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Fory:     58 bytes\n"}
+{"Time":"2026-02-06T11:26:02.03998+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Protobuf: 61 bytes\n"}
+{"Time":"2026-02-06T11:26:02.039984+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Msgpack:  57 bytes\n"}
+{"Time":"2026-02-06T11:26:02.039988+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"Sample:\n"}
+{"Time":"2026-02-06T11:26:02.039999+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Fory:     446 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040004+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Protobuf: 375 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040008+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Msgpack:  524 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040011+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"MediaContent:\n"}
+{"Time":"2026-02-06T11:26:02.040015+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Fory:     342 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040018+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Protobuf: 301 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040022+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Msgpack:  400 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040025+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"StructList:\n"}
+{"Time":"2026-02-06T11:26:02.040029+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Fory:     560 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040034+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Protobuf: 1260 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040038+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Msgpack:  1146 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040042+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"SampleList:\n"}
+{"Time":"2026-02-06T11:26:02.040058+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Fory:     7600 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040061+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Protobuf: 7560 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040065+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Msgpack:  10486 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040069+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"MediaContentList:\n"}
+{"Time":"2026-02-06T11:26:02.040072+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Fory:     5776 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040076+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Protobuf: 6080 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040079+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"  Msgpack:  8006 bytes\n"}
+{"Time":"2026-02-06T11:26:02.040083+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"============================================\n"}
+{"Time":"2026-02-06T11:26:02.040096+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Output":"--- PASS: TestPrintSerializedSizes (0.00s)\n"}
+{"Time":"2026-02-06T11:26:02.0401+08:00","Action":"pass","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"TestPrintSerializedSizes","Elapsed":0}
+{"Time":"2026-02-06T11:26:02.040221+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Output":"goos: darwin\n"}
+{"Time":"2026-02-06T11:26:02.040245+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Output":"goarch: arm64\n"}
+{"Time":"2026-02-06T11:26:02.040254+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Output":"pkg: github.com/apache/fory/benchmarks/go_benchmark\n"}
+{"Time":"2026-02-06T11:26:02.04026+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Output":"cpu: Apple M4 Pro\n"}
+{"Time":"2026-02-06T11:26:02.040266+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Serialize"}
+{"Time":"2026-02-06T11:26:02.040271+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Serialize","Output":"=== RUN   BenchmarkFory_Struct_Serialize\n"}
+{"Time":"2026-02-06T11:26:02.040276+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Serialize","Output":"BenchmarkFory_Struct_Serialize\n"}
+{"Time":"2026-02-06T11:26:03.350214+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Serialize","Output":"BenchmarkFory_Struct_Serialize-12                    \t18143846\t        68.43 ns/op\t       0 B/op\t       0 allocs/op\n"}
+{"Time":"2026-02-06T11:26:03.350303+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Serialize"}
+{"Time":"2026-02-06T11:26:03.350311+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Serialize","Output":"=== RUN   BenchmarkProtobuf_Struct_Serialize\n"}
+{"Time":"2026-02-06T11:26:03.350316+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Serialize","Output":"BenchmarkProtobuf_Struct_Serialize\n"}
+{"Time":"2026-02-06T11:26:04.625572+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Serialize","Output":"BenchmarkProtobuf_Struct_Serialize-12                \t11706260\t        99.94 ns/op\t     144 B/op\t       2 allocs/op\n"}
+{"Time":"2026-02-06T11:26:04.62562+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Serialize"}
+{"Time":"2026-02-06T11:26:04.625628+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Serialize","Output":"=== RUN   BenchmarkMsgpack_Struct_Serialize\n"}
+{"Time":"2026-02-06T11:26:04.625634+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Serialize","Output":"BenchmarkMsgpack_Struct_Serialize\n"}
+{"Time":"2026-02-06T11:26:06.017238+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Serialize","Output":"BenchmarkMsgpack_Struct_Serialize-12                 \t 6927219\t       175.4 ns/op\t     112 B/op\t       2 allocs/op\n"}
+{"Time":"2026-02-06T11:26:06.017297+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Deserialize"}
+{"Time":"2026-02-06T11:26:06.017305+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Deserialize","Output":"=== RUN   BenchmarkFory_Struct_Deserialize\n"}
+{"Time":"2026-02-06T11:26:06.017311+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Deserialize","Output":"BenchmarkFory_Struct_Deserialize\n"}
+{"Time":"2026-02-06T11:26:07.293915+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Struct_Deserialize","Output":"BenchmarkFory_Struct_Deserialize-12                  \t13959790\t        85.11 ns/op\t      32 B/op\t       1 allocs/op\n"}
+{"Time":"2026-02-06T11:26:07.293975+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Deserialize"}
+{"Time":"2026-02-06T11:26:07.293986+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Deserialize","Output":"=== RUN   BenchmarkProtobuf_Struct_Deserialize\n"}
+{"Time":"2026-02-06T11:26:07.294004+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Deserialize","Output":"BenchmarkProtobuf_Struct_Deserialize\n"}
+{"Time":"2026-02-06T11:26:09.620474+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Struct_Deserialize","Output":"BenchmarkProtobuf_Struct_Deserialize-12              \t13299274\t        91.61 ns/op\t      80 B/op\t       1 allocs/op\n"}
+{"Time":"2026-02-06T11:26:09.620532+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Deserialize"}
+{"Time":"2026-02-06T11:26:09.620541+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Deserialize","Output":"=== RUN   BenchmarkMsgpack_Struct_Deserialize\n"}
+{"Time":"2026-02-06T11:26:09.620555+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Deserialize","Output":"BenchmarkMsgpack_Struct_Deserialize\n"}
+{"Time":"2026-02-06T11:26:11.125057+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Struct_Deserialize","Output":"BenchmarkMsgpack_Struct_Deserialize-12               \t 3930746\t       304.0 ns/op\t      80 B/op\t       2 allocs/op\n"}
+{"Time":"2026-02-06T11:26:11.125134+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Serialize"}
+{"Time":"2026-02-06T11:26:11.125155+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Serialize","Output":"=== RUN   BenchmarkFory_StructList_Serialize\n"}
+{"Time":"2026-02-06T11:26:11.125162+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Serialize","Output":"BenchmarkFory_StructList_Serialize\n"}
+{"Time":"2026-02-06T11:26:12.963363+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Serialize","Output":"BenchmarkFory_StructList_Serialize-12                \t 1823836\t       642.7 ns/op\t       0 B/op\t       0 allocs/op\n"}
+{"Time":"2026-02-06T11:26:12.963407+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Serialize"}
+{"Time":"2026-02-06T11:26:12.963415+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Serialize","Output":"=== RUN   BenchmarkProtobuf_StructList_Serialize\n"}
+{"Time":"2026-02-06T11:26:12.963424+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Serialize","Output":"BenchmarkProtobuf_StructList_Serialize\n"}
+{"Time":"2026-02-06T11:26:14.186362+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Serialize","Output":"BenchmarkProtobuf_StructList_Serialize-12            \t  674140\t      1786 ns/op\t    3104 B/op\t      23 allocs/op\n"}
+{"Time":"2026-02-06T11:26:14.186414+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Serialize"}
+{"Time":"2026-02-06T11:26:14.186422+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Serialize","Output":"=== RUN   BenchmarkMsgpack_StructList_Serialize\n"}
+{"Time":"2026-02-06T11:26:14.186447+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Serialize","Output":"BenchmarkMsgpack_StructList_Serialize\n"}
+{"Time":"2026-02-06T11:26:15.426174+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Serialize","Output":"BenchmarkMsgpack_StructList_Serialize-12             \t  359842\t      3349 ns/op\t    4106 B/op\t       8 allocs/op\n"}
+{"Time":"2026-02-06T11:26:15.426251+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Deserialize"}
+{"Time":"2026-02-06T11:26:15.426263+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Deserialize","Output":"=== RUN   BenchmarkFory_StructList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:15.426381+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Deserialize","Output":"BenchmarkFory_StructList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:17.519761+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_StructList_Deserialize","Output":"BenchmarkFory_StructList_Deserialize-12              \t 1330341\t       887.2 ns/op\t     688 B/op\t       3 allocs/op\n"}
+{"Time":"2026-02-06T11:26:17.519837+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Deserialize"}
+{"Time":"2026-02-06T11:26:17.519846+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Deserialize","Output":"=== RUN   BenchmarkProtobuf_StructList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:17.519853+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Deserialize","Output":"BenchmarkProtobuf_StructList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:18.731978+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_StructList_Deserialize","Output":"BenchmarkProtobuf_StructList_Deserialize-12          \t  617972\t      1928 ns/op\t    2808 B/op\t      28 allocs/op\n"}
+{"Time":"2026-02-06T11:26:18.732042+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Deserialize"}
+{"Time":"2026-02-06T11:26:18.732051+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Deserialize","Output":"=== RUN   BenchmarkMsgpack_StructList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:18.732057+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Deserialize","Output":"BenchmarkMsgpack_StructList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:20.02287+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_StructList_Deserialize","Output":"BenchmarkMsgpack_StructList_Deserialize-12           \t  210877\t      5843 ns/op\t    1424 B/op\t       7 allocs/op\n"}
+{"Time":"2026-02-06T11:26:20.022923+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Serialize"}
+{"Time":"2026-02-06T11:26:20.022931+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Serialize","Output":"=== RUN   BenchmarkFory_Sample_Serialize\n"}
+{"Time":"2026-02-06T11:26:20.022937+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Serialize","Output":"BenchmarkFory_Sample_Serialize\n"}
+{"Time":"2026-02-06T11:26:21.394325+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Serialize","Output":"BenchmarkFory_Sample_Serialize-12                    \t 8677500\t       141.8 ns/op\t       0 B/op\t       0 allocs/op\n"}
+{"Time":"2026-02-06T11:26:21.394387+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Serialize"}
+{"Time":"2026-02-06T11:26:21.394395+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Serialize","Output":"=== RUN   BenchmarkProtobuf_Sample_Serialize\n"}
+{"Time":"2026-02-06T11:26:21.394401+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Serialize","Output":"BenchmarkProtobuf_Sample_Serialize\n"}
+{"Time":"2026-02-06T11:26:22.980131+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Serialize","Output":"BenchmarkProtobuf_Sample_Serialize-12                \t 3224515\t       374.8 ns/op\t     704 B/op\t       2 allocs/op\n"}
+{"Time":"2026-02-06T11:26:22.980196+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Serialize"}
+{"Time":"2026-02-06T11:26:22.980223+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Serialize","Output":"=== RUN   BenchmarkMsgpack_Sample_Serialize\n"}
+{"Time":"2026-02-06T11:26:22.980231+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Serialize","Output":"BenchmarkMsgpack_Sample_Serialize\n"}
+{"Time":"2026-02-06T11:26:24.170678+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Serialize","Output":"BenchmarkMsgpack_Sample_Serialize-12                 \t  794436\t      1478 ns/op\t    2321 B/op\t       7 allocs/op\n"}
+{"Time":"2026-02-06T11:26:24.170768+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Deserialize"}
+{"Time":"2026-02-06T11:26:24.170805+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Deserialize","Output":"=== RUN   BenchmarkFory_Sample_Deserialize\n"}
+{"Time":"2026-02-06T11:26:24.170825+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Deserialize","Output":"BenchmarkFory_Sample_Deserialize\n"}
+{"Time":"2026-02-06T11:26:25.63715+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_Sample_Deserialize","Output":"BenchmarkFory_Sample_Deserialize-12                  \t 4500349\t       265.5 ns/op\t     676 B/op\t       9 allocs/op\n"}
+{"Time":"2026-02-06T11:26:25.637205+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Deserialize"}
+{"Time":"2026-02-06T11:26:25.637214+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Deserialize","Output":"=== RUN   BenchmarkProtobuf_Sample_Deserialize\n"}
+{"Time":"2026-02-06T11:26:25.63722+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Deserialize","Output":"BenchmarkProtobuf_Sample_Deserialize\n"}
+{"Time":"2026-02-06T11:26:27.316964+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_Sample_Deserialize","Output":"BenchmarkProtobuf_Sample_Deserialize-12              \t 2784835\t       446.3 ns/op\t     708 B/op\t       9 allocs/op\n"}
+{"Time":"2026-02-06T11:26:27.317031+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Deserialize"}
+{"Time":"2026-02-06T11:26:27.317044+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Deserialize","Output":"=== RUN   BenchmarkMsgpack_Sample_Deserialize\n"}
+{"Time":"2026-02-06T11:26:27.317052+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Deserialize","Output":"BenchmarkMsgpack_Sample_Deserialize\n"}
+{"Time":"2026-02-06T11:26:28.448747+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_Sample_Deserialize","Output":"BenchmarkMsgpack_Sample_Deserialize-12               \t  395234\t      2783 ns/op\t    1576 B/op\t      38 allocs/op\n"}
+{"Time":"2026-02-06T11:26:28.448797+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Serialize"}
+{"Time":"2026-02-06T11:26:28.448807+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Serialize","Output":"=== RUN   BenchmarkFory_SampleList_Serialize\n"}
+{"Time":"2026-02-06T11:26:28.448816+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Serialize","Output":"BenchmarkFory_SampleList_Serialize\n"}
+{"Time":"2026-02-06T11:26:29.669329+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Serialize","Output":"BenchmarkFory_SampleList_Serialize-12                \t  601761\t      1992 ns/op\t       0 B/op\t       0 allocs/op\n"}
+{"Time":"2026-02-06T11:26:29.669593+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Serialize"}
+{"Time":"2026-02-06T11:26:29.669609+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Serialize","Output":"=== RUN   BenchmarkProtobuf_SampleList_Serialize\n"}
+{"Time":"2026-02-06T11:26:29.669618+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Serialize","Output":"BenchmarkProtobuf_SampleList_Serialize\n"}
+{"Time":"2026-02-06T11:26:30.912786+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Serialize","Output":"BenchmarkProtobuf_SampleList_Serialize-12            \t  160716\t      7260 ns/op\t   14816 B/op\t      23 allocs/op\n"}
+{"Time":"2026-02-06T11:26:30.912848+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Serialize"}
+{"Time":"2026-02-06T11:26:30.912856+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Serialize","Output":"=== RUN   BenchmarkMsgpack_SampleList_Serialize\n"}
+{"Time":"2026-02-06T11:26:30.912863+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Serialize","Output":"BenchmarkMsgpack_SampleList_Serialize\n"}
+{"Time":"2026-02-06T11:26:32.378762+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Serialize","Output":"BenchmarkMsgpack_SampleList_Serialize-12             \t   46688\t     25815 ns/op\t   32793 B/op\t      11 allocs/op\n"}
+{"Time":"2026-02-06T11:26:32.378867+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Deserialize"}
+{"Time":"2026-02-06T11:26:32.378877+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Deserialize","Output":"=== RUN   BenchmarkFory_SampleList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:32.378884+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Deserialize","Output":"BenchmarkFory_SampleList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:33.650206+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_SampleList_Deserialize","Output":"BenchmarkFory_SampleList_Deserialize-12              \t  293077\t      4192 ns/op\t   13952 B/op\t     163 allocs/op\n"}
+{"Time":"2026-02-06T11:26:33.650336+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Deserialize"}
+{"Time":"2026-02-06T11:26:33.650344+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Deserialize","Output":"=== RUN   BenchmarkProtobuf_SampleList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:33.650351+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Deserialize","Output":"BenchmarkProtobuf_SampleList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:34.926961+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_SampleList_Deserialize","Output":"BenchmarkProtobuf_SampleList_Deserialize-12          \t  130516\t      9062 ns/op\t   20872 B/op\t     188 allocs/op\n"}
+{"Time":"2026-02-06T11:26:34.927018+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Deserialize"}
+{"Time":"2026-02-06T11:26:34.927027+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Deserialize","Output":"=== RUN   BenchmarkMsgpack_SampleList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:34.927033+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Deserialize","Output":"BenchmarkMsgpack_SampleList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:36.678928+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_SampleList_Deserialize","Output":"BenchmarkMsgpack_SampleList_Deserialize-12           \t   22149\t     54329 ns/op\t   37251 B/op\t     727 allocs/op\n"}
+{"Time":"2026-02-06T11:26:36.678975+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Serialize"}
+{"Time":"2026-02-06T11:26:36.678983+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Serialize","Output":"=== RUN   BenchmarkFory_MediaContent_Serialize\n"}
+{"Time":"2026-02-06T11:26:36.678999+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Serialize","Output":"BenchmarkFory_MediaContent_Serialize\n"}
+{"Time":"2026-02-06T11:26:38.138388+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Serialize","Output":"BenchmarkFory_MediaContent_Serialize-12              \t 4465790\t       265.7 ns/op\t       0 B/op\t       0 allocs/op\n"}
+{"Time":"2026-02-06T11:26:38.1385+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Serialize"}
+{"Time":"2026-02-06T11:26:38.138526+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Serialize","Output":"=== RUN   BenchmarkProtobuf_MediaContent_Serialize\n"}
+{"Time":"2026-02-06T11:26:38.138534+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Serialize","Output":"BenchmarkProtobuf_MediaContent_Serialize\n"}
+{"Time":"2026-02-06T11:26:39.849873+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Serialize","Output":"BenchmarkProtobuf_MediaContent_Serialize-12          \t 2525698\t       486.9 ns/op\t    1144 B/op\t      11 allocs/op\n"}
+{"Time":"2026-02-06T11:26:39.849916+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Serialize"}
+{"Time":"2026-02-06T11:26:39.849924+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Serialize","Output":"=== RUN   BenchmarkMsgpack_MediaContent_Serialize\n"}
+{"Time":"2026-02-06T11:26:39.849948+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Serialize","Output":"BenchmarkMsgpack_MediaContent_Serialize\n"}
+{"Time":"2026-02-06T11:26:41.859429+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Serialize","Output":"BenchmarkMsgpack_MediaContent_Serialize-12           \t 1442941\t       809.6 ns/op\t    1168 B/op\t       6 allocs/op\n"}
+{"Time":"2026-02-06T11:26:41.859487+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Deserialize"}
+{"Time":"2026-02-06T11:26:41.859496+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Deserialize","Output":"=== RUN   BenchmarkFory_MediaContent_Deserialize\n"}
+{"Time":"2026-02-06T11:26:41.859502+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Deserialize","Output":"BenchmarkFory_MediaContent_Deserialize\n"}
+{"Time":"2026-02-06T11:26:43.498623+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContent_Deserialize","Output":"BenchmarkFory_MediaContent_Deserialize-12            \t 2758138\t       434.2 ns/op\t     656 B/op\t      13 allocs/op\n"}
+{"Time":"2026-02-06T11:26:43.498681+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Deserialize"}
+{"Time":"2026-02-06T11:26:43.498691+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Deserialize","Output":"=== RUN   BenchmarkProtobuf_MediaContent_Deserialize\n"}
+{"Time":"2026-02-06T11:26:43.498698+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Deserialize","Output":"BenchmarkProtobuf_MediaContent_Deserialize\n"}
+{"Time":"2026-02-06T11:26:45.267858+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContent_Deserialize","Output":"BenchmarkProtobuf_MediaContent_Deserialize-12        \t 2056162\t       573.1 ns/op\t    1088 B/op\t      21 allocs/op\n"}
+{"Time":"2026-02-06T11:26:45.267907+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Deserialize"}
+{"Time":"2026-02-06T11:26:45.267915+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Deserialize","Output":"=== RUN   BenchmarkMsgpack_MediaContent_Deserialize\n"}
+{"Time":"2026-02-06T11:26:45.267922+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Deserialize","Output":"BenchmarkMsgpack_MediaContent_Deserialize\n"}
+{"Time":"2026-02-06T11:26:46.474309+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContent_Deserialize","Output":"BenchmarkMsgpack_MediaContent_Deserialize-12         \t  849342\t      1402 ns/op\t     896 B/op\t      17 allocs/op\n"}
+{"Time":"2026-02-06T11:26:46.474373+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Serialize"}
+{"Time":"2026-02-06T11:26:46.474382+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Serialize","Output":"=== RUN   BenchmarkFory_MediaContentList_Serialize\n"}
+{"Time":"2026-02-06T11:26:46.474389+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Serialize","Output":"BenchmarkFory_MediaContentList_Serialize\n"}
+{"Time":"2026-02-06T11:26:48.716644+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Serialize","Output":"BenchmarkFory_MediaContentList_Serialize-12          \t  322346\t      3749 ns/op\t       0 B/op\t       0 allocs/op\n"}
+{"Time":"2026-02-06T11:26:48.716695+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Serialize"}
+{"Time":"2026-02-06T11:26:48.716704+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Serialize","Output":"=== RUN   BenchmarkProtobuf_MediaContentList_Serialize\n"}
+{"Time":"2026-02-06T11:26:48.716725+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Serialize","Output":"BenchmarkProtobuf_MediaContentList_Serialize\n"}
+{"Time":"2026-02-06T11:26:50.020984+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Serialize","Output":"BenchmarkProtobuf_MediaContentList_Serialize-12      \t  134098\t      9044 ns/op\t   22848 B/op\t     203 allocs/op\n"}
+{"Time":"2026-02-06T11:26:50.021029+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Serialize"}
+{"Time":"2026-02-06T11:26:50.021036+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Serialize","Output":"=== RUN   BenchmarkMsgpack_MediaContentList_Serialize\n"}
+{"Time":"2026-02-06T11:26:50.021054+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Serialize","Output":"BenchmarkMsgpack_MediaContentList_Serialize\n"}
+{"Time":"2026-02-06T11:26:51.345052+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Serialize","Output":"BenchmarkMsgpack_MediaContentList_Serialize-12       \t   83294\t     14136 ns/op\t   16880 B/op\t      30 allocs/op\n"}
+{"Time":"2026-02-06T11:26:51.345103+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Deserialize"}
+{"Time":"2026-02-06T11:26:51.345122+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Deserialize","Output":"=== RUN   BenchmarkFory_MediaContentList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:51.345129+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Deserialize","Output":"BenchmarkFory_MediaContentList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:52.630153+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkFory_MediaContentList_Deserialize","Output":"BenchmarkFory_MediaContentList_Deserialize-12        \t  164211\t      7367 ns/op\t   13040 B/op\t     243 allocs/op\n"}
+{"Time":"2026-02-06T11:26:52.630211+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Deserialize"}
+{"Time":"2026-02-06T11:26:52.630219+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Deserialize","Output":"=== RUN   BenchmarkProtobuf_MediaContentList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:52.630226+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Deserialize","Output":"BenchmarkProtobuf_MediaContentList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:53.956031+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkProtobuf_MediaContentList_Deserialize","Output":"BenchmarkProtobuf_MediaContentList_Deserialize-12    \t  104497\t     11566 ns/op\t   25400 B/op\t     428 allocs/op\n"}
+{"Time":"2026-02-06T11:26:53.956078+08:00","Action":"run","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Deserialize"}
+{"Time":"2026-02-06T11:26:53.956087+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Deserialize","Output":"=== RUN   BenchmarkMsgpack_MediaContentList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:53.956093+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Deserialize","Output":"BenchmarkMsgpack_MediaContentList_Deserialize\n"}
+{"Time":"2026-02-06T11:26:55.436967+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Test":"BenchmarkMsgpack_MediaContentList_Deserialize","Output":"BenchmarkMsgpack_MediaContentList_Deserialize-12     \t   42306\t     28194 ns/op\t   20058 B/op\t     307 allocs/op\n"}
+{"Time":"2026-02-06T11:26:55.437027+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Output":"PASS\n"}
+{"Time":"2026-02-06T11:26:55.438151+08:00","Action":"output","Package":"github.com/apache/fory/benchmarks/go_benchmark","Output":"ok  \tgithub.com/apache/fory/benchmarks/go_benchmark\t54.613s\n"}
+{"Time":"2026-02-06T11:26:55.438171+08:00","Action":"pass","Package":"github.com/apache/fory/benchmarks/go_benchmark","Elapsed":54.614}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_results.txt b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_results.txt
new file mode 100644
index 000000000..516dc0387
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_results.txt
@@ -0,0 +1,326 @@
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+goos: darwin
+goarch: arm64
+pkg: github.com/apache/fory/benchmarks/go_benchmark
+cpu: Apple M4 Pro
+BenchmarkFory_Struct_Serialize-12                    	18441836	        65.29 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	18408471	        65.41 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	17736544	        65.19 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	18385110	        65.37 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	18366690	        65.95 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	11775620	       100.3 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12272547	        97.80 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12371797	        97.68 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12184240	        97.62 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12216723	        97.78 ns/op	     144 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 7076667	       171.4 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6900595	       173.6 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6820158	       184.8 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6626666	       176.1 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6930025	       184.9 ns/op	     112 B/op	       2 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	12602647	        85.48 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	14198599	        82.69 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	12750420	        85.79 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	13704170	        83.80 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	14302634	        82.66 ns/op	      32 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13726815	        87.92 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13350038	        87.81 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13771383	        88.75 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13840743	        90.58 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13009616	        90.86 ns/op	      80 B/op	       1 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3796537	       304.3 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3963567	       305.9 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3949239	       305.3 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3842962	       307.7 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3946874	       309.6 ns/op	      80 B/op	       2 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1887151	       654.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1836488	       635.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1863346	       647.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1913204	       627.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1887578	       632.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  664448	      1773 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  684133	      1794 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  642586	      1784 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  674518	      1768 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  668338	      1783 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  350497	      3433 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  351436	      3409 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  344049	      3398 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  357286	      3361 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  358231	      3340 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1335152	       901.9 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1295712	       878.2 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1351540	       889.7 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1327351	       896.7 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1326216	       906.4 ns/op	     688 B/op	       3 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  618871	      1914 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  552850	      1867 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  621386	      1887 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  626301	      1916 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  619466	      1891 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  209462	      5707 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  205341	      5680 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  212827	      5715 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  212240	      5742 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  214522	      5709 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8722086	       137.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8074246	       137.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8734982	       137.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8774318	       137.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8791104	       137.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3474804	       339.3 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3353059	       350.9 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3485572	       359.7 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3293542	       364.4 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3304266	       367.3 ns/op	     704 B/op	       2 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  815510	      1454 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  814988	      1474 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  819774	      1441 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  806146	      1448 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  806767	      1492 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4371154	       260.9 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4748262	       256.2 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4563691	       259.0 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4679144	       257.7 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4577006	       263.6 ns/op	     676 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2827587	       426.9 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2790972	       424.5 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2761682	       436.8 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2730283	       432.4 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2829603	       422.2 ns/op	     708 B/op	       9 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  445099	      2801 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  437914	      2686 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  416235	      2660 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  448528	      2650 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  447135	      2661 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  609176	      1948 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  612290	      1958 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  605318	      1950 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  610993	      1945 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  612297	      1962 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  167353	      6748 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  170196	      6906 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  170259	      7246 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  170742	      7127 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  167684	      7087 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   46962	     25632 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   47451	     25432 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   44647	     26471 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   46993	     25869 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   46513	     26169 ns/op	   32792 B/op	      11 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  269730	      4251 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  287401	      4202 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  283461	      4176 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  278598	      4257 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  285021	      4234 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  130734	      9285 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  132328	      9157 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  132595	      9258 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  128911	      9332 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  124810	      9321 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   22225	     53384 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   22498	     54968 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   21262	     54571 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   21877	     54363 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   21978	     53615 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4530111	       265.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4538586	       267.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4477569	       264.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4504632	       270.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4519728	       268.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2446335	       486.8 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2468845	       489.5 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2463714	       468.9 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2605141	       467.7 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2586032	       471.1 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1496350	       787.2 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1533099	       794.6 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1533223	       786.9 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1558996	       778.9 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1535682	       773.7 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2840757	       421.6 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2805544	       429.2 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2819227	       433.5 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2805493	       426.6 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2828582	       426.9 ns/op	     656 B/op	      13 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2141352	       569.0 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2052590	       559.8 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2134398	       550.8 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2151742	       567.4 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2155804	       553.1 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  838147	      1376 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  824925	      1392 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  814362	      1414 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  837973	      1399 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  850816	      1432 ns/op	     896 B/op	      17 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  320854	      3724 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  323788	      3725 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  323928	      3688 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  320772	      3652 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  325976	      3736 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  128820	      9015 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  133196	      9049 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  133237	      9152 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  131954	      8952 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  132843	      9107 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   86242	     13984 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   84384	     14032 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   83804	     14321 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   87357	     14185 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   85074	     13911 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  158547	      7564 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  159993	      7508 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  159046	      7447 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  163632	      7268 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  163434	      7247 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	   92965	     11322 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  105206	     11297 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  104979	     11205 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  105859	     11327 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  105524	     11435 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   43263	     27244 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   44388	     27167 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   44185	     27271 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   43345	     27499 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   43718	     27975 ns/op	   20058 B/op	     307 allocs/op
+PASS
+ok  	github.com/apache/fory/benchmarks/go_benchmark	256.707s
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_sample.png
new file mode 100644
index 000000000..7984bae39
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_samplelist.png
new file mode 100644
index 000000000..0f8877114
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_struct.png
new file mode 100644
index 000000000..e07c004ce
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_structlist.png
new file mode 100644
index 000000000..5a97780ac
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/benchmark_structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/serialized_sizes.txt b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/serialized_sizes.txt
new file mode 100644
index 000000000..5a54edec6
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/go/serialized_sizes.txt
@@ -0,0 +1,27 @@
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/README.md
new file mode 100644
index 000000000..72cc3feb7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/README.md
@@ -0,0 +1,239 @@
+# Java 基准测试
+
+## 系统环境
+
+- Operation System:4.9.151-015.x86_64
+- CPU:Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
+- Byte Order:Little Endian
+- L1d cache: 32K
+- L1i cache:32K
+- L2 cache: 1024K
+- L3 cache: 33792K
+
+## JMH 参数
+
+不要跳过 **warm up**,否则结果不准确。
+
+```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 benchmark](https://github.com/EsotericSoftware/kryo/blob/master/benchmarks/src/main/java/com/esotericsoftware/kryo/benchmarks/data/Sample.java)
+
+## 基准图表
+
+### 序列化到堆内缓冲区
+
+将数据序列化到 Java 字节数组。
+
+#### Java schema 一致性序列化
+
+反序列化端必须与序列化端使用相同的类定义。
+该模式不支持类的前向/后向兼容。
+
+![Java Heap Schema Consistent Serialization](java_heap_serialize_consistent.png)
+
+#### Java schema 兼容模式序列化
+
+反序列化端可以与序列化端使用不同的类定义。
+该模式支持类的前向/后向兼容。
+
+![Java Heap Schema Compatible Serialization](java_heap_serialize_compatible.png)
+
+#### Java schema 一致性反序列化
+
+反序列化端必须与序列化端使用相同的类定义。
+该模式不支持类的前向/后向兼容。
+
+![Java Heap Schema Consistent Deserialization](java_heap_deserialize_consistent.png)
+
+#### Java schema 兼容模式反序列化
+
+反序列化端可以与序列化端使用不同的类定义。
+该模式支持类的前向/后向兼容。
+
+![Java Heap Schema Compatible Deserialization](java_heap_deserialize_compatible.png)
+
+### 堆外序列化
+
+将数据序列化到堆外内存。
+
+#### Java schema 一致性序列化
+
+反序列化端必须与序列化端使用相同的类定义。
+该模式不支持类的前向/后向兼容。
+
+![Java Off Heap Schema Consistent Serialization](java_offheap_serialize_consistent.png)
+
+#### Java schema 兼容模式序列化
+
+反序列化端可以与序列化端使用不同的类定义。
+该模式支持类的前向/后向兼容。
+
+![Java Off Heap Schema Compatible Serialization](java_offheap_serialize_compatible.png)
+
+#### Java schema 一致性反序列化
+
+反序列化端必须与序列化端使用相同的类定义。
+该模式不支持类的前向/后向兼容。
+
+![Java Off Heap Schema Consistent Deserialization](java_offheap_deserialize_consistent.png)
+
+#### Java schema 兼容模式反序列化
+
+反序列化端可以与序列化端使用不同的类定义。
+该模式支持类的前向/后向兼容。
+
+![Java Off Heap Schema Compatible Deserialization](java_offheap_deserialize_compatible.png)
+
+### 零拷贝序列化
+
+注意:零拷贝序列化只是在序列化阶段避免拷贝;如果将数据发送到其他机器,仍可能发生拷贝。
+
+但如果在同一节点进程间序列化并使用共享内存,且数据在序列化前已位于堆外,那么其他进程可无拷贝读取该缓冲区。
+
+#### Java 零拷贝序列化到堆内缓冲区
+
+![Java Zero Copy Serialization](java_zero_copy_serialize.png)
+
+#### Java 零拷贝序列化到直接缓冲区
+
+![Java Zero Copy Deserialization](java_zero_copy_deserialize.png)
+
+## 基准数据
+
+### Java Serialization
+
+| 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-0.17/benchmarks/java/data/jmh-jdk-11-deserialization.csv b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/data/jmh-jdk-11-deserialization.csv
new file mode 100644
index 000000000..98760a472
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/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-0.17/benchmarks/java/data/jmh-jdk-11-serialization.csv b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/data/jmh-jdk-11-serialization.csv
new file mode 100644
index 000000000..2e985751a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/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-0.17/benchmarks/java/data/jmh-jdk-11-zerocopy.csv b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/data/jmh-jdk-11-zerocopy.csv
new file mode 100644
index 000000000..503298291
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/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-0.17/benchmarks/java/java_heap_deserialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_deserialize_compatible.png
new file mode 100644
index 000000000..2865473dd
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_deserialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_deserialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_deserialize_consistent.png
new file mode 100644
index 000000000..fff332e47
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_deserialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_serialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_serialize_compatible.png
new file mode 100644
index 000000000..d9e3db675
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_serialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_serialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_serialize_consistent.png
new file mode 100644
index 000000000..065907ddb
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_heap_serialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_deserialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_deserialize_compatible.png
new file mode 100644
index 000000000..e7258a923
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_deserialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_deserialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_deserialize_consistent.png
new file mode 100644
index 000000000..b84e279e3
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_deserialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_serialize_compatible.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_serialize_compatible.png
new file mode 100644
index 000000000..3f1f5821c
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_serialize_compatible.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_serialize_consistent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_serialize_consistent.png
new file mode 100644
index 000000000..98d0582af
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_offheap_serialize_consistent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_repo_deserialization_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_repo_deserialization_throughput.png
new file mode 100644
index 000000000..21bf2b45d
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_repo_deserialization_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_repo_serialization_throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_repo_serialization_throughput.png
new file mode 100644
index 000000000..dfff16eec
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_repo_serialization_throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_zero_copy_deserialize.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_zero_copy_deserialize.png
new file mode 100644
index 000000000..03acaa38b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_zero_copy_deserialize.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_zero_copy_serialize.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_zero_copy_serialize.png
new file mode 100644
index 000000000..e1be0893b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/java/java_zero_copy_serialize.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/README.md
new file mode 100644
index 000000000..f51899233
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/README.md
@@ -0,0 +1,104 @@
+# JavaScript Benchmark Performance Report
+
+_Generated on 2026-04-14 17:11:43_
+
+## How to Generate This Report
+
+```bash
+cd benchmarks/javascript
+./run.sh
+```
+
+## Hardware & OS Info
+
+| Key                        | Value                    |
+| -------------------------- | ------------------------ |
+| OS                         | Darwin 24.6.0            |
+| Machine                    | arm64                    |
+| Processor                  | arm                      |
+| CPU Cores (Physical)       | 12                       |
+| CPU Cores (Logical)        | 12                       |
+| Total RAM (GB)             | 48.0                     |
+| Benchmark Date             | 2026-04-14T09:09:51.959Z |
+| CPU Cores (from benchmark) | 12                       |
+| Node.js                    | v22.20.0                 |
+| V8                         | 12.4.254.21-node.33      |
+
+## Benchmark Plots
+
+All class-level plots below show throughput (ops/sec).
+
+### Throughput
+
+![Throughput](throughput.png)
+
+### MediaContent
+
+![MediaContent](mediacontent.png)
+
+### MediaContentList
+
+![MediaContentList](mediacontentlist.png)
+
+### Sample
+
+![Sample](sample.png)
+
+### SampleList
+
+![SampleList](samplelist.png)
+
+### Struct
+
+![Struct](struct.png)
+
+### StructList
+
+![StructList](structlist.png)
+
+## Benchmark Results
+
+### Timing Results (nanoseconds)
+
+| Datatype         | Operation   | fory (ns) | protobuf (ns) | json (ns) | Fastest |
+| ---------------- | ----------- | --------- | ------------- | --------- | ------- |
+| Struct           | Serialize   | 118.3     | 525.3         | 327.0     | fory    |
+| Struct           | Deserialize | 103.0     | 121.5         | 259.0     | fory    |
+| Sample           | Serialize   | 667.4     | 2366.2        | 1342.7    | fory    |
+| Sample           | Deserialize | 521.3     | 1221.0        | 1312.3    | fory    |
+| MediaContent     | Serialize   | 773.3     | 1370.8        | 769.3     | json    |
+| MediaContent     | Deserialize | 610.5     | 827.0         | 1085.6    | fory    |
+| StructList       | Serialize   | 254.6     | 2017.6        | 1121.3    | fory    |
+| StructList       | Deserialize | 306.3     | 653.7         | 1014.1    | fory    |
+| SampleList       | Serialize   | 2812.3    | 10782.7       | 6130.4    | fory    |
+| SampleList       | Deserialize | 2353.4    | 6125.5        | 6153.1    | fory    |
+| MediaContentList | Serialize   | 3495.9    | 6712.4        | 3540.5    | fory    |
+| MediaContentList | Deserialize | 2653.7    | 4087.9        | 5258.9    | fory    |
+
+### Throughput Results (ops/sec)
+
+| Datatype         | Operation   | fory TPS  | protobuf TPS | json TPS  | Fastest |
+| ---------------- | ----------- | --------- | ------------ | --------- | ------- |
+| Struct           | Serialize   | 8,453,950 | 1,903,706    | 3,058,232 | fory    |
+| Struct           | Deserialize | 9,705,287 | 8,233,664    | 3,860,538 | fory    |
+| Sample           | Serialize   | 1,498,391 | 422,620      | 744,790   | fory    |
+| Sample           | Deserialize | 1,918,162 | 819,010      | 762,048   | fory    |
+| MediaContent     | Serialize   | 1,293,157 | 729,497      | 1,299,908 | json    |
+| MediaContent     | Deserialize | 1,638,086 | 1,209,140    | 921,191   | fory    |
+| StructList       | Serialize   | 3,928,325 | 495,648      | 891,810   | fory    |
+| StructList       | Deserialize | 3,264,827 | 1,529,744    | 986,144   | fory    |
+| SampleList       | Serialize   | 355,581   | 92,741       | 163,120   | fory    |
+| SampleList       | Deserialize | 424,916   | 163,253      | 162,520   | fory    |
+| MediaContentList | Serialize   | 286,053   | 148,977      | 282,445   | fory    |
+| MediaContentList | Deserialize | 376,826   | 244,622      | 190,155   | fory    |
+
+### Serialized Data Sizes (bytes)
+
+| Datatype         | fory | protobuf | json |
+| ---------------- | ---- | -------- | ---- |
+| Struct           | 58   | 61       | 103  |
+| Sample           | 446  | 377      | 724  |
+| MediaContent     | 391  | 307      | 596  |
+| StructList       | 184  | 315      | 537  |
+| SampleList       | 1980 | 1900     | 3642 |
+| MediaContentList | 1665 | 1550     | 3009 |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/mediacontent.png
new file mode 100644
index 000000000..45d2c34db
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/mediacontentlist.png
new file mode 100644
index 000000000..a5763d069
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/sample.png
new file mode 100644
index 000000000..57c619b33
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/samplelist.png
new file mode 100644
index 000000000..6e66a0a11
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/struct.png
new file mode 100644
index 000000000..e78a56967
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/structlist.png
new file mode 100644
index 000000000..cae684ed2
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/throughput.png
new file mode 100644
index 000000000..fffd41c47
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/javascript/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/README.md
new file mode 100644
index 000000000..0cf659028
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/README.md
@@ -0,0 +1,127 @@
+# Python 基准性能报告
+
+_生成于 2026-03-03 13:42:38_
+
+## 如何生成本报告
+
+```bash
+cd benchmarks/python
+./run.sh
+```
+
+## 硬件与操作系统信息
+
+| 键                    | 值                           |
+| --------------------- | ---------------------------- |
+| 操作系统              | 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     |
+
+## 基准图表
+
+所有图表均展示吞吐量(ops/sec);数值越高越好。
+
+### 总吞吐量
+
+<p align="center">
+<img src="throughput.png" width="90%" />
+</p>
+
+### `MediaContent` 基准
+
+<p align="center">
+<img src="mediacontent.png" width="90%" />
+</p>
+
+### `MediaContentList` 基准
+
+<p align="center">
+<img src="mediacontentlist.png" width="90%" />
+</p>
+
+### Sample
+
+<p align="center">
+<img src="sample.png" width="90%" />
+</p>
+
+### Samplelist
+
+<p align="center">
+<img src="samplelist.png" width="90%" />
+</p>
+
+### Struct
+
+<p align="center">
+<img src="struct.png" width="90%" />
+</p>
+
+### Structlist
+
+<p align="center">
+<img src="structlist.png" width="90%" />
+</p>
+
+## 基准结果
+
+### 延迟结果(纳秒)
+
+| 数据类型         | 操作        | fory (ns) | pickle (ns) | protobuf (ns) | 最快    |
+| ---------------- | ----------- | --------- | ----------- | ------------- | ------- |
+| Struct           | Serialize   | 417.9     | 868.9       | 548.9         | fory    |
+| Struct           | Deserialize | 516.1     | 910.6       | 742.4         | fory    |
+| Sample           | Serialize   | 828.1     | 1663.5      | 2383.7        | fory    |
+| Sample           | Deserialize | 1282.4    | 2296.3      | 3992.7        | fory    |
+| MediaContent     | Serialize   | 1139.9    | 2859.7      | 2867.1        | fory    |
+| MediaContent     | Deserialize | 1719.5    | 2854.3      | 3236.1        | fory    |
+| StructList       | Serialize   | 1009.1    | 2630.6      | 3281.6        | fory    |
+| StructList       | Deserialize | 1387.2    | 2651.9      | 3547.9        | fory    |
+| SampleList       | Serialize   | 2828.3    | 5541.0      | 15256.6       | fory    |
+| SampleList       | Deserialize | 5043.4    | 8144.7      | 18912.5       | fory    |
+| MediaContentList | Serialize   | 3417.9    | 9341.9      | 15853.2       | fory    |
+| MediaContentList | Deserialize | 6138.7    | 8435.3      | 16442.6       | fory    |
+
+### 吞吐结果(ops/sec)
+
+| 数据类型         | 操作        | fory TPS  | pickle TPS | protobuf TPS | 最快    |
+| ---------------- | ----------- | --------- | ---------- | ------------ | ------- |
+| Struct           | Serialize   | 2,393,086 | 1,150,946  | 1,821,982    | fory    |
+| Struct           | Deserialize | 1,937,707 | 1,098,170  | 1,346,915    | fory    |
+| Sample           | Serialize   | 1,207,542 | 601,144    | 419,511      | fory    |
+| Sample           | Deserialize | 779,789   | 435,489    | 250,460      | fory    |
+| MediaContent     | Serialize   | 877,300   | 349,688    | 348,780      | fory    |
+| MediaContent     | Deserialize | 581,563   | 350,354    | 309,018      | fory    |
+| StructList       | Serialize   | 991,017   | 380,145    | 304,732      | fory    |
+| StructList       | Deserialize | 720,901   | 377,081    | 281,855      | fory    |
+| SampleList       | Serialize   | 353,574   | 180,473    | 65,545       | fory    |
+| SampleList       | Deserialize | 198,280   | 122,780    | 52,875       | fory    |
+| MediaContentList | Serialize   | 292,578   | 107,045    | 63,079       | fory    |
+| MediaContentList | Deserialize | 162,902   | 118,550    | 60,818       | fory    |
+
+### 序列化数据大小(字节)
+
+| 数据类型         | fory | pickle | protobuf |
+| ---------------- | ---- | ------ | -------- |
+| Struct           | 72   | 126    | 61       |
+| Sample           | 517  | 793    | 375      |
+| MediaContent     | 470  | 586    | 301      |
+| StructList       | 205  | 420    | 315      |
+| SampleList       | 1810 | 2539   | 1890     |
+| MediaContentList | 1756 | 1377   | 1520     |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/mediacontent.png
new file mode 100644
index 000000000..05b28cd20
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/mediacontentlist.png
new file mode 100644
index 000000000..6ca7b1814
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/sample.png
new file mode 100644
index 000000000..eb318e1ab
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/samplelist.png
new file mode 100644
index 000000000..94896bcab
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/struct.png
new file mode 100644
index 000000000..c8fe09cfe
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/structlist.png
new file mode 100644
index 000000000..e421b1738
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/throughput.png
new file mode 100644
index 000000000..c750a9ffb
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/python/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/README.md
new file mode 100644
index 000000000..fdaa812b8
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/README.md
@@ -0,0 +1,104 @@
+## 性能对比报告
+
+_生成时间:2025-10-26 18:36:41_
+
+如何生成性能报告:
+
+```bash
+cd benchmarks/rust_benchmark
+cargo bench 2>&1 | tee cargo_bench.log
+python benchmark_report.py --log-file cargo_bench.log --output-dir=report_output
+```
+
+### 硬件与系统信息
+
+| Key                  | Value         |
+| -------------------- | ------------- |
+| OS                   | Darwin 24.5.0 |
+| Machine              | arm64         |
+| Processor            | arm           |
+| CPU Cores (Physical) | 12            |
+| CPU Cores (Logical)  | 12            |
+| Total RAM (GB)       | 48.0          |
+
+### 基准图表
+
+**company**
+
+![Company](company.png)
+
+**ecommerce_data**
+
+![Ecommerce Data](ecommerce_data.png)
+
+**person**
+
+![Person](person.png)
+
+**simple_list**
+
+![Simple List](simple_list.png)
+
+**simple_map**
+
+![Simple Map](simple_map.png)
+
+**simple_struct**
+
+![Simple Struct](simple_struct.png)
+
+**system_data**
+
+![System Data](system_data.png)
+
+### 序列化结果
+
+| Datatype       | Size   | Operation | Fory TPS   | JSON TPS   | Protobuf TPS | Fastest |
+| -------------- | ------ | --------- | ---------- | ---------- | ------------ | ------- |
+| company        | small  | serialize | 10,063,906 | 761,673    | 896,620      | fory    |
+| company        | medium | serialize | 412,507    | 33,835     | 37,590       | fory    |
+| company        | large  | serialize | 9,183      | 793        | 880          | fory    |
+| ecommerce_data | small  | serialize | 2,350,729  | 206,262    | 256,970      | fory    |
+| ecommerce_data | medium | serialize | 59,977     | 4,699      | 5,242        | fory    |
+| ecommerce_data | large  | serialize | 3,727      | 266        | 295          | fory    |
+| person         | small  | serialize | 13,632,522 | 1,345,189  | 1,475,035    | fory    |
+| person         | medium | serialize | 3,839,656  | 337,610    | 369,031      | fory    |
+| person         | large  | serialize | 907,853    | 79,631     | 91,408       | fory    |
+| simple_list    | small  | serialize | 27,726,945 | 4,874,957  | 4,643,172    | fory    |
+| simple_list    | medium | serialize | 4,770,765  | 401,558    | 397,551      | fory    |
+| simple_list    | large  | serialize | 606,061    | 41,061     | 44,565       | fory    |
+| simple_map     | small  | serialize | 22,862,369 | 3,888,025  | 2,695,999    | fory    |
+| simple_map     | medium | serialize | 2,128,973  | 204,319    | 193,132      | fory    |
+| simple_map     | large  | serialize | 177,847    | 18,419     | 18,668       | fory    |
+| simple_struct  | small  | serialize | 35,729,598 | 10,167,045 | 8,633,342    | fory    |
+| simple_struct  | medium | serialize | 34,988,279 | 9,737,098  | 6,433,350    | fory    |
+| simple_struct  | large  | serialize | 31,801,558 | 4,545,041  | 7,420,049    | fory    |
+| system_data    | small  | serialize | 5,382,131  | 468,033    | 569,930      | fory    |
+| system_data    | medium | serialize | 174,240    | 11,896     | 14,753       | fory    |
+| system_data    | large  | serialize | 10,671     | 876        | 1,040        | fory    |
+
+### 反序列化结果
+
+| Datatype       | Size   | Operation   | Fory TPS   | JSON TPS   | Protobuf TPS | Fastest |
+| -------------- | ------ | ----------- | ---------- | ---------- | ------------ | ------- |
+| company        | small  | deserialize | 1,145,593  | 718,597    | 917,431      | fory    |
+| company        | medium | deserialize | 35,195     | 24,474     | 25,057       | fory    |
+| company        | large  | deserialize | 836        | 623        | 623          | fory    |
+| ecommerce_data | small  | deserialize | 278,427    | 183,237    | 241,109      | fory    |
+| ecommerce_data | medium | deserialize | 5,622      | 3,820      | 4,249        | fory    |
+| ecommerce_data | large  | deserialize | 298        | 204        | 217          | fory    |
+| person         | small  | deserialize | 1,924,372  | 1,214,388  | 1,675,631    | fory    |
+| person         | medium | deserialize | 371,016    | 265,280    | 266,333      | fory    |
+| person         | large  | deserialize | 84,839     | 63,975     | 61,820       | fory    |
+| simple_list    | small  | deserialize | 6,129,329  | 3,599,582  | 4,429,286    | fory    |
+| simple_list    | medium | deserialize | 460,745    | 305,409    | 337,336      | fory    |
+| simple_list    | large  | deserialize | 54,348     | 33,962     | 38,776       | fory    |
+| simple_map     | small  | deserialize | 3,686,364  | 3,090,426  | 3,477,051    | fory    |
+| simple_map     | medium | deserialize | 171,774    | 126,638    | 119,323      | fory    |
+| simple_map     | large  | deserialize | 16,501     | 10,920     | 10,853       | fory    |
+| simple_struct  | small  | deserialize | 31,476,235 | 12,948,168 | 28,280,543   | fory    |
+| simple_struct  | medium | deserialize | 30,077,902 | 10,431,118 | 23,012,841   | fory    |
+| simple_struct  | large  | deserialize | 28,201,585 | 8,955,759  | 23,528,858   | fory    |
+| system_data    | small  | deserialize | 644,870    | 421,106    | 549,209      | fory    |
+| system_data    | medium | deserialize | 14,322     | 9,205      | 10,565       | fory    |
+| system_data    | large  | deserialize | 961        | 634        | 706          | fory    |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/company.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/company.png
new file mode 100644
index 000000000..eee9de23f
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/company.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/ecommerce_data.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/ecommerce_data.png
new file mode 100644
index 000000000..11a507329
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/ecommerce_data.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/mediacontent.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/mediacontent.png
new file mode 100644
index 000000000..8d026ef4b
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/mediacontent.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/mediacontentlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/mediacontentlist.png
new file mode 100644
index 000000000..f2bf6b721
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/mediacontentlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/person.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/person.png
new file mode 100644
index 000000000..d31e0d030
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/person.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/sample.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/sample.png
new file mode 100644
index 000000000..e63ebcbad
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/sample.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/samplelist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/samplelist.png
new file mode 100644
index 000000000..b7ba75b72
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/samplelist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_list.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_list.png
new file mode 100644
index 000000000..00c5b7d4e
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_list.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_map.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_map.png
new file mode 100644
index 000000000..1142bb3fb
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_map.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_struct.png
new file mode 100644
index 000000000..973fa35e8
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/simple_struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/struct.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/struct.png
new file mode 100644
index 000000000..e12c6a332
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/struct.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/structlist.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/structlist.png
new file mode 100644
index 000000000..e030cf45f
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/structlist.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/system_data.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/system_data.png
new file mode 100644
index 000000000..330aa6b52
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/system_data.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/throughput.png
new file mode 100644
index 000000000..be89782fb
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/rust/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/swift/README.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/swift/README.md
new file mode 100644
index 000000000..543e891f9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/swift/README.md
@@ -0,0 +1,46 @@
+# Fory Swift 基准
+
+该基准用于比较 Apache Fory、Protocol Buffers 和 MessagePack 在 Swift 中的序列化与反序列化吞吐量。
+
+## 硬件与运行时信息
+
+| 键                    | 值                            |
+| --------------------- | ----------------------------- |
+| 时间戳                | 2026-03-10T06:25:16Z          |
+| 操作系统              | Version 15.7.2 (Build 24G325) |
+| 主机                  | macbook-pro.local             |
+| CPU 核心数(逻辑)    | 12                            |
+| 内存(GB)            | 48.00                         |
+| 每个用例持续时间(秒)| 3                             |
+
+## 吞吐结果
+
+<p align="center">
+<img src="throughput.png" width="95%" />
+</p>
+
+| 数据类型         | 操作        |   Fory TPS | Protobuf TPS | Msgpack TPS | 最快         |
+| ---------------- | ----------- | ---------: | -----------: | ----------: | ------------ |
+| Struct           | Serialize   |  9,727,950 |    6,572,406 |     141,248 | fory (1.48x) |
+| Struct           | Deserialize | 11,889,570 |    8,584,510 |      99,792 | fory (1.39x) |
+| Sample           | Serialize   |  3,496,305 |    1,281,983 |      17,188 | fory (2.73x) |
+| Sample           | Deserialize |  1,045,018 |      765,706 |      12,767 | fory (1.36x) |
+| MediaContent     | Serialize   |  1,425,354 |      678,542 |      29,048 | fory (2.10x) |
+| MediaContent     | Deserialize |    614,447 |      478,298 |      12,711 | fory (1.28x) |
+| StructList       | Serialize   |  3,307,962 |    1,028,210 |      24,781 | fory (3.22x) |
+| StructList       | Deserialize |  2,788,200 |      708,596 |       8,160 | fory (3.93x) |
+| SampleList       | Serialize   |    715,734 |      205,380 |       3,361 | fory (3.48x) |
+| SampleList       | Deserialize |    199,317 |      133,425 |       1,498 | fory (1.49x) |
+| MediaContentList | Serialize   |    364,097 |      103,721 |       5,538 | fory (3.51x) |
+| MediaContentList | Deserialize |    103,421 |       86,331 |       1,529 | fory (1.20x) |
+
+## 序列化大小(字节)
+
+| 数据类型         | Fory | Protobuf | Msgpack |
+| ---------------- | ---: | -------: | ------: |
+| MediaContent     |  365 |      301 |     524 |
+| MediaContentList | 1535 |     1520 |    2639 |
+| Sample           |  446 |      375 |     737 |
+| SampleList       | 1980 |     1890 |    3698 |
+| Struct           |   58 |       61 |      65 |
+| StructList       |  184 |      315 |     338 |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/swift/throughput.png b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/swift/throughput.png
new file mode 100644
index 000000000..291dc8145
Binary files /dev/null and b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/benchmarks/swift/throughput.png differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/community.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/community.md
new file mode 100644
index 000000000..25b8db402
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/community.md
@@ -0,0 +1,85 @@
+---
+title: 社区
+sidebar_position: 0
+id: community
+---
+
+Apache Fory™ 是一个由社区驱动的开源项目,项目的蓬勃发展得益于社区贡献。
+我们邀请您根据自己的意愿尽可能地参与项目。以下是几种贡献方式:
+
+- 使用 Apache Fory™ 并分享使用体验和反馈问题;
+- 为项目提供最佳实践示例;
+- 报告错误并修复;
+- 贡献代码和参与文档建设。
+
+## 邮件列表
+
+| 邮件列表                | 描述               | 订阅                                             | 取消订阅                                               | 发送邮件                               | 活动                                                                       |
+| ----------------------- | ------------------ | ------------------------------------------------ | ------------------------------------------------------ | -------------------------------------- | -------------------------------------------------------------------------- |
+| 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 | 仓库的所有 commits | [订阅](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)。
+
+这里有一些社区规则:
+
+- 保持尊重和友善;
+- 所有重要的决定和结论都必须反映到邮件列表中。 “如果这没有在邮件列表中有相关的讨论记录,则代表它不生效” ;
+- [The Apache Way](https://theapacheway.com/on-list/);
+- 使用 Slack 线程来防止并行对话淹没当前的对话频道;
+- 请不要直接向邮件列表发送 Bug fix、Issue 分配和 Code Review 消息。这些内容应该被社区贡献者自愿处理并分配。
+
+## Issue 跟踪
+
+我们使用 GitHub Issues 来跟踪所有 Issues:
+
+- 代码相关问题:https://github.com/apache/fory/issues
+- 网站相关问题:https://github.com/apache/fory-site/issues
+
+您需要有一个 [GitHub 帐号](https://github.com/signup) 才能创建问题。
+如果您没有 [GitHub 帐号](https://github.com/signup),您可以发送电子邮件至 dev@fory.apache.org。
+
+### 报告 Bug
+
+您在报告 Bug 之前,应该:
+
+- 验证该 Bug 确实存在;
+- 搜索 [Issue List](https://github.com/apache/fory/issues) 以确保不存在相关 Bug。
+- 在 Issue List 中创建 [bug 报告](https://github.com/apache/fory/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml)。
+- 如果可能的话,深入研究 Apache Fory™ 的源代码,并针对您报告的 Bug 提交补丁,这有助于快速修复 Bug。
+
+### 报告安全漏洞
+
+Apache Fory™ 是 [Apache 软件基金会](https://apache.org/) 的一个项目,遵循 [ASF 漏洞处理流程](https://apache.org/security/#vulnerability-handling)。
+
+要报告您发现的新的安全漏洞,请遵循 [ASF 漏洞报告流程](https://apache.org/security/#reporting-a-vulnerability),该流程解释了如何私下向社区维护者发送详细的漏洞信息。
+
+### New Feature
+
+欢迎您增强功能或新功能建议。提案越具体、越合理,您在 Apache Fory™ 社区的影响力就越大。它有可能在之后版本发布。
+
+### 项目源代码
+
+- Apache Fory™ Core 存储库:https://github.com/apache/fory
+- Apache Fory™ 网站存储库:https://github.com/apache/fory-site
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_join_community.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_join_community.md
new file mode 100644
index 000000000..e24a36673
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_join_community.md
@@ -0,0 +1,108 @@
+---
+title: 如何加入 Apache Fory™ 社区
+sidebar_position: 0
+id: how_to_join_community
+---
+
+首先为你选择加入开源贡献行列的行为点赞 👍🏻。再者,十分感谢你选择参与到 Apache Fory™ 社区,为这个开源项目做出贡献。
+
+## Apache Fory™ 贡献指南
+
+Apache Fory™ 团队通常在 github 上进行开发和 issue 维护,请打开 [Github 网站](https://github.com/),点击右上角 `Sign up` 按钮,注册一个自己的账号,开启你开源之旅的第一步。
+
+在 [Apache Fory™ 仓库](https://github.com/apache/fory)中,我们有一份面向所有开源贡献者的[指南](https://fory.apache.org/zh-CN/docs/community/),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。
+
+## 你的第一个 Pull Request
+
+### Step0:安装 Git
+
+Git 是一种版本控制系统,用于跟踪和管理软件开发项目中的代码变更。它帮助开发者记录和管理代码的历史记录,方便团队协作、代码版本控制、合并代码等操作。通过 Git,您可以追踪每个文件的每个版本,并轻松地在不同版本之间进行切换和比较。Git 还提供了分支管理功能,使得可以同时进行多个并行开发任务。
+
+- 访问 Git 官方网站:[https://git-scm.com](https://git-scm.com)
+- 下载最新版本的 Git 安装程序。
+- 运行下载的安装程序,按照安装向导的提示进行安装。
+- 安装完成后,你可以通过命令行使用 `git version` 命令确认安装成功。
+
+### Step1:Fork 项目
+
+- 首先需要 fork 这个项目,进入[Apache Fory™ 项目页面](https://github.com/apache/fory),点击右上角的 Fork 按钮
+- 你的 github 帐号中会出现 xxxx(你的 github 用户名)/fory 这个项目
+- 在本地电脑上使用以下命令: 得到一个 fory 文件夹
+
+```
+// ssh
+git clone git@github.com:xxxx(你的github用户名)/fory.git
+// https
+git clone https://github.com/xxxx(你的github用户名)/fory.git
+```
+
+### Step2:获取项目代码
+
+- 进入 fory 文件夹,添加 fory 的远程地址
+
+```
+git remote add upstream https://github.com/apache/fory.git
+```
+
+### Step3:创建分支
+
+- 好了,现在可以开始贡献我们的代码了。fory 默认分支为 main 分支。无论是功能开发、bug 修复、文档编写,都请新建立一个分支,再合并到 main 分支上。使用以下代码创建分支:
+
+```shell
+// 创建功能开发分支
+git checkout -b feat/xxxx
+
+// 创建问题修复开发分支
+git checkout -b fix/xxxx
+
+// 创建文档、demo分支
+git checkout -b docs/add-java-demo
+```
+
+假设我们创建了文档修改分支 `docs/add-java-demo`
+
+- 假设我们已经添加了一些代码,提交到代码库
+
+- git add .
+
+- git commit -a -m "docs: add java demo and related docs" 。
+
+### Step4:合并修改
+
+- 切换回自己的开发分支:
+
+```
+git checkout docs/add-java-demo
+```
+
+- 把更新代码提交到自己的分支中:
+
+```
+git push origin docs/add-java-demo
+```
+
+### Step5:提交 Pull Request
+
+你可以在你的 github 代码仓库页面点击 `Compare & pull request` 按钮。或通过 `contribute` 按钮创建。
+
+- 填写这是什么类型的修改
+- 填写关联的 issue
+- 若有复杂变更,请说明背景和解决方案
+
+相关信息填写完成后,点击 Create pull request 提交。
+
+## **轻松步入 Apache Fory™ 开源贡献之旅**
+
+"**good first issue**" 是一个在开源社区常见的标签,这个标签的目的是帮助新贡献者找到适合入门的问题。
+
+Apache Fory™ 的入门问题,你可以通过 [issue 列表](https://github.com/apache/fory/issues)查看。
+
+如果你当前**有时间和意愿**参与到社区贡献,可以在 issue 里看一看 **good first issue**,选择一个感兴趣、适合自己的认领。
+
+## 拥抱 Apache Fory™ 社区
+
+在你为 Apache Fory™ 贡献代码之余,我们鼓励你参与其他让社区更加繁荣的事情,比如:
+
+- 为项目的发展、功能规划 等提建议。
+- 创作文章、视频,开办讲座来宣传 Apache Fory™
+- 撰写推广计划,同团队一同执行。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_release.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_release.md
new file mode 100644
index 000000000..5813567f3
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_release.md
@@ -0,0 +1,431 @@
+---
+title: 如何发布
+sidebar_position: 0
+id: how_to_release
+---
+
+本文主要介绍如何发布新版本的 Apache Fory™。
+
+## 介绍
+
+源代码发布是 Apache 最重视以及最重要的部分。
+
+请注意许可证和发布的软件签名问题。发布软件是一件严肃的事情,并会产生相应的法律后果。
+
+## release manager 第一次发布
+
+### 环境要求
+
+此发布过程在 Ubuntu 系统中运行,需要以下几个环境依赖:
+
+- JDK 1.8+
+- Apache Maven 3.x+
+- Python 3.8
+- GnuPG 2.x
+- Git
+- SVN(Apache 基金会使用 svn 来托管项目发布)
+- **设置环境变量**:如果您在不同的目录下配置了 gpg 密钥,请执行 `export GNUPGHOME=$(xxx)` 导出环境变量。
+
+### 准备 GPG 密钥
+
+如果您是第一次作为软件发布者,您需要准备一个 GPG 密钥。
+
+您可以参考这里的[快速开始](https://infra.apache.org/openpgp.html)获取一个 GPG 密钥或者获取更多相关信息。
+
+#### 安装 GPG
+
+```bash
+sudo apt install gnupg2
+```
+
+#### 生成 GPG 密钥
+
+请使用您的 Apache 名字和电子邮件地址生成 GPG 密钥:
+
+```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 密钥服务器
+
+首先,列出您所创建的 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 或任何其他功能完备的密钥服务器。
+
+#### 检查密钥是否创建成功
+
+上传大约需要一分钟;之后,您可以通过电子邮件在相应的密钥服务器上检查。
+
+将密钥上传到密钥服务器的主要目的是为了加入一个可信的[信任网络](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 https://dist.apache.org/repos/dist/release/fory fory-dist
+# 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.
+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 密钥。
+- 如果添加后发现“未验证”字样,请将 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 change lists about this release:
+
+https://github.com/apache/fory/compare/v0.11.2...v0.12.0
+
+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}
+```
+
+## 准备发布
+
+如果讨论结果中没有出现反对声音,您需要做一些发布版本的准备工作。
+
+### Github 分支和标签
+
+- 创建一个名为 `releases-0.16.0`
+- 通过执行命令将版本 `$version` 升级到 `python ci/release.py bump_version -l all -version $version`
+- 执行 git commit 并将分支推送到 `git@github.com:apache/fory.git`
+- 通过 `git tag v0.16.0-rc1` 创建一个 release 标签,然后将其推送到 `git@github.com:apache/fory.git`
+- 如果本次发布包含 `go/fory` 这个 Go 子模块,还需要额外创建并推送 Go 子模块标签。例如,对于最终版 `0.16.0`,执行:
+
+```bash
+git tag go/fory/v0.16.0
+git push apache go/fory/v0.16.0
+```
+
+### 构建 artifacts 并上传到 SVN dist/dev 仓库
+
+首先,您需要通过 `python ci/release.py build -v $version` 构建预发布 artifacts。
+
+然后您需要把它上传到 svn dist repo。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
+```
+
+然后,上传项目:
+
+```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`,然后重复上述上传过程。
+
+## 投票
+
+新版本发布需要 Apache Fory 社区的投票。
+
+- release_version:Fory 的版本,如 0.12.0。
+- release_candidate_version:投票的版本,如 0.12.0-rc1。
+- maven_artifact_number:Maven 暂存 artifacts 的数量。如 1001. 具体来说,可以通过搜索 “fory” 来找到 maven_artifact_number https://repository.apache.org/#stagingRepositories.
+
+### Fory 社区投票
+
+发送电子邮件至 Fory Community: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
+version release-0.12.0-rc1.
+
+Apache Fory - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+The change lists about this release:
+
+https://github.com/apache/fory/compare/v0.12.0...v0.12.0-rc1
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/fory/0.12.0-rc1/
+
+The maven staging for this release:
+https://repository.apache.org/content/repositories/orgapachefory-1003
+
+Git tag for the release:
+https://github.com/apache/fory/releases/tag/v0.12.0-rc1
+
+如果本次发布还包含 Go 模块,请同时附上 Go 子模块标签:
+https://github.com/apache/fory/releases/tag/go/fory/v0.16.0
+
+Git commit for the release:
+https://github.com/apache/fory/commit/fae06330edd049bb960536e978a45b97bca66faf
+
+The artifacts signed with PGP key [5E580BA4], corresponding to
+[chaokunyang@apache.org], 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/guide/DEVELOPMENT.md
+
+Thanks,
+Chaokun Yang
+```
+
+在至少获得 3 + 1 且具有约束力的投票(来自 Fory Podling PMC 成员和提交者)并没有收到否决票之后,发布投票结果:
+
+标题:
+
+```
+[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 and 0 -1 vote:
+
+Binding votes:
+
+- xxx
+- yyy
+- zzz
+
+Vote thread: ${vote_thread_url}
+
+Thanks,
+
+${name}
+```
+
+### 如果投票失败怎么办
+
+如果投票失败,请单击“删除”以删除暂存的 Maven artifacts。
+
+解决提出的问题,然后再次提出 `rc_version` 的新投票。
+
+## 官方发布
+
+### 将 artifacts 发布到 SVN 发布目录
+
+- release_version:Fory 的发布版本,如 0.12.0
+- release_candidate_version:投票版本,如 0.12.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}"
+```
+
+### 更改 Fory 网站下载链接
+
+提交 PR 到 https://github.com/apache/fory-site 仓库更新 Fory 版本,[下载页面](https://fory.apache.org/download)
+
+### 发布 Maven artifacts
+
+- maven_artifact_number:Maven 暂存 artifacts 的数量。如 1001。
+- 打开https://repository.apache.org/#stagingRepositories.
+- 找到 artifacts `orgapachefory-${maven_artifact_number}`,点击“发布”。
+
+### 发送公告
+
+将发布公告发送给 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} has been released!
+
+Apache Fory - A blazingly fast multi-language serialization
+framework powered by JIT and zero-copy.
+
+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/v0.12.0...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}
+```
+
+至此,整个发布流程结束。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_verify.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_verify.md
new file mode 100644
index 000000000..150fb90cf
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/community/how_to_verify.md
@@ -0,0 +1,119 @@
+---
+title: 如何验证 Apache Fory™
+sidebar_position: 0
+id: how_to_verify
+---
+
+## 下载 Apache Fory™
+
+```bash
+# If there is svn locally, you can clone to the local
+svn co https://dist.apache.org/repos/dist/dev/incubator/fory/${release_version}-${rc_version}/
+# You can download the material file directly
+wget https://dist.apache.org/repos/dist/dev/incubator/fory/${release_version}-${rc_version}/xxx.xxx
+```
+
+## 验证 checksums 和 signatures
+
+首先,您需要安装 gpg:
+
+```bash
+apt-get install gnupg
+# or
+yum install gnupg
+# or
+brew install gnupg
+```
+
+之后,导入 Apache Fory release manager 的公钥:
+
+```bash
+curl https://downloads.apache.org/incubator/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.5.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>"
+```
+
+然后验证 checksum:
+
+```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
+```
+
+## 检查源码包中的文件
+
+解压缩 `apache-fory-${release_version}-${rc_version}-src.tar.gz` 并检查以下内容:
+
+- 此存储库 LICENSE 和 NOTICE 文件是正确的;
+- 如有必要,所有文件都有 ASF 许可证标头;
+- 项目构建通过。
+
+## 检查 fory-java 的 Maven artifacts
+
+下载 Apache Fory™:https://repository.apache.org/content/repositories/orgapachefory-${maven_artifact_number}/.
+
+您可以检查以下内容:
+
+- JAR 的 Checksum 与项目绑定的 checksum 文件一致。
+- JAR 的 signature 与项目绑定的 signature 文件一致。
+- JAR 在本地是可重复的。这意味着您可以在计算机上构建 JAR,并验证 checksum 和与项目绑定的相同。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/_category_.json
new file mode 100644
index 000000000..abf19e9fc
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 3,
+  "label": "Schema IDL 与编译器",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/compiler-guide.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/compiler-guide.md
new file mode 100644
index 000000000..0046cbcd3
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/compiler-guide.md
@@ -0,0 +1,655 @@
+---
+title: 编译器指南
+sidebar_position: 3
+id: compiler_guide
+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 [OPTIONS] FILES...
+```
+
+```bash
+foryc --scan-generated [OPTIONS]
+```
+
+### 选项
+
+编译选项:
+
+| 选项                                  | 说明                                             | 默认值        |
+| ------------------------------------- | ------------------------------------------------ | ------------- |
+| `--lang`                              | 目标语言列表(逗号分隔)                         | `all`         |
+| `--output`, `-o`                      | 输出目录                                         | `./generated` |
+| `--package`                           | 覆盖 Fory IDL 文件中的 package                   | (来自文件)  |
+| `-I`, `--proto_path`, `--import_path` | 添加 import 搜索路径(可重复)                   | (无)        |
+| `--java_out=DST_DIR`                  | 将 Java 代码输出到 `DST_DIR`                     | (无)        |
+| `--python_out=DST_DIR`                | 将 Python 代码输出到 `DST_DIR`                   | (无)        |
+| `--cpp_out=DST_DIR`                   | 将 C++ 代码输出到 `DST_DIR`                      | (无)        |
+| `--go_out=DST_DIR`                    | 将 Go 代码输出到 `DST_DIR`                       | (无)        |
+| `--rust_out=DST_DIR`                  | 将 Rust 代码输出到 `DST_DIR`                     | (无)        |
+| `--go_nested_type_style`              | Go 嵌套类型命名风格:`camelcase` 或 `underscore` | schema/默认值 |
+| `--emit-fdl`                          | 对非 `.fdl` 输入打印转换后的 Fory IDL            | `false`       |
+| `--emit-fdl-path`                     | 将转换后的 Fory IDL 写入文件或目录               | (stdout)    |
+
+扫描选项(配合 `--scan-generated`):
+
+| 选项         | 说明                   | 默认值  |
+| ------------ | ---------------------- | ------- |
+| `--root`     | 扫描根目录             | `.`     |
+| `--relative` | 以相对路径输出         | `false` |
+| `--delete`   | 删除匹配到的生成文件   | `false` |
+| `--dry-run`  | 仅扫描输出,不执行删除 | `false` |
+
+### 扫描生成文件
+
+使用 `--scan-generated` 可以定位 `foryc` 生成的文件。扫描器会递归遍历目录树,跳过 `build/`、`target/` 和隐藏目录,并输出找到的每个生成文件。
+
+```bash
+# 扫描当前目录
+foryc --scan-generated
+
+# 扫描指定根目录
+foryc --scan-generated --root ./src
+
+# 输出相对路径
+foryc --scan-generated --root ./src --relative
+
+# 删除扫描到的生成文件
+foryc --scan-generated --root ./src --delete
+
+# Dry-run(仅扫描与输出)
+foryc --scan-generated --root ./src --dry-run
+```
+
+### 示例
+
+**为所有语言编译:**
+
+```bash
+foryc schema.fdl
+```
+
+**为指定语言编译:**
+
+```bash
+foryc schema.fdl --lang java,python
+```
+
+**指定输出目录:**
+
+```bash
+foryc schema.fdl --output ./src/generated
+```
+
+**覆盖 package:**
+
+```bash
+foryc schema.fdl --package com.myapp.models
+```
+
+**编译多个文件:**
+
+```bash
+foryc user.fdl order.fdl product.fdl --output ./generated
+```
+
+**使用 import 搜索路径:**
+
+```bash
+# 单个路径
+foryc src/main.fdl -I libs/common
+
+# 多个路径(重复参数)
+foryc src/main.fdl -I libs/common -I libs/types
+
+# 多个路径(逗号分隔)
+foryc src/main.fdl -I libs/common,libs/types,third_party/
+
+# --proto_path(protoc 兼容别名)
+foryc src/main.fdl --proto_path=libs/common
+
+# 混合写法
+foryc src/main.fdl -I libs/common,libs/types --proto_path third_party/
+```
+
+**语言定向输出目录(protoc 风格):**
+
+```bash
+# 仅生成 Java
+foryc schema.fdl --java_out=./src/main/java
+
+# 多语言分别输出到不同目录
+foryc schema.fdl --java_out=./java/gen --python_out=./python/src --go_out=./go/gen
+
+# 结合 import 路径
+foryc schema.fdl --java_out=./gen/java -I proto/ -I common/
+```
+
+使用 `--{lang}_out` 时:
+
+- 只生成显式指定的语言(不会生成全部语言)
+- 输出写入指定目录(语言生成器可能继续按包/模块分层)
+- 兼容 protoc 风格工作流
+
+**查看 proto/fbs 输入转换后的 Fory IDL:**
+
+```bash
+# 输出到 stdout
+foryc schema.proto --emit-fdl
+
+# 输出到目录
+foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
+```
+
+## Import 路径解析
+
+编译含 import 的 Fory IDL 文件时,导入文件按以下顺序查找:
+
+1. **相对于导入者文件目录(默认)**:始终优先查找,无需 `-I`
+2. **按顺序遍历每个 `-I` 路径**
+
+**同目录 import 可直接生效:**
+
+```protobuf
+// main.fdl
+import "common.fdl";  // 若 common.fdl 在同目录,将自动找到
+```
+
+```bash
+# 同目录导入无需 -I
+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`    | 带 derive 宏的结构体   |
+| C++    | `cpp`    | `.h`     | 带 FORY 宏的结构体     |
+
+## 输出结构
+
+### Java
+
+```
+generated/
+└── java/
+    └── com/
+        └── example/
+            ├── User.java
+            ├── Order.java
+            ├── Status.java
+            └── ExampleForyRegistration.java
+```
+
+- 每个类型(enum/message)单独一个文件
+- 包路径与 Fory IDL package 一致
+- 会生成注册辅助类
+
+### Python
+
+```
+generated/
+└── python/
+    └── example.py
+```
+
+- 所有类型位于单模块
+- 模块名由 package 派生
+- 包含注册函数
+
+### Go
+
+```
+generated/
+└── go/
+    └── example/
+        └── example.go
+```
+
+- 所有类型在单文件中
+- 目录名与包名来自 `go_package` 或 Fory IDL package
+- 包含注册函数
+
+### Rust
+
+```
+generated/
+└── rust/
+    └── example.rs
+```
+
+- 所有类型位于单模块
+- 模块名由 package 派生
+- 包含注册函数
+
+### C++
+
+```
+generated/
+└── cpp/
+    └── example.h
+```
+
+- 单头文件输出
+- 命名空间与 package 对齐(点号转换为 `::`)
+- 自动包含 header guard 与前向声明
+
+## 构建系统集成
+
+### 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"],
+    # ...
+)
+```
+
+## 错误处理
+
+### 语法错误
+
+```
+Error: Line 5, Column 12: Expected ';' after field declaration
+```
+
+修复方式:检查对应行是否缺少分号或存在语法问题。
+
+### 类型名重复
+
+```
+Error: Duplicate type name: User
+```
+
+修复方式:确保同一文件内每个 enum/message 名称唯一。
+
+### 类型 ID 重复
+
+```
+Error: Duplicate type ID 100: User and Order
+```
+
+修复方式:为每个类型分配唯一 ID。
+
+### 未知类型引用
+
+```
+Error: Unknown type 'Address' in Customer.address
+```
+
+修复方式:先定义被引用类型,或检查类型名拼写。
+
+### 字段号重复
+
+```
+Error: Duplicate field number 1 in User: name and id
+```
+
+修复方式:确保同一 message 内字段号唯一。
+
+## 最佳实践
+
+### 项目结构
+
+```
+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 示例
+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**:类型 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
+}
+```
+
+## 故障排查
+
+### Command Not Found
+
+```
+foryc: command not found
+```
+
+**解决:** 确认编译器已安装且在 PATH 中:
+
+```bash
+pip install -e ./compiler
+# Or add to PATH
+export PATH=$PATH:~/.local/bin
+```
+
+### Permission Denied
+
+```
+Permission denied: ./generated
+```
+
+**解决:** 确保输出目录具备写权限:
+
+```bash
+chmod -R u+w ./generated
+```
+
+### 生成代码 import 错误
+
+**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++:** 确保编译器 include 路径可找到 Fory 头文件。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/flatbuffers-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/flatbuffers-idl.md
new file mode 100644
index 000000000..6a2bfd288
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/flatbuffers-idl.md
@@ -0,0 +1,183 @@
+---
+title: FlatBuffers IDL 支持
+sidebar_position: 7
+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 会生成各语言常用风格的类/结构体,可直接作为领域对象使用。
+- **Java 性能更优**:在 Fory 的 Java 对象序列化基准中,Fory 通常快于 FlatBuffers。
+- **其他语言性能相近**:序列化性能通常处于同一量级。
+- **实际反序列化链路更高效**:FlatBuffers 默认并不做原生对象反序列化,因此看起来更快;但当业务需要原生对象时,还需额外转换,这一步往往成为主要开销。在这种场景下,Fory 端到端反序列化通常更快。
+- **API 更简单**:Fory 直接操作原生对象,无需反向构建 table 或手动管理 offset。
+- **对象图建模能力更强**:Fory 原生支持共享引用和循环引用。
+
+## 快速决策指南
+
+| 场景                                            | 建议路径                |
+| ----------------------------------------------- | ----------------------- |
+| 已有 `.fbs` schema,想接入 Fory 运行时/代码生成 | 使用 FlatBuffers 输入   |
+| 新建 schema,希望完整使用 Fory 语法能力         | 使用原生 Fory IDL       |
+| 运行时必须保持 FlatBuffers 线格式兼容           | 继续使用 FlatBuffers 栈 |
+| 需要 Fory 对象图语义(`ref`、弱引用等)         | 使用 Fory               |
+
+## FlatBuffers 到 Fory 的映射
+
+### Schema 级规则
+
+- `namespace` 映射为 Fory package 命名空间。
+- `include` 映射为 Fory import。
+- `table` 会被翻译为 `evolving=true`。
+- `struct` 会被翻译为 `evolving=false`。
+- `root_type` 会被解析,但 Fory 运行时/代码生成不会使用。
+- `file_identifier` 与 `file_extension` 会被解析,但 Fory 代码生成不会使用。
+
+### 字段编号
+
+FlatBuffers 字段没有显式 field ID。Fory 会按源码声明顺序分配字段号,从 `1` 开始。
+
+### 标量类型映射
+
+| FlatBuffers | Fory Type |
+| ----------- | --------- |
+| `byte`      | `int8`    |
+| `ubyte`     | `uint8`   |
+| `short`     | `int16`   |
+| `ushort`    | `uint16`  |
+| `int`       | `int32`   |
+| `uint`      | `uint32`  |
+| `long`      | `int64`   |
+| `ulong`     | `uint64`  |
+| `float`     | `float32` |
+| `double`    | `float64` |
+| `bool`      | `bool`    |
+| `string`    | `string`  |
+
+向量(`[T]`)映射为 Fory 列表类型。
+
+### 联合类型
+
+FlatBuffers union 映射为 Fory union。
+
+- 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 默认值会被解析,但不会作为 Fory 运行时默认值生效。
+- 非 Fory 的 metadata 属性会作为通用 option 保留在 IR 中,供下游工具按需消费。
+
+## FlatBuffers 中的 Fory 扩展属性
+
+FlatBuffers metadata 属性写法为 `key:value`。对于 Fory 扩展选项,在 `.fbs` 中使用 `fory_`(或 `fory.`)前缀;解析时会去掉该前缀。
+
+### 支持的字段属性
+
+| FlatBuffers Attribute            | 在 Fory 中的效果                  |
+| -------------------------------- | --------------------------------- |
+| `fory_ref:true`                  | 为字段启用引用跟踪                |
+| `fory_nullable:true`             | 将字段标记为 optional/nullable    |
+| `fory_weak_ref:true`             | 启用弱引用语义,并隐含开启 `ref`  |
+| `fory_thread_safe_pointer:false` | 对 ref 字段选择非线程安全指针类型 |
+
+语义说明:
+
+- `fory_weak_ref:true` 隐含 `ref`。
+- `fory_thread_safe_pointer` 仅在字段启用 ref 跟踪时生效。
+- 对列表字段,`fory_ref:true` 作用于列表元素。
+
+示例:
+
+```fbs
+table Node {
+  parent: Node (fory_weak_ref: true);
+  children: [Node] (fory_ref: true);
+  cached: Node (fory_ref: true, fory_thread_safe_pointer: false);
+}
+```
+
+## 生成代码差异
+
+即使用 `.fbs` 作为 Fory 输入,生成的依然是标准 Fory 代码,而不是 FlatBuffers 的 `ByteBuffer` 风格 API。
+
+- Java:带 Fory 元数据的 POJO/record
+- Python:dataclass 与注册辅助代码
+- Go/Rust/C++:原生结构体与 Fory 元数据
+
+最终序列化格式是 Fory 二进制协议,而不是 FlatBuffers 线格式。
+
+## 用法
+
+直接编译 FlatBuffers schema:
+
+```bash
+foryc schema.fbs --lang java,python --output ./generated
+```
+
+输出转换后的 Fory schema 语法以便调试:
+
+```bash
+foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
+```
+
+## 迁移注意事项
+
+1. 保持现有 `namespace` 稳定,以保证类型注册稳定。
+2. 检查依赖 FlatBuffers 字面量默认值的字段,并在业务代码中补充显式默认值。
+3. 在需要对象图语义的字段上添加 `fory_ref`/`fory_weak_ref`。
+4. 替换现有序列化路径前,先用 roundtrip 测试验证生成模型行为。
+
+## 总结
+
+FlatBuffers 输入模式可让你复用现有 `.fbs` schema,同时迁移到 Fory 运行时与代码生成模型。它适合渐进式迁移场景:既保留既有 schema 投入,又能采用 Fory 原生对象 API。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/generated-code.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/generated-code.md
new file mode 100644
index 000000000..cadf241ab
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/generated-code.md
@@ -0,0 +1,714 @@
+---
+title: 生成代码
+sidebar_position: 5
+id: generated_code
+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:
+
+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;
+}
+```
+
+## Java
+
+### 输出布局
+
+对于 `package addressbook`,Java 输出通常位于:
+
+- `<java_out>/addressbook/`
+- 类型文件:`AddressBook.java`、`Person.java`、`Dog.java`、`Cat.java`、`Animal.java`
+- 注册辅助类:`AddressbookForyRegistration.java`
+
+### 类型生成
+
+message 会生成带 `@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) { ... }
+}
+```
+
+union 会生成继承 `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) { ... }
+}
+```
+
+### 注册
+
+生成的注册辅助方法:
+
+```java
+public static void register(Fory fory) {
+    org.apache.fory.resolver.TypeResolver resolver = fory.getTypeResolver();
+    resolver.registerUnion(Animal.class, 106L, new org.apache.fory.serializer.UnionSerializer(fory, 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(fory, Wrapper.class));
+resolver.register(Envelope.class, 3022445236L);
+resolver.registerUnion(Envelope.Detail.class, 1609214087L, new org.apache.fory.serializer.UnionSerializer(fory, 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(fory, 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);
+```
+
+## Python
+
+### 输出布局
+
+Python 每个 schema 文件生成一个模块,例如:
+
+- `<python_out>/addressbook.py`
+
+### 类型生成
+
+union 生成 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: ...
+```
+
+message 生成 `@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=...]` 时,注册代码使用计算得到的数值 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, namespace="myapp.models", typename="Config")
+fory.register_union(
+    Holder,
+    namespace="myapp.models",
+    typename="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)
+```
+
+## Rust
+
+### 输出布局
+
+Rust 每个 schema 生成一个模块文件,例如:
+
+- `<rust_out>/addressbook.rs`
+
+### 类型生成
+
+union 映射为 Rust enum,并用 `#[fory(id = ...)]` 声明 case ID:
+
+```rust
+#[derive(ForyObject, Debug, Clone, PartialEq)]
+pub enum Animal {
+    #[fory(id = 1)]
+    Dog(Dog),
+    #[fory(id = 2)]
+    Cat(Cat),
+}
+```
+
+嵌套类型生成嵌套 module:
+
+```rust
+pub mod person {
+    #[derive(ForyObject, Debug, Clone, PartialEq, Default)]
+    #[repr(i32)]
+    pub enum PhoneType {
+        #[default]
+        Mobile = 0,
+        Home = 1,
+        Work = 2,
+    }
+
+    #[derive(ForyObject, Debug, Clone, PartialEq, Default)]
+    pub struct PhoneNumber {
+        #[fory(id = 1)]
+        pub number: String,
+        #[fory(id = 2)]
+        pub phone_type: PhoneType,
+    }
+}
+```
+
+message 会 `derive(ForyObject)` 并生成 `to_bytes`/`from_bytes`:
+
+```rust
+#[derive(ForyObject, Debug, Clone, PartialEq, Default)]
+pub struct Person {
+    #[fory(id = 1)]
+    pub name: String,
+    #[fory(id = 7)]
+    pub phones: Vec<person::PhoneNumber>,
+    #[fory(id = 8, type_id = "union")]
+    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=...]` 时,注册代码使用计算得到的数值 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_namespace::<Config>("myapp.models", "Config")?;
+fory.register_union_by_namespace::<Holder>("myapp.models", "Holder")?;
+```
+
+### 使用示例
+
+```rust
+let person = Person {
+    name: "Alice".into(),
+    pet: Animal::Dog(Dog::default()),
+    ..Default::default()
+};
+
+let bytes = person.to_bytes()?;
+let restored = Person::from_bytes(&bytes)?;
+```
+
+## C++
+
+### 输出布局
+
+C++ 每个 schema 文件生成一个头文件,例如:
+
+- `<cpp_out>/addressbook.h`
+
+### 类型生成
+
+message 会生成 `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 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();
+};
+```
+
+可选 message 字段会生成 `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_;
+};
+```
+
+union 会生成基于 `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_FIELD_CONFIG`、`FORY_ENUM`、`FORY_STRUCT` 等序列化元信息宏。
+
+### 注册
+
+生成注册函数:
+
+```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=...]` 时,注册代码使用计算得到的数值 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());
+```
+
+## Go
+
+### 输出布局
+
+Go 输出路径受 schema 选项与 `--go_out` 共同影响。
+
+对于 `addressbook.fdl`,若配置了 `go_package`,生成结果会遵循对应 import path/package(位于 `--go_out` 根目录下)。
+
+若未配置 `go_package`,则使用 `--go_out` 指定目录,并按 package 规则生成文件名与包名。
+
+### 类型生成
+
+嵌套类型默认使用下划线命名(`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"`
+}
+```
+
+message 会生成带 `fory` tag 的 struct 与字节辅助方法:
+
+```go
+type Person struct {
+    Name   string               `fory:"id=1"`
+    Id     int32                `fory:"id=2,compress=true"`
+    Phones []Person_PhoneNumber `fory:"id=7"`
+    Pet    Animal               `fory:"id=8"`
+}
+
+func (m *Person) ToBytes() ([]byte, error) { ... }
+func (m *Person) FromBytes(data []byte) error { ... }
+```
+
+union 会生成 case struct,并提供构造器/访问器/visitor API:
+
+```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=...]` 时,注册代码使用计算得到的数值 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.RegisterNamedStruct(Config{}, "myapp.models.Config"); err != nil { ... }
+if err := f.RegisterNamedUnion(Holder{}, "myapp.models.Holder", fory.NewUnionSerializer(...)); err != nil { ... }
+```
+
+`go_nested_type_style` 可控制嵌套类型命名风格:
+
+```protobuf
+option go_nested_type_style = "camelcase";
+```
+
+### 使用示例
+
+```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)
+}
+```
+
+## 跨语言说明
+
+### 类型 ID 行为
+
+- 显式 `[id=...]` 会直接用于生成注册代码。
+- 未声明类型 ID 时,生成代码会使用计算得到的数值 ID(参见 `auto_id.*` 输出)。
+- 若设置 `option enable_auto_type_id = false;`,则生成代码改为使用 namespace/type-name 注册 API,而非数值 ID。
+
+### 嵌套类型形态
+
+| 语言   | 嵌套类型形式                 |
+| ------ | ---------------------------- |
+| Java   | `Person.PhoneNumber`         |
+| Python | `Person.PhoneNumber`         |
+| Rust   | `person::PhoneNumber`        |
+| C++    | `Person::PhoneNumber`        |
+| Go     | `Person_PhoneNumber`(默认) |
+
+### 字节辅助方法命名
+
+| 语言   | 辅助方法名称              |
+| ------ | ------------------------- |
+| Java   | `toBytes` / `fromBytes`   |
+| Python | `to_bytes` / `from_bytes` |
+| Rust   | `to_bytes` / `from_bytes` |
+| C++    | `to_bytes` / `from_bytes` |
+| Go     | `ToBytes` / `FromBytes`   |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/index.md
new file mode 100644
index 000000000..8e26cdd38
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/index.md
@@ -0,0 +1,212 @@
+---
+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 是 Apache Fory 的 Schema 定义语言,可实现类型安全的跨语言序列化。
+你只需定义一次数据结构,即可为 Java、Python、Go、Rust 和 C++ 生成原生数据结构代码。
+
+## 示例 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;
+}
+```
+
+## 为什么选择 Fory IDL?
+
+### Schema 优先开发
+
+在 Fory IDL 中一次定义数据模型,即可在所有语言中生成一致且类型安全的代码。这样可以确保:
+
+- **类型安全**:在编译期而不是运行期发现类型错误
+- **一致性**:各语言使用相同字段名、类型和结构
+- **文档性**:Schema 本身就是可持续演进的文档
+- **可演进性**:可在所有实现中受控地进行 Schema 变更
+
+### Fory 原生能力
+
+与通用 IDL 不同,Fory IDL 专门为 Fory 序列化设计:
+
+- **引用跟踪**:通过 `ref` 一等支持共享引用和循环引用
+- **可空字段**:通过 `optional` 显式声明可空类型
+- **类型注册**:内置支持数值 ID 与基于命名空间的注册
+- **原生代码生成**:生成带 Fory 注解/宏的语言惯用代码
+
+### 集成开销低
+
+生成代码直接使用各语言原生构造:
+
+- Java:带 `@ForyField` 注解的普通 POJO
+- Python:带类型提示的 dataclass
+- Go:带 struct tag 的结构体
+- Rust:带 `#[derive(ForyObject)]` 的结构体
+- C++:带 `FORY_STRUCT` 宏的结构体
+
+## 快速开始
+
+### 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
+# 为所有语言生成
+foryc example.fdl --output ./generated
+
+# 为指定语言生成
+foryc example.fdl --lang java,python --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) # 或 `person.to_bytes()`
+```
+
+## 文档导航
+
+| 文档                                         | 说明                               |
+| -------------------------------------------- | ---------------------------------- |
+| [Fory IDL 语法](schema-idl.md)               | 完整语言语法与文法                 |
+| [类型系统](schema-idl.md#type-system)        | 基础类型、集合类型与类型规则       |
+| [编译器指南](compiler-guide.md)              | CLI 选项与构建集成                 |
+| [生成代码](generated-code.md)                | 各目标语言的输出格式               |
+| [Protocol Buffers IDL 支持](protobuf-idl.md) | 与 protobuf 的对比及迁移指南       |
+| [FlatBuffers IDL 支持](flatbuffers-idl.md)   | FlatBuffers 映射规则与代码生成差异 |
+
+## 核心概念
+
+### 字段修饰符
+
+- **`optional`**:字段可为 null/None
+- **`ref`**:为共享/循环引用启用引用跟踪
+- **`list`**:字段为列表/数组(别名:`repeated`)
+
+```protobuf
+message Example {
+    optional string nullable = 1;
+    ref Node parent = 2;
+    list<int32> numbers = 3;
+}
+```
+
+### 跨语言兼容
+
+Fory IDL 类型会映射为各语言原生类型:
+
+| Fory IDL 类型 | Java      | Python         | Go       | Rust     | C++           |
+| ------------- | --------- | -------------- | -------- | -------- | ------------- |
+| `int32`       | `int`     | `pyfory.int32` | `int32`  | `i32`    | `int32_t`     |
+| `string`      | `String`  | `str`          | `string` | `String` | `std::string` |
+| `bool`        | `boolean` | `bool`         | `bool`   | `bool`   | `bool`        |
+
+完整映射请参见 [类型系统](schema-idl.md#type-system)。
+
+## 最佳实践
+
+1. **使用有意义的 package 名称**:将相关类型分组管理
+2. **为性能分配类型 ID**:数值 ID 比基于名称的注册更高效
+3. **预留 ID 范围**:为后续扩展保留空隙(例如用户 100-199,订单 200-299)
+4. **显式使用 `optional`**:清晰表达可空语义
+5. **共享对象使用 `ref`**:对象可能被多处引用时开启引用跟踪
+
+## 示例
+
+完整可运行示例见 [examples](https://github.com/apache/fory/tree/main/compiler/examples) 目录。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/protobuf-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/protobuf-idl.md
new file mode 100644
index 000000000..d5bb1d879
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/protobuf-idl.md
@@ -0,0 +1,321 @@
+---
+title: Protobuf IDL 支持
+sidebar_position: 10
+id: protobuf_idl_support
+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
+- 迁移时需要关注的语法与语义差异
+- `.proto` 文件中支持的 Fory 扩展选项
+- 从 protobuf 迁移到 Fory 的实践路径
+
+## 快速决策指南
+
+| 场景                                                  | 建议格式         |
+| ----------------------------------------------------- | ---------------- |
+| 主要构建 gRPC API,依赖 protobuf 工具链               | Protocol Buffers |
+| 需要极致对象图性能与引用跟踪                          | Fory             |
+| 需要在序列化数据中表达循环/共享引用                   | Fory             |
+| 需要强 unknown-field 语义保证线格式兼容               | Protocol Buffers |
+| 希望直接使用原生 struct/class,而非 protobuf 包装类型 | Fory             |
+
+## Protobuf 与 Fory 对比
+
+| 维度      | Protocol Buffers      | Fory                   |
+| --------- | --------------------- | ---------------------- |
+| 主要目标  | RPC/消息契约          | 高性能对象序列化       |
+| 编码模型  | Tag-Length-Value      | Fory 二进制协议        |
+| 引用跟踪  | 非内建                | 一等支持(`ref`)      |
+| 循环引用  | 不支持                | 支持                   |
+| 未知字段  | 保留                  | 不保留                 |
+| 生成类型  | protobuf 专用模型类型 | 语言原生构造           |
+| gRPC 生态 | 原生成熟              | 持续建设中(活跃开发) |
+
+Fory 的 gRPC 支持仍在持续开发中。当前生产级 gRPC 工作流里,protobuf 仍是更成熟的默认选择。
+
+## 为什么使用 Apache Fory
+
+- **代码更贴近语言习惯**:Fory IDL 生成的类和结构体可直接作为业务领域对象使用。
+- **序列化性能更高**:在 Fory 基准中,Fory 在对象序列化场景中可显著快于 protobuf。
+- **对象图表达更自然**:共享引用和循环引用是内建能力,无需通过业务层 ID 关联绕过。
+
+性能细节请参见 [性能参考](#性能参考)。
+
+## 语法与语义映射
+
+### Package 与文件级选项
+
+**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 使用统一 package 命名空间做跨语言注册。语言特定的包路径仍可在代码生成阶段单独配置。
+
+### Message 与 Enum 定义
+
+**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`,并增加一个可选字段指向该 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;
+}
+```
+
+说明:
+
+- union case ID 来自原 `oneof` 字段号。
+- 自动生成的 union 引用字段使用 `oneof` 中最小字段号。
+
+### Import 与 Well-Known Types
+
+支持 protobuf import。常见 well-known types 会直接映射:
+
+- `google.protobuf.Timestamp` -> `timestamp`
+- `google.protobuf.Duration` -> `duration`
+- `google.protobuf.Any` -> `any`
+
+## 类型映射要点
+
+| Protobuf Type                            | 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` + 可选 union 引用字段 |
+| `int64 [(fory).type = "tagged_int64"]`   | `tagged_int64` 编码           |
+| `uint64 [(fory).type = "tagged_uint64"]` | `tagged_uint64` 编码          |
+
+## Fory 扩展选项(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   | 对该文件所有 message 生成 Java record               |
+| `(fory).polymorphism`                | bool   | 默认开启多态序列化元信息                            |
+| `(fory).enable_auto_type_id`         | bool   | 缺失时自动生成类型 ID(编译器默认 true)            |
+| `(fory).evolving`                    | bool   | message 的默认 schema 演进行为                      |
+| `(fory).go_nested_type_style`        | string | Go 嵌套命名风格:`underscore`(默认)或 `camelcase` |
+
+### Message 与 Enum 级选项
+
+| 选项                         | 作用对象      | 类型   | 说明                          |
+| ---------------------------- | ------------- | ------ | ----------------------------- |
+| `(fory).id`                  | message, enum | int    | 显式类型 ID(用于注册)       |
+| `(fory).alias`               | message, enum | string | 自动 ID 哈希使用的别名        |
+| `(fory).evolving`            | message       | bool   | 覆盖文件级演进设置            |
+| `(fory).use_record_for_java` | message       | bool   | 为该 message 生成 Java record |
+| `(fory).deprecated`          | message, enum | bool   | 标记类型为弃用                |
+| `(fory).namespace`           | message       | string | 覆盖默认 package 命名空间     |
+
+### 字段级选项
+
+| 选项                         | 类型   | 说明                                                  |
+| ---------------------------- | ------ | ----------------------------------------------------- |
+| `(fory).ref`                 | bool   | 为该字段启用引用跟踪                                  |
+| `(fory).nullable`            | bool   | 将字段视为可空(`optional`)                          |
+| `(fory).weak_ref`            | bool   | 生成弱指针语义(C++/Rust 代码生成)                   |
+| `(fory).thread_safe_pointer` | bool   | ref 字段在 Rust 中的指针类型(`Arc` vs `Rc`)         |
+| `(fory).deprecated`          | bool   | 标记字段为弃用                                        |
+| `(fory).type`                | string | 基础类型覆盖,目前支持 `tagged_int64`/`tagged_uint64` |
+
+引用相关行为:
+
+- `weak_ref = true` 隐含开启 ref 跟踪。
+- 对 `repeated` 字段,`(fory).ref = true` 作用于列表元素。
+- 对 `map<K, V>` 字段,`(fory).ref = true` 作用于 map value。
+- `weak_ref` 与 `thread_safe_pointer` 是 C++/Rust 代码生成提示。
+
+### 典型选项组合示例
+
+```protobuf
+message Graph {
+  Node root = 1 [(fory).ref = true, (fory).thread_safe_pointer = false];
+  repeated Node nodes = 2 [(fory).ref = true];
+  map<string, Node> cache = 3 [(fory).ref = true];
+  Node parent = 4 [(fory).weak_ref = true];
+}
+```
+
+## 引用跟踪 vs 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 到 Fory
+
+### 第 1 步:转换 schema 语法
+
+- 保持 package 名称稳定。
+- 将 `repeated T` 改为 `list<T>`(或保留 `repeated` 别名)。
+- 在需要稳定数值注册的位置添加显式 `[id=...]`。
+
+### 第 2 步:处理 `oneof` 与特殊类型
+
+- `oneof` -> `union` + 可选 union 字段。
+- 将 protobuf well-known types 映射到 Fory 基础类型(`timestamp`、`duration`、`any`)。
+
+### 第 3 步:用 `ref` 替换 protobuf 的对象图绕过方案
+
+若 protobuf 里通过手工 ID 关联表达对象图,迁移到 Fory 后应改用 `ref` 修饰符(必要时使用 `ref(weak=true)`)。
+
+### 第 4 步:更新构建与代码生成
+
+将 protobuf 代码生成步骤替换为 Fory 编译器针对目标语言的生成命令。
+
+### 第 5 步:执行兼容性验证
+
+分阶段迁移时,可并行保留两种格式,并通过集成测试验证 payload 级一致性。
+
+## 共存策略
+
+迁移期间可以并行运行 protobuf 与 Fory:
+
+```java
+public byte[] serialize(Object obj, Format format) {
+    if (format == Format.PROTOBUF) {
+        return ((MessageLite) obj).toByteArray();
+    }
+    return fory.serialize(obj);
+}
+```
+
+可在服务边界设置转换层,并优先迁移内部对象图较重的链路。
+
+## 性能参考
+
+- Benchmarks: https://fory.apache.org/docs/introduction/benchmark
+- Benchmark code: https://github.com/apache/fory/tree/main/benchmarks
+
+## 总结
+
+当主要关注 API 契约与 gRPC 生态时,建议使用 protobuf。若主要关注对象图性能、原生数据模型与引用语义,建议使用 Fory。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/schema-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/schema-idl.md
new file mode 100644
index 000000000..be6d5c6b2
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/compiler/schema-idl.md
@@ -0,0 +1,737 @@
+---
+title: Schema IDL 语法
+sidebar_position: 2
+id: syntax
+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 的语法与语义参考,覆盖文件结构、类型系统、字段规则、选项与类型注册策略。
+
+编译器使用方式与构建集成请参见 [Compiler Guide](compiler-guide.md)。
+protobuf/FlatBuffers 前端映射请参见 [Protocol Buffers IDL Support](protobuf-idl.md) 与 [FlatBuffers IDL Support](flatbuffers-idl.md)。
+
+## 文件结构
+
+一个 Fory IDL 文件通常包含:
+
+1. 可选 `package` 声明
+2. 可选文件级 `option`
+3. 可选 `import` 语句
+4. 类型定义(`enum`、`message`、`union`)
+
+```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 Order [id=102] { ... }
+union Event [id=103] { ... }
+```
+
+## 注释
+
+支持单行注释与块注释:
+
+```protobuf
+// This is a single-line comment
+
+/*
+ * This is a block comment
+ * that spans multiple lines
+ */
+
+message Example {
+    string name = 1;  // Inline comment
+}
+```
+
+## Package 声明
+
+`package` 定义文件中所有类型的命名空间。
+
+```protobuf
+package com.example.models;
+```
+
+也可以配置 alias(用于自动类型 ID 计算):
+
+```protobuf
+package com.example.models alias models_v1;
+```
+
+规则:
+
+- 可选但推荐
+- 必须位于任何类型定义之前
+- 每个文件最多一个 `package`
+- 用于命名空间注册
+- `alias` 会参与 auto-ID 哈希
+
+语言映射:
+
+| 语言   | package 用法            |
+| ------ | ----------------------- |
+| Java   | Java package            |
+| Python | 模块名(`.` 转 `_`)    |
+| Go     | 包名(通常取最后一段)  |
+| Rust   | 模块名(`.` 转 `_`)    |
+| C++    | 命名空间(`.` 转 `::`) |
+
+## 文件级选项
+
+文件级选项用于控制语言定制代码生成。
+
+### 语法
+
+```protobuf
+option option_name = value;
+```
+
+### Java Package 选项
+
+通过 `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` 声明使用该值
+- 跨语言类型注册仍以 Fory package(如 `payment`)为准
+
+### Go Package 选项
+
+通过 `go_package` 指定 Go import path 与包名:
+
+```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"`(包名取最后一段)。
+
+### Java Outer Classname 选项
+
+将多个类型包装到一个外层类:
+
+```protobuf
+package payment;
+option java_outer_classname = "DescriptorProtos";
+
+enum Status {
+    UNKNOWN = 0;
+    ACTIVE = 1;
+}
+
+message Payment {
+    string id = 1;
+    Status status = 2;
+}
+```
+
+默认会生成单文件,枚举与消息作为静态内部类型。
+
+### Java Multiple Files 选项
+
+控制 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`                | 强制拆分为多文件 |
+
+### 多个选项组合
+
+```protobuf
+package payment;
+option java_package = "com.mycorp.payment.v1";
+option go_package = "github.com/mycorp/apis/gen/payment/v1;paymentv1";
+option deprecated = true;
+```
+
+### Protobuf 扩展语法说明
+
+在 `.fdl` 中请使用 Fory 原生语法(如 `[id=100]`、`ref`、`optional`、`nullable=true`)。
+`(fory).xxx` 形式仅用于 `.proto`(protobuf 前端)。
+
+### 选项优先级
+
+语言包路径优先级:
+
+1. 命令行覆盖(最高)
+2. 语言选项(`java_package`、`go_package`)
+3. Fory IDL `package`(兜底)
+
+### 跨语言类型注册
+
+默认情况下,注册名由 `package + type name`(或类型 ID)确定。建议长期保持 `package` 稳定,以避免跨版本注册不一致。
+
+## Import 语句
+
+### 基本语法
+
+```protobuf
+import "common/types.fdl";
+```
+
+### 多个导入
+
+```protobuf
+import "common/types.fdl";
+import "domain/user.fdl";
+import "domain/order.fdl";
+```
+
+### 路径解析
+
+导入解析顺序:
+
+1. 导入者文件所在目录
+2. 命令行 `-I/--proto_path/--import_path` 指定目录(按给定顺序)
+
+### 完整示例
+
+```protobuf
+// src/main.fdl
+package app;
+
+import "common.fdl";
+import "models/user.fdl";
+
+message Main {
+    common.Meta meta = 1;
+    models.User user = 2;
+}
+```
+
+### 不支持的 import 写法
+
+- URL 形式(如 `https://...`)
+- 绝对路径依赖(不推荐,会破坏可移植性)
+
+### import 错误
+
+典型错误:
+
+- 文件不存在
+- 搜索路径未包含依赖目录
+- 同名文件冲突导致解析到错误版本
+
+## Enum 定义
+
+### 基本语法
+
+```protobuf
+enum Status {
+    UNKNOWN = 0;
+    ACTIVE = 1;
+    DISABLED = 2;
+}
+```
+
+### 显式类型 ID
+
+```protobuf
+enum Status [id=101] {
+    UNKNOWN = 0;
+    ACTIVE = 1;
+    DISABLED = 2;
+}
+```
+
+### 预留值
+
+```protobuf
+enum Status {
+    UNKNOWN = 0;
+    ACTIVE = 1;
+    reserved 2, 3;
+    reserved 10 to 20;
+}
+```
+
+### enum 类型选项
+
+常见:`id`、`alias`、`deprecated`。
+
+### 语言映射
+
+- Java:`enum`
+- Python:`IntEnum`
+- Go:`type + const`
+- Rust:`repr(i32)` 枚举
+- C++:`enum class`
+
+### 枚举前缀处理
+
+针对 protobuf 风格 `TYPE_NAME_VALUE`,生成器通常会按语言习惯去除冗余前缀,使 API 更自然。
+
+## Message 定义
+
+### 基本语法
+
+```protobuf
+message User {
+    string name = 1;
+    int32 age = 2;
+}
+```
+
+### 显式类型 ID
+
+```protobuf
+message User [id=100] {
+    string name = 1;
+    int32 age = 2;
+}
+```
+
+### 无显式类型 ID
+
+未声明 `[id=...]` 时,编译器可按配置自动生成类型 ID,或使用 namespace/name 注册。
+
+### 语言映射
+
+- Java:类 / record(按选项)
+- Python:dataclass
+- Go:struct
+- Rust:struct
+- C++:class/struct + 宏元信息
+
+### 预留字段
+
+```protobuf
+message User {
+    string name = 1;
+    reserved 2, 3;
+    reserved 10 to 20;
+}
+```
+
+### message 类型选项
+
+常见选项:`id`、`alias`、`evolving`、`deprecated`、`namespace`、`use_record_for_java`。
+
+## 嵌套类型
+
+### 嵌套 message
+
+```protobuf
+message Person {
+    message PhoneNumber {
+        string number = 1;
+    }
+    PhoneNumber phone = 1;
+}
+```
+
+### 嵌套 enum
+
+```protobuf
+message Person {
+    enum PhoneType {
+        MOBILE = 0;
+        HOME = 1;
+    }
+    PhoneType type = 1;
+}
+```
+
+### 限定类型名
+
+可使用完整限定名引用嵌套类型,例如 `Person.PhoneNumber`。
+
+### 深层嵌套类型
+
+支持多层嵌套,但建议控制层级,避免可读性下降。
+
+### 各语言生成形态
+
+| 语言   | 嵌套类型形态          |
+| ------ | --------------------- |
+| Java   | `Outer.Inner`         |
+| Python | `Outer.Inner`         |
+| Rust   | `outer::Inner`        |
+| C++    | `Outer::Inner`        |
+| Go     | `Outer_Inner`(默认) |
+
+### 嵌套规则
+
+- 嵌套类型名在其父作用域内必须唯一
+- 可被同文件后续类型引用
+- 可通过 import + 限定名跨文件引用
+
+## Union 定义
+
+### 基本语法
+
+```protobuf
+union Animal {
+    Dog dog = 1;
+    Cat cat = 2;
+}
+```
+
+### 在 message 中使用 union
+
+```protobuf
+message Person {
+    Animal pet = 1;
+}
+```
+
+### 规则
+
+- case 字段号必须唯一
+- case 类型通常为消息类型或可序列化复合类型
+- 各语言会生成带 case 判别和访问器的 union 表达
+
+## 字段定义
+
+### 基本语法
+
+```protobuf
+string name = 1;
+```
+
+### 带修饰符语法
+
+```protobuf
+optional string nickname = 2;
+ref Node parent = 3;
+list<int32> scores = 4;
+```
+
+### 字段修饰符
+
+#### `optional`
+
+声明字段可为空(null/None):
+
+```protobuf
+message User {
+    optional string email = 1;
+}
+```
+
+建议在跨语言场景显式使用,以避免默认值差异。
+
+#### `ref`
+
+开启引用跟踪,用于共享对象与循环结构:
+
+```protobuf
+message Node {
+    string name = 1;
+    ref Node parent = 2;
+    list<ref Node> children = 3;
+}
+```
+
+当运行时全局 ref tracking 开启时,字段级 `ref` 才会生效。
+
+#### `list`
+
+列表字段(`repeated` 为等价别名):
+
+```protobuf
+message Group {
+    list<string> tags = 1;
+}
+```
+
+### 组合修饰符
+
+可组合使用:
+
+```protobuf
+message Graph {
+    optional ref Node root = 1;
+    list<ref Node> nodes = 2;
+}
+```
+
+## 字段号
+
+字段号规则:
+
+- 同一 message 内必须唯一
+- 必须为正整数
+- 不应复用已删除字段号(建议使用 `reserved`)
+- 建议预留编号区间以便演进
+
+## Type System {#type-system}
+
+Fory IDL 类型系统包括基础类型、命名类型和集合类型。
+
+### Primitive Types
+
+| 类型族   | 示例                              |
+| -------- | --------------------------------- |
+| 布尔     | `bool`                            |
+| 整数     | `int8/int16/int32/int64`、`uint*` |
+| 浮点     | `float32`、`float64`              |
+| 字符串   | `string`                          |
+| 字节数组 | `bytes`                           |
+| 时间     | `date`、`timestamp`、`duration`   |
+| 动态类型 | `any`                             |
+
+#### Boolean
+
+`bool` 表示布尔值。
+
+#### Integer Types
+
+支持有符号/无符号与不同位宽。跨语言场景建议明确编码策略并保持字段语义稳定。
+
+#### Integer Encoding Variants
+
+常见编码:
+
+- `varint`:小值更省空间
+- `fixed`:固定长度,性能稳定
+- `tagged`:混合编码(特定类型可用)
+
+#### Floating-Point Types
+
+- `float32`
+- `float64`
+
+#### String Type
+
+`string` 使用 UTF-8 文本语义。
+
+#### Bytes Type
+
+`bytes` 用于原始二进制载荷。
+
+#### Temporal Types
+
+##### Date
+
+`date` 表示日期(不含时区时间部分)。
+
+##### Timestamp
+
+`timestamp` 表示时间点(跨语言应统一时间语义与精度预期)。
+
+#### Any
+
+`any` 允许存储动态类型值。使用 `any` 时建议配合清晰的业务约束,避免滥用导致模型不稳定。
+
+### Named Types
+
+命名类型包括:
+
+- `enum`
+- `message`
+- `union`
+
+支持跨文件 import 和限定名引用。
+
+### Collection Types
+
+#### List (`list`)
+
+```protobuf
+list<T>
+```
+
+等价别名:`repeated T`。
+
+#### Map
+
+```protobuf
+map<K, V>
+```
+
+约束:
+
+- `K` 一般应为可稳定比较的标量类型
+- `V` 可为任意支持类型
+
+### Type Compatibility Matrix
+
+跨语言建议:
+
+- 使用各语言都稳定支持的公共子集
+- 尽量避免平台相关宽度/语义差异
+- 对整数编码与可空语义显式声明
+
+### Best Practices
+
+1. 优先使用显式字段号与稳定命名
+2. 需要可空就显式 `optional`
+3. 存在共享/循环关系时使用 `ref`
+4. 降低 `any` 使用范围,优先强类型建模
+5. 预留字段号与枚举值区间
+
+## Type IDs
+
+类型 ID 用于跨语言快速注册与解码匹配。
+
+### 显式类型 ID
+
+```protobuf
+message User [id=100] {
+    string name = 1;
+}
+```
+
+### 无显式类型 ID
+
+未显式声明时可:
+
+- 自动生成数值 ID(默认配置)
+- 禁用自动 ID,改用 namespace/type-name 注册
+
+### 实践说明
+
+- 类型 ID 在协议层面应视为稳定标识
+- 一经发布,不建议更改
+- 建议按域规划 ID 段(如 100-199 用户域)
+
+### ID 分配策略
+
+- 核心高频模型优先分配固定 ID
+- 团队统一管理 ID 区间与分配规范
+- 在 CI 中增加 ID 冲突检查
+
+## 完整示例
+
+```protobuf
+package demo.order;
+
+option java_package = "com.example.demo.order";
+option go_package = "github.com/example/demo/gen/order;order";
+
+import "demo/common.fdl";
+
+enum Status [id=200] {
+    UNKNOWN = 0;
+    CREATED = 1;
+    PAID = 2;
+    SHIPPED = 3;
+}
+
+message Item [id=201] {
+    string sku = 1;
+    int32 quantity = 2;
+}
+
+message User [id=202] {
+    string id = 1;
+    string name = 2;
+    optional string email = 3;
+}
+
+union Animal [id=203] {
+    Dog dog = 1;
+    Cat cat = 2;
+}
+
+message Dog [id=204] {
+    string name = 1;
+}
+
+message Cat [id=205] {
+    string name = 1;
+}
+
+message Order [id=206] {
+    string id = 1;
+    ref User buyer = 2;
+    list<Item> items = 3;
+    Status status = 4;
+    map<string, string> metadata = 5;
+    optional Animal pet = 6;
+}
+```
+
+## 语法摘要
+
+以下为简化文法(便于快速查阅,具体以编译器实现为准):
+
+```ebnf
+file            = [packageDecl] {optionDecl} {importDecl} {typeDecl} ;
+
+packageDecl     = "package" qualifiedName ["alias" identifier] ";" ;
+optionDecl      = "option" identifier "=" optionValue ";" ;
+importDecl      = "import" stringLiteral ";" ;
+
+typeDecl        = enumDecl | messageDecl | unionDecl ;
+
+enumDecl        = "enum" identifier [typeOptions] "{" {enumField | reservedDecl} "}" ;
+enumField       = identifier "=" intLiteral ";" ;
+
+messageDecl     = "message" identifier [typeOptions] "{" {fieldDecl | nestedTypeDecl | reservedDecl} "}" ;
+unionDecl       = "union" identifier [typeOptions] "{" {unionCaseDecl} "}" ;
+
+fieldDecl       = [fieldModifier] typeRef identifier "=" intLiteral [fieldOptions] ";" ;
+unionCaseDecl   = typeRef identifier "=" intLiteral [fieldOptions] ";" ;
+
+fieldModifier   = "optional" | "ref" | "list" ;
+
+typeRef         = primitiveType | qualifiedName | listType | mapType ;
+listType        = "list" "<" typeRef ">" ;
+mapType         = "map" "<" typeRef "," typeRef ">" ;
+
+typeOptions     = "[" optionPair {"," optionPair} "]" ;
+fieldOptions    = "[" optionPair {"," optionPair} "]" ;
+optionPair      = identifier "=" optionValue ;
+
+reservedDecl    = "reserved" reservedItem {"," reservedItem} ";" ;
+reservedItem    = intLiteral | intLiteral "to" intLiteral | stringLiteral ;
+```
+
+实现建议:如需严谨验证,请以编译器语法解析器和测试用例为准。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/DEVELOPMENT.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/DEVELOPMENT.md
new file mode 100644
index 000000000..004da7bd9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/DEVELOPMENT.md
@@ -0,0 +1,146 @@
+---
+title: 开发指南
+sidebar_position: 20
+id: development
+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™
+
+请从 https://github.com/apache/fory 检出源代码树。
+
+### 构建 Apache Fory™ Java
+
+```bash
+cd java
+mvn clean compile -DskipTests
+```
+
+#### 环境要求
+
+- java 1.8+
+- maven 3.6.3+
+
+### 构建 Apache Fory™ Python
+
+```bash
+cd python
+# 首先卸载 numpy,以便在安装 pyarrow 时自动安装正确的 numpy 版本。
+# 对于 Python 版本低于 3.13,目前不支持 numpy 2。
+pip uninstall -y numpy
+# 为 Python < 3.13 安装必要的环境。
+pip install pyarrow Cython wheel pytest
+# pip install pyarrow Cython wheel pytest
+pip install -v -e .
+```
+
+#### 环境要求
+
+- python 3.6+
+
+### 构建 Apache Fory™ C++
+
+构建 fory 行格式:
+
+```bash
+bazel build //cpp/fory/row:fory_row_format
+```
+
+构建 fory 行格式编码器:
+
+```bash
+bazel build //cpp/fory/encoder:fory_encoder
+```
+
+#### 环境要求
+
+- 支持 C++17 的编译器
+- bazel 6.3.2
+
+### 构建 Apache Fory™ GoLang
+
+```bash
+cd go/fory
+# 运行测试
+go test -v ./...
+# 运行跨语言测试
+go test -v fory_xlang_test.go
+```
+
+#### 环境要求
+
+- go 1.13+
+
+### 构建 Apache Fory™ Rust
+
+```bash
+cd rust
+# 构建
+cargo build
+# 运行测试
+cargo test
+# 运行特定测试
+cargo test -p tests  --test $test_file $test_method
+# 运行子目录下的特定测试
+cargo test --test mod $dir$::$test_file::$test_method
+# 调试子目录下的特定测试并获取回溯信息
+RUST_BACKTRACE=1 FORY_PANIC_ON_ERROR=1 cargo test --test mod $dir$::$test_file::$test_method
+# 检查 fory derive 宏生成的代码
+cargo expand --test mod $mod$::$file$ > expanded.rs
+```
+
+#### 环境要求
+
+```bash
+curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+```
+
+### 构建 Apache Fory™ JavaScript
+
+```bash
+cd javascript
+npm install
+
+# 运行构建
+npm run build
+# 运行测试
+npm run test
+```
+
+#### 环境要求
+
+- node 14+
+- npm 8+
+
+### Lint Markdown 文档
+
+```bash
+# 全局安装 prettier
+npm install -g prettier
+
+# 格式化 markdown 文件
+prettier --write "**/*.md"
+```
+
+#### 环境要求
+
+- node 14+
+- npm 8+
+
+## 贡献
+
+更多信息,请参考[如何贡献到 Apache Fory™](https://github.com/apache/fory/blob/main/CONTRIBUTING.md)。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/_category_.json
new file mode 100644
index 000000000..ab7f160ea
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/_category_.json
@@ -0,0 +1 @@
+{"position": 3, "label": "用户指南"}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/_category_.json
new file mode 100644
index 000000000..c543ab138
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "C++",
+  "position": 3,
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/basic-serialization.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/basic-serialization.md
new file mode 100644
index 000000000..d047b5b99
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/basic-serialization.md
@@ -0,0 +1,238 @@
+---
+title: 基础序列化
+sidebar_position: 2
+id: basic_serialization
+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.
+---
+
+本页介绍基础对象图序列化和核心序列化 API。
+
+## 对象图序列化
+
+Apache Fory™ 提供复杂对象图的自动序列化,保留对象之间的结构和关系。`FORY_STRUCT` 宏在编译时生成高效的序列化代码,消除运行时开销。
+
+**核心功能:**
+
+- 支持任意深度的嵌套结构体序列化
+- 集合类型(vector、set、map)
+- 使用 `std::optional<T>` 的可选字段
+- 智能指针(`std::shared_ptr`、`std::unique_ptr`)
+- 自动处理基本类型和字符串
+- 使用变长整数的高效二进制编码
+
+```cpp
+#include "fory/serialization/fory.h"
+#include <vector>
+#include <map>
+
+using namespace fory::serialization;
+
+// 定义结构体
+struct Address {
+  std::string street;
+  std::string city;
+  std::string country;
+
+  bool operator==(const Address &other) const {
+    return street == other.street && city == other.city &&
+           country == other.country;
+  }
+};
+FORY_STRUCT(Address, street, city, country);
+
+struct Person {
+  std::string name;
+  int32_t age;
+  Address address;
+  std::vector<std::string> hobbies;
+  std::map<std::string, std::string> metadata;
+
+  bool operator==(const Person &other) const {
+    return name == other.name && age == other.age &&
+           address == other.address && hobbies == other.hobbies &&
+           metadata == other.metadata;
+  }
+};
+FORY_STRUCT(Person, name, age, address, hobbies, metadata);
+
+int main() {
+  auto fory = Fory::builder().xlang(true).build();
+  fory.register_struct<Address>(100);
+  fory.register_struct<Person>(200);
+
+  Person person{
+      "John Doe",
+      30,
+      {"123 Main St", "New York", "USA"},
+      {"reading", "coding"},
+      {{"role", "developer"}}
+  };
+
+  auto result = fory.serialize(person);
+  auto decoded = fory.deserialize<Person>(result.value());
+  assert(person == decoded.value());
+}
+```
+
+## 序列化 API
+
+### 序列化到新 Vector
+
+```cpp
+auto fory = Fory::builder().xlang(true).build();
+fory.register_struct<MyStruct>(1);
+
+MyStruct obj{/* ... */};
+
+// 序列化 - 返回 Result<std::vector<uint8_t>, Error>
+auto result = fory.serialize(obj);
+if (result.ok()) {
+  std::vector<uint8_t> bytes = std::move(result).value();
+  // 使用 bytes...
+} else {
+  // 处理错误
+  std::cerr << result.error().to_string() << std::endl;
+}
+```
+
+### 序列化到现有缓冲区
+
+```cpp
+// 序列化到现有 Buffer(最快路径)
+Buffer buffer;
+auto result = fory.serialize_to(buffer, obj);
+if (result.ok()) {
+  size_t bytes_written = result.value();
+  // buffer 现在包含序列化数据
+}
+
+// 序列化到现有 vector(零拷贝)
+std::vector<uint8_t> output;
+auto result = fory.serialize_to(output, obj);
+if (result.ok()) {
+  size_t bytes_written = result.value();
+  // output 现在包含序列化数据
+}
+```
+
+### 从字节数组反序列化
+
+```cpp
+// 从原始指针反序列化
+auto result = fory.deserialize<MyStruct>(data_ptr, data_size);
+if (result.ok()) {
+  MyStruct obj = std::move(result).value();
+}
+
+// 从 vector 反序列化
+std::vector<uint8_t> data = /* ... */;
+auto result = fory.deserialize<MyStruct>(data);
+
+// 从 Buffer 反序列化(更新 reader_index)
+Buffer buffer(data);
+auto result = fory.deserialize<MyStruct>(buffer);
+```
+
+## 错误处理
+
+Fory 使用 `Result<T, Error>` 类型进行错误处理:
+
+```cpp
+auto result = fory.serialize(obj);
+
+// 检查操作是否成功
+if (result.ok()) {
+  auto value = std::move(result).value();
+  // 使用 value...
+} else {
+  Error error = result.error();
+  std::cerr << "Error: " << error.to_string() << std::endl;
+}
+
+// 或使用 FORY_TRY 宏进行提前返回
+FORY_TRY(bytes, fory.serialize(obj));
+// 直接使用 bytes...
+```
+
+常见错误类型:
+
+- `Error::type_mismatch` - 反序列化时类型 ID 不匹配
+- `Error::invalid_data` - 无效或损坏的数据
+- `Error::buffer_out_of_bound` - 缓冲区溢出/下溢
+- `Error::type_error` - 类型注册错误
+
+## FORY_STRUCT 宏
+
+`FORY_STRUCT` 宏用于注册结构体以进行序列化:
+
+```cpp
+struct MyStruct {
+  int32_t x;
+  std::string y;
+  std::vector<int32_t> z;
+};
+
+// 必须与结构体在同一命名空间中
+FORY_STRUCT(MyStruct, x, y, z);
+```
+
+该宏:
+
+1. 生成编译时字段元数据
+2. 启用 ADL(参数依赖查找)进行序列化
+3. 通过模板特化创建高效的序列化代码
+
+**要求:**
+
+- 必须放在与结构体相同的命名空间中(用于 ADL)
+- 所有列出的字段必须是可序列化类型
+- 宏中的字段顺序决定序列化顺序
+
+## 嵌套结构体
+
+完全支持嵌套结构体:
+
+```cpp
+struct Inner {
+  int32_t value;
+};
+FORY_STRUCT(Inner, value);
+
+struct Outer {
+  Inner inner;
+  std::string label;
+};
+FORY_STRUCT(Outer, inner, label);
+
+// 两者都必须注册
+fory.register_struct<Inner>(1);
+fory.register_struct<Outer>(2);
+```
+
+## 性能提示
+
+- **缓冲区复用**:使用 `serialize_to(buffer, obj)` 配合预分配的缓冲区
+- **预注册**:在序列化开始前注册所有类型
+- **单线程**:尽可能使用 `build()` 而不是 `build_thread_safe()`
+- **禁用跟踪**:当不需要引用跟踪时使用 `track_ref(false)`
+- **紧凑编码**:使用变长编码提高空间效率
+
+## 相关主题
+
+- [配置](configuration.md) - 构建器选项
+- [类型注册](type-registration.md) - 注册类型
+- [支持的类型](supported-types.md) - 所有支持的类型
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/configuration.md
new file mode 100644
index 000000000..04b314dc9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/configuration.md
@@ -0,0 +1,189 @@
+---
+title: 配置
+sidebar_position: 1
+id: configuration
+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 配置选项和序列化模式。
+
+## 序列化模式
+
+Apache Fory™ 支持两种序列化模式:
+
+### SchemaConsistent 模式(默认)
+
+类型声明必须在通信双方完全匹配:
+
+```cpp
+auto fory = Fory::builder().build(); // 默认为 SchemaConsistent
+```
+
+### Compatible 模式
+
+允许独立的 schema 演化:
+
+```cpp
+auto fory = Fory::builder().compatible(true).build();
+```
+
+## 构建器模式
+
+使用 `ForyBuilder` 构造具有自定义配置的 Fory 实例:
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+// 默认配置
+auto fory = Fory::builder().build();
+
+// 用于 schema 演化的兼容模式
+auto fory = Fory::builder()
+    .compatible(true)
+    .build();
+
+// 跨语言模式
+auto fory = Fory::builder()
+    .xlang(true)
+    .build();
+
+// 完整配置
+auto fory = Fory::builder()
+    .compatible(true)
+    .xlang(true)
+    .track_ref(true)
+    .max_dyn_depth(10)
+    .check_struct_version(true)
+    .build();
+```
+
+## 配置选项
+
+### xlang(bool)
+
+启用/禁用跨语言(xlang)序列化模式。
+
+```cpp
+auto fory = Fory::builder()
+    .xlang(true)  // 启用跨语言兼容性
+    .build();
+```
+
+启用后,包含用于与 Java、Python、Go、Rust 和 JavaScript 跨语言兼容的元数据。
+
+**默认值:** `true`
+
+### compatible(bool)
+
+启用/禁用用于 schema 演化的兼容模式。
+
+```cpp
+auto fory = Fory::builder()
+    .compatible(true)  // 启用 schema 演化
+    .build();
+```
+
+启用后,支持读取使用不同 schema 版本序列化的数据。
+
+**默认值:** `false`
+
+### track_ref(bool)
+
+启用/禁用共享引用和循环引用的引用跟踪。
+
+```cpp
+auto fory = Fory::builder()
+    .track_ref(true)  // 启用引用跟踪
+    .build();
+```
+
+启用后,避免重复序列化共享对象并处理循环引用。
+
+**默认值:** `true`
+
+### max_dyn_depth(uint32_t)
+
+设置动态类型对象的最大允许嵌套深度。
+
+```cpp
+auto fory = Fory::builder()
+    .max_dyn_depth(10)  // 允许最多 10 层
+    .build();
+```
+
+这限制了嵌套多态对象序列化的最大深度(例如 `shared_ptr<Base>`、`unique_ptr<Base>`)。防止深度嵌套结构在动态序列化场景中导致栈溢出。
+
+**默认值:** `5`
+
+**何时调整:**
+
+- **增加**:对于合法的深度嵌套数据结构
+- **减少**:对于更严格的安全要求或浅层数据结构
+
+### check_struct_version(bool)
+
+启用/禁用结构体版本检查。
+
+```cpp
+auto fory = Fory::builder()
+    .check_struct_version(true)  // 启用版本检查
+    .build();
+```
+
+启用后,验证类型哈希以检测 schema 不匹配。
+
+**默认值:** `false`
+
+## 线程安全 vs 单线程
+
+### 单线程(最快)
+
+```cpp
+auto fory = Fory::builder()
+    .xlang(true)
+    .build();  // 返回 Fory
+```
+
+单线程 `Fory` 是最快的选项,但非线程安全。每个线程使用一个实例。
+
+### 线程安全
+
+```cpp
+auto fory = Fory::builder()
+    .xlang(true)
+    .build_thread_safe();  // 返回 ThreadSafeFory
+```
+
+`ThreadSafeFory` 使用 Fory 实例池提供线程安全的序列化。由于池开销略慢,但可以从多个线程并发安全使用。
+
+## 配置摘要
+
+| 选项                         | 说明                   | 默认值  |
+| ---------------------------- | ---------------------- | ------- |
+| `xlang(bool)`                | 启用跨语言模式         | `true`  |
+| `compatible(bool)`           | 启用 schema 演化       | `false` |
+| `track_ref(bool)`            | 启用引用跟踪           | `true`  |
+| `max_dyn_depth(uint32_t)`    | 动态类型的最大嵌套深度 | `5`     |
+| `check_struct_version(bool)` | 启用结构体版本检查     | `false` |
+
+## 相关主题
+
+- [基础序列化](basic-serialization.md) - 使用配置的 Fory
+- [跨语言](cross-language.md) - XLANG 模式详情
+- [类型注册](type-registration.md) - 注册类型
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/cross-language.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/cross-language.md
new file mode 100644
index 000000000..ef338ecba
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/cross-language.md
@@ -0,0 +1,271 @@
+---
+title: 跨语言序列化
+sidebar_position: 6
+id: cross_language
+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 在 C++ 和其他语言之间进行跨语言序列化。
+
+## 概述
+
+Apache Fory™ 支持在 C++、Java、Python、Go、Rust 和 JavaScript 之间无缝交换数据。xlang(跨语言)模式确保所有支持语言之间的二进制兼容性。
+
+## 启用跨语言模式
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+auto fory = Fory::builder()
+    .xlang(true)  // 启用跨语言模式
+    .build();
+```
+
+## 跨语言示例
+
+### C++ 生产者
+
+```cpp
+#include "fory/serialization/fory.h"
+#include <fstream>
+
+using namespace fory::serialization;
+
+struct Message {
+  std::string topic;
+  int64_t timestamp;
+  std::map<std::string, std::string> headers;
+  std::vector<uint8_t> payload;
+
+  bool operator==(const Message &other) const {
+    return topic == other.topic && timestamp == other.timestamp &&
+           headers == other.headers && payload == other.payload;
+  }
+};
+FORY_STRUCT(Message, topic, timestamp, headers, payload);
+
+int main() {
+  auto fory = Fory::builder().xlang(true).build();
+  fory.register_struct<Message>(100);
+
+  Message msg{
+      "events.user",
+      1699999999000,
+      {{"content-type", "application/json"}},
+      {'h', 'e', 'l', 'l', 'o'}
+  };
+
+  auto result = fory.serialize(msg);
+  if (result.ok()) {
+    auto bytes = std::move(result).value();
+    // 写入文件、通过网络发送等
+    std::ofstream file("message.bin", std::ios::binary);
+    file.write(reinterpret_cast<const char*>(bytes.data()), bytes.size());
+  }
+  return 0;
+}
+```
+
+### Java 消费者
+
+```java
+import org.apache.fory.Fory;
+import org.apache.fory.config.Language;
+
+public class Message {
+    public String topic;
+    public long timestamp;
+    public Map<String, String> headers;
+    public byte[] payload;
+}
+
+public class Consumer {
+    public static void main(String[] args) throws Exception {
+        Fory fory = Fory.builder()
+            .withLanguage(Language.XLANG)
+            .build();
+        fory.register(Message.class, 100);  // 与 C++ 相同的 ID
+
+        byte[] bytes = Files.readAllBytes(Path.of("message.bin"));
+        Message msg = (Message) fory.deserialize(bytes);
+
+        System.out.println("Topic: " + msg.topic);
+        System.out.println("Timestamp: " + msg.timestamp);
+    }
+}
+```
+
+### Python 消费者
+
+```python
+import pyfory
+
+class Message:
+    topic: str
+    timestamp: int
+    headers: dict[str, str]
+    payload: bytes
+
+fory = pyfory.Fory()
+fory.register(Message, type_id=100)  # 与 C++ 相同的 ID
+
+with open("message.bin", "rb") as f:
+    data = f.read()
+
+msg = fory.deserialize(data)
+print(f"Topic: {msg.topic}")
+print(f"Timestamp: {msg.timestamp}")
+```
+
+## 类型映射
+
+### 基本类型
+
+| C++ 类型  | Java 类型 | Python 类型 | Go 类型   | Rust 类型 |
+| --------- | --------- | ----------- | --------- | --------- |
+| `bool`    | `boolean` | `bool`      | `bool`    | `bool`    |
+| `int8_t`  | `byte`    | `int`       | `int8`    | `i8`      |
+| `int16_t` | `short`   | `int`       | `int16`   | `i16`     |
+| `int32_t` | `int`     | `int`       | `int32`   | `i32`     |
+| `int64_t` | `long`    | `int`       | `int64`   | `i64`     |
+| `float`   | `float`   | `float`     | `float32` | `f32`     |
+| `double`  | `double`  | `float`     | `float64` | `f64`     |
+
+### 字符串类型
+
+| C++ 类型      | Java 类型 | Python 类型 | Go 类型  | Rust 类型 |
+| ------------- | --------- | ----------- | -------- | --------- |
+| `std::string` | `String`  | `str`       | `string` | `String`  |
+
+### 集合类型
+
+| C++ 类型         | Java 类型  | Python 类型 | Go 类型          |
+| ---------------- | ---------- | ----------- | ---------------- |
+| `std::vector<T>` | `List<T>`  | `list`      | `[]T`            |
+| `std::set<T>`    | `Set<T>`   | `set`       | `map[T]struct{}` |
+| `std::map<K,V>`  | `Map<K,V>` | `dict`      | `map[K]V`        |
+
+### 时间类型
+
+| C++ 类型    | Java 类型   | Python 类型     | Go 类型         |
+| ----------- | ----------- | --------------- | --------------- |
+| `Timestamp` | `Instant`   | `datetime`      | `time.Time`     |
+| `Duration`  | `Duration`  | `timedelta`     | `time.Duration` |
+| `LocalDate` | `LocalDate` | `datetime.date` | `time.Time`     |
+
+## 字段顺序要求
+
+**关键:** 字段将按照其 snake_cased 字段名排序,转换后的名称必须在各语言之间保持一致
+
+### C++
+
+```cpp
+struct Person {
+  std::string name;   // 字段 0
+  int32_t age;        // 字段 1
+  std::string email;  // 字段 2
+};
+FORY_STRUCT(Person, name, age, email);  // 顺序很重要!
+```
+
+### Java
+
+```java
+public class Person {
+    public String name;   // 字段 0
+    public int age;       // 字段 1
+    public String email;  // 字段 2
+}
+```
+
+### Python
+
+```python
+class Person:
+    name: str    # 字段 0
+    age: int     # 字段 1
+    email: str   # 字段 2
+```
+
+## 类型 ID 一致性
+
+所有语言必须使用相同的类型 ID:
+
+```cpp
+// C++
+fory.register_struct<Person>(100);
+fory.register_struct<Address>(101);
+fory.register_struct<Order>(102);
+```
+
+```java
+// Java
+fory.register(Person.class, 100);
+fory.register(Address.class, 101);
+fory.register(Order.class, 102);
+```
+
+```python
+# Python
+fory.register(Person, type_id=100)
+fory.register(Address, type_id=101)
+fory.register(Order, type_id=102)
+```
+
+## Compatible 模式
+
+用于跨语言边界的 schema 演化:
+
+```cpp
+// 使用 compatible 模式的 C++
+auto fory = Fory::builder()
+    .xlang(true)
+    .compatible(true)  // 启用 schema 演化
+    .build();
+```
+
+Compatible 模式允许:
+
+- 添加新字段(带默认值)
+- 删除未使用的字段
+- 重排字段顺序
+
+## 故障排查
+
+### 类型不匹配错误
+
+```
+Error: Type mismatch: expected 100, got 101
+```
+
+**解决方案:** 确保类型 ID 在所有语言中匹配。
+
+### 编码错误
+
+```
+Error: Invalid UTF-8 sequence
+```
+
+**解决方案:** 确保所有语言中的字符串都是有效的 UTF-8。
+
+## 相关主题
+
+- [配置](configuration.md) - 构建器选项
+- [类型注册](type-registration.md) - 注册类型
+- [支持的类型](supported-types.md) - 类型兼容性
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/custom-serializers.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/custom-serializers.md
new file mode 100644
index 000000000..feab1bd95
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/custom-serializers.md
@@ -0,0 +1,371 @@
+---
+title: 自定义序列化器
+sidebar_position: 6
+id: custom_serializers
+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_STRUCT` 的类型,需要手动实现 `Serializer` 模板特化。
+
+## 何时使用自定义序列化器
+
+- External types from third-party libraries
+- Types with special serialization requirements
+- Legacy data format compatibility
+- Performance-critical custom encoding
+- Cross-language interoperability with custom protocols
+
+## 实现 Serializer 模板
+
+To create a custom serializer, specialize the `Serializer` template for your type within the `fory::serialization` namespace:
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+// Define your custom type
+struct MyExt {
+  int32_t id;
+  bool operator==(const MyExt &other) const { return id == other.id; }
+};
+
+namespace fory {
+namespace serialization {
+
+template <>
+struct Serializer<MyExt> {
+  // Declare as extension type for custom serialization
+  static constexpr TypeId type_id = TypeId::EXT;
+
+  // Main write method - handles null checking and type info
+  static void write(const MyExt &value, WriteContext &ctx, RefMode ref_mode,
+                    bool write_type, bool has_generics = false) {
+    (void)has_generics;
+    write_not_null_ref_flag(ctx, ref_mode);
+    if (write_type) {
+      auto result = ctx.write_any_type_info(
+          static_cast<uint32_t>(TypeId::UNKNOWN),
+          std::type_index(typeid(MyExt)));
+      if (!result.ok()) {
+        ctx.set_error(std::move(result).error());
+        return;
+      }
+    }
+    write_data(value, ctx);
+  }
+
+  // write only the data (no type info)
+  static void write_data(const MyExt &value, WriteContext &ctx) {
+    Serializer<int32_t>::write_data(value.id, ctx);
+  }
+
+  // write data with generics support
+  static void write_data_generic(const MyExt &value, WriteContext &ctx,
+                                 bool has_generics) {
+    (void)has_generics;
+    write_data(value, ctx);
+  }
+
+  // Main read method - handles null checking and type info
+  static MyExt read(ReadContext &ctx, RefMode ref_mode, bool read_type) {
+    bool has_value = read_null_only_flag(ctx, ref_mode);
+    if (ctx.has_error() || !has_value) {
+      return MyExt{};
+    }
+    if (read_type) {
+      const TypeInfo *type_info = ctx.read_any_type_info(ctx.error());
+      if (ctx.has_error()) {
+        return MyExt{};
+      }
+      if (!type_info) {
+        ctx.set_error(Error::type_error("TypeInfo for MyExt not found"));
+        return MyExt{};
+      }
+    }
+    return read_data(ctx);
+  }
+
+  // Read only the data (no type info)
+  static MyExt read_data(ReadContext &ctx) {
+    MyExt value;
+    value.id = Serializer<int32_t>::read_data(ctx);
+    return value;
+  }
+
+  // Read data with generics support
+  static MyExt read_data_generic(ReadContext &ctx, bool has_generics) {
+    (void)has_generics;
+    return read_data(ctx);
+  }
+
+  // Read with pre-resolved type info
+  static MyExt read_with_type_info(ReadContext &ctx, RefMode ref_mode,
+                                   const TypeInfo &type_info) {
+    (void)type_info;
+    return read(ctx, ref_mode, false);
+  }
+};
+
+} // namespace serialization
+} // namespace fory
+```
+
+## Required Methods
+
+A custom serializer must implement these static methods:
+
+| Method                | Purpose                                         |
+| --------------------- | ----------------------------------------------- |
+| `write`               | Main serialization entry point with type info   |
+| `write_data`          | Serialize data only (no type info)              |
+| `write_data_generic`  | Serialize data with generics support            |
+| `read`                | Main deserialization entry point with type info |
+| `read_data`           | Deserialize data only (no type info)            |
+| `read_data_generic`   | Deserialize data with generics support          |
+| `read_with_type_info` | Deserialize with pre-resolved TypeInfo          |
+
+The `type_id` constant should be set to `TypeId::EXT` for custom extension types.
+
+## Registering Custom Serializers
+
+Register your custom serializer with Fory before use:
+
+```cpp
+auto fory = Fory::builder().xlang(true).build();
+
+// Register with numeric type ID (must match across languages)
+auto result = fory.register_extension_type<MyExt>(103);
+if (!result.ok()) {
+  std::cerr << "Failed to register: " << result.error().to_string() << std::endl;
+}
+
+// Or register with type name for named type systems
+fory.register_extension_type<MyExt>("my_ext");
+
+// Or with namespace and type name
+fory.register_extension_type<MyExt>("com.example", "MyExt");
+```
+
+## Complete Example
+
+```cpp
+#include "fory/serialization/fory.h"
+#include <iostream>
+
+using namespace fory::serialization;
+
+struct CustomType {
+  int32_t value;
+  std::string name;
+
+  bool operator==(const CustomType &other) const {
+    return value == other.value && name == other.name;
+  }
+};
+
+namespace fory {
+namespace serialization {
+
+template <>
+struct Serializer<CustomType> {
+  static constexpr TypeId type_id = TypeId::EXT;
+
+  static void write(const CustomType &value, WriteContext &ctx,
+                    RefMode ref_mode, bool write_type, bool has_generics = false) {
+    (void)has_generics;
+    write_not_null_ref_flag(ctx, ref_mode);
+    if (write_type) {
+      auto result = ctx.write_any_type_info(
+          static_cast<uint32_t>(TypeId::UNKNOWN),
+          std::type_index(typeid(CustomType)));
+      if (!result.ok()) {
+        ctx.set_error(std::move(result).error());
+        return;
+      }
+    }
+    write_data(value, ctx);
+  }
+
+  static void write_data(const CustomType &value, WriteContext &ctx) {
+    // write value as varint for compact encoding
+    Serializer<int32_t>::write_data(value.value, ctx);
+    // Delegate string serialization to built-in serializer
+    Serializer<std::string>::write_data(value.name, ctx);
+  }
+
+  static void write_data_generic(const CustomType &value, WriteContext &ctx,
+                                 bool has_generics) {
+    (void)has_generics;
+    write_data(value, ctx);
+  }
+
+  static CustomType read(ReadContext &ctx, RefMode ref_mode, bool read_type) {
+    bool has_value = read_null_only_flag(ctx, ref_mode);
+    if (ctx.has_error() || !has_value) {
+      return CustomType{};
+    }
+    if (read_type) {
+      const TypeInfo *type_info = ctx.read_any_type_info(ctx.error());
+      if (ctx.has_error()) {
+        return CustomType{};
+      }
+      if (!type_info) {
+        ctx.set_error(Error::type_error("TypeInfo for CustomType not found"));
+        return CustomType{};
+      }
+    }
+    return read_data(ctx);
+  }
+
+  static CustomType read_data(ReadContext &ctx) {
+    CustomType value;
+    value.value = Serializer<int32_t>::read_data(ctx);
+    value.name = Serializer<std::string>::read_data(ctx);
+    return value;
+  }
+
+  static CustomType read_data_generic(ReadContext &ctx, bool has_generics) {
+    (void)has_generics;
+    return read_data(ctx);
+  }
+
+  static CustomType read_with_type_info(ReadContext &ctx, RefMode ref_mode,
+                                        const TypeInfo &type_info) {
+    (void)type_info;
+    return read(ctx, ref_mode, false);
+  }
+};
+
+} // namespace serialization
+} // namespace fory
+
+int main() {
+  auto fory = Fory::builder().xlang(true).build();
+  fory.register_extension_type<CustomType>(100);
+
+  CustomType original{42, "test"};
+
+  auto serialized = fory.serialize(original);
+  if (!serialized.ok()) {
+    std::cerr << "Serialization failed" << std::endl;
+    return 1;
+  }
+
+  auto deserialized = fory.deserialize<CustomType>(serialized.value());
+  if (!deserialized.ok()) {
+    std::cerr << "Deserialization failed" << std::endl;
+    return 1;
+  }
+
+  assert(original == deserialized.value());
+  std::cout << "Custom serializer works!" << std::endl;
+  return 0;
+}
+```
+
+## WriteContext Methods
+
+The `WriteContext` provides methods for writing data:
+
+```cpp
+// Primitive types
+ctx.write_uint8(value);
+ctx.write_int8(value);
+ctx.write_uint16(value);
+
+// Variable-length integers (compact encoding)
+ctx.write_var_uint32(value);   // Unsigned varint
+ctx.write_varint32(value);    // Signed zigzag varint
+ctx.write_var_uint64(value);   // Unsigned varint
+ctx.write_varint64(value);    // Signed zigzag varint
+
+// Tagged integers (for mixed-size encoding)
+ctx.write_tagged_uint64(value);
+ctx.write_tagged_int64(value);
+
+// Raw bytes
+ctx.write_bytes(data_ptr, length);
+
+// Access underlying buffer for advanced operations
+ctx.buffer().write_int32(value);
+ctx.buffer().write_float(value);
+ctx.buffer().write_double(value);
+```
+
+## ReadContext Methods
+
+The `ReadContext` provides methods for reading data:
+
+```cpp
+// Primitive types (use error reference pattern)
+uint8_t u8 = ctx.read_uint8(ctx.error());
+int8_t i8 = ctx.read_int8(ctx.error());
+
+// Variable-length integers
+uint32_t u32 = ctx.read_var_uint32(ctx.error());
+int32_t i32 = ctx.read_varint32(ctx.error());
+uint64_t u64 = ctx.read_var_uint64(ctx.error());
+int64_t i64 = ctx.read_varint64(ctx.error());
+
+// Check for errors after read operations
+if (ctx.has_error()) {
+  return MyType{};  // Return default on error
+}
+
+// Access underlying buffer for advanced operations
+int32_t value = ctx.buffer().read_int32(ctx.error());
+float f = ctx.buffer().read_float(ctx.error());
+double d = ctx.buffer().read_double(ctx.error());
+```
+
+## Delegating to Built-in Serializers
+
+Reuse existing serializers for nested types:
+
+```cpp
+static void write_data(const MyType &value, WriteContext &ctx) {
+  // Delegate to built-in serializers
+  Serializer<int32_t>::write_data(value.int_field, ctx);
+  Serializer<std::string>::write_data(value.string_field, ctx);
+  Serializer<std::vector<int32_t>>::write_data(value.vec_field, ctx);
+}
+
+static MyType read_data(ReadContext &ctx) {
+  MyType value;
+  value.int_field = Serializer<int32_t>::read_data(ctx);
+  value.string_field = Serializer<std::string>::read_data(ctx);
+  value.vec_field = Serializer<std::vector<int32_t>>::read_data(ctx);
+  return value;
+}
+```
+
+## Best Practices
+
+1. **Use variable-length encoding** for integers that may be small
+2. **Check errors after read operations** using `ctx.has_error()`
+3. **Return default values on error** to maintain consistent behavior
+4. **Delegate to built-in serializers** for standard types
+5. **Match type IDs across languages** for cross-language compatibility
+6. **Use `(void)param`** to suppress unused parameter warnings
+
+## Related Topics
+
+- [Type Registration](type_registration) - Registering serializers
+- [Basic Serialization](basic_serialization) - Using FORY_STRUCT macro
+- [Schema Evolution](schema_evolution) - Compatible mode
+- [Cross-Language](cross_language) - Cross-language serialization
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/field-configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/field-configuration.md
new file mode 100644
index 000000000..4dd404c29
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/field-configuration.md
@@ -0,0 +1,504 @@
+---
+title: 字段配置
+sidebar_position: 5
+id: field_configuration
+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++ 中配置序列化字段级元信息。
+
+## 概述
+
+Apache Fory™ 在编译期提供两种字段元信息配置方式:
+
+1. **`fory::field<>` 模板**:在 struct 定义中内联声明元信息
+2. **`FORY_FIELD_TAGS` 宏**:在 struct 外部附加元信息(非侵入)
+
+这些机制可用于:
+
+- **Tag ID**:为 schema 演进分配紧凑数值 ID
+- **可空控制**:将指针字段标记为可空
+- **引用跟踪**:为共享指针启用引用跟踪
+
+## `fory::field` 模板
+
+```cpp
+template <typename T, int16_t Id, typename... Options>
+class field;
+```
+
+### 模板参数
+
+| 参数      | 说明                                       |
+| --------- | ------------------------------------------ |
+| `T`       | 底层字段类型                               |
+| `Id`      | 字段 tag ID(`int16_t`),用于紧凑序列化   |
+| `Options` | 可选标签:`fory::nullable`、`fory::ref` 等 |
+
+### 基本用法
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+struct Person {
+  fory::field<std::string, 0> name;
+  fory::field<int32_t, 1> age;
+  fory::field<std::optional<std::string>, 2> nickname;
+};
+FORY_STRUCT(Person, name, age, nickname);
+```
+
+`fory::field<>` 是透明包装,可像底层类型一样使用:
+
+```cpp
+Person person;
+person.name = "Alice";           // Direct assignment
+person.age = 30;
+std::string n = person.name;     // Implicit conversion
+int a = person.age.get();        // Explicit get()
+```
+
+## 标签类型
+
+### `fory::nullable`
+
+将智能指针字段标记为可空(可为 `nullptr`):
+
+```cpp
+struct Node {
+  fory::field<std::string, 0> name;
+  fory::field<std::shared_ptr<Node>, 1, fory::nullable> next;  // Can be nullptr
+};
+FORY_STRUCT(Node, name, next);
+```
+
+**适用类型:** `std::shared_ptr<T>`、`std::unique_ptr<T>`
+
+**说明:** 对原生值类型或字符串的可空语义,请使用 `std::optional<T>`:
+
+```cpp
+// Correct: use std::optional for nullable primitives
+fory::field<std::optional<int32_t>, 0> optional_value;
+
+// Wrong: nullable is not allowed for primitives
+// fory::field<int32_t, 0, fory::nullable> value;  // Compile error!
+```
+
+### `fory::not_null`
+
+显式声明指针字段不可空。虽然这是智能指针的默认行为,但可用于增强可读性:
+
+```cpp
+fory::field<std::shared_ptr<Data>, 0, fory::not_null> data;  // Must not be nullptr
+```
+
+**适用类型:** `std::shared_ptr<T>`、`std::unique_ptr<T>`
+
+### `fory::ref`
+
+为共享指针字段启用引用跟踪。多个字段引用同一对象时,仅序列化一次并保持共享关系:
+
+```cpp
+struct Graph {
+  fory::field<std::string, 0> name;
+  fory::field<std::shared_ptr<Graph>, 1, fory::ref> left;    // Ref tracked
+  fory::field<std::shared_ptr<Graph>, 2, fory::ref> right;   // Ref tracked
+};
+FORY_STRUCT(Graph, name, left, right);
+```
+
+**适用类型:** 仅 `std::shared_ptr<T>`(需要共享所有权)
+
+### 组合标签
+
+共享指针可组合多个标签:
+
+```cpp
+// Nullable + ref tracking
+fory::field<std::shared_ptr<Node>, 0, fory::nullable, fory::ref> link;
+```
+
+## 类型规则
+
+| 类型                 | 可用选项          | 可空语义                          |
+| -------------------- | ----------------- | --------------------------------- |
+| 原生类型、字符串     | 无                | 若需可空请使用 `std::optional<T>` |
+| `std::optional<T>`   | 无                | 天然可空                          |
+| `std::shared_ptr<T>` | `nullable`、`ref` | 默认不可空                        |
+| `std::unique_ptr<T>` | `nullable`        | 默认不可空                        |
+
+## 完整示例
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+// Define a struct with various field configurations
+struct Document {
+  // Required fields (non-nullable)
+  fory::field<std::string, 0> title;
+  fory::field<int32_t, 1> version;
+
+  // Optional primitive using std::optional
+  fory::field<std::optional<std::string>, 2> description;
+
+  // Nullable pointer
+  fory::field<std::unique_ptr<std::string>, 3, fory::nullable> metadata;
+
+  // Reference-tracked shared pointer
+  fory::field<std::shared_ptr<Document>, 4, fory::ref> parent;
+
+  // Nullable + reference-tracked
+  fory::field<std::shared_ptr<Document>, 5, fory::nullable, fory::ref> related;
+};
+FORY_STRUCT(Document, title, version, description, metadata, parent, related);
+
+int main() {
+  auto fory = Fory::builder().xlang(true).build();
+  fory.register_struct<Document>(100);
+
+  Document doc;
+  doc.title = "My Document";
+  doc.version = 1;
+  doc.description = "A sample document";
+  doc.metadata = nullptr;  // Allowed because nullable
+  doc.parent = std::make_shared<Document>();
+  doc.parent->title = "Parent Doc";
+  doc.related = nullptr;  // Allowed because nullable
+
+  auto bytes = fory.serialize(doc).value();
+  auto decoded = fory.deserialize<Document>(bytes).value();
+}
+```
+
+## 编译期校验
+
+非法配置会在编译期报错:
+
+```cpp
+// Error: nullable and not_null are mutually exclusive
+fory::field<std::shared_ptr<int>, 0, fory::nullable, fory::not_null> bad1;
+
+// Error: nullable only valid for smart pointers
+fory::field<int32_t, 0, fory::nullable> bad2;
+
+// Error: ref only valid for shared_ptr
+fory::field<std::unique_ptr<int>, 0, fory::ref> bad3;
+
+// Error: options not allowed for std::optional (inherently nullable)
+fory::field<std::optional<int>, 0, fory::nullable> bad4;
+```
+
+## 向后兼容
+
+未使用 `fory::field<>` 包装的旧 struct 仍可正常工作:
+
+```cpp
+// Old style - still works
+struct LegacyPerson {
+  std::string name;
+  int32_t age;
+};
+FORY_STRUCT(LegacyPerson, name, age);
+
+// New style with field metadata
+struct ModernPerson {
+  fory::field<std::string, 0> name;
+  fory::field<int32_t, 1> age;
+};
+FORY_STRUCT(ModernPerson, name, age);
+```
+
+## `FORY_FIELD_TAGS` 宏
+
+`FORY_FIELD_TAGS` 提供了一种非侵入式方案:无需修改 struct 定义即可附加字段元信息。适用场景:
+
+- **第三方类型**:为非自有类型添加元信息
+- **纯净结构定义**:保持 struct 仅包含标准 C++ 类型
+- **依赖隔离**:将 Fory 头文件限制在序列化配置文件中
+
+### 用法
+
+```cpp
+// user_types.h - NO fory headers needed!
+struct Document {
+  std::string title;
+  int32_t version;
+  std::optional<std::string> description;
+  std::shared_ptr<User> author;
+  std::shared_ptr<User> reviewer;
+  std::shared_ptr<Document> parent;
+  std::unique_ptr<Data> data;
+};
+
+// serialization_config.cpp - fory config isolated here
+#include "fory/serialization/fory.h"
+#include "user_types.h"
+
+FORY_STRUCT(Document, title, version, description, author, reviewer, parent, data)
+
+FORY_FIELD_TAGS(Document,
+  (title, 0),                      // string: non-nullable
+  (version, 1),                    // int: non-nullable
+  (description, 2),                // optional: inherently nullable
+  (author, 3),                     // shared_ptr: non-nullable (default)
+  (reviewer, 4, nullable),         // shared_ptr: nullable
+  (parent, 5, ref),                // shared_ptr: non-nullable, with ref tracking
+  (data, 6, nullable)              // unique_ptr: nullable
+)
+```
+
+### `FORY_FIELD_TAGS` 选项
+
+| 字段类型             | 合法组合                                                                                 |
+| -------------------- | ---------------------------------------------------------------------------------------- |
+| 原生类型、字符串     | 仅 `(field, id)`                                                                         |
+| `std::optional<T>`   | 仅 `(field, id)`                                                                         |
+| `std::shared_ptr<T>` | `(field, id)`、`(field, id, nullable)`、`(field, id, ref)`、`(field, id, nullable, ref)` |
+| `std::unique_ptr<T>` | `(field, id)`、`(field, id, nullable)`                                                   |
+
+### API 对比
+
+| 维度           | `fory::field<>` 包装     | `FORY_FIELD_TAGS` 宏   |
+| -------------- | ------------------------ | ---------------------- |
+| **结构定义**   | 需要改动(包装字段类型) | 无需改动(保持纯 C++) |
+| **IDE 体验**   | 有模板噪音               | 更清晰(原生字段类型) |
+| **第三方类型** | 不支持                   | 支持                   |
+| **头文件依赖** | 各处都需要               | 可集中在配置文件       |
+| **迁移成本**   | 高(修改全部字段)       | 低(新增一个宏)       |
+
+## `FORY_FIELD_CONFIG` 宏
+
+`FORY_FIELD_CONFIG` 是更强、更灵活的字段配置方式,提供:
+
+- **Builder 风格 API**:链式配置 `F(id).option1().option2()`
+- **编码控制**:指定无符号整数编码(varint、fixed、tagged)
+- **编译期校验**:通过成员指针校验字段名
+- **跨语言兼容**:按 Java、Rust 等语言期望配置编码
+
+### 基本语法
+
+```cpp
+FORY_FIELD_CONFIG(StructType,
+    (field1, fory::F(0)),                           // Simple: just ID
+    (field2, fory::F(1).nullable()),                // With nullable
+    (field3, fory::F(2).varint()),                  // With encoding
+    (field4, fory::F(3).nullable().ref()),          // Multiple options
+    (field5, 4)                                     // Backward compatible: integer ID
+);
+```
+
+### `F()` Builder
+
+`fory::F(id)` 工厂函数会创建支持链式调用的 `FieldMeta` 对象:
+
+```cpp
+fory::F(0)                    // Create with field ID 0
+    .nullable()               // Mark as nullable
+    .ref()                    // Enable reference tracking
+    .varint()                 // Use variable-length encoding
+    .fixed()                  // Use fixed-size encoding
+    .tagged()                 // Use tagged encoding
+    .monomorphic()            // Mark as monomorphic type
+    .compress(false)          // Disable compression
+```
+
+**提示:** 若希望省略 `fory::` 前缀,可添加 `using` 声明:
+
+```cpp
+using fory::F;
+
+FORY_FIELD_CONFIG(MyStruct,
+    (field1, F(0).varint()),      // No prefix needed
+    (field2, F(1).nullable())
+);
+```
+
+### 无符号整数编码选项
+
+对于 `uint32_t` 与 `uint64_t` 字段,可显式指定线格式编码:
+
+| 方法        | Type ID       | 说明                              | 适用场景                 |
+| ----------- | ------------- | --------------------------------- | ------------------------ |
+| `.varint()` | VAR_UINT32/64 | 变长编码(1-5 或 1-10 字节)      | 数值通常较小             |
+| `.fixed()`  | UINT32/64     | 定长编码(固定 4 或 8 字节)      | 数值分布较均匀           |
+| `.tagged()` | TAGGED_UINT64 | 带大小提示的混合编码(仅 uint64) | 小值与大值混合(uint64) |
+
+**说明:** `uint8_t` 与 `uint16_t` 始终使用定长编码(UINT8、UINT16)。
+
+### 完整示例
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+// Define struct with unsigned integer fields
+struct MetricsData {
+  // Counters - often small values, use varint for space efficiency
+  uint32_t requestCount;
+  uint64_t bytesSent;
+
+  // IDs - uniformly distributed, use fixed for consistent performance
+  uint32_t userId;
+  uint64_t sessionId;
+
+  // Timestamps - use tagged encoding for mixed value ranges
+  uint64_t createdAt;
+
+  // Nullable fields
+  std::optional<uint32_t> errorCount;
+  std::optional<uint64_t> lastAccessTime;
+};
+
+FORY_STRUCT(MetricsData, requestCount, bytesSent, userId, sessionId,
+            createdAt, errorCount, lastAccessTime);
+
+// Configure field encoding
+FORY_FIELD_CONFIG(MetricsData,
+    // Small counters - varint saves space
+    (requestCount, fory::F(0).varint()),
+    (bytesSent, fory::F(1).varint()),
+
+    // IDs - fixed for consistent performance
+    (userId, fory::F(2).fixed()),
+    (sessionId, fory::F(3).fixed()),
+
+    // Timestamp - tagged encoding
+    (createdAt, fory::F(4).tagged()),
+
+    // Nullable fields
+    (errorCount, fory::F(5).nullable().varint()),
+    (lastAccessTime, fory::F(6).nullable().tagged())
+);
+
+int main() {
+  auto fory = Fory::builder().xlang(true).build();
+  fory.register_struct<MetricsData>(100);
+
+  MetricsData data{
+      .requestCount = 42,
+      .bytesSent = 1024,
+      .userId = 12345678,
+      .sessionId = 9876543210,
+      .createdAt = 1704067200000000000ULL, // 2024-01-01 in nanoseconds
+      .errorCount = 3,
+      .lastAccessTime = std::nullopt
+  };
+
+  auto bytes = fory.serialize(data).value();
+  auto decoded = fory.deserialize<MetricsData>(bytes).value();
+}
+```
+
+### 跨语言兼容
+
+当序列化数据会被其他语言读取时,建议通过 `FORY_FIELD_CONFIG` 显式匹配目标语言编码约定。
+
+**Java 兼容示例:**
+
+```cpp
+// Java uses these type IDs for unsigned integers:
+// - Byte (u8): UINT8 (fixed)
+// - Short (u16): UINT16 (fixed)
+// - Integer (u32): VAR_UINT32 (varint) or UINT32 (fixed)
+// - Long (u64): VAR_UINT64 (varint), UINT64 (fixed), or TAGGED_UINT64
+
+struct JavaCompatible {
+  uint8_t byteField;      // Maps to Java Byte
+  uint16_t shortField;    // Maps to Java Short
+  uint32_t intVarField;   // Maps to Java Integer with varint
+  uint32_t intFixedField; // Maps to Java Integer with fixed
+  uint64_t longVarField;  // Maps to Java Long with varint
+  uint64_t longTagged;    // Maps to Java Long with tagged
+};
+
+FORY_STRUCT(JavaCompatible, byteField, shortField, intVarField,
+            intFixedField, longVarField, longTagged);
+
+FORY_FIELD_CONFIG(JavaCompatible,
+    (byteField, fory::F(0)),                    // UINT8 (auto)
+    (shortField, fory::F(1)),                   // UINT16 (auto)
+    (intVarField, fory::F(2).varint()),         // VAR_UINT32
+    (intFixedField, fory::F(3).fixed()),        // UINT32
+    (longVarField, fory::F(4).varint()),        // VAR_UINT64
+    (longTagged, fory::F(5).tagged())           // TAGGED_UINT64
+);
+```
+
+### 使用 `FORY_FIELD_CONFIG` 做 Schema 演进
+
+在兼容模式下,发送端和接收端可以对字段使用不同可空策略:
+
+```cpp
+// Version 1: All fields non-nullable
+struct DataV1 {
+  uint32_t id;
+  uint64_t timestamp;
+};
+FORY_STRUCT(DataV1, id, timestamp);
+FORY_FIELD_CONFIG(DataV1,
+    (id, fory::F(0).varint()),
+    (timestamp, fory::F(1).tagged())
+);
+
+// Version 2: Added nullable fields
+struct DataV2 {
+  uint32_t id;
+  uint64_t timestamp;
+  std::optional<uint32_t> version;  // New nullable field
+};
+FORY_STRUCT(DataV2, id, timestamp, version);
+FORY_FIELD_CONFIG(DataV2,
+    (id, fory::F(0).varint()),
+    (timestamp, fory::F(1).tagged()),
+    (version, fory::F(2).nullable().varint())  // New field with nullable
+);
+```
+
+### `FORY_FIELD_CONFIG` 选项速查
+
+| 方法             | 说明                     | 适用范围               |
+| ---------------- | ------------------------ | ---------------------- |
+| `.nullable()`    | 将字段标记为可空         | 智能指针、可空值类型   |
+| `.ref()`         | 启用引用跟踪             | 仅 `std::shared_ptr`   |
+| `.monomorphic()` | 标记指针始终指向单一类型 | 智能指针               |
+| `.varint()`      | 变长编码                 | `uint32_t`、`uint64_t` |
+| `.fixed()`       | 定长编码                 | `uint32_t`、`uint64_t` |
+| `.tagged()`      | tagged 混合编码          | 仅 `uint64_t`          |
+| `.compress(v)`   | 启用/禁用字段压缩        | 所有类型               |
+
+### 字段配置方案对比
+
+| 特性                | `fory::field<>`    | `FORY_FIELD_TAGS` | `FORY_FIELD_CONFIG`       |
+| ------------------- | ------------------ | ----------------- | ------------------------- |
+| **需要修改 struct** | 是(包装字段类型) | 否                | 否                        |
+| **编码控制**        | 否                 | 否                | 是(varint/fixed/tagged) |
+| **Builder 风格**    | 否                 | 否                | 是                        |
+| **编译期校验**      | 是                 | 有限              | 是(成员指针校验)        |
+| **跨语言兼容能力**  | 有限               | 有限              | 完整                      |
+| **推荐场景**        | 简单结构体         | 第三方类型        | 复杂/跨语言结构体         |
+
+## 相关主题
+
+- [类型注册](type-registration.md) - 使用 FORY_STRUCT 注册类型
+- [Schema 演进](schema-evolution.md) - 基于 tag ID 的演进策略
+- [配置](configuration.md) - 全局启用引用跟踪等选项
+- [跨语言](cross-language.md) - 与 Java、Rust、Python 的互操作
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/index.md
new file mode 100644
index 000000000..12049c1a8
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/index.md
@@ -0,0 +1,264 @@
+---
+title: C++ 序列化指南
+sidebar_position: 0
+id: serialization_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.
+---
+
+**Apache Fory™** 是一个高性能的多语言序列化框架,基于 **JIT 编译**与**零拷贝**技术,在保持易用性和安全性的同时提供出色性能。
+
+C++ 实现基于现代 C++17 特性和模板元编程,提供具备编译时类型安全的高性能序列化能力。
+
+## 为什么选择 Apache Fory™ C++?
+
+- **高性能**:快速序列化与优化的二进制协议
+- **跨语言**:可在 Java、Python、C++、Go、JavaScript 和 Rust 之间无缝序列化与反序列化数据
+- **类型安全**:通过基于宏的结构体注册实现编译时类型检查
+- **引用跟踪**:自动跟踪共享引用和循环引用
+- **Schema 演进**:兼容模式支持独立的 Schema 变更
+- **双格式支持**:对象图序列化与零拷贝行格式
+- **线程安全**:同时提供单线程(最快)和线程安全两种变体
+
+## 安装
+
+C++ 实现同时支持 CMake 和 Bazel 构建系统。
+
+### 前置条件
+
+- CMake 3.16+(用于 CMake 构建)或 Bazel 8+(用于 Bazel 构建)
+- 支持 C++17 的编译器(GCC 7+、Clang 5+、MSVC 2017+)
+
+### 使用 CMake(推荐)
+
+最简单的集成方式是使用 CMake 的 `FetchContent` 模块:
+
+```cmake
+cmake_minimum_required(VERSION 3.16)
+project(my_project LANGUAGES CXX)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+if(MSVC)
+    add_compile_options(/Zc:preprocessor)
+endif()
+include(FetchContent)
+FetchContent_Declare(
+    fory
+    GIT_REPOSITORY https://github.com/apache/fory.git
+    GIT_TAG        v0.17.0
+    SOURCE_SUBDIR  cpp
+)
+FetchContent_MakeAvailable(fory)
+
+add_executable(my_app main.cc)
+target_link_libraries(my_app PRIVATE fory::serialization)
+```
+
+然后构建并运行:
+
+```bash
+mkdir build && cd build
+cmake .. -DCMAKE_BUILD_TYPE=Release
+cmake --build . --parallel
+./my_app
+```
+
+### 使用 Bazel
+
+在项目根目录创建 `MODULE.bazel` 文件:
+
+```bazel
+module(
+    name = "my_project",
+    version = "1.0.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.1.1")
+
+bazel_dep(name = "fory", version = "0.17.0")
+git_override(
+    module_name = "fory",
+    remote = "https://github.com/apache/fory.git",
+    commit = "v0.17.0",  # 或使用特定 commit hash 以确保可复现性
+)
+```
+
+为应用程序创建 `BUILD` 文件:
+
+```bazel
+cc_binary(
+    name = "my_app",
+    srcs = ["main.cc"],
+    deps = ["@fory//cpp/fory/serialization:fory_serialization"],
+)
+```
+
+然后构建并运行:
+
+```bash
+bazel build //:my_app
+bazel run //:my_app
+```
+
+对于本地开发,也可以改用 `local_path_override`:
+
+```bazel
+bazel_dep(name = "fory", version = "0.17.0")
+local_path_override(
+    module_name = "fory",
+    path = "/path/to/fory",
+)
+```
+
+### 示例
+
+完整可运行示例请参见 [examples/cpp](https://github.com/apache/fory/tree/main/examples/cpp) 目录:
+
+- [hello_world](https://github.com/apache/fory/tree/main/examples/cpp/hello_world) - 对象图序列化
+- [hello_row](https://github.com/apache/fory/tree/main/examples/cpp/hello_row) - 行格式编码
+
+## 快速开始
+
+### 基础示例
+
+```cpp
+#include "fory/serialization/fory.h"
+#include <string>
+#include <vector>
+
+using namespace fory::serialization;
+
+// 定义结构体
+struct Person {
+  std::string name;
+  int32_t age;
+  std::vector<std::string> hobbies;
+
+  bool operator==(const Person &other) const {
+    return name == other.name && age == other.age && hobbies == other.hobbies;
+  }
+};
+FORY_STRUCT(Person, name, age, hobbies);
+
+int main() {
+  // 创建 Fory 实例
+  auto fory = Fory::builder()
+      .xlang(true)          // 启用跨语言模式
+      .track_ref(false)     // 对简单类型禁用引用跟踪
+      .build();
+
+  // 为类型注册唯一 ID
+  fory.register_struct<Person>(1);
+
+  // 创建对象
+  Person person{"Alice", 30, {"reading", "coding"}};
+
+  // 序列化
+  auto result = fory.serialize(person);
+  if (!result.ok()) {
+    // 处理错误
+    return 1;
+  }
+  std::vector<uint8_t> bytes = std::move(result).value();
+
+  // 反序列化
+  auto deser_result = fory.deserialize<Person>(bytes);
+  if (!deser_result.ok()) {
+    // 处理错误
+    return 1;
+  }
+  Person decoded = std::move(deser_result).value();
+
+  assert(person == decoded);
+  return 0;
+}
+```
+
+### 继承字段
+
+如果希望派生类型包含基类字段,请在 `FORY_STRUCT` 中写入 `FORY_BASE(Base)`。基类本身也必须定义自己的 `FORY_STRUCT`,这样其字段才能被引用。
+
+```cpp
+struct Base {
+  int32_t id;
+  FORY_STRUCT(Base, id);
+};
+
+struct Derived : Base {
+  std::string name;
+  FORY_STRUCT(Derived, FORY_BASE(Base), name);
+};
+```
+
+## 线程安全
+
+Apache Fory™ C++ 面向不同线程需求提供两种变体:
+
+### 单线程(最快)
+
+```cpp
+// 单线程 Fory:速度最快,但不是线程安全的
+auto fory = Fory::builder()
+    .xlang(true)
+    .build();
+```
+
+### 线程安全
+
+```cpp
+// 线程安全 Fory:使用上下文池
+auto fory = Fory::builder()
+    .xlang(true)
+    .build_thread_safe();
+
+// 可安全用于多线程
+std::thread t1([&]() {
+  auto result = fory.serialize(obj1);
+});
+std::thread t2([&]() {
+  auto result = fory.serialize(obj2);
+});
+```
+
+**提示:** 请在启动线程之前完成类型注册,以确保每个工作线程都能看到一致的元数据。
+
+## 使用场景
+
+### 对象序列化
+
+- 含嵌套对象和引用的复杂数据结构
+- 微服务中的跨语言通信
+- 具备完整类型安全的通用序列化
+- 使用兼容模式进行 Schema 演进
+
+### 行格式序列化
+
+- 高吞吐数据处理
+- 需要快速字段访问的分析型负载
+- 内存受限环境
+- 零拷贝场景
+
+## 后续步骤
+
+- [配置](configuration.md) - 构建器选项与模式
+- [基础序列化](basic-serialization.md) - 对象图序列化
+- [Schema 演进](schema-evolution.md) - 兼容模式与 Schema 变更
+- [类型注册](type-registration.md) - 注册类型
+- [字段配置](field-configuration.md) - 字段级元数据(可空、引用跟踪)
+- [支持的类型](supported-types.md) - 全部支持的类型
+- [跨语言](cross-language.md) - XLANG 模式
+- [行格式](row-format.md) - 零拷贝行格式
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/polymorphism.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/polymorphism.md
new file mode 100644
index 000000000..d083d8c4a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/polymorphism.md
@@ -0,0 +1,480 @@
+---
+title: 多态序列化
+sidebar_position: 5
+id: polymorphism
+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™ 通过智能指针(`std::shared_ptr` 与 `std::unique_ptr`)支持多态序列化,为继承体系提供动态分派与类型灵活性。
+
+## 支持的多态类型
+
+- `std::shared_ptr<Base>` - Shared ownership with polymorphic dispatch
+- `std::unique_ptr<Base>` - Exclusive ownership with polymorphic dispatch
+- Collections: `std::vector<std::shared_ptr<Base>>`, `std::map<K, std::unique_ptr<Base>>`
+- Optional: `std::optional<std::shared_ptr<Base>>`
+
+## 基础多态序列化
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+// Define base class with virtual methods
+struct Animal {
+  virtual ~Animal() = default;
+  virtual std::string speak() const = 0;
+  int32_t age = 0;
+};
+FORY_STRUCT(Animal, age);
+
+// Define derived classes
+struct Dog : Animal {
+  std::string speak() const override { return "Woof!"; }
+  std::string breed;
+};
+FORY_STRUCT(Dog, age, breed);
+
+struct Cat : Animal {
+  std::string speak() const override { return "Meow!"; }
+  std::string color;
+};
+FORY_STRUCT(Cat, age, color);
+
+// Struct with polymorphic field
+struct Zoo {
+  std::shared_ptr<Animal> star_animal;
+};
+FORY_STRUCT(Zoo, star_animal);
+
+int main() {
+  auto fory = Fory::builder().track_ref(true).build();
+
+  // Register all types with unique type IDs
+  fory.register_struct<Zoo>(100);
+  fory.register_struct<Dog>(101);
+  fory.register_struct<Cat>(102);
+
+  // Create object with polymorphic field
+  Zoo zoo;
+  zoo.star_animal = std::make_shared<Dog>();
+  zoo.star_animal->age = 3;
+  static_cast<Dog*>(zoo.star_animal.get())->breed = "Labrador";
+
+  // Serialize
+  auto bytes_result = fory.serialize(zoo);
+  assert(bytes_result.ok());
+
+  // Deserialize - runtime type is preserved
+  auto decoded_result = fory.deserialize<Zoo>(bytes_result.value());
+  assert(decoded_result.ok());
+
+  auto decoded = std::move(decoded_result).value();
+  assert(decoded.star_animal->speak() == "Woof!");
+  assert(decoded.star_animal->age == 3);
+
+  auto* dog_ptr = dynamic_cast<Dog*>(decoded.star_animal.get());
+  assert(dog_ptr != nullptr);
+  assert(dog_ptr->breed == "Labrador");
+}
+```
+
+## Type Registration for Polymorphism
+
+For polymorphic serialization, register derived types with unique type IDs:
+
+```cpp
+// Register with numeric type ID
+fory.register_struct<Derived1>(100);
+fory.register_struct<Derived2>(101);
+```
+
+**Why type ID registration?**
+
+- Compact binary representation
+- Fast type lookup and dispatch
+- Consistent with non-polymorphic type registration
+
+## Automatic Polymorphism Detection
+
+Fory automatically detects polymorphic types using `std::is_polymorphic<T>`:
+
+```cpp
+struct Base {
+  virtual ~Base() = default;  // Virtual destructor makes it polymorphic
+  int32_t value = 0;
+};
+
+struct NonPolymorphic {
+  int32_t value = 0;  // No virtual methods
+};
+
+// Polymorphic field - type info written automatically
+struct Container1 {
+  std::shared_ptr<Base> ptr;  // Auto-detected as polymorphic
+};
+
+// Non-polymorphic field - no type info written
+struct Container2 {
+  std::shared_ptr<NonPolymorphic> ptr;  // Not polymorphic
+};
+```
+
+## Controlling Dynamic Dispatch
+
+Use `fory::dynamic<V>` to override automatic polymorphism detection:
+
+```cpp
+struct Animal {
+  virtual ~Animal() = default;
+  virtual std::string speak() const = 0;
+};
+
+struct Pet {
+  // Auto-detected: type info written (Animal has virtual methods)
+  std::shared_ptr<Animal> animal1;
+
+  // Force dynamic: type info written explicitly
+  fory::field<std::shared_ptr<Animal>, 0, fory::dynamic<true>> animal2;
+
+  // Force non-dynamic: skip type info (faster but no runtime subtyping)
+  fory::field<std::shared_ptr<Animal>, 1, fory::dynamic<false>> animal3;
+};
+FORY_STRUCT(Pet, animal1, animal2, animal3);
+```
+
+**When to use `fory::dynamic<false>`:**
+
+- You know the runtime type will always match the declared type
+- Performance is critical and you don't need subtype support
+- Working with monomorphic data despite having a polymorphic base class
+
+### Field Configuration Without Wrapper Types
+
+Use `FORY_FIELD_CONFIG` to configure fields without `fory::field<>` wrapper:
+
+```cpp
+struct Zoo {
+  std::shared_ptr<Animal> star;      // Auto-detected as polymorphic
+  std::shared_ptr<Animal> backup;    // Nullable polymorphic field
+  std::shared_ptr<Animal> mascot;    // Non-dynamic (no subtype dispatch)
+};
+FORY_STRUCT(Zoo, star, backup, mascot);
+
+// Configure fields with tag IDs and options
+FORY_FIELD_CONFIG(Zoo,
+    (star, fory::F(0)),                    // Tag ID 0, default options
+    (backup, fory::F(1).nullable()),       // Tag ID 1, allow nullptr
+    (mascot, fory::F(2).dynamic(false))    // Tag ID 2, disable polymorphism
+);
+```
+
+See [Field Configuration](field_configuration) for complete details on `fory::nullable`, `fory::ref`, and other field-level options
+
+## std::unique_ptr Polymorphism
+
+`std::unique_ptr` works the same way as `std::shared_ptr` for polymorphic types:
+
+```cpp
+struct Container {
+  std::unique_ptr<Animal> pet;
+};
+FORY_STRUCT(Container, pet);
+
+auto fory = Fory::builder().track_ref(true).build();
+fory.register_struct<Container>(200);
+fory.register_struct<Dog>(201);
+
+Container container;
+container.pet = std::make_unique<Dog>();
+static_cast<Dog*>(container.pet.get())->breed = "Beagle";
+
+auto bytes = fory.serialize(container).value();
+auto decoded = fory.deserialize<Container>(bytes).value();
+
+// Runtime type preserved
+auto* dog = dynamic_cast<Dog*>(decoded.pet.get());
+assert(dog != nullptr);
+assert(dog->breed == "Beagle");
+```
+
+## Collections of Polymorphic Objects
+
+```cpp
+#include <vector>
+#include <map>
+
+struct AnimalShelter {
+  std::vector<std::shared_ptr<Animal>> animals;
+  std::map<std::string, std::unique_ptr<Animal>> registry;
+};
+FORY_STRUCT(AnimalShelter, animals, registry);
+
+auto fory = Fory::builder().track_ref(true).build();
+fory.register_struct<AnimalShelter>(100);
+fory.register_struct<Dog>(101);
+fory.register_struct<Cat>(102);
+
+AnimalShelter shelter;
+shelter.animals.push_back(std::make_shared<Dog>());
+shelter.animals.push_back(std::make_shared<Cat>());
+shelter.registry["pet1"] = std::make_unique<Dog>();
+
+auto bytes = fory.serialize(shelter).value();
+auto decoded = fory.deserialize<AnimalShelter>(bytes).value();
+
+// All runtime types preserved
+assert(dynamic_cast<Dog*>(decoded.animals[0].get()) != nullptr);
+assert(dynamic_cast<Cat*>(decoded.animals[1].get()) != nullptr);
+assert(dynamic_cast<Dog*>(decoded.registry["pet1"].get()) != nullptr);
+```
+
+## Reference Tracking
+
+Reference tracking for `std::shared_ptr` works the same with polymorphic types.
+See [Supported Types](supported_types) for details and examples.
+
+## Nested Polymorphism Depth Limit
+
+To prevent stack overflow from deeply nested polymorphic structures, Fory limits the maximum dynamic nesting depth:
+
+```cpp
+struct Container {
+  virtual ~Container() = default;
+  int32_t value = 0;
+  std::shared_ptr<Container> nested;
+};
+FORY_STRUCT(Container, value, nested);
+
+// Default max_dyn_depth is 5
+auto fory1 = Fory::builder().build();
+assert(fory1.config().max_dyn_depth == 5);
+
+// Increase limit for deeper nesting
+auto fory2 = Fory::builder().max_dyn_depth(10).build();
+fory2.register_struct<Container>(1);
+
+// Create deeply nested structure
+auto level3 = std::make_shared<Container>();
+level3->value = 3;
+
+auto level2 = std::make_shared<Container>();
+level2->value = 2;
+level2->nested = level3;
+
+auto level1 = std::make_shared<Container>();
+level1->value = 1;
+level1->nested = level2;
+
+// Serialization succeeds
+auto bytes = fory2.serialize(level1).value();
+
+// Deserialization succeeds with sufficient depth
+auto decoded = fory2.deserialize<std::shared_ptr<Container>>(bytes).value();
+```
+
+**Depth exceeded error:**
+
+```cpp
+auto fory_shallow = Fory::builder().max_dyn_depth(2).build();
+fory_shallow.register_struct<Container>(1);
+
+// 3 levels exceeds max_dyn_depth=2
+auto result = fory_shallow.deserialize<std::shared_ptr<Container>>(bytes);
+assert(!result.ok());  // Fails with depth exceeded error
+```
+
+**When to adjust:**
+
+- **Increase `max_dyn_depth`**: For legitimate deeply nested polymorphic data structures
+- **Decrease `max_dyn_depth`**: For stricter security requirements or shallow data structures
+
+## Nullability for Polymorphic Fields
+
+By default, `std::shared_ptr<T>` and `std::unique_ptr<T>` fields are treated as
+non-nullable in the schema. To allow `nullptr`, wrap the field with
+`fory::field<>` (or `FORY_FIELD_TAGS`) and opt in with `fory::nullable`.
+
+```cpp
+struct Pet {
+  // Non-nullable (default)
+  std::shared_ptr<Animal> primary;
+
+  // Nullable via explicit field metadata
+  fory::field<std::shared_ptr<Animal>, 0, fory::nullable> optional;
+};
+FORY_STRUCT(Pet, primary, optional);
+```
+
+See [Field Configuration](field_configuration) for more details.
+
+## Combining Polymorphism with Other Features
+
+### Polymorphism + Reference Tracking
+
+```cpp
+struct GraphNode {
+  virtual ~GraphNode() = default;
+  int32_t id = 0;
+  std::vector<std::shared_ptr<GraphNode>> neighbors;
+};
+FORY_STRUCT(GraphNode, id, neighbors);
+
+struct WeightedNode : GraphNode {
+  double weight = 0.0;
+};
+FORY_STRUCT(WeightedNode, id, neighbors, weight);
+
+// Enable ref tracking to handle shared references and cycles
+auto fory = Fory::builder().track_ref(true).build();
+fory.register_struct<GraphNode>(100);
+fory.register_struct<WeightedNode>(101);
+
+// Create cyclic graph
+auto node1 = std::make_shared<WeightedNode>();
+node1->id = 1;
+
+auto node2 = std::make_shared<WeightedNode>();
+node2->id = 2;
+
+node1->neighbors.push_back(node2);
+node2->neighbors.push_back(node1);  // Cycle
+
+auto bytes = fory.serialize(node1).value();
+auto decoded = fory.deserialize<std::shared_ptr<GraphNode>>(bytes).value();
+// Cycle handled correctly
+```
+
+### Polymorphism + Schema Evolution
+
+Use compatible mode for schema evolution with polymorphic types:
+
+```cpp
+auto fory = Fory::builder()
+    .compatible(true)  // Enable schema evolution
+    .track_ref(true)
+    .build();
+```
+
+## Best Practices
+
+1. **Use type ID registration** for polymorphic types:
+
+   ```cpp
+   fory.register_struct<DerivedType>(100);
+   ```
+
+2. **Enable reference tracking** for polymorphic types:
+
+   ```cpp
+   auto fory = Fory::builder().track_ref(true).build();
+   ```
+
+3. **Virtual destructors required**: Ensure base classes have virtual destructors:
+
+   ```cpp
+   struct Base {
+     virtual ~Base() = default;  // Required for polymorphism
+   };
+   ```
+
+4. **Register all concrete types** before serialization/deserialization:
+
+   ```cpp
+   fory.register_struct<Derived1>(100);
+   fory.register_struct<Derived2>(101);
+   ```
+
+5. **Use `dynamic_cast`** to downcast after deserialization:
+
+   ```cpp
+   auto* derived = dynamic_cast<DerivedType*>(base_ptr.get());
+   if (derived) {
+     // Use derived-specific members
+   }
+   ```
+
+6. **Adjust `max_dyn_depth`** based on your data structure depth:
+
+   ```cpp
+   auto fory = Fory::builder().max_dyn_depth(10).build();
+   ```
+
+7. **Use `fory::nullable`** for optional polymorphic fields:
+
+   ```cpp
+   fory::field<std::shared_ptr<Base>, 0, fory::nullable> optional_ptr;
+   ```
+
+## Error Handling
+
+```cpp
+auto bytes_result = fory.serialize(obj);
+if (!bytes_result.ok()) {
+  std::cerr << "Serialization failed: "
+            << bytes_result.error().to_string() << std::endl;
+  return;
+}
+
+auto decoded_result = fory.deserialize<MyType>(bytes_result.value());
+if (!decoded_result.ok()) {
+  std::cerr << "Deserialization failed: "
+            << decoded_result.error().to_string() << std::endl;
+  return;
+}
+```
+
+**Common errors:**
+
+- **Type not registered**: Register all concrete types with unique IDs before use
+- **Depth exceeded**: Increase `max_dyn_depth` for deeply nested structures
+- **Type ID conflict**: Ensure each type has a unique type ID across all registered types
+
+## Performance Considerations
+
+**Polymorphic serialization overhead:**
+
+- Type metadata written for each polymorphic object (~16-32 bytes)
+- Dynamic type resolution during deserialization
+- Virtual function calls for runtime dispatch
+
+**Optimization tips:**
+
+1. **Use `fory::dynamic<false>`** when runtime type matches declared type:
+
+   ```cpp
+   fory::field<std::shared_ptr<Base>, 0, fory::dynamic<false>> fixed_type;
+   ```
+
+2. **Minimize nesting depth** to reduce metadata overhead
+
+3. **Batch polymorphic objects** in collections rather than individual fields
+
+4. **Consider non-polymorphic alternatives** when polymorphism isn't needed:
+
+   ```cpp
+   std::variant<Dog, Cat> animal;  // Type-safe union instead of polymorphism
+   ```
+
+## Related Topics
+
+- [Type Registration](type_registration) - Registering types for serialization
+- [Field Configuration](field_configuration) - Field-level metadata and options
+- [Supported Types](supported_types) - Smart pointers and collections
+- [Configuration](configuration) - `max_dyn_depth` and other settings
+- [Basic Serialization](basic_serialization) - Core serialization concepts
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/row-format.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/row-format.md
new file mode 100644
index 000000000..76b1ad42c
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/row-format.md
@@ -0,0 +1,516 @@
+---
+title: 行格式
+sidebar_position: 7
+id: row_format
+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™ 行格式是一种针对以下场景优化的二进制格式:
+
+- **随机访问**:无需反序列化整个对象即可读取任意字段
+- **零拷贝**:无数据复制的直接内存访问
+- **缓存友好**:连续内存布局提高 CPU 缓存效率
+- **列式转换**:易于转换为 Apache Arrow 格式
+- **部分序列化**:只序列化需要的字段
+
+## 何时使用行格式
+
+| 使用场景           | 行格式 | 对象图 |
+| ------------------ | ------ | ------ |
+| 分析/OLAP          | ✅     | ❌     |
+| 随机字段访问       | ✅     | ❌     |
+| 完整对象序列化     | ❌     | ✅     |
+| 复杂对象图         | ❌     | ✅     |
+| 引用跟踪           | ❌     | ✅     |
+| 跨语言(简单类型) | ✅     | ✅     |
+
+## 快速开始
+
+```cpp
+#include "fory/encoder/row_encoder.h"
+#include "fory/row/writer.h"
+
+using namespace fory::row;
+using namespace fory::row::encoder;
+
+// 定义结构体
+struct Person {
+  int32_t id;
+  std::string name;
+  float score;
+};
+
+// 注册字段元数据(行编码必需)
+FORY_FIELD_INFO(Person, id, name, score);
+
+int main() {
+  // 创建编码器
+  RowEncoder<Person> encoder;
+
+  // 编码一个 person
+  Person person{1, "Alice", 95.5f};
+  encoder.Encode(person);
+
+  // 获取编码后的行
+  auto row = encoder.GetWriter().ToRow();
+
+  // 随机访问字段
+  int32_t id = row->GetInt32(0);
+  std::string name = row->GetString(1);
+  float score = row->GetFloat(2);
+
+  assert(id == 1);
+  assert(name == "Alice");
+  assert(score == 95.5f);
+
+  return 0;
+}
+```
+
+## 行编码器
+
+### 基本用法
+
+`RowEncoder<T>` 模板类提供类型安全的编码:
+
+```cpp
+#include "fory/encoder/row_encoder.h"
+
+// 使用 FORY_FIELD_INFO 定义结构体
+struct Point {
+  double x;
+  double y;
+};
+FORY_FIELD_INFO(Point, x, y);
+
+// 创建编码器
+RowEncoder<Point> encoder;
+
+// 访问 schema(用于检查)
+const Schema& schema = encoder.GetSchema();
+std::cout << "Fields: " << schema.field_names().size() << std::endl;
+
+// 编码值
+Point p{1.0, 2.0};
+encoder.Encode(p);
+
+// 获取结果作为 Row
+auto row = encoder.GetWriter().ToRow();
+```
+
+### 嵌套结构体
+
+```cpp
+struct Address {
+  std::string city;
+  std::string country;
+};
+FORY_FIELD_INFO(Address, city, country);
+
+struct Person {
+  std::string name;
+  Address address;
+};
+FORY_FIELD_INFO(Person, name, address);
+
+// 编码嵌套结构体
+RowEncoder<Person> encoder;
+Person person{"Alice", {"New York", "USA"}};
+encoder.Encode(person);
+
+auto row = encoder.GetWriter().ToRow();
+std::string name = row->GetString(0);
+
+// 访问嵌套结构体
+auto address_row = row->GetStruct(1);
+std::string city = address_row->GetString(0);
+std::string country = address_row->GetString(1);
+```
+
+### 数组 / 列表
+
+```cpp
+struct Record {
+  std::vector<int32_t> values;
+  std::string label;
+};
+FORY_FIELD_INFO(Record, values, label);
+
+RowEncoder<Record> encoder;
+Record record{{1, 2, 3, 4, 5}, "test"};
+encoder.Encode(record);
+
+auto row = encoder.GetWriter().ToRow();
+auto array = row->GetArray(0);
+
+int count = array->num_elements();
+for (int i = 0; i < count; i++) {
+  int32_t value = array->GetInt32(i);
+}
+```
+
+### 直接编码数组
+
+```cpp
+// 直接编码 vector(不在结构体内)
+std::vector<Person> people{
+    {"Alice", {"NYC", "USA"}},
+    {"Bob", {"London", "UK"}}
+};
+
+RowEncoder<decltype(people)> encoder;
+encoder.Encode(people);
+
+// 获取数组数据
+auto array = encoder.GetWriter().CopyToArrayData();
+auto first_person = array->GetStruct(0);
+std::string first_name = first_person->GetString(0);
+```
+
+## 行数据访问
+
+### Row 类
+
+`Row` 类提供对结构体字段的随机访问:
+
+```cpp
+class Row {
+public:
+  // 空值检查
+  bool IsNullAt(int i) const;
+
+  // 基本类型 getter
+  bool GetBoolean(int i) const;
+  int8_t GetInt8(int i) const;
+  int16_t GetInt16(int i) const;
+  int32_t GetInt32(int i) const;
+  int64_t GetInt64(int i) const;
+  float GetFloat(int i) const;
+  double GetDouble(int i) const;
+
+  // 字符串/二进制 getter
+  std::string GetString(int i) const;
+  std::vector<uint8_t> GetBinary(int i) const;
+
+  // 嵌套类型
+  std::shared_ptr<Row> GetStruct(int i) const;
+  std::shared_ptr<ArrayData> GetArray(int i) const;
+  std::shared_ptr<MapData> GetMap(int i) const;
+
+  // 元数据
+  int num_fields() const;
+  SchemaPtr schema() const;
+
+  // 调试
+  std::string ToString() const;
+};
+```
+
+### ArrayData 类
+
+`ArrayData` 类提供对列表/数组元素的访问:
+
+```cpp
+class ArrayData {
+public:
+  // 空值检查
+  bool IsNullAt(int i) const;
+
+  // 元素数量
+  int num_elements() const;
+
+  // 基本类型 getter(与 Row 相同)
+  int32_t GetInt32(int i) const;
+  // ... 其他基本类型
+
+  // 字符串 getter
+  std::string GetString(int i) const;
+
+  // 嵌套类型
+  std::shared_ptr<Row> GetStruct(int i) const;
+  std::shared_ptr<ArrayData> GetArray(int i) const;
+  std::shared_ptr<MapData> GetMap(int i) const;
+
+  // 类型信息
+  ListTypePtr type() const;
+};
+```
+
+### MapData 类
+
+`MapData` 类提供对 map 键值对的访问:
+
+```cpp
+class MapData {
+public:
+  // 元素数量
+  int num_elements();
+
+  // 以数组形式访问键和值
+  std::shared_ptr<ArrayData> keys_array();
+  std::shared_ptr<ArrayData> values_array();
+
+  // 类型信息
+  MapTypePtr type();
+};
+```
+
+## Schema 和类型
+
+### Schema 定义
+
+Schema 定义行数据的结构:
+
+```cpp
+#include "fory/row/schema.h"
+
+using namespace fory::row;
+
+// 以编程方式创建 schema
+auto person_schema = schema({
+    field("id", int32()),
+    field("name", utf8()),
+    field("score", float32()),
+    field("active", boolean())
+});
+
+// 访问 schema 信息
+for (const auto& f : person_schema->fields()) {
+  std::cout << f->name() << ": " << f->type()->name() << std::endl;
+}
+```
+
+### 类型系统
+
+行格式可用的类型:
+
+```cpp
+// 基本类型
+DataTypePtr boolean();    // bool
+DataTypePtr int8();       // int8_t
+DataTypePtr int16();      // int16_t
+DataTypePtr int32();      // int32_t
+DataTypePtr int64();      // int64_t
+DataTypePtr float32();    // float
+DataTypePtr float64();    // double
+
+// 字符串和二进制
+DataTypePtr utf8();       // std::string
+DataTypePtr binary();     // std::vector<uint8_t>
+
+// 复杂类型
+DataTypePtr list(DataTypePtr element_type);
+DataTypePtr map(DataTypePtr key_type, DataTypePtr value_type);
+DataTypePtr struct_(std::vector<FieldPtr> fields);
+```
+
+### 类型推断
+
+`RowEncodeTrait` 模板自动推断类型:
+
+```cpp
+// 基本类型的类型推断
+RowEncodeTrait<int32_t>::Type();  // 返回 int32()
+RowEncodeTrait<float>::Type();    // 返回 float32()
+RowEncodeTrait<std::string>::Type();  // 返回 utf8()
+
+// 集合的类型推断
+RowEncodeTrait<std::vector<int32_t>>::Type();  // 返回 list(int32())
+
+// map 的类型推断
+RowEncodeTrait<std::map<std::string, int32_t>>::Type();
+// 返回 map(utf8(), int32())
+
+// 结构体的类型推断(需要 FORY_FIELD_INFO)
+RowEncodeTrait<Person>::Type();  // 返回 struct_({...})
+RowEncodeTrait<Person>::Schema();  // 返回 schema({...})
+```
+
+## 行写入器
+
+### RowWriter
+
+用于手动构造行:
+
+```cpp
+#include "fory/row/writer.h"
+
+// 创建 schema
+auto my_schema = schema({
+    field("x", int32()),
+    field("y", float64()),
+    field("name", utf8())
+});
+
+// 创建写入器
+RowWriter writer(my_schema);
+writer.Reset();
+
+// 写入字段
+writer.Write(0, 42);          // x = 42
+writer.Write(1, 3.14);        // y = 3.14
+writer.WriteString(2, "test"); // name = "test"
+
+// 获取结果
+auto row = writer.ToRow();
+```
+
+### ArrayWriter
+
+用于手动构造数组:
+
+```cpp
+// 创建数组类型
+auto array_type = list(int32());
+
+// 创建写入器
+ArrayWriter writer(array_type);
+writer.Reset(5);  // 5 个元素
+
+// 写入元素
+for (int i = 0; i < 5; i++) {
+  writer.Write(i, i * 10);
+}
+
+// 获取结果
+auto array = writer.CopyToArrayData();
+```
+
+### 空值
+
+```cpp
+// 在特定索引处设置空值
+writer.SetNullAt(2);  // 字段 2 为空
+
+// 读取时检查空值
+if (!row->IsNullAt(2)) {
+  std::string value = row->GetString(2);
+}
+```
+
+## 内存布局
+
+### 行布局
+
+```
++------------------+--------------------+--------------------+
+|    空值位图      |    固定大小数据     |    变长数据        |
++------------------+--------------------+--------------------+
+|   ceil(n/8) B    |     8 * n 字节     |       可变         |
++------------------+--------------------+--------------------+
+```
+
+- **空值位图**:每字段一位,指示空值
+- **固定大小数据**:每字段 8 字节(基本类型直接存储,变长类型存储偏移量+大小)
+- **变长数据**:字符串、数组、嵌套结构体
+
+### 数组布局
+
+```
++------------+------------------+--------------------+--------------------+
+| 元素数量   |    空值位图      |    固定大小数据     |    变长数据        |
++------------+------------------+--------------------+--------------------+
+|   8 字节   |  ceil(n/8) 字节  |   elem_size * n    |       可变         |
++------------+------------------+--------------------+--------------------+
+```
+
+### Map 布局
+
+```
++------------------+------------------+
+|    键数组        |    值数组        |
++------------------+------------------+
+```
+
+## 性能提示
+
+### 1. 复用编码器
+
+```cpp
+RowEncoder<Person> encoder;
+
+// 编码多条记录
+for (const auto& person : people) {
+  encoder.Encode(person);
+  auto row = encoder.GetWriter().ToRow();
+  // 处理 row...
+}
+```
+
+### 2. 预分配缓冲区
+
+```cpp
+// 获取缓冲区引用进行预分配
+auto& buffer = encoder.GetWriter().buffer();
+buffer->Reserve(expected_size);
+```
+
+### 3. 批量处理
+
+```cpp
+// 批量处理以提高缓存利用率
+std::vector<Person> batch;
+batch.reserve(BATCH_SIZE);
+
+while (hasMore()) {
+  batch.clear();
+  fillBatch(batch);
+
+  for (const auto& person : batch) {
+    encoder.Encode(person);
+    process(encoder.GetWriter().ToRow());
+  }
+}
+```
+
+### 4. 零拷贝读取
+
+```cpp
+// 指向现有缓冲区(零拷贝)
+Row row(schema);
+row.PointTo(buffer, offset, size);
+
+// 直接从缓冲区访问字段
+int32_t id = row.GetInt32(0);
+```
+
+## 支持类型汇总
+
+| C++ 类型                 | 行类型           | 固定大小 |
+| ------------------------ | ---------------- | -------- |
+| `bool`                   | `boolean()`      | 1 字节   |
+| `int8_t`                 | `int8()`         | 1 字节   |
+| `int16_t`                | `int16()`        | 2 字节   |
+| `int32_t`                | `int32()`        | 4 字节   |
+| `int64_t`                | `int64()`        | 8 字节   |
+| `float`                  | `float32()`      | 4 字节   |
+| `double`                 | `float64()`      | 8 字节   |
+| `std::string`            | `utf8()`         | 可变     |
+| `std::vector<T>`         | `list(T)`        | 可变     |
+| `std::map<K,V>`          | `map(K,V)`       | 可变     |
+| `std::optional<T>`       | 内部类型         | 可空     |
+| 结构体 (FORY_FIELD_INFO) | `struct_({...})` | 可变     |
+
+## 相关主题
+
+- [基础序列化](basic-serialization.md) - 对象图序列化
+- [配置](configuration.md) - 构建器选项
+- [支持的类型](supported-types.md) - 所有支持的类型
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/schema-evolution.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/schema-evolution.md
new file mode 100644
index 000000000..fd8c7bfca
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.17/guide/cpp/schema-evolution.md
@@ -0,0 +1,404 @@
+---
+title: Schema 演化
+sidebar_position: 3
+id: schema_evolution
+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™ 在 **Compatible 模式**下支持 schema 演化,允许序列化和反序列化双方拥有不同的类型定义。
+
+## Compatible 模式
+
+使用 `compatible(true)` 启用 schema 演化:
+
+```cpp
+#include "fory/serialization/fory.h"
+
+using namespace fory::serialization;
+
+// 版本 1:原始 schema
+struct PersonV1 {
+  std::string name;
+  int32_t age;
+};
+FORY_STRUCT(PersonV1, name, age);
+
+// 版本 2:添加 email 字段
+struct PersonV2 {
+  std::string name;
+  int32_t age;
+  std::string email;  // 新字段
+};
+FORY_STRUCT(PersonV2, name, age, email);
+
+int main() {
+  // 为每个 schema 版本创建单独的 Fory 实例
+  auto fory_v1 = Fory::builder()
+      .compatible(true)  // 启用 schema 演化
+      .xlang(true)
+      .build();
+
+  auto fory_v2 = Fory::builder()
+      .compatible(true)
+      .xlang(true)
+      .build();
+
+  // 使用相同的类型 ID 进行 schema 演化
+  constexpr uint32_t PERSON_TYPE_ID = 100;
+  fory_v1.register_struct<PersonV1>(PERSON_TYPE_ID);
+  fory_v2.register_struct<PersonV2>(PERSON_TYPE_ID);
+
+  // 使用 V1 序列化
+  PersonV1 v1{"Alice", 30};
+  auto bytes = fory_v1.serialize(v1).value();
+
+  // 反序列化为 V2 - email 获得默认值(空字符串)
+  auto v2 = fory_v2.deserialize<PersonV2>(bytes).value();
+  assert(v2.name == "Alice");
+  assert(v2.age == 30);
+  assert(v2.email == "");  // 缺失字段的默认值
+
+  return 0;
+}
+```
+
+## Schema 演化特性
+
+Compatible 模式支持以下 schema 变更:
+
+| 变更类型     | 支持 | 行为                         |
+| ------------ | ---- | ---------------------------- |
+| 添加新字段   | ✅   | 缺失字段使用默认值           |
+| 删除字段     | ✅   | 额外字段被跳过               |
+| 重排字段顺序 | ✅   | 按名称匹配字段,而非位置     |
+| 更改可空性   | ✅   | `T` ↔ `std::optional<T>`     |
+| 更改字段类型 | ❌   | 类型必须兼容                 |
+| 重命名字段   | ❌   | 字段名必须匹配(区分大小写) |
+
+## 添加字段(向后兼容)
+
+当使用具有额外字段的新 schema 反序列化旧数据时:
+
+```cpp
+// 旧 schema (V1)
+struct ProductV1 {
+  std::string name;
+  double price;
+};
+FORY_STRUCT(ProductV1, name, price);
+
+// 新 schema (V2) 带有额外字段
+struct ProductV2 {
+  std::string name;
+  double price;
+  std::vector<std::string> tags;       // 新字段
+  std::map<std::string, std::string> attributes;  // 新字段
+};
+FORY_STRUCT(ProductV2, name, price, tags, attributes);
+
+// 序列化 V1
+ProductV1 v1{"Laptop", 999.99};
+auto bytes = fory_v1.serialize(v1).value();
+
+// 反序列化为 V2
+auto v2 = fory_v2.deserialize<ProductV2>(bytes).value();
+assert(v2.name == "Laptop");
+assert(v2.price == 999.99);
+assert(v2.tags.empty());        // 默认:空 vector
+assert(v2.attributes.empty());  // 默认:空 map
+```
+
+## 删除字段(向前兼容)
+
+当使用具有较少字段的旧 schema 反序列化新数据时:
+
+```cpp
+// 完整 schema
+struct UserFull {
+  int64_t id;
+  std::string username;
+  std::string email;
+  std::string password_hash;
+  int32_t login_count;
+};
+FORY_STRUCT(UserFull, id, username, email, password_hash, login_count);
+
+// 精简 schema(删除了 3 个字段)
+struct UserMinimal {
+  int64_t id;
+  std::string username;
+};
+FORY_STRUCT(UserMinimal, id, username);
+
+// 序列化完整版本
+UserFull full{12345, "johndoe", "john@example.com", "hash123", 42};
+auto bytes = fory_full.serialize(full).value();
+
+// 反序列化为精简版本 - 额外字段被跳过
+auto minimal = fory_minimal.deserialize<UserMinimal>(bytes).value();
+assert(minimal.id == 12345);
+assert(minimal.username == "johndoe");
+// email、password_hash、login_count 被跳过
+```
+
+## 字段重排
+
+在 compatible 模式下,字段按名称匹配,而非位置:
+
+```cpp
+// 原始字段顺序
+struct ConfigOriginal {
+  std::string host;
+  int32_t port;
+  bool enable_ssl;
+  std::string protocol;
+};
+FORY_STRUCT(ConfigOriginal, host, port, enable_ssl, protocol);
+
+// 重排后的字段
+struct ConfigReordered {
+  bool enable_ssl;      // 移到第一位
+  std::string protocol; // 移到第二位
+  std::string host;     // 移到第三位
+  int32_t port;         // 移到最后
+};
+FORY_STRUCT(ConfigReordered, enable_ssl, protocol, host, port);
+
+// 使用原始顺序序列化
+ConfigOriginal orig{"localhost", 8080, true, "https"};
+auto bytes = fory_orig.serialize(orig).value();
+
+// 使用不同字段顺序反序列化 - 正常工作
+auto reordered = fory_reord.deserialize<ConfigReordered>(bytes).value();
+assert(reordered.host == "localhost");
+assert(reordered.port == 8080);
+assert(reordered.enable_ssl == true);
+assert(reordered.protocol == "https");
+```
+
+## 嵌套结构体演化
+
+Schema 演化递归支持嵌套结构体:
+
+```cpp
+// V1 Address
+struct AddressV1 {
+  std::string street;
+  std::string city;
+};
+FORY_STRUCT(AddressV1, street, city);
+
+// V2 Address 带有新字段
+struct AddressV2 {
+  std::string street;
+  std::string city;
+  std::string country;  // 新字段
+  std::string zipcode;  // 新字段
+};
+FORY_STRUCT(AddressV2, street, city, country, zipcode);
+
+// V1 Employee 使用 V1 Address
+struct EmployeeV1 {
+  std::string name;
+  AddressV1 home_address;
+};
+FORY_STRUCT(EmployeeV1, name, home_address);
+
+// V2 Employee 使用 V2 Address 和新字段
+struct EmployeeV2 {
+  std::string name;
+  AddressV2 home_address;  // 嵌套结构体已演化
+  std::string employee_id; // 新字段
+};
+FORY_STRUCT(EmployeeV2, name, home_address, employee_id);
+
+// 使用相同 ID 注册类型
+constexpr uint32_t ADDRESS_TYPE_ID = 100;
+constexpr uint32_t EMPLOYEE_TYPE_ID = 101;
+
+fory_v1.register_struct<AddressV1>(ADDRESS_TYPE_ID);
+fory_v1.register_struct<EmployeeV1>(EMPLOYEE_TYPE_ID);
+fory_v2.register_struct<AddressV2>(ADDRESS_TYPE_ID);
+fory_v2.register_struct<EmployeeV2>(EMPLOYEE_TYPE_ID);
+
+// 序列化 V1
+EmployeeV1 emp_v1{"Jane Doe", {"123 Main St", "NYC"}};
+auto bytes = fory_v1.serialize(emp_v1).value();
+
+// 反序列化为 V2
+auto emp_v2 = fory_v2.deserialize<EmployeeV2>(bytes).value();
+assert(emp_v2.name == "Jane Doe");
+assert(emp_v2.home_address.street == "123 Main St");
+assert(emp_v2.home_address.city == "NYC");
+assert(emp_v2.home_address.country == "");  // 默认值
+assert(emp_v2.home_address.zipcode == "");  // 默认值
+assert(emp_v2.employee_id == "");           // 默认值
+```
+
+## 双向演化
+
+Schema 演化双向工作:
+
+```cpp
+// V2 -> V1(降级)
+PersonV2 v2{"Charlie", 35, "charlie@example.com"};
+auto bytes = fory_v2.serialize(v2).value();
+
+auto v1 = fory_v1.deserialize<PersonV1>(bytes).value();
+assert(v1.name == "Charlie");
+assert(v1.age == 35);
+// email 字段在反序列化时被丢弃
+```
+
+## 默认值
+
+当字段缺失时,使用 C++ 默认初始化:
+
+| 类型                   | 默认值         |
+| ---------------------- | -------------- |
+| `int8_t`、`int16_t`... | `0`            |
+| `float`、`double`      | `0.0`          |
+| `bool`                 | `false`        |
+| `std::string`          | `""`           |
+| `std::vector<T>`       | 空 vector      |
+| `std::map<K,V>`        | 空 map         |
+| `std::set<T>`          | 空 set         |
+| `std::optional<T>`     | `std::nullopt` |
+| 结构体类型             | 默认构造       |
+
+## SchemaConsistent 模式(默认)
+
+不使用 compatible 模式时,schema 必须完全匹配:
+
+```cpp
+// 严格模式(默认)
+auto fory = Fory::builder()
+    .compatible(false)  // 默认:schema 必须匹配
+    .xlang(true)
+    .build();
+
+// 序列化/反序列化要求相同的 schema
+// Schema 不匹配可能导致错误或未定义行为
+```
+
+**何时使用 SchemaConsistent 模式:**
+
+- Schema 保证匹配(相同的二进制版本)
+- 需要最高性能(更少的元数据开销)
+- 您同时控制序列化和反序列化
+
+**何时使用 Compatible 模式:**
+
+- Schema 可能独立演化
+- 需要跨版本兼容性
+- 不同服务可能有不同的 schema 版本
+
+## 类型 ID 要求
+
+要使 schema 演化正常工作:
+
+1. **相同类型 ID**:同一结构体的不同版本必须使用相同的类型 ID
+2. **一致的 ID**:类型 ID 必须在所有 Fory 实例中保持一致
+3. **注册所有版本**:每个 Fory 实例注册自己的结构体版本
+
+```cpp
+constexpr uint32_t PERSON_TYPE_ID = 100;
+
+// 实例 1 使用 PersonV1
+fory_v1.register_struct<PersonV1>(PERSON_TYPE_ID);
+
+// 实例 2 使用 PersonV2
+fory_v2.register_struct<PersonV2>(PERSON_TYPE_ID);
+
+// 相同的类型 ID 启用 schema 演化
+```
+
+## 最佳实践
+
+### 1. 为演化做规划
+
+设计 schema 时考虑未来的变更:
+
+```cpp
+// 好的做法:对可能删除的字段使用 optional
+struct Config {
+  std::string host;
+  int32_t port;
+  std::optional<std::string> deprecated_field;  // 以后可以删除
+};
+```
+
+### 2. 使用有意义的默认值
+
+考虑新字段使用什么默认值才有意义:
+
+```cpp
+struct Settings {
+  int32_t timeout_ms;      // 默认:0(可能需要一个合理的默认值)
+  bool enabled;            // 默认:false
+  std::string mode;        // 默认:""(可能需要 "default")
+};
+```
+
+### 3. 记录 Schema 版本
+
+跟踪 schema 变更以便调试:
+
+```cpp
+// V1:初始 schema(2024-01-01)
+// V2:添加 email 字段(2024-02-01)
+// V3:添加 phone、address 字段(2024-03-01)
+```
+
+### 4. 测试演化路径
+
+测试升级和降级场景:
... 59492 lines suppressed ...


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