v0.7.0
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 | 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 | 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 #1712
- feat(Rust): Implement utf16 to utf8 conversion algorithm by @urlyy in #1730
- perf(java): add struct benchmark with pb by @chaokunyang in #1736
- feat(java): fast object copy framework in fury java by @zhaommmmomo in #1701
- perf(java): optimize pojo copy performance by @chaokunyang in #1739
- feat(java): support jdk17+ record copy by @chaokunyang in #1741
- feat(RUST): String detection is performed using SIMD techniques by @kitty-eu-org in #1752
- feat(java): Add 'Expose' annotation to support "only de/serialize annotated fields" by @urlyy in #1751
- feat(java): support Ignore inconsistent types deserialize by @weijiang157152688 in #1737
- perf(java): optimize map copy perf by @chaokunyang in #1767
- perf(java): optimize list copy perf by @chaokunyang in #1769
- perf(java): optimize object array copy perf by @chaokunyang in #1770
- feat(java): support deep ref copy by @chaokunyang in #1771
Bug Fix
- fix(java): fix janino commons classes issue by @chaokunyang in #1753
- fix(scala): fix scala release version by @chaokunyang in #1756
- fix(java): fix streaming classdef read by @chaokunyang in #1758
- fix(java): fix big buffer streaming MetaShared read offset by @chaokunyang in #1760
- fix(java): fix fury logger npe by @chaokunyang in #1762
- fix(java): fix enum abstract field serialization by @chaokunyang in #1765
- fix(java): Fix memory leak in
StructSerializer.xread()
caused by re-pushing instead of poppingGenericType
. by @komamitsu in #1768
Other Improvements
- chore: Update case in DISCLAIMER by @pjfanning in #1746
- chore: bump dev version to 0.7.0 by @chaokunyang in #1755
- chore(java): rename copyTrackingRef to copyRef by @chaokunyang in #1748
- chore(java): add fury deep copy documentation by @chaokunyang in #1773
New Contributors
- @urlyy made their first contribution in #1712
- @zhaommmmomo made their first contribution in #1701
- @kitty-eu-org made their first contribution in #1752
- @komamitsu made their first contribution in #1768
Full Changelog: v0.6.0...v0.7.0