Apache Fury Adds Optimized Serializers For Scala
Written by Kay Ewbank   
Thursday, 31 October 2024

Apache Fury has been updated to add GraalVM native images and with optimized serializers for Scala collection. The update also reduces Scala collection serialization cost via the use of  encoding.

Apache Fury is an incubator project from Apache. It's a multi-language serialization framework powered by JIT dynamic compilation and zero copy. It implements multi-language SDKs, including Java, Python, Golang, JavaScript, Rust, C++. It provides automatic multi-language objects serialization features, and 170x speedup compared to JDK serialization.

fury

Serialization is used in software development fo the efficient exchange of data between systems. It lets the application share the state of a data object made up of a combination of code and data represented within a region of data storage. That object is converted by the serialization into a series of bytes that incorporates the state of the object in an easily transmittable form.

Apache Fury aims to provide a better alternative to existing serialization libraries and frameworks. Data transfer between processes, languages, nodes, or object persistence, state read-write and copy, all need serialization, and the performance of serialization can affect the efficiency of the system.

The Fury team says that static serialization frameworks like Protobuf or FlatBuffers can't be used for cross-language application development directly, because they don't support shared reference and polymorphism, and also need to generate code ahead. In contrast, dynamic serialization frameworks such as JDK serialization, Kryo, Fst, Hessian, Pickle provide ease-of-use and dynamics, but don't support cross-language and suffer significant performance issues, which is problematic for high throughput, low latency, and large-scale data transfer usage.

Fury, which is open-sourced, combines highly optimized serialization primitives, JIT dynamic compilation and zero-copy technologies. It is a library that can handle complex data structures and large data volumes efficiently, and the developers say it offers minimal overhead during serialization and deserialization processes. Fury supports multiple programming languages, and it can be used to serialize complex data structures.

The improvements to the latest release are the addition of GraalVM Native Image support through the addition of AOT (ahead of time) compilation serialization, meaning no reflection/serialization JSON config is necessary. GraalVM native image can compile Java code into native code ahead to build faster, smaller, leaner applications, but the native image doesn't have a JIT compiler to compile bytecode into machine code.

The additional support for Scala collections extends the previous Scala support, in which normal classes and case classes were well supported. However, Scala also includes its own collections, which are different from jdk collections. The additions add support for these.

Fury 0.8 is available now.

fury

More Information

Fury Website

Fury On GitHub

Related Articles

Scala 3 Released With Major Changes

GraalVM 21.3 Released

Serialization Will Go From Java - Sometime

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


AI Breakthrough For Robot Surgery
17/11/2024

Using imitation learning, a robot has learned to perform surgical procedures as skillfully as human surgeons, bringing the field of robotic surgery closer to true autonomy.



pg_parquet - Postgres To Parquet Interoperability
28/11/2024

pg_parquet is a new extension by Crunchy Data that allows a PostgreSQL instance to work with Parquet files. With pg_duckdb, pg_analytics and pg_mooncake all of which can access Parquet files, is  [ ... ]


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Thursday, 31 October 2024 )