This is an automated email from the ASF dual-hosted git repository. chaokunyang pushed a commit to branch release_0.13.0 in repository https://gitbox.apache.org/repos/asf/fory-site.git
commit 9b93426f09a1da79daf0e346fbe78ce1bc4738f4 Author: chaokunyang <[email protected]> AuthorDate: Tue Oct 28 00:04:23 2025 +0800 release 0.13.0 --- blog/2025-10-27-fory_0_13_0_release.md | 330 +++++++++++++++++++++ docs/docs/start/install.md | 29 +- docs/guide/scala_guide.md | 2 +- .../current/docs/start/install.md | 40 ++- src/pages/download/index.md | 10 +- src/pages/security/index.md | 2 +- 6 files changed, 388 insertions(+), 25 deletions(-) diff --git a/blog/2025-10-27-fory_0_13_0_release.md b/blog/2025-10-27-fory_0_13_0_release.md new file mode 100644 index 000000000..c9a3329ac --- /dev/null +++ b/blog/2025-10-27-fory_0_13_0_release.md @@ -0,0 +1,330 @@ +--- +slug: fory_0_13_0_release +title: Fory v0.13.0 Released +authors: [chaokunyang] +tags: [fory] +--- + +The Apache Fory team is pleased to announce the 0.13.0 release. This is a major release that includes [217 PR](https://github.com/apache/fory/compare/v0.12.3...v0.13.0) from 19 distinct contributors. See the [Install](https://fury.apache.org/docs/docs/start/install) Page to learn how to get the libraries for your platform. + +## Highlights +* Dynamic Trait Object Serialization for Rust +* Shared/Circular ownership serialization for Rust +* Schema Forward/Backward compatibilify for Rust +* Drop-in Replacement for Python pickle: support local function/classes/`__reduce__`/`__getstate__` serialization +* Schema Forward/Backward compatibilify for Python dataclass +* Support codegen for xlang mode in java +* Primitive array compression using SIMD +* Compact Row Codec for Row Format +* Schema Forward/Backward compatibilify for Go +* Ahead-of-time codegen for golang struct serialization + +## Rust: First Release Highlights + +This is the first Apache Fory Rust release, delivering a complete, high‑performance serialization stack. If you build Rust services or libraries, you can now use Fory natively with strong typing, performance, and schema evolution. + +- Derive-based object graph serialization via `#[derive(ForyObject)]` +- Polymorphism for trait objects: `Box<dyn Trait>`, `Rc<dyn Trait>`, `Arc<dyn Trait>`, plus `dyn Any` +- Shared and circular reference tracking: `Rc`/`Arc` and `RcWeak`/`ArcWeak` +- Forward/backward compatible schema evolution (Compatible mode) +- Zero-copy Row format via `#[derive(ForyRow)]` with selective field access +- Thread-safe and multi-thread capable serialization (context pool) +- Broad collection support (e.g., `VecDeque`, `LinkedList`, `BTreeMap`, `BTreeSet`, `BinaryHeap`) + +Quick start (minimal example): + +```rust +use fory::{Fory, Error}; +use fory::ForyObject; + +#[derive(ForyObject, Debug, PartialEq)] +struct User { + name: String, + age: i32, + email: String, +} + +fn main() -> Result<(), Error> { + let mut fory = Fory::default(); + fory.register::<User>(1)?; + + let user = User { name: "Alice".into(), age: 30, email: "[email protected]".into() }; + let bytes = fory.serialize(&user)?; + let decoded: User = fory.deserialize(&bytes)?; + assert_eq!(user, decoded); + Ok(()) +} +``` + +- Guide: Rust Serialization – https://fory.apache.org/docs/docs/guide/rust_serialization +- Crate: fory on crates.io – https://crates.io/crates/fory +- API docs: docs.rs – https://docs.rs/fory/latest/fory + +## Python: Drop‑in Replacement for pickle + +`pyfory` now acts as a high‑performance drop‑in replacement for `pickle`/`cloudpickle`, while keeping the same simple API and adding security and performance features. + +- Serialize any Python object in Python‑native mode (`xlang=False`): global/local functions, lambdas, global/local classes, instance/class/static methods +- Honors Python hooks: `__getstate__`, `__setstate__`, `__reduce__`, `__reduce_ex__` +- Reference tracking for shared/circular graphs with `ref=True` +- Pickle protocol 5 out‑of‑band buffers for zero‑copy via `pickle.PickleBuffer` (NumPy, Pandas, etc.) +- Security: `strict=True` for registration‑based safety and `DeserializationPolicy` for fine‑grained control +- Threading: `ThreadSafeFory` for safe multi‑thread use +- Familiar API: `dumps/loads` are aliases of `serialize/deserialize` + +Quick start: + +```python +import pyfory + +# Drop-in replacement for pickle/cloudpickle +fory = pyfory.Fory(xlang=False, ref=True, strict=False) + +def make_multiplier(k): + def mul(x): + return k * x + return mul + +binary = fory.dumps(make_multiplier(10)) +assert fory.loads(binary)(3) == 30 +``` + +Read more: Python Guide – https://fory.apache.org/docs/latest/python_serialization/ + +## Features +* feat(java): support object stream serialization for graalvm by @chaokunyang in https://github.com/apache/fory/pull/2464 +* refactor(java): rename abstract collection/map serializers to Map/ListLikeSerializer by @chaokunyang in https://github.com/apache/fory/pull/2466 +* feat(memory): add customizable MemoryAllocator interface by @adriacabeza in https://github.com/apache/fory/pull/2467 +* feat: Chain wheel test/build and release workflows by @esafak in https://github.com/apache/fory/pull/2483 +* feat(python): set default languge to python for pyfory by @chaokunyang in https://github.com/apache/fory/pull/2490 +* feat(python): add register api to python by @chaokunyang in https://github.com/apache/fory/pull/2491 +* feat(python): meta compression for python by @chaokunyang in https://github.com/apache/fory/pull/2504 +* feat(python): type meta encoding for python by @chaokunyang in https://github.com/apache/fory/pull/2509 +* feat(CI): Cache npm, add node 24, lock file by @esafak in https://github.com/apache/fory/pull/2523 +* feat(Rust): Implementing Type Compatible by @urlyy in https://github.com/apache/fory/pull/2492 +* feat(Rust): support Option in MetaFieldType se/de by @urlyy in https://github.com/apache/fory/pull/2528 +* feat(rust): support skipping fields bytes when deserializing in compatible mode by @urlyy in https://github.com/apache/fory/pull/2545 +* feat(go): add type meta encoding for meta share by @junjiexh in https://github.com/apache/fory/pull/2554 +* feat(Rust): Support automatic conversion between T and Option<T> when deserialize by @urlyy in https://github.com/apache/fory/pull/2563 +* feat(java): bean encoder implemented interfaces honor `@Ignore` by @stevenschlansker in https://github.com/apache/fory/pull/2576 +* refactor(java): refactor fory java exception hierarchical structure by @chaokunyang in https://github.com/apache/fory/pull/2577 +* feat(Go): Implement ahead of time codegen for fory-go serialization by @ThisingL in https://github.com/apache/fory/pull/2553 +* feat(java): support limit deserialization depth by @chaokunyang in https://github.com/apache/fory/pull/2578 +* feat(rust): add fory rust benchmark by @chaokunyang in https://github.com/apache/fory/pull/2583 +* perf(rust): optimize rust deserialize perf by @chaokunyang in https://github.com/apache/fory/pull/2584 +* feat(rust): add rust profiler for serialization by @chaokunyang in https://github.com/apache/fory/pull/2588 +* refactor(go): rename FieldInfo to FieldDef to avoide name collision by @junjiexh in https://github.com/apache/fory/pull/2594 +* feat(python): meta share mode for pyfory compatible serialization by @chaokunyang in https://github.com/apache/fory/pull/2593 +* feat(java/python): align java and python compatible mode serialization by @chaokunyang in https://github.com/apache/fory/pull/2602 +* feat(java/python): support enum xlang serialization by @chaokunyang in https://github.com/apache/fory/pull/2603 +* feat(Rust): support basic type se/de aligned with java by @urlyy in https://github.com/apache/fory/pull/2585 +* perf(python/java): Fix & optimize cross-language meta-share mode by @pandalee99 in https://github.com/apache/fory/pull/2601 +* feat(go): align cross-language type serialization for primitive arrays by @pandalee99 in https://github.com/apache/fory/pull/2610 +* feat(java): support codegen for xlang mode in java by @chaokunyang in https://github.com/apache/fory/pull/2613 +* feat(java): primitive array compression using SIMD by @adriacabeza in https://github.com/apache/fory/pull/2485 +* refactor(go): Replace globalTypeResolver with factory-based serializer registration by @ThisingL in https://github.com/apache/fory/pull/2615 +* feat(go): Implement compatible mode with metashare mode by @junjiexh in https://github.com/apache/fory/pull/2607 +* feat(java): support concurent map serialization when being updated by @chaokunyang in https://github.com/apache/fory/pull/2617 +* feat(java): support concurrent updates when serializing collections by @chaokunyang in https://github.com/apache/fory/pull/2623 +* feat(python): support limit pyfory depth by @chaokunyang in https://github.com/apache/fory/pull/2625 +* feat(Rust): sort fields && feat Enum && fix read/write type_info && fix type_meta en/decode by @urlyy in https://github.com/apache/fory/pull/2630 +* feat(python): drop-in replacement for pickle serialization by @chaokunyang in https://github.com/apache/fory/pull/2629 +* refactor(java): refactor type resolver by @chaokunyang in https://github.com/apache/fory/pull/2640 +* feat(java): support type converters for comaptible mode by @chaokunyang in https://github.com/apache/fory/pull/2641 +* refactor(java/python): refine collection header bitmap by @chaokunyang in https://github.com/apache/fory/pull/2642 +* feat(go): metashare mode support collection and map and nested object by @junjiexh in https://github.com/apache/fory/pull/2643 +* feat(go): Add slice and map support to fory-go codegen serialization by @ThisingL in https://github.com/apache/fory/pull/2638 +* refactor(go): Change codegen annotation from //fory:gen to //fory:generate by @ThisingL in https://github.com/apache/fory/pull/2648 +* feat(rust): support Map and register_by_name by @urlyy in https://github.com/apache/fory/pull/2649 +* feat(java): support graalvm 25 by @chaokunyang in https://github.com/apache/fory/pull/2652 +* feat(java): support deserialize not registered/exsited class/fields for xlang compatible mode by @chaokunyang in https://github.com/apache/fory/pull/2655 +* refactor(Rust): Refactor compile-time code & fix named_enum & fix skip enum by @urlyy in https://github.com/apache/fory/pull/2657 +* feat(python): support local py class serialization by @chaokunyang in https://github.com/apache/fory/pull/2665 +* refactor(go): refine collection header bitmap by @junjiexh in https://github.com/apache/fory/pull/2656 +* feat(python): support class methods serialization by @chaokunyang in https://github.com/apache/fory/pull/2670 +* refactor(go): refine collection header bitmap in codegen by @ThisingL in https://github.com/apache/fory/pull/2676 +* feat(rust): support box serde for rust by @chaokunyang in https://github.com/apache/fory/pull/2677 +* feat(rust): support reference tracking for rust Rc/Arc by @chaokunyang in https://github.com/apache/fory/pull/2678 +* feat(python): refine python serialization api by @chaokunyang in https://github.com/apache/fory/pull/2673 +* refactor(Rust): Refine api name by @urlyy in https://github.com/apache/fory/pull/2671 +* feat(rust): support rust dyn trait object serialization by @chaokunyang in https://github.com/apache/fory/pull/2691 +* feat(rust): support dyn any trait object serialization for box/arc/rc by @chaokunyang in https://github.com/apache/fory/pull/2704 +* feat(rust): support shared reference tracking for arc/rc<dny T> by @chaokunyang in https://github.com/apache/fory/pull/2707 +* feat(rust): avoid downcast method of multiple trait objects in same module conflict by @chaokunyang in https://github.com/apache/fory/pull/2708 +* feat(rust): add deref to arc/rc wrapper by @chaokunyang in https://github.com/apache/fory/pull/2709 +* refactor(rust): unify rc/arc wrapper macro arms into one function by @chaokunyang in https://github.com/apache/fory/pull/2711 +* perf(Rust): Use SIMD to se/de string by @urlyy in https://github.com/apache/fory/pull/2716 +* feat(Rust): named_xx se/de && ext se/de && add unittest by @urlyy in https://github.com/apache/fory/pull/2712 +* feat(rust): support RcWeak/ArcWeak for circular reference tracking by @chaokunyang in https://github.com/apache/fory/pull/2714 +* feat(rust): support limit max dyn depth by @chaokunyang in https://github.com/apache/fory/pull/2730 +* feat(Rust): Unroll fields loop & Add a feature for this by @urlyy in https://github.com/apache/fory/pull/2724 +* feat(python): make fory out-of-band serialization compatible with pickle5 by @chaokunyang in https://github.com/apache/fory/pull/2732 +* refactor(go): Replace legacy RegisterTagType api call by @junjiexh in https://github.com/apache/fory/pull/2696 +* feat(python): add thread safe fory by @chaokunyang in https://github.com/apache/fory/pull/2735 +* feat(rust): support VecDeque/LinkedList serialization by @chaokunyang in https://github.com/apache/fory/pull/2741 +* feat(rust): support btreemap serialization by @chaokunyang in https://github.com/apache/fory/pull/2743 +* feat(rust): support btree set and binary heap serialization by @chaokunyang in https://github.com/apache/fory/pull/2744 +* feat(Rust): support context_pool to reduce context allocation && support se/de in multi-thread by @urlyy in https://github.com/apache/fory/pull/2737 +* feat(ci): cache Bazel binary in Python CI workflow by @SanyamSuyal in https://github.com/apache/fory/pull/2745 +* feat(rust): rewrite fory derive macro for smaller and faster generated code using compile-time fields sort algorithm by @chaokunyang in https://github.com/apache/fory/pull/2749 +* feat(ci): add maven cache to ci for faster build by @chaokunyang in https://github.com/apache/fory/pull/2751 +* feat(rust): fast fory_read_compatible macro to use match by assigned field id by @chaokunyang in https://github.com/apache/fory/pull/2758 +* refactor(rust): use compatible bool instead of enum to simplify API by @chaokunyang in https://github.com/apache/fory/pull/2763 +* feat(rust): query type meta from parsed cache to speed up deserialization by @chaokunyang in https://github.com/apache/fory/pull/2764 +* feat(java): introduce Compact Row Codec by @stevenschlansker in https://github.com/apache/fory/pull/2414 +* feat(go): Add pointer field test for meta share mode by @junjiexh in https://github.com/apache/fory/pull/2674 +* feat(rust): make Serializer api to return Result && replace panic/expect/assert/unwrap with Result by @urlyy in https://github.com/apache/fory/pull/2765 +* feat(rust): refactor rust serialization system by @chaokunyang in https://github.com/apache/fory/pull/2774 +* feat(python): support optional typehint for dataclass fields by @chaokunyang in https://github.com/apache/fory/pull/2766 +* feat(rust): dynamic rust serializer system by @chaokunyang in https://github.com/apache/fory/pull/2778 +* feat(rust): use rc instead of arc for type meta for faster performance by @chaokunyang in https://github.com/apache/fory/pull/2782 +* feat(python): support dataclass compatible mode for python native mode by @chaokunyang in https://github.com/apache/fory/pull/2784 +* feat(java): support deserialize non exist enum variant to default by @chaokunyang in https://github.com/apache/fory/pull/2787 +* feat(go): update codegen field sorting to generate smaller and faster code by @ThisingL in https://github.com/apache/fory/pull/2779 +* feat(rust): make type meta resolve return type info directly by @chaokunyang in https://github.com/apache/fory/pull/2789 +* perf(Rust): remove clone()/to_owned() on MetaString/MetaStringBytes in MetaStringResolver to improve performance && fix xlang test by @urlyy in https://github.com/apache/fory/pull/2791 +* feat(rust): support static struct version hash check for rust by @chaokunyang in https://github.com/apache/fory/pull/2793 +* feat(rust): support profile all data types in rust benchmark by @chaokunyang in https://github.com/apache/fory/pull/2801 +* perf(rust): optimize rust small string/struct read/write performance by @chaokunyang in https://github.com/apache/fory/pull/2803 +* perf(rust): optimize rust performance by remove copy simd and add more inline hints by @chaokunyang in https://github.com/apache/fory/pull/2807 +* perf(rust): always use utf8 when writing string by @chaokunyang in https://github.com/apache/fory/pull/2809 +* feat(python): add deserialization policy for more fine-grained control and audit deserialization behaviour by @chaokunyang in https://github.com/apache/fory/pull/2811 +* perf(Rust): Enchance performance by @theweipeng in https://github.com/apache/fory/pull/2810 +* feat(Rust): Support serialize_to by @theweipeng in https://github.com/apache/fory/pull/2822 +* feat(rust): lazy build typeinfo for rust to avoid nested struct register deps by @chaokunyang in https://github.com/apache/fory/pull/2824 +* perf(Rust): Refactor reader by @theweipeng in https://github.com/apache/fory/pull/2826 +* perf(python): optimize pyfory perf by @chaokunyang in https://github.com/apache/fory/pull/2829 + +## Bug Fix +* fix(java): fix map/list element type same with collection type jit error by @chaokunyang in https://github.com/apache/fory/pull/2465 +* fix(python): fix gh action pypi publish by @chaokunyang in https://github.com/apache/fory/pull/2468 +* fix(java): fix row encoder for private struct by @chaokunyang in https://github.com/apache/fory/pull/2469 +* fix(python): fix pyfory pypi release by @chaokunyang in https://github.com/apache/fory/pull/2473 +* fix(python): fix py release on macos 13 by @chaokunyang in https://github.com/apache/fory/pull/2478 +* fix(ci): Build python wheels using interpreters in manylinux2014 by @esafak in https://github.com/apache/fory/pull/2486 +* fix(java): Encoders.mapEncoder(TypeRef, TypeRef, TypeRef, Fory) should load bean classes by @stevenschlansker in https://github.com/apache/fory/pull/2494 +* fix(java): row format generated bean types handling Optional by @stevenschlansker in https://github.com/apache/fory/pull/2497 +* fix: Fix the issue of addListener not releasing the lock by @open-snail in https://github.com/apache/fory/pull/2500 +* fix(ci): Use $ROOT/dist for wheel distribution by @esafak in https://github.com/apache/fory/pull/2506 +* fix(python): fix publich tag for workflow by @chaokunyang in https://github.com/apache/fory/pull/2517 +* fix(ci): print workflow head branch by @chaokunyang in https://github.com/apache/fory/pull/2518 +* fix(python): fix release python wheel head_branch tag by @chaokunyang in https://github.com/apache/fory/pull/2519 +* fix(java): MemoryBuffer tests that equalTo works with size zero buffers by @stevenschlansker in https://github.com/apache/fory/pull/2524 +* fix(ci): Pass tag to bump_py_version, set PLAT inside manylinux container by @esafak in https://github.com/apache/fory/pull/2522 +* fix(ci): Use ref_name tag in Windows, name release runs, verify wheel versions, use all python versions for release by @esafak in https://github.com/apache/fory/pull/2532 +* ci: Fix verify_version() by capturing version properly by @esafak in https://github.com/apache/fory/pull/2535 +* fix(python): fix bump_wheel version by @chaokunyang in https://github.com/apache/fory/pull/2534 +* fix(python): fix bump version by @chaokunyang in https://github.com/apache/fory/pull/2536 +* fix(python): add macos 13 release by @chaokunyang in https://github.com/apache/fory/pull/2538 +* fix(ci): use lowercase for betahuhn/repo-file-sync-action by @chaokunyang in https://github.com/apache/fory/pull/2541 +* fix(ci): use commit hash for repo-file-sync-action by @chaokunyang in https://github.com/apache/fory/pull/2542 +* fix(java): array encoder seems to waste 8 bytes in encode(T) by @stevenschlansker in https://github.com/apache/fory/pull/2551 +* fix(ci): Install pyfory for golang xlang tests by @esafak in https://github.com/apache/fory/pull/2561 +* fix(ci): Exit with subprocess return code in run_ci.py by @esafak in https://github.com/apache/fory/pull/2560 +* fix(java): fix codegen name conflict by @chaokunyang in https://github.com/apache/fory/pull/2565 +* fix(java): fix classinfo npe on graalvm by @chaokunyang in https://github.com/apache/fory/pull/2572 +* fix(java): Skip calculation of classVersionHash if checkClassVersion is false by @theigl in https://github.com/apache/fory/pull/2573 +* fix(java): skip hash compute for abstract field type by @chaokunyang in https://github.com/apache/fory/pull/2575 +* fix(java): row format buffer recycling leaves offset and size for null values by @stevenschlansker in https://github.com/apache/fory/pull/2540 +* fix(java): fix xlang register type by id by @chaokunyang in https://github.com/apache/fory/pull/2591 +* fix(java): fix xlang mode meta shared for java by @chaokunyang in https://github.com/apache/fory/pull/2592 +* fix(python): Fix the build dependency failure that occurred in pyfory by @pandalee99 in https://github.com/apache/fory/pull/2596 +* fix(python): Delete the redundant code in typedef by @pandalee99 in https://github.com/apache/fory/pull/2600 +* fix(java): fix register by id for xlang metashare mode in java by @chaokunyang in https://github.com/apache/fory/pull/2614 +* fix(java/python): fix meta string encoding order by @chaokunyang in https://github.com/apache/fory/pull/2616 +* fix(go): Complete type registration in factory-based serializer system by @ThisingL in https://github.com/apache/fory/pull/2619 +* fix(python): fix pyfory depth limit by @chaokunyang in https://github.com/apache/fory/pull/2626 +* fix(java): fix get nested genericType for codegen by @chaokunyang in https://github.com/apache/fory/pull/2632 +* fix(python): register dynamic serializer only not require registration by @chaokunyang in https://github.com/apache/fory/pull/2634 +* fix(java): fix record serialization on graalvm25 by @chaokunyang in https://github.com/apache/fory/pull/2644 +* fix(java): fix field converter for xlang by @chaokunyang in https://github.com/apache/fory/pull/2654 +* fix(java): fix array serialization on graalvm by @chaokunyang in https://github.com/apache/fory/pull/2664 +* fix(java): fix meta share deserialization for register by @chaokunyang in https://github.com/apache/fory/pull/2667 +* fix(java): retain serializers in graalvm native images by @gudzpoz in https://github.com/apache/fory/pull/2680 +* fix(java): fix graalvm not use generated serializer by @chaokunyang in https://github.com/apache/fory/pull/2682 +* fix(java): fix register serializer for xlang in java by @chaokunyang in https://github.com/apache/fory/pull/2683 +* fix(java): fix InputStream read big buffer error by @wuwangben in https://github.com/apache/fory/pull/2687 +* fix(python): fix python module/type serialize by @chaokunyang in https://github.com/apache/fory/pull/2688 +* fix(java): Fix flakiness in CollectionSerializersTest#tesPriorityQueueSerializer by @swj20010308 in https://github.com/apache/fory/pull/2693 +* fix(java): Fix flakiness in LazyMapTest#testMap by @swj20010308 in https://github.com/apache/fory/pull/2692 +* fix(java): fix deserializing EXT type bug by @mengnankkkk in https://github.com/apache/fory/pull/2700 +* fix(java): fix xlang typedef encode by @chaokunyang in https://github.com/apache/fory/pull/2719 +* fix(java): Fix flakiness in MetaContextTest#testShareClassName and #testShareClassDefCompatible by @swj20010308 in https://github.com/apache/fory/pull/2739 +* fix(java): Fix flakiness in ForyCopyTest#mutableObjectCopyTest by @swj20010308 in https://github.com/apache/fory/pull/2738 +* fix(ci): add retry logic to Bazel downloads to prevent flaky CI failures by @SanyamSuyal in https://github.com/apache/fory/pull/2733 +* fix(java): serialize collections with only null elements in xlang mode by @mymde in https://github.com/apache/fory/pull/2740 +* fix(ci): fix sync file by @chaokunyang in https://github.com/apache/fory/pull/2750 +* fix(ci): fix sync files by @chaokunyang in https://github.com/apache/fory/pull/2752 +* fix(docs): fix rust doc links build and check by @chaokunyang in https://github.com/apache/fory/pull/2753 +* fix(java): fix maven cache by @chaokunyang in https://github.com/apache/fory/pull/2755 +* fix(rust): fix rust xlang tests by @chaokunyang in https://github.com/apache/fory/pull/2788 +* fix(java): Fix flakiness in CollectionSerializersTest#testCollectionFieldSerializers, CollectionSerializersTest#testCollectionFieldSerializersCopy and ProtocolInteroperabilityTest#testComplexCollection by @swj20010308 in https://github.com/apache/fory/pull/2790 +* fix(java): fix java shanpshot version by @chaokunyang in https://github.com/apache/fory/pull/2800 +* fix(go): Adjust serialization of nullable value to align python behavior by @junjiexh in https://github.com/apache/fory/pull/2814 + +## Other Improvements +* chore(python): disable pyfory.format import warning by @chaokunyang in https://github.com/apache/fory/pull/2476 +* chore: bump release version to 0.12.0 by @chaokunyang in https://github.com/apache/fory/pull/2489 +* docs: fix meta_size_mask by @urlyy in https://github.com/apache/fory/pull/2495 +* chore: fix typos by @Asnowww in https://github.com/apache/fory/pull/2496 +* docs: Improve pyfory PyPI documentation by @esafak in https://github.com/apache/fory/pull/2498 +* docs(python): add row format doc by @chaokunyang in https://github.com/apache/fory/pull/2499 +* chore: translate Chinese comments into English by @Asnowww in https://github.com/apache/fory/pull/2503 +* docs: Improve pull request template by @esafak in https://github.com/apache/fory/pull/2508 +* ci: Fix Windows wheel creation by @esafak in https://github.com/apache/fory/pull/2511 +* ci: Pass the GH token to actions/download-artifact by @esafak in https://github.com/apache/fory/pull/2514 +* chore: fix MetaStrEncoding by @co63oc in https://github.com/apache/fory/pull/2516 +* chore(javascript): rename foryjs to apache-fory and remove install docs by @chaokunyang in https://github.com/apache/fory/pull/2544 +* chore: bump release version to 0.12.1 by @chaokunyang in https://github.com/apache/fory/pull/2556 +* docs: update contributing.md with Rust lint command by @urlyy in https://github.com/apache/fory/pull/2569 +* chore(ci): use str replace to make bump java version faster by @chaokunyang in https://github.com/apache/fory/pull/2568 +* docs(java): add idea jdk11 usage config by @chaokunyang in https://github.com/apache/fory/pull/2570 +* docs(rust): add rust document by @chaokunyang in https://github.com/apache/fory/pull/2582 +* chore: bump release version to 0.12.2 by @chaokunyang in https://github.com/apache/fory/pull/2589 +* chore: add trademark for fory name by @chaokunyang in https://github.com/apache/fory/pull/2590 +* chore: Revert "fix(python): Fix the build dependency failure that occurred in pyfory" by @chaokunyang in https://github.com/apache/fory/pull/2597 +* chore: remove slash in homepage URL by @chaokunyang in https://github.com/apache/fory/pull/2604 +* chore(go): replace all typ to type_ by @chaokunyang in https://github.com/apache/fory/pull/2612 +* chore: bump release version to 0.12.3 by @chaokunyang in https://github.com/apache/fory/pull/2645 +* docs: add AGENT.md to make AI coding more efficient by @chaokunyang in https://github.com/apache/fory/pull/2646 +* chore(rust): remove tag read/write by @chaokunyang in https://github.com/apache/fory/pull/2681 +* docs(python): refine python readme with detailed docs by @chaokunyang in https://github.com/apache/fory/pull/2689 +* docs(python): update schema evolution support in README by @chaokunyang in https://github.com/apache/fory/pull/2690 +* docs: fix python readme lint by @chaokunyang in https://github.com/apache/fory/pull/2694 +* docs(rust): add comprehensive rust readme document by @chaokunyang in https://github.com/apache/fory/pull/2723 +* docs(rust): add detailed rust api doc and readme by @chaokunyang in https://github.com/apache/fory/pull/2728 +* docs: sync rust and python document to fory-site by @chaokunyang in https://github.com/apache/fory/pull/2734 +* docs(rust): update rust roadmap by @chaokunyang in https://github.com/apache/fory/pull/2754 +* docs(rust): fix rust doc broken link by @chaokunyang in https://github.com/apache/fory/pull/2756 +* docs(rust): fix rust doc lint by @chaokunyang in https://github.com/apache/fory/pull/2757 +* docs(go): Update README.md by @junjiexh in https://github.com/apache/fory/pull/2675 +* docs(rust): add rust thread safety and troubleshooting doc by @chaokunyang in https://github.com/apache/fory/pull/2781 +* chore(rust): rename fory-tests to tests by @chaokunyang in https://github.com/apache/fory/pull/2783 +* docs(rust): update rust serializer trait doc by @chaokunyang in https://github.com/apache/fory/pull/2795 +* chore: fix release error by @chaokunyang in https://github.com/apache/fory/pull/2796 +* chore(python): rename numeric typehint by @chaokunyang in https://github.com/apache/fory/pull/2808 +* chore(rust): reorder fory rust methods by @chaokunyang in https://github.com/apache/fory/pull/2813 +* docs(python): refine python code and add api doc by @chaokunyang in https://github.com/apache/fory/pull/2816 +* chore(ci): remove macos13 ci for rust/c++ by @chaokunyang in https://github.com/apache/fory/pull/2817 +* chore(rust): rename metastring to meta_string by @urlyy in https://github.com/apache/fory/pull/2812 +* docs(rust): add serialize_to api doc by @chaokunyang in https://github.com/apache/fory/pull/2825 +* chore(Rust): Streamline code by @theweipeng in https://github.com/apache/fory/pull/2828 +* docs(rust): update serialize to deserialize from doc by @chaokunyang in https://github.com/apache/fory/pull/2830 +* chore(Rust): Remove new_from_fory from context.rs by @urlyy in https://github.com/apache/fory/pull/2831 + + +## New Contributors +* @adriacabeza made their first contribution in https://github.com/apache/fory/pull/2467 +* @Asnowww made their first contribution in https://github.com/apache/fory/pull/2496 +* @open-snail made their first contribution in https://github.com/apache/fory/pull/2500 +* @junjiexh made their first contribution in https://github.com/apache/fory/pull/2554 +* @ThisingL made their first contribution in https://github.com/apache/fory/pull/2553 +* @gudzpoz made their first contribution in https://github.com/apache/fory/pull/2680 +* @wuwangben made their first contribution in https://github.com/apache/fory/pull/2687 +* @swj20010308 made their first contribution in https://github.com/apache/fory/pull/2693 +* @mengnankkkk made their first contribution in https://github.com/apache/fory/pull/2700 +* @SanyamSuyal made their first contribution in https://github.com/apache/fory/pull/2733 +* @mymde made their first contribution in https://github.com/apache/fory/pull/2740 + + +**Full Changelog**: https://github.com/apache/fory/compare/v0.12.3...v0.13.0-rc2 diff --git a/docs/docs/start/install.md b/docs/docs/start/install.md index bde750807..99ad0b517 100644 --- a/docs/docs/start/install.md +++ b/docs/docs/start/install.md @@ -16,13 +16,13 @@ To add a dependency on Apache Fory™ using Maven, use the following: <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-core</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> <!-- row/arrow format support --> <!-- <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-format</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> --> ``` @@ -34,7 +34,7 @@ To add a dependency on Apache Fory™ scala for scala 2.13 with maven, use the f <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-scala_2.13</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> ``` @@ -44,20 +44,20 @@ To add a dependency on Apache Fory™ scala for scala 3 with maven, use the foll <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-scala_3</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> ``` To add a dependency on Apache Fory™ scala for scala 2.13 with sbt, use the following: ```sbt -libraryDependencies += "org.apache.fory" % "fory-scala_2.13" % "0.12.3" +libraryDependencies += "org.apache.fory" % "fory-scala_2.13" % "0.13.0" ``` To add a dependency on Apache Fory™ scala for scala 3 with sbt, use the following: ```sbt -libraryDependencies += "org.apache.fory" % "fory-scala_3" % "0.12.3" +libraryDependencies += "org.apache.fory" % "fory-scala_3" % "0.13.0" ``` ## Kotlin @@ -68,7 +68,7 @@ To add a dependency on Apache Fory™ kotlin with maven, use the following: <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-kotlin</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> ``` @@ -76,7 +76,20 @@ To add a dependency on Apache Fory™ kotlin with maven, use the following: ```bash python -m pip install --upgrade pip -pip install pyfory==0.12.3 +pip install pyfory==0.13.0 +``` + +## Rust + +```toml +[dependencies] +fory = "0.13" +``` + +or just execute command: + +```bash +cargo add [email protected] ``` ## JavaScript diff --git a/docs/guide/scala_guide.md b/docs/guide/scala_guide.md index ab517eb3e..29da5ee33 100644 --- a/docs/guide/scala_guide.md +++ b/docs/guide/scala_guide.md @@ -34,7 +34,7 @@ Scala 2 and 3 are both supported. To add a dependency on Apache Fory™ scala for with sbt, use the following: ```sbt -libraryDependencies += "org.apache.fory" %% "fory-scala" % "0.12.3" +libraryDependencies += "org.apache.fory" %% "fory-scala" % "0.13.0" ``` ## Quick Start diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/start/install.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/start/install.md index 071b8001b..08a7682ca 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/start/install.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/docs/start/install.md @@ -6,7 +6,7 @@ sidebar_position: 0 Apache Fory™ 源码下载请参见 Apache Fory™ [download](https://github.com/apache/fory/releases)页面。 -### Apache Fory™ Java 安装 +## 安装 Apache Fory™ Java 要使用 Maven 添加对 Apache Fory™ 的依赖,请使用以下配置: @@ -14,17 +14,17 @@ Apache Fory™ 源码下载请参见 Apache Fory™ [download](https://github.co <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-core</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> <!-- row/arrow format support --> <!-- <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-format</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> --> ``` -### Apache Fory™ Scala 安装 +## 安装 Apache Fory™ Scala 要使用 Maven 添加 scala 2.13 的 Fory scala 依赖,请使用以下配置: @@ -32,7 +32,7 @@ Apache Fory™ 源码下载请参见 Apache Fory™ [download](https://github.co <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-scala_2.13</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> ``` @@ -42,23 +42,23 @@ Apache Fory™ 源码下载请参见 Apache Fory™ [download](https://github.co <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-scala_3</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> ``` 要使用 sbt 添加 scala 2.13 的 Fory scala 依赖,请使用以下配置: ```sbt -libraryDependencies += "org.apache.fory" % "fory-scala_2.13" % "0.12.3" +libraryDependencies += "org.apache.fory" % "fory-scala_2.13" % "0.13.0" ``` 要使用 sbt 添加 scala 3 的 Fory scala 依赖,请使用以下配置: ```sbt -libraryDependencies += "org.apache.fory" % "fory-scala_3" % "0.12.3" +libraryDependencies += "org.apache.fory" % "fory-scala_3" % "0.13.0" ``` -## Apache Fory™ Kotlin 安装 +## 安装 Apache Fory™ Kotlin To add a dependency on Apache Fory™kotlin with maven, use the following: @@ -66,6 +66,26 @@ To add a dependency on Apache Fory™kotlin with maven, use the following: <dependency> <groupId>org.apache.fory</groupId> <artifactId>fory-kotlin</artifactId> - <version>0.12.3</version> + <version>0.13.0</version> </dependency> ``` + +## 安装 Apache Fory™ Python + +```bash +python -m pip install --upgrade pip +pip install pyfory==0.13.0 +``` + +## 安装 Apache Fory™ Rust + +```toml +[dependencies] +fory = "0.13" +``` + +或者直接执行以下命令: + +```bash +cargo add [email protected] +``` \ No newline at end of file diff --git a/src/pages/download/index.md b/src/pages/download/index.md index 8f0d175b1..7c62cccea 100644 --- a/src/pages/download/index.md +++ b/src/pages/download/index.md @@ -9,11 +9,11 @@ For binary install, please see Apache Fory™ [install](/docs/docs/start/install ## The latest release -The latest source release is 0.12.3: +The latest source release is 0.13.0: | Version | Date | Source | Release Notes | | ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| 0.12.3 | 2025-09-23 | [source](https://www.apache.org/dyn/closer.lua/fory/0.12.3/apache-fory-0.12.3-src.tar.gz?action=download) [asc](https://downloads.apache.org/fory/0.12.3/apache-fory-0.12.3-src.tar.gz.asc) [sha512](https://downloads.apache.org/fory/0.12.3/apache-fory-0.12.3-src.tar.gz.sha512) | [release notes](https://github.com/apache/fory/releases/tag/v0.12.3) | +| 0.13.0 | 2025-09-23 | [source](https://www.apache.org/dyn/closer.lua/fory/0.13.0/apache-fory-v0.13.0-src.tar.gz?action=download) [asc](https://downloads.apache.org/fory/0.13.0/apache-fory-v0.13.0-src.tar.gz.asc) [sha512](https://downloads.apache.org/fory/0.13.0/apache-fory-v0.13.0-src.tar.gz.sha512) | [release notes](https://github.com/apache/fory/releases/tag/v0.13.0) | ## All archived releases @@ -31,13 +31,13 @@ These files are named after the files they relate to but have `.sha512/.asc` ext To verify the SHA digests, you need the `.tgz` and its associated `.tgz.sha512` file. An example command: ```bash -sha512sum --check apache-fory-0.12.3-src.tar.gz +sha512sum --check apache-fory-v0.13.0-src.tar.gz ``` It should output something like: ```bash -apache-fory-0.12.3-src.tar.gz: OK +apache-fory-v0.13.0-src.tar.gz: OK ``` ### Verifying Signatures @@ -54,7 +54,7 @@ gpg --import KEYS Then you can verify signature: ```bash -gpg --verify apache-fory-0.12.3-src.tar.gz.asc apache-fory-0.12.3-src.tar.gz +gpg --verify apache-fory-v0.13.0-src.tar.gz.asc apache-fory-v0.13.0-src.tar.gz ``` If something like the following appears, it means the signature is correct: diff --git a/src/pages/security/index.md b/src/pages/security/index.md index 9c5b0a45d..bee0ef0b7 100644 --- a/src/pages/security/index.md +++ b/src/pages/security/index.md @@ -19,7 +19,7 @@ Versions affected: 0.5.0 through 0.12.2 for pyfory, and the legacy fury versions Description: Deserialization of untrusted data in python in pyfory versions 0.12.0 through 0.12.2, or the legacy pyfury versions from 0.1.0 through 0.10.3: allows arbitrary code execution. An application is vulnerable if it reads pyfory serialized data from untrusted sources. An attacker can craft a data stream that selects pickle-fallback serializer during deserialization, leading to the execution of `pickle.loads`, which is vulnerable to remote code execution. -Mitigation: Users of Apache Fory are recommended to upgrade to pyfory version 0.12.3 or later, which has removed pickle fallback serializer and thus fixes this issue. Developers of libraries and applications that depend on Apache Fory should update their dependency requirements to Apache Fory 0.12.3 or later and release new versions of their software. +Mitigation: Users of Apache Fory are recommended to upgrade to pyfory version 0.13.0 or later, which has removed pickle fallback serializer and thus fixes this issue. Developers of libraries and applications that depend on Apache Fory should update their dependency requirements to Apache Fory 0.13.0 or later and release new versions of their software. ### [CVE-2025-59328](https://www.cve.org/CVERecord?id=CVE-2025-59328): Denial of Service (DoS) due to Deserialization of Untrusted malicious large Data --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
