跳到主要内容

· 阅读需 3 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

I'm pleased to announce the 0.4.0 release of the Fury. With this release, GraalVM native image and C++ row format automatic encoder based on compile-time reflection are supported. Please try it out and share your feedbacks with us.

Author: chaokunyang

I'm pleased to announce the 0.4.0 release of the Fury. With this release, GraalVM native image and C++ row format automatic encoder based on compile-time reflection are supported. Please try it out and share your feedbacks with us.

Highlight

  • [Java] Support Graalvm native image. The implementation will generate all serialization code at image build time, the runtime will be extremely fast, see fury graalvm usage doc
  • [Java] Fury vs JDK benchmark on Graalvm native image
  • [Scala] Serialization support for package scoped object
  • [C++] Reflection support by macro/template programing
  • [C++] Automatic row format encoder

What's Changed

Full Changelog: https://github.com/alipay/fury/compare/v0.3.1...v0.4.0

· 阅读需 3 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

I'm pleased to announce the 0.3.1 release of the Fury. With this release, fury supports python 3.11&3.12, droped python 3.6 support. Multiple scala serialization JIT optimization are included, and java serialization compatibility is improved too.

Author: chaokunyang

I'm pleased to announce the 0.3.1 release of the Fury. With this release, fury supports python 3.11&3.12, droped python 3.6 support. Multiple scala serialization JIT optimization are included, and java serialization compatibility is improved too.

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

New Contributors

Full Changelog: https://github.com/alipay/fury/compare/v0.3.0...v0.3.1

· 阅读需 5 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

I'm pleased to announce the 0.3.0 release of the Fury. With this release, fury supports all scala 2/3 objects serializaiton now, including: case/pojo/object/option/tuple/collecton/enum and other types. case/pojo/object are tightly integrated with fury JIT. Fury will generate highly-optimized serializer by generate serialize code at runtime to speed up serializaiton. The serialization for those objects will be extremely fast.

Author: chaokunyang

I'm pleased to announce the 0.3.0 release of the Fury. With this release, fury supports all scala 2/3 objects serializaiton now, including: case/pojo/object/option/tuple/collecton/enum and other types. case/pojo/object are tightly integrated with fury JIT. Fury will generate highly-optimized serializer by generate serialize code at runtime to speed up serializaiton. The serialization for those objects will be extremely fast.

For a long time, scala serialization is always tricky, only reliable way is JDK serialization. But it’s too slow, and the serialized size is too large. Although we have frameworks such as chill, but the support for scala types are limited, and the performance is limited too.Now with fury scala, you can serialize any scala objects you want and get extremly fast performance. Please try it out and let us know if you have any issues.

Scala Serialization Guide

Install dependecy:

libraryDependencies += "org.furyio" % "fury-core" % "0.3.0"

Creating fury:

val fury = Fury.builder()
.withScalaOptimizationEnabled(true)
.requireClassRegistration(false)
.withRefTracking(true)
.build()

Serialize case objects:

case class Person(github: String, age: Int, id: Long)
val p = Person("https://github.com/chaokunyang", 18, 1)
println(fury.deserialize(fury.serialize(p)))
println(fury.deserializeJavaObject(fury.serializeJavaObject(p)))

Serialize singleton objects:

object singleton {
}
val o1 = fury.deserialize(fury.serialize(singleton))
val o2 = fury.deserialize(fury.serialize(singleton))
println(o1 == o2)

Serialize collection objects:

val seq = Seq(1,2)
val list = List("a", "b") val map = Map("a" -> 1, "b" -> 2)
println(fury.deserialize(fury.serialize(seq)))
println(fury.deserialize(fury.serialize(list)))
println(fury.deserialize(fury.serialize(map)))

Serialize enum:

enum Color { case Red, Green, Blue }
println(fury.deserialize(fury.serialize(Color.Green)))

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 https://github.com/apache/dubbo-spi-extensions/pull/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: https://github.com/alipay/fury/compare/v0.2.1...v0.3.0

· 阅读需 2 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

I'm pleased to announce the 0.2.1 release of the Fury. This version provides beter jdk17+ record support and bettern jit for private classes.

Author: chaokunyang

I'm pleased to announce the 0.2.1 release of the Fury. This version provides beter jdk17+ record support and bettern jit for private classes. Feel free to try it out and let me know if you have any issues.

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: https://github.com/alipay/fury/compare/v0.2.0...v0.2.1

· 阅读需 8 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

I'm so excited to announce the 0.2.0 release of the Fury. This a very exciting version of fury. With this version, we have 1X speedup, 30%~50% smaller serialized size. And now we are the fastest serialization framework in the JVM-Serializers. At the same time, fury has fully support for JDK17/21, I supported JDK17+ record JIT serialization, JDK9+ ImmutableList JIT serialization. The serialization is blazing fast, please try it out. And we also open sourced Fury GO, the first golang serialization framework which supports circular reference and interface polymorphismm, feel free to try it out and let me know if you have any issues.

· 阅读需 1 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

Author: chaokunyang

I'm pleased to announce the 0.1.2 release of Fury. This release is a enhanced verson based on fury 0.1.1. It keeps binary compatibility with 0.1.0/0.1.1.

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: https://github.com/alipay/fury/compare/v0.1.0...v0.1.1

· 阅读需 2 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

Author: chaokunyang

I'm pleased to announce the 0.1.1 release of Fury. This release is a enhanced verson based on fury 0.1.0. It keeps binary compatibility with 0.1.0.

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: https://github.com/alipay/fury/compare/v0.1.0...v0.1.1

· 阅读需 23 分钟
Shawn Yang
信息

This release was made before Fury joined the Apache Incubator and thus it's a non-ASF release.

I'm pleased to announce the 0.1.0 release of the Fury. 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, cross language serialization for Java/Python/JavaScript/Rust, row format support and so on.