Rust 终于来了!Apache Fory 0.13.0 发布 + 无缝替代 Python Pickle
🚀 Apache Fory 0.13.0 重磅发布! 这一版本带来两大震撼更新:
-
• Rust 首个正式版本 :完整高性能序列化栈、Dynamic Trait Object、多集合支持与 Schema 演进能力,让静态语言拥有动态序列化的灵活性。 在性能测试中,比 JSON/Protobuf 快最多 10 倍,压缩率媲美 Protobuf。
-
• Python Pickle 全面替代方案 :无缝兼容
pickle/cloudpickleAPI,同时做到 更快⚡、更小📦、更安全,支持本地函数/类、lambda、零拷贝 NumPy/Pandas 等高级场景。
无论是跨语言服务还是单语言优化,Fory 都能让数据传输更高效、更可靠。 立即升级,体验 Rust 与 Python 序列化的全新时代!
亮点 🚀
-
• 🧠 Rust 的 Dynamic Trait Object 序列化
-
• 🔁 Rust 的 Shared/Circular ownership 序列化
-
• 🔮 Rust 的 Schema Forward/Backward compatibilify
-
• 🐍 Python
pickle的 Drop-in Replacement:支持本地函数/类/__reduce__/__getstate__序列化 -
• 🧾 支持 Python dataclass Schema 向前向后兼容性
-
• ☕️ Java xlang 模式支持 jit codegen,加速跨语言序列化性能
-
• ⚙️ 使用 SIMD 的 primitive array compression,大幅压缩数组的序列化体积
-
• 📦 Row Format 新增 Compact Row Codec,编码压缩率提升50%
-
• 🐹 支持Go Struct Schema 向前向后兼容性
-
• 🚀 Golang struct 序列化 的 ahead-of-time codegen,加速 Golang 序列化性能
Rust:首个发布亮点 🦀
这是 Apache Fory 首个 Rust 正式版本,带来完整、高性能的序列化栈。如果你正在构建 Rust 服务或库,现在可以在强类型、性能和 schema 演进方面原生使用 Fory。
-
• 通过
#[derive(ForyObject)]实现 derive-based object graph serialization -
• 支持 trait objects 的多态:
Box<dyn Trait>、Rc<dyn Trait>、Arc<dyn Trait>,以及dyn Any -
•
Rc/Arc与RcWeak/ArcWeak的共享与循环引用追踪 -
• 提供向前/向后兼容的 schema 演进(Compatible 模式)
-
• 借助
#[derive(ForyRow)]和按需字段访问,实现零拷贝 Row format -
• 线程安全并支持多线程序列化(context pool)
-
• 广泛的集合支持(例如
VecDeque、LinkedList、BTreeMap、BTreeSet、BinaryHeap)
快速上手(最小示例):
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: "alice@example.com".into() };
let bytes = fory.serialize(&user)?;
let decoded: User = fory.deserialize(&bytes)?;
assert_eq!(user, decoded);
Ok(())
}
-
• 指南:Rust Serialization – https://fory.apache.org/docs/docs/guide/rust_serialization
-
• Crate:fory on crates.io – https://crates.io/crates/fory
-
• API 文档:docs.rs – https://docs.rs/fory/latest/fory
Rust 基准测试 📊
下表展示了在多个数据集和规模上,Fory 与 JSON、Protobuf 的序列化吞吐量(TPS,越高越好)对比,结果表面 Fory 性能是 Protobuf/JSON的10倍以上:
序列化结果大小跟 Protobuf Rust 持平:
注意:结果会受到硬件、数据集和实现版本的影响。参阅 Rust 指南了解如何自行运行基准测试:https://github.com/apache/fory/blob/main/rust/benches/README.md
Python:pickle 的替代方案 🐍
pyfory 现在是一款高性能的 pickle/cloudpickle Drop-in Replacement,同时保持一致的简洁 API,并增强安全性与性能。
-
• 在 Python-native 模式(
xlang=False)下序列化任意 Python 对象:全局/本地函数、lambdas、全局/本地类、实例/类/静态方法 -
• 遵循 Python 钩子:
__getstate__、__setstate__、__reduce__、__reduce_ex__ -
• 通过
ref=True提供共享/循环对象图的引用追踪 -
• 借助协议 5 的 out-of-band buffers 和
pickle.PickleBuffer实现零拷贝(如 NumPy、Pandas 等) -
• 安全性:
strict=True支持基于注册的安全策略,DeserializationPolicy提供精细化管控 -
• 线程:
ThreadSafeFory支持多线程安全使用 -
• 熟悉的 API:
dumps/loads是serialize/deserialize的别名
快速上手:
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
延伸阅读:Python Guide – https://fory.apache.org/docs/latest/python_serialization/
📦 快速开始
默认情况下会使用各语言的原生模式以获得最佳性能;只有在需要跨语言互通时,才将序列化模式切换为 xlang=true(或等效选项)。
Rust
[dependencies]
fory = "0.13"
use fory::{Error, Fory};
use fory::ForyObject;
#[derive(ForyObject, Debug, PartialEq)]
struct Person {
name: String,
age: i32,
}
fn main() -> Result<(), Error> {
let mut fory = Fory::default();
fory.register::<Person>(1)?;
let bytes = fory.serialize(&Person { name: "Alice".into(), age: 30 })?;
let decoded: Person = fory.deserialize(&bytes)?;
assert_eq!(decoded.age, 30);
Ok(())
}
Python
python -m pip install --upgrade pip
pip install pyfory==0.13.0
from dataclasses import dataclass
import pyfory
@dataclass
class Person:
name: str
age: pyfory.int32
fory = pyfory.Fory()
fory.register_type(Person)
payload = fory.serialize(Person(name="Alice", age=30))
decoded = fory.deserialize(payload)
print(decoded.name, decoded.age)
Java
<dependency>
<groupId>org.apache.fory</groupId>
<artifactId>fory-core</artifactId>
<version>0.13.0</version>
</dependency>
import org.apache.fory.*;
import org.apache.fory.config.*;
public class QuickStart {
public static class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public static void main(String[] args) {
Fory fory = Fory.builder()
.withLanguage(Language.JAVA)
.requireClassRegistration(true)
.build();
fory.register(Person.class);
byte[] bytes = fory.serialize(new Person("Alice", 30));
Person result = (Person) fory.deserialize(bytes);
System.out.println(result.name + " " + result.age);
}
}
Scala
// SBT Scala 2.13
libraryDependencies += "org.apache.fory" % "fory-scala_2.13" % "0.13.0"
// SBT Scala 3
libraryDependencies += "org.apache.fory" % "fory-scala_3" % "0.13.0"
import org.apache.fory.Fory
import org.apache.fory.config.Language
import org.apache.fory.serializer.scala.ScalaSerializers
case class Person(name: String, age: Int)
object Example {
def main(args: Array[String]): Unit = {
val fory = Fory.builder()
.withLanguage(Language.JAVA)
.requireClassRegistration(true)
.build()
ScalaSerializers.registerSerializers(fory)
fory.register(classOf[Person])
val bytes = fory.serialize(Person("Alice", 30))
val result = fory.deserialize(bytes).asInstanceOf[Person]
println(s"${result.name} ${result.age}")
}
}
Kotlin
<dependency>
<groupId>org.apache.fory</groupId>
<artifactId>fory-kotlin</artifactId>
<version>0.13.0</version>
</dependency>
import org.apache.fory.Fory
import org.apache.fory.config.Language
import org.apache.fory.serializer.kotlin.KotlinSerializers
data class Person(val name: String, val age: Int)
fun main() {
val fory = Fory.builder()
.withLanguage(Language.JAVA)
.requireClassRegistration(true)
.build()
KotlinSerializers.registerSerializers(fory)
fory.register(Person::class.java)
val bytes = fory.serialize(Person("Alice", 30))
val result = fory.deserialize(bytes) as Person
println("${result.name} ${result.age}")
}
Golang
package main
import (
"fmt"
forygo "github.com/apache/fory/go/fory"
)
type Person struct {
Name string
Age int32
}
func main() {
fory := forygo.NewFory(true)
fory.Register(Person{}, 1)
payload, _ := fory.Marshal(Person{Name: "Alice", Age: 30})
var decoded Person
fory.Unmarshal(payload, &decoded)
fmt.Println(decoded.Name, decoded.Age)
}
JavaScript
import Fory, { Type } from "@apache-fory/fory";
import hps from "@apache-fory/hps";
const description = Type.object("example.Person", {
name: Type.string(),
age: Type.int32(),
});
const fory = new Fory({ hps });
const { serialize, deserialize } = fory.registerSerializer(description);
const payload = serialize({ name: "Alice", age: 30 });
const decoded = deserialize(payload);
console.log(decoded.name, decoded.age);
功能特性 ✨
-
• feat(java): 为 graalvm 支持 object stream 序列化 @chaokunyang,https://github.com/apache/fory/pull/2464
-
• refactor(java): 将抽象集合/映射序列化器重命名为 Map/ListLikeSerializer,by @chaokunyang,https://github.com/apache/fory/pull/2466
-
• feat(memory): 新增可定制的 MemoryAllocator interface,by @adriacabeza,https://github.com/apache/fory/pull/2467
-
• feat: 串联 wheel test/build 和 release workflows,by @esafak,https://github.com/apache/fory/pull/2483
-
• feat(python): 为 pyfory 将默认语言设为 python,by @chaokunyang,https://github.com/apache/fory/pull/2490
-
• feat(python): 为 python 新增 register api,by @chaokunyang,https://github.com/apache/fory/pull/2491
-
• feat(python): 为 python 提供 meta compression,by @chaokunyang,https://github.com/apache/fory/pull/2504
-
• feat(python): 为 python 提供 type meta encoding,by @chaokunyang,https://github.com/apache/fory/pull/2509
-
• feat(CI): Cache npm,新增 node 24 与 lock file,by @esafak,https://github.com/apache/fory/pull/2523
-
• feat(Rust): 实现 Type Compatible,by @urlyy,https://github.com/apache/fory/pull/2492
-
• feat(Rust): 在 MetaFieldType se/de 中支持 Option,by @urlyy,https://github.com/apache/fory/pull/2528
-
• feat(rust): 在 compatible 模式反序列化时支持 skipping fields bytes,by @urlyy,https://github.com/apache/fory/pull/2545
-
• feat(go): 为 meta share 新增 type meta encoding,by @junjiexh,https://github.com/apache/fory/pull/2554
-
• feat(Rust): 反序列化时支持 T 与
Option<T>的自动转换,by @urlyy,https://github.com/apache/fory/pull/2563 -
• feat(java): bean encoder 实现的 interfaces 支持
@Ignore,by @stevenschlansker,https://github.com/apache/fory/pull/2576 -
• refactor(java): 重构 fory java exception hierarchical structure,by @chaokunyang,https://github.com/apache/fory/pull/2577
-
• feat(Go): 为 fory-go serialization 实现 ahead of time codegen,by @ThisingL,https://github.com/apache/fory/pull/2553
-
• feat(java): 支持限制 deserialization depth,by @chaokunyang,https://github.com/apache/fory/pull/2578
-
• feat(rust): 新增 fory rust benchmark,by @chaokunyang,https://github.com/apache/fory/pull/2583
-
• perf(rust): 优化 rust deserialize 性能,by @chaokunyang,https://github.com/apache/fory/pull/2584
-
• feat(rust): 新增 rust profiler for serialization,by @chaokunyang,https://github.com/apache/fory/pull/2588
-
• refactor(go): 将 FieldInfo 重命名为 FieldDef 以避免 name collision,by @junjiexh,https://github.com/apache/fory/pull/2594
-
• feat(python): 为 pyfory compatible serialization 提供 meta share mode,by @chaokunyang,https://github.com/apache/fory/pull/2593
-
• feat(java/python): 对齐 java 与 python 的 compatible mode serialization,by @chaokunyang,https://github.com/apache/fory/pull/2602
-
• feat(java/python): 支持 enum xlang serialization,by @chaokunyang,https://github.com/apache/fory/pull/2603
-
• feat(Rust): 支持与 java 对齐的 basic type se/de,by @urlyy,https://github.com/apache/fory/pull/2585
-
• perf(python/java): 修复并优化 cross-language meta-share mode,by @pandalee99,https://github.com/apache/fory/pull/2601
-
• feat(go): 对齐跨语言 primitive arrays 的 type serialization,by @pandalee99,https://github.com/apache/fory/pull/2610
-
• feat(java): 支持 xlang 模式的 codegen,by @chaokunyang,https://github.com/apache/fory/pull/2613
-
• feat(java): 使用 SIMD 的 primitive array compression,by @adriacabeza,https://github.com/apache/fory/pull/2485
-
• refactor(go): 使用 factory-based serializer registration 替换 globalTypeResolver,by @ThisingL,https://github.com/apache/fory/pull/2615
-
• feat(go): 使用 metashare mode 实现 compatible mode,by @junjiexh,https://github.com/apache/fory/pull/2607
-
• feat(java): 在被更新时支持 concurrent map serialization,by @chaokunyang,https://github.com/apache/fory/pull/2617
-
• feat(java): 支持在序列化集合时的 concurrent updates,by @chaokunyang,https://github.com/apache/fory/pull/2623
-
• feat(python): 支持限制 pyfory depth,by @chaokunyang,https://github.com/apache/fory/pull/2625
-
• feat(Rust): 排序 fields、支持 Enum、修复 read/write type_info 以及 type_meta en/decode,by @urlyy,https://github.com/apache/fory/pull/2630
-
• feat(python): 实现 pickle serialization 的 drop-in replacement,by @chaokunyang,https://github.com/apache/fory/pull/2629
-
• refactor(java): 重构 type resolver,by @chaokunyang,https://github.com/apache/fory/pull/2640
-
• feat(java): 为 comaptible mode 支持 type converters,by @chaokunyang,https://github.com/apache/fory/pull/2641
-
• refactor(java/python): 优化 collection header bitmap,by @chaokunyang,https://github.com/apache/fory/pull/2642
-
• feat(go): 在 metashare mode 中支持 collection、map 与 nested object,by @junjiexh,https://github.com/apache/fory/pull/2643
-
• feat(go): 为 fory-go codegen serialization 新增 slice 与 map 支持,by @ThisingL,https://github.com/apache/fory/pull/2638
-
• refactor(go): 将 codegen 注解从 //fory:gen 更名为 //fory:generate,by @ThisingL,https://github.com/apache/fory/pull/2648
-
• feat(rust): 支持 Map 与 register_by_name,by @urlyy,https://github.com/apache/fory/pull/2649
-
• feat(java): 支持 graalvm 25,by @chaokunyang,https://github.com/apache/fory/pull/2652
-
• feat(java): 在 xlang compatible mode 中支持反序列化未注册/不存在的类与字段,by @chaokunyang,https://github.com/apache/fory/pull/2655
-
• refactor(Rust): 重构 compile-time code,修复 named_enum,并修复 skip enum,by @urlyy,https://github.com/apache/fory/pull/2657
-
• feat(python): 支持本地 Python class serialization,by @chaokunyang,https://github.com/apache/fory/pull/2665
-
• refactor(go): 优化 collection header bitmap,by @junjiexh,https://github.com/apache/fory/pull/2656
-
• feat(python): 支持 class methods serialization,by @chaokunyang,https://github.com/apache/fory/pull/2670
-
• refactor(go): 在 codegen 中优化 collection header bitmap,by @ThisingL,https://github.com/apache/fory/pull/2676
-
• feat(rust): 支持 box serde for rust,by @chaokunyang,https://github.com/apache/fory/pull/2677
-
• feat(rust): 为 Rust Rc/Arc 支持 reference tracking,by @chaokunyang,https://github.com/apache/fory/pull/2678
-
• feat(python): 优化 python serialization api,by @chaokunyang,https://github.com/apache/fory/pull/2673
-
• refactor(Rust): 优化 api name,by @urlyy,https://github.com/apache/fory/pull/2671
-
• feat(rust): 支持 rust dyn trait object serialization,by @chaokunyang,https://github.com/apache/fory/pull/2691
-
• feat(rust): 为 box/arc/rc 支持 dyn any trait object serialization,by @chaokunyang,https://github.com/apache/fory/pull/2704
-
• feat(rust): 为
arc/rc<dyn T>支持 shared reference tracking,by @chaokunyang,https://github.com/apache/fory/pull/2707 -
• feat(rust): 避免在同一 module 的多个 trait objects 中 downcast method 冲突,by @chaokunyang,https://github.com/apache/fory/pull/2708
-
• feat(rust): 为 arc/rc wrapper 新增 deref,by @chaokunyang,https://github.com/apache/fory/pull/2709
-
• refactor(rust): 将 rc/arc wrapper macro arms 统一为单一函数,by @chaokunyang,https://github.com/apache/fory/pull/2711
-
• perf(Rust): 使用 SIMD 进行字符串 se/de,by @urlyy,https://github.com/apache/fory/pull/2716
-
• feat(Rust): 支持 named_xx se/de、ext se/de,并新增 unittest,by @urlyy,https://github.com/apache/fory/pull/2712
-
• feat(rust): 支持 RcWeak/ArcWeak 以实现循环引用追踪,by @chaokunyang,https://github.com/apache/fory/pull/2714
-
• feat(rust): 支持限制 max dyn depth,by @chaokunyang,https://github.com/apache/fory/pull/2730
-
• feat(Rust): 解开字段循环并为其新增 feature,by @urlyy,https://github.com/apache/fory/pull/2724
-
• feat(python): 让 fory out-of-band serialization 兼容 pickle5,by @chaokunyang,https://github.com/apache/fory/pull/2732
-
• refactor(go): 替换 legacy RegisterTagType api 调用,by @junjiexh,https://github.com/apache/fory/pull/2696
-
• feat(python): 新增 thread safe fory,by @chaokunyang,https://github.com/apache/fory/pull/2735
-
• feat(rust): 支持 VecDeque/LinkedList serialization,by @chaokunyang,https://github.com/apache/fory/pull/2741
-
• feat(rust): 支持 btreemap serialization,by @chaokunyang,https://github.com/apache/fory/pull/2743
-
• feat(rust): 支持 btree set 与 binary heap serialization,by @chaokunyang,https://github.com/apache/fory/pull/2744
-
• feat(Rust): 引入 context_pool 以减少 context allocation,并支持 multi-thread se/de,by @urlyy,https://github.com/apache/fory/pull/2737
-
• feat(ci): 在 Python CI workflow 中缓存 Bazel binary,by @SanyamSuyal,https://github.com/apache/fory/pull/2745
-
• feat(rust): 通过 compile-time fields sort algorithm 重写 fory derive macro,生成更小更快的代码,by @chaokunyang,https://github.com/apache/fory/pull/2749
-
• feat(ci): 在 CI 中新增 maven cache 加速构建,by @chaokunyang,https://github.com/apache/fory/pull/2751
-
• feat(rust): 使用匹配分配字段 id 的 fast fory_read_compatible macro,by @chaokunyang,https://github.com/apache/fory/pull/2758
-
• refactor(rust): 使用 compatible bool 替代 enum 简化 API,by @chaokunyang,https://github.com/apache/fory/pull/2763
-
• feat(rust): 从 parsed cache 查询 type meta 加速反序列化,by @chaokunyang,https://github.com/apache/fory/pull/2764
-
• feat(java): 引入 Compact Row Codec,by @stevenschlansker,https://github.com/apache/fory/pull/2414
-
• feat(go): 为 meta share mode 新增 pointer field test,by @junjiexh,https://github.com/apache/fory/pull/2674
-
• feat(rust): 让 Serializer api 返回 Result,并以 Result 替换 panic/expect/assert/unwrap,by @urlyy,https://github.com/apache/fory/pull/2765
-
• feat(rust): 重构 rust serialization system,by @chaokunyang,https://github.com/apache/fory/pull/2774
-
• feat(python): 为 dataclass fields 支持 optional typehint,by @chaokunyang,https://github.com/apache/fory/pull/2766
-
• feat(rust): 实现 dynamic rust serializer system,by @chaokunyang,https://github.com/apache/fory/pull/2778
-
• feat(rust): 使用 rc 替换 arc 存储 type meta 以提升性能,by @chaokunyang,https://github.com/apache/fory/pull/2782
-
• feat(python): 为 python native mode 的 dataclass 提供 compatible mode,by @chaokunyang,https://github.com/apache/fory/pull/2784
-
• feat(java): 在反序列化未存在的 enum variant 时支持回退到 default,by @chaokunyang,https://github.com/apache/fory/pull/2787
-
• feat(go): 更新 codegen field 排序,生成更小、更快的代码,by @ThisingL,https://github.com/apache/fory/pull/2779
-
• feat(rust): 让 type meta resolve 直接返回 type info,by @chaokunyang,https://github.com/apache/fory/pull/2789
-
• perf(Rust): 在 MetaStringResolver 中移除 MetaString/MetaStringBytes 的 clone()/to_owned(),提升性能,并修复 xlang 测试,by @urlyy,https://github.com/apache/fory/pull/2791
-
• feat(rust): 支持 rust 的 static struct version hash check,by @chaokunyang,https://github.com/apache/fory/pull/2793
-
• feat(rust): 支持在 rust benchmark 中为所有数据类型生成 profile,by @chaokunyang,https://github.com/apache/fory/pull/2801
-
• perf(rust): 通过移除 copy simd 并添加更多 inline hints 优化 rust 性能,by @chaokunyang,https://github.com/apache/fory/pull/2807
-
• perf(rust): 始终以 utf8 写入字符串,by @chaokunyang,https://github.com/apache/fory/pull/2809
-
• feat(python): 新增 deserialization policy,以便更细粒度地控制与审计反序列化行为,by @chaokunyang,https://github.com/apache/fory/pull/2811
-
• perf(Rust): 提升性能,by @theweipeng,https://github.com/apache/fory/pull/2810
-
• feat(Rust): 支持 serialize_to,by @theweipeng,https://github.com/apache/fory/pull/2822
-
• feat(rust): 延迟构建 rust 的 typeinfo,避免嵌套 struct register 依赖,by @chaokunyang,https://github.com/apache/fory/pull/2824
-
• perf(Rust): 重构 reader,by @theweipeng,https://github.com/apache/fory/pull/2826
-
• perf(python): 优化 pyfory 性能,by @chaokunyang,https://github.com/apache/fory/pull/2829
Bug 修复 🛠️
-
• fix(java): 修复 map/list element type 与 collection type 相同导致的 jit 错误,by @chaokunyang,https://github.com/apache/fory/pull/2465
-
• fix(python): 修复 gh action pypi 发布流程,by @chaokunyang,https://github.com/apache/fory/pull/2468
-
• fix(java): 修复 private struct 的 row encoder,by @chaokunyang,https://github.com/apache/fory/pull/2469
-
• fix(python): 修复 pyfory pypi 发布,by @chaokunyang,https://github.com/apache/fory/pull/2473
-
• fix(python): 修复 macos 13 上的 py 发布,by @chaokunyang,https://github.com/apache/fory/pull/2478
-
• fix(ci): 使用 manylinux2014 中的 interpreters 构建 python wheels,by @esafak,https://github.com/apache/fory/pull/2486
-
• fix(java): 让 Encoders.mapEncoder(TypeRef, TypeRef, TypeRef, Fory) 加载 bean classes,by @stevenschlansker,https://github.com/apache/fory/pull/2494
-
• fix(java): 解决 row format generated bean types 处理 Optional 的问题,by @stevenschlansker,https://github.com/apache/fory/pull/2497
-
• fix: 修复 addListener 不释放锁的问题,by @open-snail,https://github.com/apache/fory/pull/2500
-
• fix(ci): 在 $ROOT/dist 中分发 wheel,by @esafak,https://github.com/apache/fory/pull/2506
-
• fix(python): 修复 workflow 的 publich tag,by @chaokunyang,https://github.com/apache/fory/pull/2517
-
• fix(ci): 打印 workflow head branch,by @chaokunyang,https://github.com/apache/fory/pull/2518
-
• fix(python): 修复 release python wheel head_branch tag,by @chaokunyang,https://github.com/apache/fory/pull/2519
-
• fix(java): 修复 MemoryBuffer tests 在 size 为零的 buffer 上验证 equalTo 的问题,by @stevenschlansker,https://github.com/apache/fory/pull/2524
-
• fix(ci): 将 tag 传给 bump_py_version,并在 manylinux 容器内设置 PLAT,by @esafak,https://github.com/apache/fory/pull/2522
-
• fix(ci): 在 Windows 使用 ref_name tag,命名 release runs,验证 wheel 版本,并在发布中使用所有 python 版本,by @esafak,https://github.com/apache/fory/pull/2532
-
• ci: 修复 verify_version() 捕获版本的方式,by @esafak,https://github.com/apache/fory/pull/2535
-
• fix(python): 修复 bump_wheel version,by @chaokunyang,https://github.com/apache/fory/pull/2534
-
• fix(python): 修复 bump version,by @chaokunyang,https://github.com/apache/fory/pull/2536
-
• fix(python): 新增 macos 13 发布,by @chaokunyang,https://github.com/apache/fory/pull/2538
-
• fix(ci): 为 betahuhn/repo-file-sync-action 使用小写,by @chaokunyang,https://github.com/apache/fory/pull/2541
-
• fix(ci): 为 repo-file-sync-action 使用 commit hash,by @chaokunyang,https://github.com/apache/fory/pull/2542
-
• fix(java): 修复 array encoder 在 encode(T) 中浪费 8 字节的问题,by @stevenschlansker,https://github.com/apache/fory/pull/2551
-
• fix(ci): 在 golang xlang tests 中安装 pyfory,by @esafak,https://github.com/apache/fory/pull/2561
-
• fix(ci): 在 run_ci.py 中使用子进程返回码退出,by @esafak,https://github.com/apache/fory/pull/2560
-
• fix(java): 修复 codegen name conflict,by @chaokunyang,https://github.com/apache/fory/pull/2565
-
• fix(java): 修复 graalvm 的 classinfo npe,by @chaokunyang,https://github.com/apache/fory/pull/2572
-
• fix(java): 如果 checkClassVersion 为 false,则跳过 classVersionHash 计算,by @theigl,https://github.com/apache/fory/pull/2573
-
• fix(java): 为 abstract field type 跳过 hash 计算,by @chaokunyang,https://github.com/apache/fory/pull/2575
-
• fix(java): 修复 row format buffer recycling 在 null 值时保留 offset 和 size 的问题,by @stevenschlansker,https://github.com/apache/fory/pull/2540
-
• fix(java): 修复 xlang register type by id,by @chaokunyang,https://github.com/apache/fory/pull/2591
-
• fix(java): 修复 java 的 xlang mode meta shared,by @chaokunyang,https://github.com/apache/fory/pull/2592
-
• fix(python): 修复 pyfory 构建依赖失败,by @pandalee99,https://github.com/apache/fory/pull/2596
-
• fix(python): 删除 typedef 中的冗余代码,by @pandalee99,https://github.com/apache/fory/pull/2600
-
• fix(java): 修复 xlang metashare mode 的 register by id,by @chaokunyang,https://github.com/apache/fory/pull/2614
-
• fix(java/python): 修复 meta string encoding 顺序,by @chaokunyang,https://github.com/apache/fory/pull/2616
-
• fix(go): 在 factory-based serializer system 中完善 type registration,by @ThisingL,https://github.com/apache/fory/pull/2619
-
• fix(python): 修复 pyfory depth limit,by @chaokunyang,https://github.com/apache/fory/pull/2626
-
• fix(java): 修复 codegen 获取 nested genericType,by @chaokunyang,https://github.com/apache/fory/pull/2632
-
• fix(python): 注册 dynamic serializer 时取消 registration 要求,by @chaokunyang,https://github.com/apache/fory/pull/2634
-
• fix(java): 修复 graalvm25 上的 record serialization,by @chaokunyang,https://github.com/apache/fory/pull/2644
-
• fix(java): 修复 xlang 的 field converter,by @chaokunyang,https://github.com/apache/fory/pull/2654
-
• fix(java): 修复 graalvm 上 array serialization,by @chaokunyang,https://github.com/apache/fory/pull/2664
-
• fix(java): 修复注册时的 meta share deserialization,by @chaokunyang,https://github.com/apache/fory/pull/2667
-
• fix(java): 在 graalvm native images 中保留 serializers,by @gudzpoz,https://github.com/apache/fory/pull/2680
-
• fix(java): 修复 graalvm 不使用 generated serializer 的问题,by @chaokunyang,https://github.com/apache/fory/pull/2682
-
• fix(java): 修复 java 中 xlang serializer 注册,by @chaokunyang,https://github.com/apache/fory/pull/2683
-
• fix(java): 修复 InputStream 读取大 buffer 的错误,by @wuwangben,https://github.com/apache/fory/pull/2687
-
• fix(python): 修复 python module/type serialize,by @chaokunyang,https://github.com/apache/fory/pull/2688
-
• fix(java): 修复 CollectionSerializersTest#tesPriorityQueueSerializer 的不稳定性,by @swj20010308,https://github.com/apache/fory/pull/2693
-
• fix(java): 修复 LazyMapTest#testMap 的不稳定性,by @swj20010308,https://github.com/apache/fory/pull/2692
-
• fix(java): 修复 EXT type 反序列化错误,by @mengnankkkk,https://github.com/apache/fory/pull/2700
-
• fix(java): 修复 xlang typedef encode,by @chaokunyang,https://github.com/apache/fory/pull/2719
-
• fix(java): 修复 MetaContextTest#testShareClassName 与 #testShareClassDefCompatible 的不稳定性,by @swj20010308,https://github.com/apache/fory/pull/2739
-
• fix(java): 修复 ForyCopyTest#mutableObjectCopyTest 的不稳定性,by @swj20010308,https://github.com/apache/fory/pull/2738
-
• fix(ci): 为 Bazel 下载新增重试逻辑以避免 flaky CI,by @SanyamSuyal,https://github.com/apache/fory/pull/2733
-
• fix(java): 在 xlang mode 中序列化只包含 null 元素的集合,by @mymde,https://github.com/apache/fory/pull/2740
-
• fix(ci): 修复 sync file,by @chaokunyang,https://github.com/apache/fory/pull/2750
-
• fix(ci): 修复 sync files,by @chaokunyang,https://github.com/apache/fory/pull/2752
-
• fix(docs): 修复 rust 文档链接构建与检查,by @chaokunyang,https://github.com/apache/fory/pull/2753
-
• fix(java): 修复 maven cache,by @chaokunyang,https://github.com/apache/fory/pull/2755
-
• fix(rust): 修复 rust xlang tests,by @chaokunyang,https://github.com/apache/fory/pull/2788
-
• fix(java): 修复 CollectionSerializersTest#testCollectionFieldSerializers、CollectionSerializersTest#testCollectionFieldSerializersCopy 与 ProtocolInteroperabilityTest#testComplexCollection 的不稳定性,by @swj20010308,https://github.com/apache/fory/pull/2790
-
• fix(java): 修复 java shanpshot version,by @chaokunyang,https://github.com/apache/fory/pull/2800
-
• fix(go): 调整 nullable value 的序列化以对齐 python 行为,by @junjiexh,https://github.com/apache/fory/pull/2814
其他改进 🔧
-
• chore(python): 禁用 pyfory.format import warning,by @chaokunyang,https://github.com/apache/fory/pull/2476
-
• chore: 将 release version 升级到 0.12.0,by @chaokunyang,https://github.com/apache/fory/pull/2489
-
• docs: 修复 meta_size_mask,by @urlyy,https://github.com/apache/fory/pull/2495
-
• chore: 修复错别字,by @Asnowww,https://github.com/apache/fory/pull/2496
-
• docs: 改进 pyfory PyPI 文档,by @esafak,https://github.com/apache/fory/pull/2498
-
• docs(python): 新增 row format 文档,by @chaokunyang,https://github.com/apache/fory/pull/2499
-
• chore: 将中文注释翻译成英语,by @Asnowww,https://github.com/apache/fory/pull/2503
-
• docs: 改进 pull request template,by @esafak,https://github.com/apache/fory/pull/2508
-
• ci: 修复 Windows wheel creation,by @esafak,https://github.com/apache/fory/pull/2511
-
• ci: 将 GH token 传递给 actions/download-artifact,by @esafak,https://github.com/apache/fory/pull/2514
-
• chore: 修复 MetaStrEncoding,by @co63oc,https://github.com/apache/fory/pull/2516
-
• chore(javascript): 将 foryjs 更名为 apache-fory 并移除 install docs,by @chaokunyang,https://github.com/apache/fory/pull/2544
-
• chore: 将 release version 升级到 0.12.1,by @chaokunyang,https://github.com/apache/fory/pull/2556
-
• docs: 在 contributing.md 中新增 Rust lint 命令,by @urlyy,https://github.com/apache/fory/pull/2569
-
• chore(ci): 使用 str replace 加速 java version bump,by @chaokunyang,https://github.com/apache/fory/pull/2568
-
• docs(java): 新增 idea jdk11 usage config,by @chaokunyang,https://github.com/apache/fory/pull/2570
-
• docs(rust): 新增 rust document,by @chaokunyang,https://github.com/apache/fory/pull/2582
-
• chore: 将 release version 升级到 0.12.2,by @chaokunyang,https://github.com/apache/fory/pull/2589
-
• chore: 为 fory 名称新增 trademark,by @chaokunyang,https://github.com/apache/fory/pull/2590
-
• chore: 回滚 "fix(python): Fix the build dependency failure that occurred in pyfory",by @chaokunyang,https://github.com/apache/fory/pull/2597
-
• chore: 移除 homepage URL 中的斜杠,by @chaokunyang,https://github.com/apache/fory/pull/2604
-
• chore(go): 将所有 typ 替换为 type_,by @chaokunyang,https://github.com/apache/fory/pull/2612
-
• chore: 将 release version 升级到 0.12.3,by @chaokunyang,https://github.com/apache/fory/pull/2645
-
• docs: 新增 AGENT.md,提升 AI 编码效率,by @chaokunyang,https://github.com/apache/fory/pull/2646
-
• chore(rust): 移除 tag read/write,by @chaokunyang,https://github.com/apache/fory/pull/2681
-
• docs(python): 优化 python README 并补充详细文档,by @chaokunyang,https://github.com/apache/fory/pull/2689
-
• docs(python): 在 README 中更新 schema evolution 支持,by @chaokunyang,https://github.com/apache/fory/pull/2690
-
• docs: 修复 python README lint,by @chaokunyang,https://github.com/apache/fory/pull/2694
-
• docs(rust): 新增全面的 rust README 文档,by @chaokunyang,https://github.com/apache/fory/pull/2723
-
• docs(rust): 补充详尽的 rust API 文档与 README,by @chaokunyang,https://github.com/apache/fory/pull/2728
-
• docs: 将 rust 与 python 文档同步至 fory-site,by @chaokunyang,https://github.com/apache/fory/pull/2734
-
• docs(rust): 更新 rust roadmap,by @chaokunyang,https://github.com/apache/fory/pull/2754
-
• docs(rust): 修复 rust 文档的断链,by @chaokunyang,https://github.com/apache/fory/pull/2756
-
• docs(rust): 修复 rust 文档 lint,by @chaokunyang,https://github.com/apache/fory/pull/2757
-
• docs(go): 更新 README.md,by @junjiexh,https://github.com/apache/fory/pull/2675
-
• docs(rust): 新增 rust thread safety 与 troubleshooting 文档,by @chaokunyang,https://github.com/apache/fory/pull/2781
-
• chore(rust): 将 fory-tests 重命名为 tests,by @chaokunyang,https://github.com/apache/fory/pull/2783
-
• docs(rust): 更新 rust serializer trait 文档,by @chaokunyang,https://github.com/apache/fory/pull/2795
-
• chore: 修复 release error,by @chaokunyang,https://github.com/apache/fory/pull/2796
-
• chore(python): 重命名 numeric typehint,by @chaokunyang,https://github.com/apache/fory/pull/2808
-
• chore(rust): 重排 fory rust methods,by @chaokunyang,https://github.com/apache/fory/pull/2813
-
• docs(python): 优化 python 代码并新增 API 文档,by @chaokunyang,https://github.com/apache/fory/pull/2816
-
• chore(ci): 为 rust/c++ 移除 macos13 CI,by @chaokunyang,https://github.com/apache/fory/pull/2817
-
• chore(rust): 将 metastring 重命名为 meta_string,by @urlyy,https://github.com/apache/fory/pull/2812
-
• docs(rust): 新增 serialize_to API 文档,by @chaokunyang,https://github.com/apache/fory/pull/2825
-
• chore(Rust): Streamline code,by @theweipeng,https://github.com/apache/fory/pull/2828
-
• docs(rust): 将文档中的 serialize 更新为 deserialize,by @chaokunyang,https://github.com/apache/fory/pull/2830
-
• chore(Rust): 在 context.rs 中移除 new_from_fory,by @urlyy,https://github.com/apache/fory/pull/2831
新增贡献者 🙌
-
• @adriacabeza 在 https://github.com/apache/fory/pull/2467 完成首次贡献
-
• @Asnowww 在 https://github.com/apache/fory/pull/2496 完成首次贡献
-
• @open-snail 在 https://github.com/apache/fory/pull/2500 完成首次贡献
-
• @junjiexh 在 https://github.com/apache/fory/pull/2554 完成首次贡献
-
• @ThisingL 在 https://github.com/apache/fory/pull/2553 完成首次贡献
-
• @gudzpoz 在 https://github.com/apache/fory/pull/2680 完成首次贡献
-
• @wuwangben 在 https://github.com/apache/fory/pull/2687 完成首次贡献
-
• @swj20010308 在 https://github.com/apache/fory/pull/2693 完成首次贡献
-
• @mengnankkkk 在 https://github.com/apache/fory/pull/2700 完成首次贡献
-
• @SanyamSuyal 在 https://github.com/apache/fory/pull/2733 完成首次贡献
-
• @mymde 在 https://github.com/apache/fory/pull/2740 完成首次贡献
完整更新日志:https://github.com/apache/fory/compare/v0.12.3...v0.13.0
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
【腾讯 × 嘉为科技】 专题沙龙 |:共筑韧性运维底座
在数字化转型的浪潮中,运维不再只是“救火队”,而是企业韧性的基石。 11月15日,腾讯蓝鲸智云携手嘉为科技,邀您共赴【稳定筑基·轻量演进】运维主题沙龙。 从“卡顿到稳定”,从“工具孤岛到智能一体”,从“急诊室到PH医院”, 解锁蓝鲸生态的实战演进,体验 BkLite 带来的轻盈与智能运维新范式。 📅 活动时间: 11月15日 13:30 - 17:30 📍 活动地点: 深圳·腾讯大厦 二楼梦梦剧厅 扫码报名,共探未来运维的稳与轻!
-
下一篇
字体设计工具字玩 v0.3.4 发布,新增字母数字参数化模板雏形
字玩是一款开源的字体设计工具,致力于探索以参数化、脚本化的方式设计中文字库,帮助用户高效设计个性化字体。使用Vue3 + Tauri2开发,支持Web端、MacOS和Windows平台。 开源地址: 字玩在gitee| 字玩在github v0.3.4版本更新说明 1. 新增大写字母参数化模板雏形 2. 新增小写字母参数化模板雏形 3. 新增数字参数化模板雏形 4. 绘制部分基础西文参数化衬线 这次更新主要使用程序绘制了西文参数化模板的雏形,可以实现基本的拖拽骨架调整字母数字字符结构。尽管字形还不太美观,还有很多可优化的空间。目前骨架结构比较简单,很多地方的曲率都不能修改,之后还会进一步优化。 另外,这次更新也绘制了部分基础西文衬线,目前只设置了衬线类型和衬线大小两个相关参数,之后还会丰富可调参样式。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,7,8上安装Nginx,支持https2.0的开启



微信收款码
支付宝收款码