Skip to content

Releases: apache/fury

v0.3.1

21 Nov 14:32
Compare
Choose a tag to compare

Highlight

  • Support python 3.11 and 3.12, drop python 3.6 support
  • Refactor collection serialization framework to support writeReplace JIT
  • Integrate scala collection with fury java collection framework
  • Support scala collection jit serialization
  • Support shim dispatcher to resolve compatibility problems for common used classes
  • Use lastest arrow 14 version for row format in Java and Python

What's Changed

  • [Doc] add scala sbt install doc by @chaokunyang in #1066
  • [Doc] Update scala_guide.md by @chaokunyang in #1067
  • [Doc] Add scala 2/3 support doc by @chaokunyang in #1068
  • [Java] Refactor collection serialization framework to support writeReplace JIT by @chaokunyang in #1062
  • [Java] Refine collection package by @chaokunyang in #1070
  • [Java] merge map/collection into collection package by @chaokunyang in #1072
  • [Scala] integrate scala collection with fury java collection framework by @chaokunyang in #1073
  • remove unused part of build.sbt by @pjfanning in #1074
  • [Scala] get build to work with Scala 3 by @pjfanning in #1075
  • [Scala] support scala collection jit serialization by @chaokunyang in #1077
  • [Doc] add apache license section to readme by @caicancai in #1080
  • [Java] add option to disable class check warnings by @chaokunyang in #1084
  • [Java] Fix collection serialization NPE when all elements are null by @chaokunyang in #1086
  • [Java] FuryPooledObjectFactory getFury refactor, remove redundant recursive call by @mof-dev-3 in #1088
  • [Rust] add rust-version by @wangweipeng2 in #1091
  • [DOC] add javascript sample by @wangweipeng2 in #1095
  • Make sure the c++ standard is set to 17 by @PragmaTwice in #1093
  • Fix undefined behavior due to use of uninitialized field in Buffer by @PragmaTwice in #1092
  • [Rust] merge derive and make it sample by @wangweipeng2 in #1098
  • [DOC] add rust sample by @wangweipeng2 in #1100
  • Simplify endian utility functions and IsOneOf by @PragmaTwice in #1096
  • [Java] throw error if nested fury serialize happen in serialization by @chaokunyang in #1103
  • [C++] remove useless FromXXXEndian by @chaokunyang in #1105
  • [Rust ] Remove the magic numbers by @wangweipeng2 in #1107
  • [Rust] chore: add rust doc by @wangweipeng2 in #1109
  • [JavaScript] Fill in readme by @wangweipeng2 in #1110
  • chore: check xlang flag by @wangweipeng2 in #1112
  • [Java] Remove guava part1 by @chaokunyang in #1114
  • [Rust] Correct language flag by @wangweipeng2 in #1120
  • [Java] DateTimeUtils minor refactor, reuse floorDiv to calculate floorMod by @mof-dev-3 in #1122
  • [Python] Support python3.11/12 by @chaokunyang in #1064
  • [java] support shim dispatcher to resolve compatibility problems for common used classes by @xiguashu in #1123

New Contributors

Full Changelog: v0.3.0...v0.3.1

v0.3.0

03 Nov 11:22
Compare
Choose a tag to compare

Highlight

  • [Scala] Support scala serialization: case/object/tuple/string/collection/enum/basic all supported
  • [Scala] Add scala user documentation
  • [Scala] add optimized scala singleton object serializer
  • [Java] Make java.io.Externalizable compatible with Java writeReplace/readResolve API
  • [Java] Integrate fury with dubbo apache/dubbo-spi-extensions#226
  • [Java] support bytes string serialization for jdk8 with JDK17 runtime

BugFix

  • [Java] Allow for InputStream not reading entire length
  • [Java] Use ReflectionUtils.getCtrHandle() for non-public constructor in ExternalizableSerializer
  • [Java] fix jdk compatible serialization for inheritance

What's Changed

New Contributors

Full Changelog: v0.2.1...v0.3.0

v0.2.1

18 Oct 11:57
Compare
Choose a tag to compare

Highlight

  • [Go] Support tiny go compilation
  • [Java] Support private JDK17+ record class JIT serialization

Bug fix

  • Fix jit error for register private serializers
  • Upgrade janino version to fix package name conflict with classname

What's Changed

New Contributors

Full Changelog: v0.2.0...v0.2.1

v0.2.0

08 Oct 06:53
Compare
Choose a tag to compare

Release Highlights

Java

  • Support JDK17+ record JIT/Interpreter serialization
  • Support JDK17+ record JIT/Interpreter serialization backward/forward compatibility
  • Support jdk9+ Immutable Collections JIT/Interpreter mode serialization, much faster compared to other frameworks
  • New collection serialization protocol by homogenization, 1.5x speed up, 2X space saving.
  • Desgined and implemented a new long compression algorithm, with performance cost less than 10% but give 50% compresstion ratio
  • Support configuring compress int/long independently, enable int/long compression by default
  • Add class checker API and Whitelist/Blacklist based implementation to enhance security

Python

  • Support pyarrow6 bazel build
  • Support python 3.10

JavaScript

  • [JavaScript] support fury for browser
  • [JavaScript] support polymorphism
  • [JavaScript] enhancement performance

Golang

  • Implement Golang serialization framework, which support reference, pointer, data serialization
  • Implement serializers for string/numbers/slice/map/slice/struct/pointer

What's Changed

Read more

v0.2.0.alpha1

07 Oct 09:33
Compare
Choose a tag to compare
v0.2.0.alpha1 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: https://github.com/alipay/fury/commits/v0.2.0.alpha1

v0.1.2

27 Sep 08:35
Compare
Choose a tag to compare

Highlights

What's Changed

  • [Java] Skip toString in annotation invocation handler readObject (#746)
  • [Python] Use cloudpickle for local function serialization (#914)
  • [Python] fix row format getter (#915)

Full Changelog: v0.1.0...v0.1.1

v0.1.1

01 Sep 10:49
Compare
Choose a tag to compare

Highlights

What's Changed

  • [Java] Dubbo fury integration: https://github.com/fury-project/dubbo-serialization-fury
  • [Java] fix isSecure check for xlang in java (#822)
  • [Java] register empty object by default (#829)
  • [Java] upgrade guava for(#831)
  • [Python] Support pyarrow6 bazel build (#859)
  • [Python] add missing shared lib for python (#862)
  • [Java] optimize buffer copy (#870)
  • [Doc] Fix row format doc (#873)
  • [Java] fix ofHashMap (#877)
  • [Java] add jdk tools.jar for tests (#881)
  • [Java] Fix lazy bean serializer (#883)
  • [Java] print exception for fury creation (#885)
  • [Java] remove getCurrentFury API (#887)
  • [Java] Add fury map iterator api (#889)
  • [Java] Add class checker API (#890)
  • [Python] Fix python linux deploy missing shared library files (#892)
  • [[Java] refine AllowListChecker (#893)

Full Changelog: v0.1.0...v0.1.1

v0.1.0

31 Jul 12:52
Compare
Choose a tag to compare

I'm excited to release Fury v0.1.0 . Fury 0.1.0 is our first release since we started the development in github in 2023.04.28, and open sourced in 2023.07.15.

This release includes many features:

  • Production-ready java serialization:
    • Highly optimized Java serialization primives
    • Runtime codegen framework
    • Interpreter mode java serialization
    • JIT accelerated serializer for java serialization
    • Support async and multi-thread JIT
    • Support type forward-backward compatibility.
    • Support meta sharing to send class meta only once.
    • Support JDK custom serialization on fury natively.
    • Out-of-band zero-copy serialization for java
  • Cross language Serialization
    • Support basic types cross-language between java/python/javascript/rust
    • Support struct cross-language automatically, no need for IDL definition
    • Supports shared and circular reference object serialization between java/python/javascript.
    • Support object polymorphism between java/python/javascript.
    • Out-of-band zero-copy serialization between java/python
  • Row format
    • Support row format between java/python/c++.
    • Support lazy/partial deserialization.
    • Support convert to arrow format automatically.

With this release, we take big strides towards our goal of making serialization fast, cross-language, unified and open.
For details, please refer to the following commit messages.

Note that javascript/rust support is still experimental, please let us know if you have any issues.

What's Changed

Read more