Skip to content

Releases: apache/incubator-fury

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

v0.4.1

08 Dec 17:13
Compare
Choose a tag to compare

What's Changed

  • [Doc] Refine issue template by a yaml form by @chaokunyang in #1185
  • [C++] Fix ownership problem for children writers by visitor by @PragmaTwice in #1193
  • [C++] Remove useless fields and macro in logging by @PragmaTwice in #1195
  • [Doc] add docs for java FuryBuilder #1188 by @mof-dev-3 in #1192
  • [Rust] support row format by @wangweipeng2 in #1196
  • [C++] Add RowEncoder wrapper to RowEncodeTrait by @PragmaTwice in #1200
  • [Rust] Row support more types by @wangweipeng2 in #1202
  • [Rust] Support row map by @wangweipeng2 in #1206
  • [C++] update bazel version from 4.2 to 6.3.2 by @chaokunyang in #1204
  • [JavaScript] Support partial record by @wangweipeng2 in #1208
  • [Java] fix package access level class accessor jit by @chaokunyang in #1210
  • [JavaScript] Fix register a description twice will get undefined serializer by @bytemain in #1211
  • [C++] Support iterable types in RowEncodeTrait by @PragmaTwice in #1212
  • [C++] Support iterable types for RowEncoder by @PragmaTwice in #1215
  • [Python] Refine py register class method by @chaokunyang in #1218
  • [Java] Clear extRegistry.getClassCtx if generate serializer class failed in #1221

New Contributors

Full Changelog: v0.4.0...v0.4.1

v0.4.0

30 Nov 16:18
Compare
Choose a tag to compare

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: v0.3.1...v0.4.0