Skip to content

Releases: apache/fury

v0.6.0

23 Jul 15:16
Compare
Choose a tag to compare

The Apache Fury team is pleased to announce the 0.6.0 release. This is a major release that includes 35 PR from 12 distinct contributors. See the Install Page to learn how to get the libraries for your platform.

High light

In this release, we introduced a scoped meta share mode for schema evolution in java and enabled it by default when CompatibleMode is set to Compatible. This mode is 50% faster than previous KV compatible mode, and only 1/6 size of serialized payload than before.

Feature

  • feat(java): support nonexistent class deserialization in meta share mode by @chaokunyang in #1646
  • feat(java): scoped meta share mode for type forward/backward compaibility by @chaokunyang in #1660
  • feat(java): support meta compression by Deflater by @chaokunyang in #1663
  • perf(java): Add ClassInfo ClassBytes generation conditions. by @LiangliangSui in #1667
  • feat(javascript): use TextDecoder to decode buffer by @bytemain in #1699
  • feat(Python): meta string encoding algorithm in Python by @pandalee99 in #1702
  • feat(C++): String detection is performed using SIMD techniques by @pandalee99 in #1720
  • feat(C++): The use of SIMD accelerated to implement and optimize utf16 utf8 by @pandalee99 in #1732
  • feat(java): enable scoped meta share for compatible mode by default by @chaokunyang in #1733
  • perf(java): optimize scoped meta share mode perf by @chaokunyang in #1734

Bug Fix

Others

New Contributors

Full Changelog: v0.5.1...v0.6.0

v0.6.0-rc1

16 Jul 13:52
Compare
Choose a tag to compare
v0.6.0-rc1 Pre-release
Pre-release

What's Changed

New Contributors

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

v0.5.1

28 May 10:52
Compare
Choose a tag to compare

The Apache Fury team is pleased to announce the 0.5.1 release. This is a minor release that includes 36 PR from 7 distinct contributors. See the Install Page to learn how to get the libraries for your platform.

Feature

  • feat(spec): remove list/map header from type meta spec by @chaokunyang in #1590
  • perf(java): Reduce performance regression caused by deleteCharAt by @LiangliangSui in #1591
  • feat(java): type meta encoding for java by @chaokunyang in #1556 and #1601
  • feat(sepc): update type meta field info spec by @chaokunyang in #1603
  • feat(javascript): add data to description util by @bytemain in #1609
  • feat(java): Support CopyOnWriteArrayListSerializer by @MrChang0 in #1613
  • feat(java): add blocked stream utils by @chaokunyang in #1617
  • feat(go/java): Add ASCII check before meta string encoding by @jasonmokk in #1620
  • feat(java): register old version guava collect by @MrChang0 in #1622
  • feat(java): support deserialization ignoreEnumDeserializeError by @157152688 in #1623
  • feat(java): add set serializer for concurrent set by @MrChang0 in #1616
  • feat(java): add custom serializer register in case of special serializer ctr by @MrChang0 in #1625
  • feat(java): remove soft/weak ref values from thread safe fury by @chaokunyang in #1639
  • refactor(java): Remove Guava's Collection usages by @Munoon in #1611 and #1614
  • refactor(java): replace Guava's string utility methods with own implementation by @Munoon in #1624

Bug Fix

Misc

New Contributors

Full Changelog: v0.5.0...v0.5.1

v0.5.1-rc2

20 May 09:48
Compare
Choose a tag to compare
v0.5.1-rc2 Pre-release
Pre-release

What's Changed

  • feat(spec): remove list/map header from type meta spec by @chaokunyang in #1590
  • chore(java): move tests to meta/reflect pkg by @chaokunyang in #1592
  • fix(java): compatible low version guava(#1593) by @MrChang0 in #1594
  • perf(java): Reduce performance regression caused by deleteCharAt by @LiangliangSui in #1591
  • feat(java): type meta encoding for java by @chaokunyang in #1556
  • fix(java): fix getClassDef thead safety by @chaokunyang in #1597
  • fix(java): skip register unexisted skip class by @chaokunyang in #1601
  • chore(java): make enum serializer as an upper level class by @chaokunyang in #1598
  • fix(java): make slf4j provided by @chaokunyang in #1605
  • fix(java): clear serializer for collection/map by @chaokunyang in #1606
  • feat(sepc): update type meta field info spec by @chaokunyang in #1603
  • fix(java): fix TypeRef getSubType by @chaokunyang in #1608
  • feat(javascript): add data to description util by @bytemain in #1609
  • refactor(java): Remove Guava's Collection usages by @Munoon in #1611
  • feat(java): Support CopyOnWriteArrayListSerializer by @MrChang0 in #1613
  • chore: Fury header add language field by @LiangliangSui in #1612
  • refactor(java): Remove Guava's Concurrency utils usages by @Munoon in #1614
  • fix(java): fix fastutil Object2ObjectOpenHashMap serialization by @chaokunyang in #1618
  • feat(java): add blocked stream utils by @chaokunyang in #1617
  • feat(go/java): Add ASCII check before meta string encoding by @jasonmokk in #1620
  • feat(java): register old version guava collect by @MrChang0 in #1622
  • feat(java): support deserialization ignoreEnumDeserializeError by @157152688 in #1623
  • feat(java): add set serializer for concurrent set by @MrChang0 in #1616
  • feat(java): add custom serializer register in case of special serializer ctr by @MrChang0 in #1625
  • fix(java): subclass without fields will encode superclass by @MrChang0 in #1626
  • refactor(java): replace Guava's string utility methods with own implementation by @Munoon in #1624
  • fix(java): ThreadPoolFury#factoryCallback don't work when create new classLoaderFuryPooled by @MrChang0 in #1628
  • fix(go/java): Enhance ASCII check in meta string encoding by @jasonmokk in #1631
  • chore(java): rename deserializeUnexistentEnumValueAsNull to deserializeNonexistentAsNull by @chaokunyang in #1634
  • chore(java): remove gpg pinentry-mode by @chaokunyang in #1636
  • fix(java): fix wildcard capturer capture NullPointerException by @chaokunyang in #1637
  • fix(java): fix abstract collection elems same type serialization by @chaokunyang in #1641
  • feat(java): remove soft/weak ref values from thread safe fury by @chaokunyang in #1639

New Contributors

Full Changelog: v0.5.0...v0.5.1-rc2

v0.5.1-rc1

11 May 15:56
Compare
Choose a tag to compare
v0.5.1-rc1 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.5.0...v0.5.1-rc1

v0.5.0

03 May 16:49
Compare
Choose a tag to compare

We're excited to announce the release of Fury v0.5.0. This release incorporates a myriad of improvements, bug fixes, and new features across multiple languages including Java, Golang, Python and JavaScript. It further refines Fury's performance, compatibility, and developer experience.

New Features

Specification

  • Introduced fury cross-language serialization specification (#1413, #1508)
  • Introduced xlang type mapping (#1468)
  • Introduced fury java specification (#1240)
  • Introduced meta string encoding specification (#1565, #1513, #1517)

Java

  • Support for compatible mode with GraalVM (#1586, #1587).
  • Support unexisted array/enum classes and enabled deserializeUnexistedClass by default (#1569, #1575).
  • meta string encoding algorithm in java (#1514, #1568, #1516, #1565)
  • Support meta string encoding for classname and package name (#1527)
  • native streaming mode deserialization (#1451, #1551)
  • native channel stream reader (#1483)
  • Support registration in thread safe fury (#1280)
  • Implement fury logger and remove slf4j library (#1485, #1494, #1506, #1492)
  • Support adjust logger level dynamically (#1557)
  • Support jdk proxy serialization for graalvm (#1379)
  • Specify JPMS module names (#1343)
  • Align string array to collection protocol v2 (#1228)

JavaScript

  • Align implementation to new Xlang protocol (#1487)
  • Implement Xlang map (#1549)
  • Implemented xlang map code generator (#1571)
  • Added magic number feature for better serialization control (#1550).
  • Support oneof (#1348)
  • create zero-copy buffer when convert (#1386)
  • Implement the collection protocol (#1337)
  • Implement Enum (#1321)
  • compress numbers (#1290)

C++

  • Support optional fields/elements in RowEncoder (#1223)
  • Support mapping types for RowEncodeTrait (#1247)

Golang

  • Implemented Fury meta string encoding algorithm (#1566).
  • concat meta string len with flags (#1517)

Enhancements

Java

  • Improved buffer growth strategy to support larger data sizes for serialization (#1582).
  • Performance optimizations for MetaStringDecoder and various serialization processes (#1568, #1511, #1493).
  • concat write classname flag with package name (#1523)
  • concat meta string len with flags (#1517)
  • fastpath for read/write small varint in range [0,127] (#1503)
  • optimize read float/double for jvm jit inline (#1472)
  • replace Guava's TypeToken with self-made (#1553)
  • Remove basic guava API usage (#1244)
  • optimize fury creation speed (#1511)
  • optimize string serialization by concat coder and length (#1486)
  • carry read objects when deserialization fail for better trouble shooting (#1420)
  • implement define_class insteadof using javaassist (#1422)
  • avoid recompilation when gc happens for memory pressure (#1411, #1585)
  • Fix immutable collection ref tracking (#1403)
  • reduce fury caller stack (#1496)
  • Extract BaseFury interface (#1382)
  • refine collection builder util (#1334)
  • disable async compilation for graalvm (#1222)
  • refine endian check code size in buffer (#1501)
  • generate list fori loop instead of iterator loop for list serialization (#1493)
  • Reduce unsafeWritePositiveVarLong bytecode size. (#1491)
  • Reduce unsafePutPositiveVarInt bytecode size. (#1490, #1489)
  • optimize read char/short jvm jit inline (#1471)
  • reduce code size of read long to optimize jvm jit inline (#1470)
  • reduce readInt/readVarInt code size for for jvm jit inline (#1469)
  • refactor readVarUint32 algorithm (#1462)
  • rewrite readVarUint64 algorithm (#1463)

JavaScript

  • Make PlatformBuffer available if has Buffer polyfill (#1373)
  • enhance performance 64bits number (#1320)
  • Refactor & Compress Long (#1313)
  • Improve tag write performance (#1241)
  • Add more methods for BinaryReader (#1231)
  • Implements tuple serializer (#1216)

Python

  • concat meta string len with flags (#1517)

Bug Fix

Java

  • Fix bytebuffer no such method error (#1580)
  • Prevent exception in ObjectArray.clearObjectArray() (#1573)
  • Fix slf4j on graalvm (#1432)
  • Fix illegal classname caused by negative hash (#1436)
  • Fix BigDecimal serializer (#1431)
  • Fix BigInteger serialization (#1479)
  • Fix type conflict in method split (#1371)
  • Fix CodeGen Name conflicts when omitting java.lang prefix #1363 (#1366)
  • Fix ClassLoader npe in loadOrGenCodecClass (#1346)
  • Fix big buffer trunc (#1402)
  • Make Blacklist detection is also performed when the Class is registered. (#1398)
  • avoid big object graph cause buffer take up too much memory (#1397)
  • Fix get static field by unsafe (#1380)
  • Fix javax package for accessor codegen (#1388)
  • Fix nested collection cast for scala/java (#1333)
  • Fix References within InvocationHandler (#1365)
  • Allow partial read of serialized size from InputStream (#1391)
  • add potential missing bean class-loader (#1381)
  • Fix polymorphic array serialization (#1324)
  • Fix nested collection num elements (#1306)
  • Fix collection init size typo (#1342)
  • Clear extRegistry.getClassCtx if generate serializer class failed (#1221)

Rust

  • Fix memory errors caused by casting (#1372)
  • Fix incorrect cast (#1345)

Miscellaneous

  • Numerous code cleanups, refactorings, and internal improvements across all supported languages to enhance code quality
    and maintainability.
  • Moved various utilities into more appropriate packages to improve code organization and readability (#1584, #1583,
    #1578).
  • rename MemoryBuffer read/write/put/getType with read/write/put/getTypeNumber (#1480, #1464, #1505, #1500)
  • extract public Fury methods to BaseFury (#1467)
  • Optimize Class ID allocation. (#1406)
  • refine Collection util data structure (#1287) (#1288)
  • Improve Status by using unique_ptr (#1234)
  • Improve FormatTimePoint by removing sstream (#1233)
  • Drop optional chaining expression (#1338)

New Contributors

Acknowledgements

Thanks @chaokunyang @theweipeng @PragmaTwice @LiangliangSui @nandakumar131 @Munoon @qingoba @vesense @liuxiaocs7 @mtf90 @bowin @cn-at-osmit @Maurice-Betzel @phogh @laglangyue @tommyettinger @huisman6 @pixeeai

A big thank you to all our contributors who have worked hard on this release. Your contributions, whether through code,
documentation, or issue reporting, are really appreciated.

Full Changelog: v0.4.1...v0.5.0

v0.5.0-rc4

27 Apr 07:01
Compare
Choose a tag to compare
v0.5.0-rc4 Pre-release
Pre-release

What's Changed

Read more

0.5.0-rc3

17 Apr 07:26
fae0633
Compare
Choose a tag to compare
0.5.0-rc3 Pre-release
Pre-release

What's Changed

Read more

0.5.0-rc2

31 Mar 05:37
Compare
Choose a tag to compare
0.5.0-rc2 Pre-release
Pre-release

What's Changed

Read more

v0.5.0-rc1

31 Mar 05:36
Compare
Choose a tag to compare
v0.5.0-rc1 Pre-release
Pre-release

What's Changed

Read more