Skip to content

Releases: apache/fury

v0.10.0-rc1

09 Feb 16:24
202bb8e
Compare
Choose a tag to compare
v0.10.0-rc1 Pre-release
Pre-release

Highlight

  • Chunk based map serialization
  • Highly optimized JavaScript string serialization

Features

  • feat(java): ReplaceResolveSerializer deep copy by @zhaommmmomo in #1925
  • feat(java): use varint for jdk compatible serializers by @chaokunyang in #1960
  • feat(java): configurable buffer size limit by @theigl in #1963
  • feat(java): make 4 bytes utf16 size header optional for utf8 encoding by @chaokunyang in #2010
  • feat(ci): support building python on windows by @An-DJ in #1885
  • feat(java): Chunk by chunk predictive map serialization protocol by @Hen1ng in #1722
  • feat(java): support streaming encode/decode to/from buffer for row format by @chaokunyang in #2024
  • feat(java): new implementation and protocol refine for chunk based map serialization by @chaokunyang in #2025
  • feat(java): jit support for chunk based map serialization by @chaokunyang in #2027
  • feat(java): Add basicMultiConfigFury dataprovider and add basic map unit test use the dataProvider by @Hen1ng in #2032
  • feat(java): deserialize one pojo into another type by @orisgarno in #2012
  • feat(python): chunk based map serialization for python by @chaokunyang in #2038
  • feat(java): zstd meta compressor by @orisgarno in #2042
  • feat(python): automatic release pyfury on macos and windows by @chaokunyang in #2045
  • feat(javascript): optimize string serializer by @theweipeng in #2043
  • feat(python): add macos pyfury ci by @chaokunyang in #2041

Bug Fix

  • fix(java): Move schema caching to unsafe trait to avoid issues when using non-inferred schema. by @wywen in #1944
  • fix(java): ClassLoaderFuryPooled#setFactoryCallback cannot effect old Fury by @MrChang0 in #1946
  • fix(java): fix find constructor error in generated serializer class caused by duplicated class classloading for Fury by @chaokunyang in #1948
  • fix(c++): fix bazel install by @chaokunyang in #1979
  • fix(java): Fix flakiness in ExpressionVisitorTest#testTraverseExpression by @AmitPr in #1968
  • fix(java): Fix the issue caused by not using readCompressedBytesString during deserialization when string compression is enabled. by @Aliothmoon in #1991
  • fix(java): Compatible mode on de/serialize api failed to deserialize by @orisgarno in #1996
  • fix(java): chunk map serialize an error by @Hen1ng in #2030
  • fix(python): Fix missing parameters and old API names by @pandalee99 in #2049
  • fix(doc): set compressString default value to false by @chaokunyang in #1913
  • fix(java): Remove duplicate maven dependency by @Hen1ng in #2044
  • fix(java): fix duplicate entry write at max chunk size bound by @chaokunyang in #2040

Other Improvements

New Contributors

Full Changelog: v0.9.0...v0.10.0-rc1

v0.10.0

16 Feb 14:17
015b852
Compare
Choose a tag to compare

Highlight

  • Chunk based map serialization
  • Highly optimized JavaScript string serialization

Features

  • feat(java): ReplaceResolveSerializer deep copy by @zhaommmmomo in #1925
  • feat(java): use varint for jdk compatible serializers by @chaokunyang in #1960
  • feat(java): configurable buffer size limit by @theigl in #1963
  • feat(java): make 4 bytes utf16 size header optional for utf8 encoding by @chaokunyang in #2010
  • feat(ci): support building python on windows by @An-DJ in #1885
  • feat(java): Chunk by chunk predictive map serialization protocol by @Hen1ng in #1722
  • feat(java): support streaming encode/decode to/from buffer for row format by @chaokunyang in #2024
  • feat(java): new implementation and protocol refine for chunk based map serialization by @chaokunyang in #2025
  • feat(java): jit support for chunk based map serialization by @chaokunyang in #2027
  • feat(java): Add basicMultiConfigFury dataprovider and add basic map unit test use the dataProvider by @Hen1ng in #2032
  • feat(java): deserialize one pojo into another type by @orisgarno in #2012
  • feat(python): chunk based map serialization for python by @chaokunyang in #2038
  • feat(java): zstd meta compressor by @orisgarno in #2042
  • feat(python): automatic release pyfury on macos and windows by @chaokunyang in #2045
  • feat(javascript): optimize string serializer by @theweipeng in #2043
  • feat(python): add macos pyfury ci by @chaokunyang in #2041

Bug Fix

  • fix(java): Move schema caching to unsafe trait to avoid issues when using non-inferred schema. by @wywen in #1944
  • fix(java): ClassLoaderFuryPooled#setFactoryCallback cannot effect old Fury by @MrChang0 in #1946
  • fix(java): fix find constructor error in generated serializer class caused by duplicated class classloading for Fury by @chaokunyang in #1948
  • fix(c++): fix bazel install by @chaokunyang in #1979
  • fix(java): Fix flakiness in ExpressionVisitorTest#testTraverseExpression by @AmitPr in #1968
  • fix(java): Fix the issue caused by not using readCompressedBytesString during deserialization when string compression is enabled. by @Aliothmoon in #1991
  • fix(java): Compatible mode on de/serialize api failed to deserialize by @orisgarno in #1996
  • fix(java): chunk map serialize an error by @Hen1ng in #2030
  • fix(python): Fix missing parameters and old API names by @pandalee99 in #2049
  • fix(doc): set compressString default value to false by @chaokunyang in #1913
  • fix(java): Remove duplicate maven dependency by @Hen1ng in #2044
  • fix(java): fix duplicate entry write at max chunk size bound by @chaokunyang in #2040

Other Improvements

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.9.0

10 Nov 06:54
Compare
Choose a tag to compare

Highlight

  • Optimized serializers for Fury kotlin support
  • Highly-optimized UTF-8 string encoding implementation for Java(2x faster than JDK utf8 encoding)
  • Reduce metastring hashcode payload for small string(<=16 bytes)
  • Support building C++ libs on windows platform

How to use Fury kotlin

Install:

<dependency>
  <groupId>org.apache.fury</groupId>
  <artifactId>fury-kotlin</artifactId>
  <version>0.9.0</version>
</dependency>

Usage:

import org.apache.fury.Fury
import org.apache.fury.ThreadSafeFury
import org.apache.fury.serializer.kotlin.KotlinSerializers

data class Person(val name: String, val id: Long, val github: String)
data class Point(val x : Int, val y : Int, val z : Int)

fun main(args: Array<String>) {
    // Note: following fury init code should be executed only once in a global scope instead
    // of initializing it everytime when serialization.
    val fury: ThreadSafeFury = Fury.builder().requireClassRegistration(true).buildThreadSafeFury()
    KotlinSerializers.registerSerializers(fury)
    fury.register(Person::class.java)
    fury.register(Point::class.java)

    val p = Person("Shawn Yang", 1, "https://github.com/chaokunyang")
    println(fury.deserialize(fury.serialize(p)))
    println(fury.deserialize(fury.serialize(Point(1, 2, 3))))
}

Features

  • feat(kotlin): Introduce kotlin package with stdlib collections and tests by @wywen in #1877
  • feat(kotlin): Add Unsigned Primitive Support by @wywen in #1886
  • feat(kotlin): Add unsigned array support and tests for arrays and strings by @wywen in #1891
  • feat(java): Refactor String serialization and deserialization by @HuangXingBo in #1890
  • feat(java): support thread safe register callback for scala kotlin by @chaokunyang in #1895
  • feat(scala): add scala range serializer by @chaokunyang in #1899
  • feat(java): add option to treat enum as string by @orisgarno in #1892
  • feat(kotlin): Add tests and support for built-in types from the kotlin stdlib by @wywen in #1901
  • feat(java): reduce metastring hashcode payload for small string(<=16 bytes) by @chaokunyang in #1909
  • feat(javascript): Added serialization and serialization for Type Meta Layer by @Forchapeatl in #1825
  • feat(bazel): support building C++ libs on windows platform by @An-DJ in #1873
  • feat(scala): support scala native image build by @chaokunyang in #1922
  • perf(python): Add python benchmark test by @penguin-wwy in #1916

Bug Fix

  • fix(scala): ban these sbt commands by @pjfanning in #1862
  • fix(java): fix async compilation switch for non-public nested class by @chaokunyang in #1883
  • fix(java): fix add fury thread safety issue by @chaokunyang in #1889
  • fix(other): fix feature request template by @chaokunyang in #1898
  • fix(java): NonExistentEnum on mode serializeEnumByName by @orisgarno in #1904
  • fix(java): ThreadLocalFury and ThreadPoolFury prioritize using the user classloader by @Aliothmoon in #1907
  • fix(java): child container deep copy by @zhaommmmomo in #1911
  • fix(java): Fix incorrect results of utf16 to utf8 conversion for latin1 but not ascii characters in #1914
  • fix(python): Eliminate PytestCollectionWarning when running pytest by @penguin-wwy in #1917

Other Improvements

  • chore(py314): Replace deprecated pkgutil.find_loader by @effigies in #1888
  • docs(guide): Fix package typo by @mandrean in #1906
  • build(kotlin): Add spotless ktfmt and enable explicit api mode for library code. by @wywen in #1912
  • build(deps): upgrade scala (2.13.15/3.3.4) by @pjfanning in #1861
  • feat(rust): add rust-analyzer to toolchain by @caicancai in #1865
  • chore(scala): add scala build script by @chaokunyang in #1920
  • chore(kotlin): add parent pom for fury kotlin by @chaokunyang in #1921
  • feat(java): Improve error message on architecture not using little-endian format by @apupier in #1918

New Contributors

Full Changelog: v0.8.0...v0.9.0

v0.9.0-rc2

03 Nov 16:08
Compare
Choose a tag to compare
v0.9.0-rc2 Pre-release
Pre-release

Highlight

  • Optimized serializers for Fury kotlin support
  • Highly-optimized UTF-8 string encoding implementation for Java(2x faster than JDK utf8 encoding)
  • Reduce metastring hashcode payload for small string(<=16 bytes)
  • Support building C++ libs on windows platform

Features

  • feat(kotlin): Introduce kotlin package with stdlib collections and tests by @wywen in #1877
  • feat(kotlin): Add Unsigned Primitive Support by @wywen in #1886
  • feat(kotlin): Add unsigned array support and tests for arrays and strings by @wywen in #1891
  • feat(java): Refactor String serialization and deserialization by @HuangXingBo in #1890
  • feat(java): support thread safe register callback for scala kotlin by @chaokunyang in #1895
  • feat(scala): add scala range serializer by @chaokunyang in #1899
  • feat(java): add option to treat enum as string by @orisgarno in #1892
  • feat(kotlin): Add tests and support for built-in types from the kotlin stdlib by @wywen in #1901
  • feat(java): reduce metastring hashcode payload for small string(<=16 bytes) by @chaokunyang in #1909
  • feat(javascript): Added serialization and serialization for Type Meta Layer by @Forchapeatl in #1825
  • feat(bazel): support building C++ libs on windows platform by @An-DJ in #1873
  • feat(scala): support scala native image build by @chaokunyang in #1922
  • perf(python): Add python benchmark test by @penguin-wwy in #1916

Bug Fix

  • fix(scala): ban these sbt commands by @pjfanning in #1862
  • fix(java): fix async compilation switch for non-public nested class by @chaokunyang in #1883
  • fix(java): fix add fury thread safety issue by @chaokunyang in #1889
  • fix(other): fix feature request template by @chaokunyang in #1898
  • fix(java): NonExistentEnum on mode serializeEnumByName by @orisgarno in #1904
  • fix(java): ThreadLocalFury and ThreadPoolFury prioritize using the user classloader by @Aliothmoon in #1907
  • fix(java): child container deep copy by @zhaommmmomo in #1911
  • fix(java): Fix incorrect results of utf16 to utf8 conversion for latin1 but not ascii characters in #1914
  • fix(python): Eliminate PytestCollectionWarning when running pytest by @penguin-wwy in #1917

Other Improvements

  • chore(py314): Replace deprecated pkgutil.find_loader by @effigies in #1888
  • docs(guide): Fix package typo by @mandrean in #1906
  • build(kotlin): Add spotless ktfmt and enable explicit api mode for library code. by @wywen in #1912
  • build(deps): upgrade scala (2.13.15/3.3.4) by @pjfanning in #1861
  • feat(rust): add rust-analyzer to toolchain by @caicancai in #1865
  • chore(scala): add scala build script by @chaokunyang in #1920
  • chore(kotlin): add parent pom for fury kotlin by @chaokunyang in #1921
  • feat(java): Improve error message on architecture not using little-endian format by @apupier in #1918

New Contributors

Full Changelog: v0.8.0...v0.9.0-rc2

v0.9.0-rc1

27 Oct 05:12
Compare
Choose a tag to compare
v0.9.0-rc1 Pre-release
Pre-release

Highlight

  • Optimized serializers for Fury kotlin support
  • Highly-optimized UTF-8 string encoding implementation for Java(2x faster than JDK utf8 encoding)
  • Reduce metastring hashcode payload for small string(<=16 bytes)
  • Support building C++ libs on windows platform

Features

  • feat(kotlin): Introduce kotlin package with stdlib collections and tests by @wywen in #1877
  • feat(kotlin): Add Unsigned Primitive Support by @wywen in #1886
  • feat(kotlin): Add unsigned array support and tests for arrays and strings by @wywen in #1891
  • feat(java): Refactor String serialization and deserialization by @HuangXingBo in #1890
  • feat(java): support thread safe register callback for scala kotlin by @chaokunyang in #1895
  • feat(scala): add scala range serializer by @chaokunyang in #1899
  • feat(java): add option to treat enum as string by @orisgarno in #1892
  • feat(kotlin): Add tests and support for built-in types from the kotlin stdlib by @wywen in #1901
  • feat(java): reduce metastring hashcode payload for small string(<=16 bytes) by @chaokunyang in #1909
  • feat(javascript): Added serialization and serialization for Type Meta Layer by @Forchapeatl in #1825
  • feat(bazel): support building C++ libs on windows platform by @An-DJ in #1873

Bug Fix

  • fix(scala): ban these sbt commands by @pjfanning in #1862
  • fix(java): fix async compilation switch for non-public nested class by @chaokunyang in #1883
  • fix(java): fix add fury thread safety issue by @chaokunyang in #1889
  • fix(other): fix feature request template by @chaokunyang in #1898
  • fix(java): NonExistentEnum on mode serializeEnumByName by @orisgarno in #1904
  • fix(java): ThreadLocalFury and ThreadPoolFury prioritize using the user classloader by @Aliothmoon in #1907
  • fix(java): child container deep copy by @zhaommmmomo in #1911
  • fix(java): Fix incorrect results of utf16 to utf8 conversion for latin1 but not ascii characters in #1914

Other Improvements

  • chore(py314): Replace deprecated pkgutil.find_loader by @effigies in #1888
  • docs(guide): Fix package typo by @mandrean in #1906
  • build(kotlin): Add spotless ktfmt and enable explicit api mode for library code. by @wywen in #1912
  • build(deps): upgrade scala (2.13.15/3.3.4) by @pjfanning in #1861
  • feat(rust): add rust-analyzer to toolchain by @caicancai in #1865

New Contributors

Full Changelog: v0.8.0...v0.9.0-rc1

v0.8.0

05 Oct 05:06
Compare
Choose a tag to compare

HighLights

  • Support graalvm 17/21/22 native image
  • Release fury optimized serializers for scala

Features

Bug Fix

Other Improvements

  • chore(java): fix default value doc for metaShareEnabled/scopedMetaShareEnabled by @chaokunyang in #1826
  • chore(doc): fix 'how to upgrade fury' link in README by @sh-cho in #1846
  • build(deps): bump com.google.protobuf:protobuf-java from 3.16.3 to 3.25.5 in /java/benchmark by @dependabot in #1847
  • chore(java): simplify generated codec name by @chaokunyang in #1850
  • ci: only run sync job if the repo is apache/fury by @pjfanning in #1860
  • feat(scala): upgrade sbt and sbt-apache-sonatype by @pjfanning in #1859

New Contributors

Full Changelog: v0.7.1...v0.8.0

v0.8.0-rc1

05 Oct 05:02
Compare
Choose a tag to compare
v0.8.0-rc1 Pre-release
Pre-release

Features

Bug Fix

Other Improvements

  • chore(java): fix default value doc for metaShareEnabled/scopedMetaShareEnabled by @chaokunyang in #1826
  • chore(doc): fix 'how to upgrade fury' link in README by @sh-cho in #1846
  • build(deps): bump com.google.protobuf:protobuf-java from 3.16.3 to 3.25.5 in /java/benchmark by @dependabot in #1847
  • chore(java): simplify generated codec name by @chaokunyang in #1850
  • ci: only run sync job if the repo is apache/fury by @pjfanning in #1860
  • feat(scala): upgrade sbt and sbt-apache-sonatype by @pjfanning in #1859

New Contributors

Full Changelog: v0.7.1...v0.8.0-rc1

v0.7.1

12 Sep 07:58
Compare
Choose a tag to compare

Features

  • feat(javascript): Added MetaString Class for Unicode Encoding/Decoding in Type.Object Code Generation by @Forchapeatl in #1774
  • feat(Rust): Refine Code Structure & Prepare for Future Compatibility Features by @theweipeng in #1787
  • feat(java): ThreadSafeFury add getClassResolver method by @funky-eyes in #1780
  • feat(Rust): Implement TypeMeta part of the compatibility features by @theweipeng in #1789
  • feat(Rust): Support polymorphism by @theweipeng in #1795
  • feat(java): Support copy capabilities for some classes without no-argument constructors by @zhaommmmomo in #1794
  • feat(java): support jdk9+ java.util.ImmutableCollections copy by @zhaommmmomo in #1800
  • feat(rust): support enum serialization by @jiacai2050 in #1817
  • refine fury website and add chinese documents by @yuluo-yx and @LofiSu

Bug Fix

Other Improvements

  • chore(java): Disallow writing meta classdef when obj is null by @LiangliangSui in #1686
  • chore(infra): optimize github tmpl & update actions/checkout version to 4.1.7 by @yuluo-yx in #1807
  • chore(infra): remove redundant bug reporting options by @yuluo-yx in #1810
  • docs: add check lint ci & fix md lint by @yuluo-yx in #1811

New Contributors

Full Changelog: v0.7.0...v0.7.1

v0.7.0

04 Aug 13:38
Compare
Choose a tag to compare

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

Bug Fix

Other Improvements

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.7.0-rc1

27 Jul 13:20
Compare
Choose a tag to compare
v0.7.0-rc1 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.6.0...v0.7.0-rc1