Apache Fury 团队很高兴宣布 0.7.0 版本发布。这是一个重要版本,包含来自 7 位贡献者的24 PR。请参阅Install页面了解如何获取适用于你平台的库。
亮点
实验特性
新增 Java 高性能对象深拷贝框架:
Fury fury = Fury.builder().withRefCopy(true).build();
fury.register(SomeClass.class);
SomeClass a = xxx;
SomeClass copied = fury.copy(a);
基准结果:
| Benchmark | objectType | Score | Error | Units |
|---|---|---|---|---|
| fury_copy | MEDIA_CONTENT | 1243297.690 | ± 451828.452 | ops/s |
| fury_copy | SAMPLE | 2670545.816 | ± 1378536.021 | ops/s |
| fury_copy | STRUCT | 2673356.422 | ± 202288.322 | ops/s |
| fury_copy | STRUCT2 | 1943587.774 | ± 392513.707 | ops/s |
| fury_copy_int_map | int map | 1470264.733 | ± 1021875.257 | ops/s |
| fury_copy_list | int list | 3556892.276 | ± 127410.724 | ops/s |
| fury_copy_object_array | array | 4430589.112 | ± 25366.893 | ops/s |
| fury_copy_string_map | string map | 1736145.327 | ± 377806.877 | ops/s |
| kryo_copy | MEDIA_CONTENT | 804208.092 | ± 27429.069 | ops/s |
| kryo_copy | SAMPLE | 717669.608 | ± 71093.370 | ops/s |
| kryo_copy | STRUCT | 1076048.642 | ± 223194.146 | ops/s |
| kryo_copy | STRUCT2 | 141374.767 | ± 14150.535 | ops/s |
| kryo_copy_int_map | int map | 546203.187 | ± 54669.173 | ops/s |
| kryo_copy_list | int list | 843643.496 | ± 312306.921 | ops/s |
| kryo_copy_object_array | object array | 1593267.344 | ± 1721824.436 | ops/s |
| kryo_copy_string_map | string map | 574809.875 | ± 47316.340 | ops/s |
功能特性
- feat(Rust): add meta string encoding algorithm in Rust by @urlyy in https://github.com/apache/fury/pull/1712
- feat(Rust): Implement utf16 to utf8 conversion algorithm by @urlyy in https://github.com/apache/fury/pull/1730
- perf(java): add struct benchmark with pb by @chaokunyang in https://github.com/apache/fury/pull/1736
- feat(java): fast object copy framework in fury java by @zhaommmmomo in https://github.com/apache/fury/pull/1701
- perf(java): optimize pojo copy performance by @chaokunyang in https://github.com/apache/fury/pull/1739
- feat(java): support jdk17+ record copy by @chaokunyang in https://github.com/apache/fury/pull/1741
- feat(RUST): String detection is performed using SIMD techniques by @kitty-eu-org in https://github.com/apache/fury/pull/1752
- feat(java): Add 'Expose' annotation to support "only de/serialize annotated fields" by @urlyy in https://github.com/apache/fury/pull/1751
- feat(java): support Ignore inconsistent types deserialize by @weijiang157152688 in https://github.com/apache/fury/pull/1737
- perf(java): optimize map copy perf by @chaokunyang in https://github.com/apache/fury/pull/1767
- perf(java): optimize list copy perf by @chaokunyang in https://github.com/apache/fury/pull/1769
- perf(java): optimize object array copy perf by @chaokunyang in https://github.com/apache/fury/pull/1770
- feat(java): support deep ref copy by @chaokunyang in https://github.com/apache/fury/pull/1771
缺陷修复
- fix(java): fix janino commons classes issue by @chaokunyang in https://github.com/apache/fury/pull/1753
- fix(scala): fix scala release version by @chaokunyang in https://github.com/apache/fury/pull/1756
- fix(java): fix streaming classdef read by @chaokunyang in https://github.com/apache/fury/pull/1758
- fix(java): fix big buffer streaming MetaShared read offset by @chaokunyang in https://github.com/apache/fury/pull/1760
- fix(java): fix fury logger npe by @chaokunyang in https://github.com/apache/fury/pull/1762
- fix(java): fix enum abstract field serialization by @chaokunyang in https://github.com/apache/fury/pull/1765
- fix(java): Fix memory leak in
StructSerializer.xread()caused by re-pushing instead of poppingGenericType. by @komamitsu in https://github.com/apache/fury/pull/1768
其他改进
- chore: Update case in DISCLAIMER by @pjfanning in https://github.com/apache/fury/pull/1746
- chore: bump dev version to 0.7.0 by @chaokunyang in https://github.com/apache/fury/pull/1755
- chore(java): rename copyTrackingRef to copyRef by @chaokunyang in https://github.com/apache/fury/pull/1748
- chore(java): add fury deep copy documentation by @chaokunyang in https://github.com/apache/fury/pull/1773
新贡献者
- @urlyy made their first contribution in https://github.com/apache/fury/pull/1712
- @zhaommmmomo made their first contribution in https://github.com/apache/fury/pull/1701
- @kitty-eu-org made their first contribution in https://github.com/apache/fury/pull/1752
- @komamitsu made their first contribution in https://github.com/apache/fury/pull/1768
完整更新日志:https://github.com/apache/fury/compare/v0.6.0...v0.7.0
致谢
感谢 @komamitsu @pjfanning @chaokunyang @weijiang157152688 @kitty-eu-org @urlyy @zhaommmmomo 衷心感谢所有为本次发布付出努力的贡献者。无论是代码贡献、 文档改进,还是问题反馈,都非常宝贵。
