The Apache Fury team is pleased to announce the 0.7.0 release. This is a major release that includes 24 PR from 7 distinct contributors. See the Install Page to learn how to get the libraries for your platform.
High Light
Experimental
Implement fast object deep copy framework for java:
Fury fury = Fury.builder().withRefCopy(true).build();
fury.register(SomeClass.class);
SomeClass a = xxx;
SomeClass copied = fury.copy(a);
Benchmark result:
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 |
Features
- 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
Bug Fix
- 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
Other Improvements
- 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
New Contributors
- @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
Full Changelog: https://github.com/apache/fury/compare/v0.6.0...v0.7.0
Acknowledgements
Thanks @komamitsu @pjfanning @chaokunyang @weijiang157152688 @kitty-eu-org @urlyy @zhaommmmomo A big thank you to all our contributors who have worked hard on this release. Your contributions, whether through code, documentation, or issue reporting, are really appreciated.
Full Changelog: https://github.com/apache/fury/compare/v0.6.0...v0.7.0