Releases: apache/incubator-fury
v0.5.0
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
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
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
- @nandakumar131 made their first contribution in #1244
- @vesense made their first contribution in #1260
- @LiangliangSui made their first contribution in #1294
- @liuxiaocs7 made their first contribution in #1312
- @mtf90 made their first contribution in #1343
- @bowin made their first contribution in #1353
- @cn-at-osmit made their first contribution in #1366
- @Maurice-Betzel made their first contribution in #1381
- @phogh made their first contribution in #1391
- @laglangyue made their first contribution in #1415
- @Munoon made their first contribution in #1467
- @pixeeai made their first contribution in #1559
- @huisman6 made their first contribution in #1572
- @tommyettinger made their first contribution in #1573
- @qingoba made their first contribution in #1566
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
What's Changed
- [Java] Clear extRegistry.getClassCtx if generate serializer class failed by @chaokunyang in #1221
- [C++] Support optional fields/elements in RowEncoder by @PragmaTwice in #1223
- [JavaScript] Implements tuple serializer by @bytemain in #1216
- [Rust] Remove unnecessary abstraction by @theweipeng in #1225
- [Java] disable async compilation for graalvm by @chaokunyang in #1222
- [Java] Align string array to collection protocol v2 by @chaokunyang in #1228
- [Improve] add rust doc by @caicancai in #1226
- [JavaScript] Add more methods for BinaryReader by @bytemain in #1231
- [C++] Improve FormatTimePoint by removing sstream by @PragmaTwice in #1233
- [C++] Improve Status by using unique_ptr by @PragmaTwice in #1234
- [JavaScript] Add lint tools by @bytemain in #1232
- [Doc][Spec] fury java serialization spec by @chaokunyang in #1238
- [Doc] bump release version to 0.4.1 by @chaokunyang in #1242
- [Java] Remove guava part 2. by @nandakumar131 in #1244
- [C++] Support mapping types for RowEncodeTrait by @PragmaTwice in #1247
- Update apache license by @chaokunyang in #1246
- Rename to Apache Fury in README by @PragmaTwice in #1249
- [Java][Doc] enable requireClassRegistration in example by default by @chaokunyang in #1250
- chore: setup apache repo by @tisonkun in #1251
- chore: clear alipay refs by @tisonkun in #1252
- chore: add NOTICE and DISCLAIMER by @tisonkun in #1253
- Delete CODE_OF_CONDUCT.md by @pjfanning in #1255
- docs: polish CONTRIBUTING doc by @tisonkun in #1257
- Add collaborators to workaround unfinished apache ID procedure by @PragmaTwice in #1256
- chore: relocate Maven GAV and Java package by @tisonkun in #1259
- Add maven badge by @vesense in #1260
- Add slack channel to README by @PragmaTwice in #1261
- chore: reflect PPMC members set up by @tisonkun in #1262
- ci: Release Fury Java Snapshot by @tisonkun in #1264
- [DOC] doc sync stay consistent with the site by @theweipeng in #1266
- [Java] Format integration tests code by @chaokunyang in #1263
- [JavaScript] Improve tag write performance by @bytemain in #1241
- update fury java install by @chaokunyang in #1268
- [Java][Doc] Switch Option and Description column for better readability by @chaokunyang in #1267
- Update twitter id in README.md to ApacheFury by @chaokunyang in #1270
- [Java] Clean-up of tmp files created in CrossLanguageTest by @nandakumar131 in #1277
- [CODE HEADER] Remove all fury author tag by @chaokunyang in #1282
- [Java] Support registration in thread safe fury by @chaokunyang in #1280
- [JAVA] add guava license header by @pjfanning in #1283
- [JAVA] remove license header from MurmurHash3 by @pjfanning in #1284
- Update NOTICE to mention all the licenses for source files where code is borrowed from different project. by @nandakumar131 in #1285
- [Java] refine Collection util data structure (#1287) by @mof-dev-3 in #1288
- Update copyright date in NOTICE by @PragmaTwice in #1289
- [JavaScript] Implement the standard protocol by @theweipeng in #1286
- [Java] Fix fury benchmark jmh GPLV2 license conflict by @chaokunyang in #1272
- [JavaScript] compress numbers by @theweipeng in #1290
- chore: tidy text and improve branding by @tisonkun in #1292
- [Java] remove vague desc in drop-in replacement jdk serialization libs by @chaokunyang in #1291
- [CI] Add macos C++ build to ci.yml by @PragmaTwice in #1295
- [C++] Windows build support by @LiangliangSui in #1294
- [C++] Use python3 instead of python in bazel build by @PragmaTwice in #1297
- [C++] Remove unused function by @LiangliangSui in #1298
- Refine words and remove other org links in README by @PragmaTwice in #1307
- [Java] fix nested collection num elements by @chaokunyang in #1306
- Keep head metadata as is in docs by @PragmaTwice in #1311
- [MINOR] Update CODEOWNERS by @liuxiaocs7 in #1312
- Refine English writing about benchmark in README by @PragmaTwice in #1314
- [DOC] Refine build steps and wording in DEVELOPMENT by @PragmaTwice in #1315
- ci: add PR title lint following the conventional commits by @PragmaTwice in #1317
- chore: Update CODEOWNERS by @chaokunyang in #1316
- feat(javascript): Refactor & Compress Long by @theweipeng in #1313
- docs: Remove extra symbols by @caicancai in #1310
- perf(java): merge perftests into benchmark by @chaokunyang in #1318
- perf(java): rename fury-benchmark to benchmark by @chaokunyang in #1319
- feat(JavaScript): Implement Enum by @theweipeng in #1321
- chore(C++): Remove unused bazel rulers by @LiangliangSui in #1322
- feat(JavaScript): enhance performance 64bits number by @theweipeng in #1320
- ci(c++): Implement C++ CI scripts using python by @LiangliangSui in #1303
- fix(java): fix polymorphic array serialization by @chaokunyang in #1324
- chore(git): update .gitignore by @LiangliangSui in #1331
- feat(java): refine collection builder util by @chaokunyang in #1334
- chore(cpp): rename src to cpp by @chaokunyang in #1329
- chore(JavaScript): Drop optional chaining expression by @bytemain in #1338
- feat(java): refine collection builder util (#1334), fix collection init size typo by @mof-dev-3 in #1342
- fix(java): fix nested collection cast for scala/java by @chaokunyang in #1333
- feat(java): Specify JPMS module names by @mtf90 in #1343
- feat(JavaScript): Implement the collection protocol by @theweipeng in #1337
- fix(Rust): incorrect cast by @theweipeng in #1345
- feat(ci): Rust ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1332
- fix(java): fix ClassLoader npe in loadOrGenCodecClass by @chaokunyang in #1346
- chore(java): Remove redundant code by @LiangliangSui in #1349
- fix(go): fix comment error, should be 1-5 byte by @bowin in #1353
- chore(JavaScript): Fix JavaScript test CI by @theweipeng in #1355
- chore(JavaScript): fix test ci on early Node by @theweipeng in #1356
- chore(JavaScript): Fix using npm run build error by @LiangliangSui in #1357
- ci(JavaScript): JavaScript ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1358
- feat(JavaScript): Support oneof by @theweipeng in htt...
0.5.0-rc3
What's Changed
- [Java] Clear extRegistry.getClassCtx if generate serializer class failed by @chaokunyang in #1221
- [C++] Support optional fields/elements in RowEncoder by @PragmaTwice in #1223
- [JavaScript] Implements tuple serializer by @bytemain in #1216
- [Rust] Remove unnecessary abstraction by @theweipeng in #1225
- [Java] disable async compilation for graalvm by @chaokunyang in #1222
- [Java] Align string array to collection protocol v2 by @chaokunyang in #1228
- [Improve] add rust doc by @caicancai in #1226
- [JavaScript] Add more methods for BinaryReader by @bytemain in #1231
- [C++] Improve FormatTimePoint by removing sstream by @PragmaTwice in #1233
- [C++] Improve Status by using unique_ptr by @PragmaTwice in #1234
- [JavaScript] Add lint tools by @bytemain in #1232
- [Doc][Spec] fury java serialization spec by @chaokunyang in #1238
- [Doc] bump release version to 0.4.1 by @chaokunyang in #1242
- [Java] Remove guava part 2. by @nandakumar131 in #1244
- [C++] Support mapping types for RowEncodeTrait by @PragmaTwice in #1247
- Update apache license by @chaokunyang in #1246
- Rename to Apache Fury in README by @PragmaTwice in #1249
- [Java][Doc] enable requireClassRegistration in example by default by @chaokunyang in #1250
- chore: setup apache repo by @tisonkun in #1251
- chore: clear alipay refs by @tisonkun in #1252
- chore: add NOTICE and DISCLAIMER by @tisonkun in #1253
- Delete CODE_OF_CONDUCT.md by @pjfanning in #1255
- docs: polish CONTRIBUTING doc by @tisonkun in #1257
- Add collaborators to workaround unfinished apache ID procedure by @PragmaTwice in #1256
- chore: relocate Maven GAV and Java package by @tisonkun in #1259
- Add maven badge by @vesense in #1260
- Add slack channel to README by @PragmaTwice in #1261
- chore: reflect PPMC members set up by @tisonkun in #1262
- ci: Release Fury Java Snapshot by @tisonkun in #1264
- [DOC] doc sync stay consistent with the site by @theweipeng in #1266
- [Java] Format integration tests code by @chaokunyang in #1263
- [JavaScript] Improve tag write performance by @bytemain in #1241
- update fury java install by @chaokunyang in #1268
- [Java][Doc] Switch Option and Description column for better readability by @chaokunyang in #1267
- Update twitter id in README.md to ApacheFury by @chaokunyang in #1270
- [Java] Clean-up of tmp files created in CrossLanguageTest by @nandakumar131 in #1277
- [CODE HEADER] Remove all fury author tag by @chaokunyang in #1282
- [Java] Support registration in thread safe fury by @chaokunyang in #1280
- [JAVA] add guava license header by @pjfanning in #1283
- [JAVA] remove license header from MurmurHash3 by @pjfanning in #1284
- Update NOTICE to mention all the licenses for source files where code is borrowed from different project. by @nandakumar131 in #1285
- [Java] refine Collection util data structure (#1287) by @mof-dev-3 in #1288
- Update copyright date in NOTICE by @PragmaTwice in #1289
- [JavaScript] Implement the standard protocol by @theweipeng in #1286
- [Java] Fix fury benchmark jmh GPLV2 license conflict by @chaokunyang in #1272
- [JavaScript] compress numbers by @theweipeng in #1290
- chore: tidy text and improve branding by @tisonkun in #1292
- [Java] remove vague desc in drop-in replacement jdk serialization libs by @chaokunyang in #1291
- [CI] Add macos C++ build to ci.yml by @PragmaTwice in #1295
- [C++] Windows build support by @LiangliangSui in #1294
- [C++] Use python3 instead of python in bazel build by @PragmaTwice in #1297
- [C++] Remove unused function by @LiangliangSui in #1298
- Refine words and remove other org links in README by @PragmaTwice in #1307
- [Java] fix nested collection num elements by @chaokunyang in #1306
- Keep head metadata as is in docs by @PragmaTwice in #1311
- [MINOR] Update CODEOWNERS by @liuxiaocs7 in #1312
- Refine English writing about benchmark in README by @PragmaTwice in #1314
- [DOC] Refine build steps and wording in DEVELOPMENT by @PragmaTwice in #1315
- ci: add PR title lint following the conventional commits by @PragmaTwice in #1317
- chore: Update CODEOWNERS by @chaokunyang in #1316
- feat(javascript): Refactor & Compress Long by @theweipeng in #1313
- docs: Remove extra symbols by @caicancai in #1310
- perf(java): merge perftests into benchmark by @chaokunyang in #1318
- perf(java): rename fury-benchmark to benchmark by @chaokunyang in #1319
- feat(JavaScript): Implement Enum by @theweipeng in #1321
- chore(C++): Remove unused bazel rulers by @LiangliangSui in #1322
- feat(JavaScript): enhance performance 64bits number by @theweipeng in #1320
- ci(c++): Implement C++ CI scripts using python by @LiangliangSui in #1303
- fix(java): fix polymorphic array serialization by @chaokunyang in #1324
- chore(git): update .gitignore by @LiangliangSui in #1331
- feat(java): refine collection builder util by @chaokunyang in #1334
- chore(cpp): rename src to cpp by @chaokunyang in #1329
- chore(JavaScript): Drop optional chaining expression by @bytemain in #1338
- feat(java): refine collection builder util (#1334), fix collection init size typo by @mof-dev-3 in #1342
- fix(java): fix nested collection cast for scala/java by @chaokunyang in #1333
- feat(java): Specify JPMS module names by @mtf90 in #1343
- feat(JavaScript): Implement the collection protocol by @theweipeng in #1337
- fix(Rust): incorrect cast by @theweipeng in #1345
- feat(ci): Rust ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1332
- fix(java): fix ClassLoader npe in loadOrGenCodecClass by @chaokunyang in #1346
- chore(java): Remove redundant code by @LiangliangSui in #1349
- fix(go): fix comment error, should be 1-5 byte by @bowin in #1353
- chore(JavaScript): Fix JavaScript test CI by @theweipeng in #1355
- chore(JavaScript): fix test ci on early Node by @theweipeng in #1356
- chore(JavaScript): Fix using npm run build error by @LiangliangSui in #1357
- ci(JavaScript): JavaScript ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1358
- feat(JavaScript): Support oneof by @theweipeng in htt...
0.5.0-rc2
What's Changed
- [Java] Clear extRegistry.getClassCtx if generate serializer class failed by @chaokunyang in #1221
- [C++] Support optional fields/elements in RowEncoder by @PragmaTwice in #1223
- [JavaScript] Implements tuple serializer by @bytemain in #1216
- [Rust] Remove unnecessary abstraction by @theweipeng in #1225
- [Java] disable async compilation for graalvm by @chaokunyang in #1222
- [Java] Align string array to collection protocol v2 by @chaokunyang in #1228
- [Improve] add rust doc by @caicancai in #1226
- [JavaScript] Add more methods for BinaryReader by @bytemain in #1231
- [C++] Improve FormatTimePoint by removing sstream by @PragmaTwice in #1233
- [C++] Improve Status by using unique_ptr by @PragmaTwice in #1234
- [JavaScript] Add lint tools by @bytemain in #1232
- [Doc][Spec] fury java serialization spec by @chaokunyang in #1238
- [Doc] bump release version to 0.4.1 by @chaokunyang in #1242
- [Java] Remove guava part 2. by @nandakumar131 in #1244
- [C++] Support mapping types for RowEncodeTrait by @PragmaTwice in #1247
- Update apache license by @chaokunyang in #1246
- Rename to Apache Fury in README by @PragmaTwice in #1249
- [Java][Doc] enable requireClassRegistration in example by default by @chaokunyang in #1250
- chore: setup apache repo by @tisonkun in #1251
- chore: clear alipay refs by @tisonkun in #1252
- chore: add NOTICE and DISCLAIMER by @tisonkun in #1253
- Delete CODE_OF_CONDUCT.md by @pjfanning in #1255
- docs: polish CONTRIBUTING doc by @tisonkun in #1257
- Add collaborators to workaround unfinished apache ID procedure by @PragmaTwice in #1256
- chore: relocate Maven GAV and Java package by @tisonkun in #1259
- Add maven badge by @vesense in #1260
- Add slack channel to README by @PragmaTwice in #1261
- chore: reflect PPMC members set up by @tisonkun in #1262
- ci: Release Fury Java Snapshot by @tisonkun in #1264
- [DOC] doc sync stay consistent with the site by @theweipeng in #1266
- [Java] Format integration tests code by @chaokunyang in #1263
- [JavaScript] Improve tag write performance by @bytemain in #1241
- update fury java install by @chaokunyang in #1268
- [Java][Doc] Switch Option and Description column for better readability by @chaokunyang in #1267
- Update twitter id in README.md to ApacheFury by @chaokunyang in #1270
- [Java] Clean-up of tmp files created in CrossLanguageTest by @nandakumar131 in #1277
- [CODE HEADER] Remove all fury author tag by @chaokunyang in #1282
- [Java] Support registration in thread safe fury by @chaokunyang in #1280
- [JAVA] add guava license header by @pjfanning in #1283
- [JAVA] remove license header from MurmurHash3 by @pjfanning in #1284
- Update NOTICE to mention all the licenses for source files where code is borrowed from different project. by @nandakumar131 in #1285
- [Java] refine Collection util data structure (#1287) by @mof-dev-3 in #1288
- Update copyright date in NOTICE by @PragmaTwice in #1289
- [JavaScript] Implement the standard protocol by @theweipeng in #1286
- [Java] Fix fury benchmark jmh GPLV2 license conflict by @chaokunyang in #1272
- [JavaScript] compress numbers by @theweipeng in #1290
- chore: tidy text and improve branding by @tisonkun in #1292
- [Java] remove vague desc in drop-in replacement jdk serialization libs by @chaokunyang in #1291
- [CI] Add macos C++ build to ci.yml by @PragmaTwice in #1295
- [C++] Windows build support by @LiangliangSui in #1294
- [C++] Use python3 instead of python in bazel build by @PragmaTwice in #1297
- [C++] Remove unused function by @LiangliangSui in #1298
- Refine words and remove other org links in README by @PragmaTwice in #1307
- [Java] fix nested collection num elements by @chaokunyang in #1306
- Keep head metadata as is in docs by @PragmaTwice in #1311
- [MINOR] Update CODEOWNERS by @liuxiaocs7 in #1312
- Refine English writing about benchmark in README by @PragmaTwice in #1314
- [DOC] Refine build steps and wording in DEVELOPMENT by @PragmaTwice in #1315
- ci: add PR title lint following the conventional commits by @PragmaTwice in #1317
- chore: Update CODEOWNERS by @chaokunyang in #1316
- feat(javascript): Refactor & Compress Long by @theweipeng in #1313
- docs: Remove extra symbols by @caicancai in #1310
- perf(java): merge perftests into benchmark by @chaokunyang in #1318
- perf(java): rename fury-benchmark to benchmark by @chaokunyang in #1319
- feat(JavaScript): Implement Enum by @theweipeng in #1321
- chore(C++): Remove unused bazel rulers by @LiangliangSui in #1322
- feat(JavaScript): enhance performance 64bits number by @theweipeng in #1320
- ci(c++): Implement C++ CI scripts using python by @LiangliangSui in #1303
- fix(java): fix polymorphic array serialization by @chaokunyang in #1324
- chore(git): update .gitignore by @LiangliangSui in #1331
- feat(java): refine collection builder util by @chaokunyang in #1334
- chore(cpp): rename src to cpp by @chaokunyang in #1329
- chore(JavaScript): Drop optional chaining expression by @bytemain in #1338
- feat(java): refine collection builder util (#1334), fix collection init size typo by @mof-dev-3 in #1342
- fix(java): fix nested collection cast for scala/java by @chaokunyang in #1333
- feat(java): Specify JPMS module names by @mtf90 in #1343
- feat(JavaScript): Implement the collection protocol by @theweipeng in #1337
- fix(Rust): incorrect cast by @theweipeng in #1345
- feat(ci): Rust ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1332
- fix(java): fix ClassLoader npe in loadOrGenCodecClass by @chaokunyang in #1346
- chore(java): Remove redundant code by @LiangliangSui in #1349
- fix(go): fix comment error, should be 1-5 byte by @bowin in #1353
- chore(JavaScript): Fix JavaScript test CI by @theweipeng in #1355
- chore(JavaScript): fix test ci on early Node by @theweipeng in #1356
- chore(JavaScript): Fix using npm run build error by @LiangliangSui in #1357
- ci(JavaScript): JavaScript ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1358
- feat(JavaScript): Support oneof by @theweipeng in htt...
v0.5.0-rc1
What's Changed
- [Java] Clear extRegistry.getClassCtx if generate serializer class failed by @chaokunyang in #1221
- [C++] Support optional fields/elements in RowEncoder by @PragmaTwice in #1223
- [JavaScript] Implements tuple serializer by @bytemain in #1216
- [Rust] Remove unnecessary abstraction by @theweipeng in #1225
- [Java] disable async compilation for graalvm by @chaokunyang in #1222
- [Java] Align string array to collection protocol v2 by @chaokunyang in #1228
- [Improve] add rust doc by @caicancai in #1226
- [JavaScript] Add more methods for BinaryReader by @bytemain in #1231
- [C++] Improve FormatTimePoint by removing sstream by @PragmaTwice in #1233
- [C++] Improve Status by using unique_ptr by @PragmaTwice in #1234
- [JavaScript] Add lint tools by @bytemain in #1232
- [Doc][Spec] fury java serialization spec by @chaokunyang in #1238
- [Doc] bump release version to 0.4.1 by @chaokunyang in #1242
- [Java] Remove guava part 2. by @nandakumar131 in #1244
- [C++] Support mapping types for RowEncodeTrait by @PragmaTwice in #1247
- Update apache license by @chaokunyang in #1246
- Rename to Apache Fury in README by @PragmaTwice in #1249
- [Java][Doc] enable requireClassRegistration in example by default by @chaokunyang in #1250
- chore: setup apache repo by @tisonkun in #1251
- chore: clear alipay refs by @tisonkun in #1252
- chore: add NOTICE and DISCLAIMER by @tisonkun in #1253
- Delete CODE_OF_CONDUCT.md by @pjfanning in #1255
- docs: polish CONTRIBUTING doc by @tisonkun in #1257
- Add collaborators to workaround unfinished apache ID procedure by @PragmaTwice in #1256
- chore: relocate Maven GAV and Java package by @tisonkun in #1259
- Add maven badge by @vesense in #1260
- Add slack channel to README by @PragmaTwice in #1261
- chore: reflect PPMC members set up by @tisonkun in #1262
- ci: Release Fury Java Snapshot by @tisonkun in #1264
- [DOC] doc sync stay consistent with the site by @theweipeng in #1266
- [Java] Format integration tests code by @chaokunyang in #1263
- [JavaScript] Improve tag write performance by @bytemain in #1241
- update fury java install by @chaokunyang in #1268
- [Java][Doc] Switch Option and Description column for better readability by @chaokunyang in #1267
- Update twitter id in README.md to ApacheFury by @chaokunyang in #1270
- [Java] Clean-up of tmp files created in CrossLanguageTest by @nandakumar131 in #1277
- [CODE HEADER] Remove all fury author tag by @chaokunyang in #1282
- [Java] Support registration in thread safe fury by @chaokunyang in #1280
- [JAVA] add guava license header by @pjfanning in #1283
- [JAVA] remove license header from MurmurHash3 by @pjfanning in #1284
- Update NOTICE to mention all the licenses for source files where code is borrowed from different project. by @nandakumar131 in #1285
- [Java] refine Collection util data structure (#1287) by @mof-dev-3 in #1288
- Update copyright date in NOTICE by @PragmaTwice in #1289
- [JavaScript] Implement the standard protocol by @theweipeng in #1286
- [Java] Fix fury benchmark jmh GPLV2 license conflict by @chaokunyang in #1272
- [JavaScript] compress numbers by @theweipeng in #1290
- chore: tidy text and improve branding by @tisonkun in #1292
- [Java] remove vague desc in drop-in replacement jdk serialization libs by @chaokunyang in #1291
- [CI] Add macos C++ build to ci.yml by @PragmaTwice in #1295
- [C++] Windows build support by @LiangliangSui in #1294
- [C++] Use python3 instead of python in bazel build by @PragmaTwice in #1297
- [C++] Remove unused function by @LiangliangSui in #1298
- Refine words and remove other org links in README by @PragmaTwice in #1307
- [Java] fix nested collection num elements by @chaokunyang in #1306
- Keep head metadata as is in docs by @PragmaTwice in #1311
- [MINOR] Update CODEOWNERS by @liuxiaocs7 in #1312
- Refine English writing about benchmark in README by @PragmaTwice in #1314
- [DOC] Refine build steps and wording in DEVELOPMENT by @PragmaTwice in #1315
- ci: add PR title lint following the conventional commits by @PragmaTwice in #1317
- chore: Update CODEOWNERS by @chaokunyang in #1316
- feat(javascript): Refactor & Compress Long by @theweipeng in #1313
- docs: Remove extra symbols by @caicancai in #1310
- perf(java): merge perftests into benchmark by @chaokunyang in #1318
- perf(java): rename fury-benchmark to benchmark by @chaokunyang in #1319
- feat(JavaScript): Implement Enum by @theweipeng in #1321
- chore(C++): Remove unused bazel rulers by @LiangliangSui in #1322
- feat(JavaScript): enhance performance 64bits number by @theweipeng in #1320
- ci(c++): Implement C++ CI scripts using python by @LiangliangSui in #1303
- fix(java): fix polymorphic array serialization by @chaokunyang in #1324
- chore(git): update .gitignore by @LiangliangSui in #1331
- feat(java): refine collection builder util by @chaokunyang in #1334
- chore(cpp): rename src to cpp by @chaokunyang in #1329
- chore(JavaScript): Drop optional chaining expression by @bytemain in #1338
- feat(java): refine collection builder util (#1334), fix collection init size typo by @mof-dev-3 in #1342
- fix(java): fix nested collection cast for scala/java by @chaokunyang in #1333
- feat(java): Specify JPMS module names by @mtf90 in #1343
- feat(JavaScript): Implement the collection protocol by @theweipeng in #1337
- fix(Rust): incorrect cast by @theweipeng in #1345
- feat(ci): Rust ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1332
- fix(java): fix ClassLoader npe in loadOrGenCodecClass by @chaokunyang in #1346
- chore(java): Remove redundant code by @LiangliangSui in #1349
- fix(go): fix comment error, should be 1-5 byte by @bowin in #1353
- chore(JavaScript): Fix JavaScript test CI by @theweipeng in #1355
- chore(JavaScript): fix test ci on early Node by @theweipeng in #1356
- chore(JavaScript): Fix using npm run build error by @LiangliangSui in #1357
- ci(JavaScript): JavaScript ci is ported from run_ci.sh to run_ci.py by @LiangliangSui in #1358
- feat(JavaScript): Support oneof by @theweipeng in htt...
v0.4.1
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
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
- [Python] fix python release by @chaokunyang in #1125
- [Java] make unsafe offset compatible with graalvm by @chaokunyang in #1117
- [Scala] Fix scala package object JIT error by @chaokunyang in #1130
- [Java] Refine maven pom config by @chaokunyang in #1126
- [Rust] add rust building by @caicancai in #1129
- [C++] Remove useless overload of Writer::WriteString by @PragmaTwice in #1136
- [Rust] fix typo by @caicancai in #1133
- [Rust] add mesaage about rust ci by @caicancai in #1131
- [C++] Add move ctor/assign op to Status by @PragmaTwice in #1134
- [Rust] fix cargo test error by @wangweipeng2 in #1135
- [Rust] improve rust ci by @caicancai in #1138
- [Scala] Fix scala collection serialization nested in pojo by @chaokunyang in #1140
- [Java] make sting builder serializer codegen eager by @chaokunyang in #1141
- [Rust] fix rust ci bug by @caicancai in #1139
- [Java] support add static fields in fury codegen by @chaokunyang in #1147
- [C++] Add the basic row format serializer for C++ class types via reflection by @PragmaTwice in #1144
- [C++] Add duplicated fields detection in
FURY_FIELD_INFO
macro by @PragmaTwice in #1151 - [Java] support create serializer when register class by @chaokunyang in #1154
- [Java] Support graalvm native image by @chaokunyang in #1143
- [C++] Support string type in RowEncoder by @PragmaTwice in #1158
- [Scala] add graalvm support for scala singleton by @chaokunyang in #1159
- [Scala] Fix scala singleton map/collection serialization in struct by @chaokunyang in #1160
- [Java] add read resolve circular test suite by @chaokunyang in #1161
- [Java] Remove load arrow serializers by default by @chaokunyang in #1163
- [Java] Support thread safe fury for graalvm native image by @chaokunyang in #1164
- [Scala] Fix package object serialization in scala App by @chaokunyang in #1166
- [Java] add graalvm usage doc by @chaokunyang in #1168
- [C++] Split util.h to bit_util.h and time_util.h by @PragmaTwice in #1171
- [C++] Support cv-qualified types in row encoder by @PragmaTwice in #1172
- [C++] Add support for nested class types in row encoder by @PragmaTwice in #1173
- [Java] Add graalvm benchmark by @chaokunyang in #1178
- [Java] Fix string key serializer ref tracking by @chaokunyang in #1174
- [Java] Add graalvm benchmark test results by @chaokunyang in #1180
- [Scala] fix package object inaccessible from source code by @chaokunyang in #1181
Full Changelog: v0.3.1...v0.4.0
v0.3.1
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
- @pjfanning made their first contribution in #1074
- @mof-dev-3 made their first contribution in #1088
- @PragmaTwice made their first contribution in #1093
- @xiguashu made their first contribution in #1123
Full Changelog: v0.3.0...v0.3.1
v0.3.0
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 JavawriteReplace/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 inExternalizableSerializer
- [Java] fix jdk compatible serialization for inheritance
What's Changed
- [Impove][Doc] Improve README by @caicancai in #1011
- [Java] rename wrong ascii naming to latin by @chaokunyang in #1013
- [Doc] Update go install doc by @chaokunyang in #1015
- fix(grammatical): correct typos and improve grammar by @iamahens in #1018
- [Improve][Doc] Improve README by @caicancai in #1020
- [Improve][Doc] add environment requirement by @caicancai in #1022
- chore(docs): fixed typos by @Smoothieewastaken in #1023
- bugfix: read buffer error when object contain binary field by @wangweipeng2 in #1026
- [Doc] Optimize class registration doc by @chaokunyang in #1027
- [Java] fix jdk compatible serialization for inheritance by @chaokunyang in #1030
- [Doc] add scala user doc by @chaokunyang in #1028
- [Doc] refine scala doc by @chaokunyang in #1031
- Update README.md - fix grammatrical errors in README. by @ayushrakesh in #1037
- [Java] Support local static class jit by @chaokunyang in #1036
- [Java] support bytes string serialization for jdk8 by @chaokunyang in #1039
- [Java] set timeout to JITContextTest by @chaokunyang in #1040
- [Java] fix string builder serialization for jdk8 with jdk17 runtime by @chaokunyang in #1042
- [Doc] add auto code reviewers by @chaokunyang in #1043
- [Java] Allow for
InputStream
not reading entire length by @knutwannheden in #1034 - [Java] Use
ReflectionUtils.getCtrHandle()
inExternalizableSerializer
by @knutwannheden in #1044 - [Improve] make maven-spotless-plugin version as a parameter by @caicancai in #1046
- Update README.md by @Shivam250702 in #1047
- [Java] support writeReplace/readResolve for Externalizable by @chaokunyang in #1048
- Update README.md by @Spyrosigma in #1051
- Grammatical error in CODE_OF_CONDUCT.md by @HimanshuMahto in #1050
- Update scala link title README.md by @chaokunyang in #1052
- [Doc] add scala readme and refine document by @chaokunyang in #1041
- [Java] populate StackOverflowError with enable ref tracking message by @chaokunyang in #1049
- [Scala] Setup scala project by @chaokunyang in #1054
- [Scala] add scala singleton object serializer by @chaokunyang in #1053
- Updated README.md by @vidhijain27 in #1056
- [Scala] add scala tuple serialization tests by @chaokunyang in #1059
- Empty ListExpression#genCode will throw npe by @farmerworking in #1063
New Contributors
- @iamahens made their first contribution in #1018
- @Smoothieewastaken made their first contribution in #1023
- @ayushrakesh made their first contribution in #1037
- @knutwannheden made their first contribution in #1034
- @Shivam250702 made their first contribution in #1047
- @Spyrosigma made their first contribution in #1051
- @HimanshuMahto made their first contribution in #1050
- @vidhijain27 made their first contribution in #1056
- @farmerworking made their first contribution in #1063
Full Changelog: v0.2.1...v0.3.0
v0.2.1
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
- [Doc] Update JDK support doc by @chaokunyang in #992
- [Go] Make compilation support tinygo by @springrain in #991
- [Doc] fix config class imports by @chaokunyang in #993
- [go] fixed typo in readme import path by @voldyman in #995
- [Java] fix jit error for register private serializers by @chaokunyang in #999
- [Java] Refine reflection contructor by MethodHandle by @chaokunyang in #1000
- [Java] Fix private record JIT by @chaokunyang in #1004
- [Java] Upgrade janino version to fix package name conflict with classname by @chaokunyang in #1006
- [Java] fix janino deps for fury-benchmark by @chaokunyang in #1007
- [Doc] Improve README by @caicancai in #1009
New Contributors
- @springrain made their first contribution in #991
- @voldyman made their first contribution in #995
- @caicancai made their first contribution in #1009
Full Changelog: v0.2.0...v0.2.1