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 #1348
- docs(JavaScript): Add build and test documentation for JavaScript by @LiangliangSui in #1360
- ci(ci): Add files ignored by CI by @LiangliangSui in #1361
- fix(java): CodeGen: Name conflicts when omitting java.lang prefix #1363 by @cn-at-osmit in #1366
- fix(java): replace implements by extends by @chaokunyang in #1368
- feat(java): upgrade kryo to 5.5 by @chaokunyang in #1369
- fix(java): fix type conflict in method split by @chaokunyang in #1371
- fix(Rust): Fix memory errors caused by casting by @theweipeng in #1372
- feat(JavaScript): Make PlatformBuffer available if has Buffer polyfill by @bytemain in #1373
- chore(JavaScript): update benchmark by @bytemain in #1375
- chore(JavaScript): remove redundant statement by @bytemain in #1376
- fix(java): References within InvocationHandler, Issue #1364 by @cn-at-osmit in #1365
- feat(java): support jdk proxy serialization for graalvm by @chaokunyang in #1379
- fix(java): fix get static field by unsafe by @chaokunyang in #1380
- fix(java): add potential missing bean class-loader by @Maurice-Betzel in #1381
- chore(java): Extract BaseFury interface by @LiangliangSui in #1382
- chore(Rust): remove fury-derive by @theweipeng in #1385
- feat(JavaScript): create zero-copy buffer when convert by @bytemain in #1386
- fix(java): fix javax package for accessor codegen by @chaokunyang in #1388
- docs(java): standardizing fury java spec by @chaokunyang in #1240
- chore(java): Simplified code by @LiangliangSui in #1390
- fix(java): Allow partial read of serialized size from
InputStream
by @phogh in #1391 - test(java): Add test for ClassLoaderFuryPooled by @LiangliangSui in #1392
- docs(java): Formatting the java_object_graph_guide.md document. by @LiangliangSui in #1394
- chore(java): Use existing API to streamline code by @LiangliangSui in #1395
- refactor(java): Improve code readability and fix an issue by @LiangliangSui in #1396
- feat(java): avoid big object graph cause buffer take up too much memory by @chaokunyang in #1397
- fix(java): Blacklist detection is also performed when the Class is registered. by @LiangliangSui in #1398
- fix(java): fix big buffer trunc by @chaokunyang in #1402
- ci: Add arm64 macos to CI workflow by @PragmaTwice in #1400
- fix(java): fix immutable collection ref tracking by @chaokunyang in #1403
- feat(java): avoid recompilation when gc happens for memory pressure by @chaokunyang in #1411
- refactor(java): Optimize Class ID allocation. by @LiangliangSui in #1406
- chore(java): use
Platform.BYTE_ARRAY_OFFSET
replaceMemoryBuffer.BYTE_ARRAY_BASE_OFFSET
by @LiangliangSui in #1414 - chore(scala): update sbt version to 1.9.9 by @laglangyue in #1415
- chore(scala): update scala version to 2.13.13/3.3.3 by @laglangyue in #1416
- feat(java): carry read objects when deserialization fail for better trouble shooting by @chaokunyang in #1420
- feat(java): implement define_class insteadof using javaassist by @chaokunyang in #1422
- feat(java): skip print exception when class not exist by @chaokunyang in #1423
- fix: fix license issue for release by @chaokunyang in #1425
- refactor(java): remove registerWithCheck function by @LiangliangSui in #1424
- fix: update CI actions by @pjfanning in #1427
- fix: use blazingly instead of blazing by @pjfanning in #1428
- feat: bump version using python by @chaokunyang in #1429
- fix(license): add DISCLAIMER and NOTICE for built jars by @chaokunyang in #1430
- fix(java): fix bigdecimal serializer by @chaokunyang in #1431
- fix(java): fix slf4j on graalvm by @chaokunyang in #1432
- chore(java): Reuse unsafePutPositiveVarInt in unsafeWritePositiveVarInt by @LiangliangSui in #1434
- feat(spec): standardizing fury cross-language serialization specification by @chaokunyang in #1413
- chore(java): rename blacklist/whitelist to allowed/disallowed list by @chaokunyang in #1449
- chore(doc): sync specification doc by @chaokunyang in #1452
- chore(java): Replace io.* in the benchmark with org.apache.fury by @LiangliangSui in #1453
- fix(license): fix license issue by @chaokunyang in #1446
- feat(java): rewrite readVarUint64 algorithm by @chaokunyang in #1463
- feat(java): refactor readVarUint32 algorithm by @chaokunyang in #1462
- fix(java): refine writeVarUint64 readbility by @chaokunyang in #1464
- feat(java): extract public Fury methods to BaseFury by @Munoon in #1467
- feat(java): reduce readInt/readVarInt code size for for jvm jit inline by @chaokunyang in #1469
- feat(java): reduce code size of read long to optimize jvm jit inline by @chaokunyang in #1470
- feat(java): optimize read char/short jvm jit inline by @chaokunyang in #1471
- feat(spec): add xlang type mapping by @chaokunyang in #1468
- feat(java): optimize read float/double for jvm jit inline by @chaokunyang in #1472
- chore(java): add comments for loop unrolling. by @LiangliangSui in #1450
- docs: Use perf type when pr has performance impact. by @LiangliangSui in #1474
- chore: revert add xlang type mapping (#1468)" by @chaokunyang in #1475
- fix(java): fix big integer serialization by @chaokunyang in #1479
- feat(java): native streaming mode deserialization by @chaokunyang in #1451
- chore: add pull request template by @LiangliangSui in #1477
- feat(java): implement fury logger and remove slf4j library by @chaokunyang in #1485
- feat(java): channel stream reader by @Munoon in #1483
- fix(java): optimize unsafePutPositiveVarInt bytecode size by @pandalee99 in #1489
- perf(java): Reduce unsafePutPositiveVarInt bytecode size. by @LiangliangSui in #1490
- perf(java): Reduce unsafeWritePositiveVarLong bytecode size. by @pandalee99 in #1491
- chore(java): add jmh benchmark params to doc by @chaokunyang in #1488
- feat(JavaScript): implement xlang protocol by @theweipeng in #1487
- fix(java): fix benchmark register class and create object by @chaokunyang in #1495
- perf(java): generate list fori loop instead of iterator loop for list serialization by @chaokunyang in #1493
- chore(java): FuryLogger add level control. by @LiangliangSui in #1492
- feat(java): optimize string serialization by concating coder and length by @chaokunyang in #1486
- chore(java): rename MemoryBuffer read/write/put/getType with read/write/put/getTypeNumber by @chaokunyang in #1480
- chore(java): rename remaining get/put int/float by @chaokunyang in #1500
- fix(java): make slf4j optional by @chaokunyang in #1494
- perf(java): refine endian check code size in buffer by @chaokunyang in #1501
- feat(doc): add type mapping for xlang serialization by @chaokunyang in #1476
- chore(java): reduce fury caller stack by @chaokunyang in #1496
- perf(java): fastpath for read/write small varint in range [0,127] by @chaokunyang in #1503
- chore(java): Improve javadoc for logging module. by @LiangliangSui in #1509
- chore(javaScript): enhancement code readability by @theweipeng in #1505
- fix(java): fix create NilLogger by @chaokunyang in #1506
- perf(java): optimize fury creation speed by @chaokunyang in #1511
- fix(licsense): fix license and notice issue by @chaokunyang in #1507
- feat(spec): add doc for why map use chunk by chunk spec by @chaokunyang in #1508
- chore(java): move ClassDef to meta package by @chaokunyang in #1515
- fix(spec): fix special char overflow in meta string encoding by @chaokunyang in #1513
- chore(java): rename EnumString to MetaString by @chaokunyang in #1516
- feat(java): meta string encoding algorithm in java by @chaokunyang in #1514
- feat(java/python/golang): concat meta string len with flags by @chaokunyang in #1517
- feat(java): concat write classname flag with package name by @chaokunyang in #1523
- chore: The placeholder is displayed in the form of "" by @LiangliangSui in #1526
- chore(java): deprecate serializeJavaObjectAndClass/deserializeJavaObjectAndClass API by @chaokunyang in #1502
- feat(java): support meta string encoding for classname and package name by @chaokunyang in #1527
- chore(java): inline isDeclType in codegen by @chaokunyang in #1504
- fix(java): skip weakmap test for openj9 by @chaokunyang in #1536
- chore(doc): rename guide document name by @chaokunyang in #1538
- feat: add source release/verify script by @chaokunyang in #1535
- feat(java/python/golang): Implement the magicNumber feature by @LiangliangSui in #1539
- feat(javaScript): Implement magic number feature by @theweipeng in #1550
- perf(java): fix fury input stream read slow by @chaokunyang in #1551
- fix(release): make incubating after version in release artifacts by @chaokunyang in #1552
- feat(javascript): Implement Xlang map by @theweipeng in #1549
- feat(java): support adjust logger level dynamically by @chaokunyang in #1557
- fix(java): Switch order of literals to prevent NullPointerException by @pixeeai in #1559
- chore(java): clean code for Fury ArrayAsList by @chaokunyang in #1560
- fix(license): remove benchmark license when build by @chaokunyang in #1562
- fix(license): remove confused comment and remove generics by @chaokunyang in #1563
- fix(javascript): fix macos javascript ci failure by @chaokunyang in #1567
- feat(spec/java): add strip flag in meta string encoding spec by @chaokunyang in #1565
- perf(java): Optimize MetaStringDecoder by @LiangliangSui in #1568
- chore(doc): fixed a typo by @huisman6 in #1572
- fix(java): Prevent exception in ObjectArray.clearObjectArray() by @tommyettinger in #1573
- feat(JavaScript): xlang map code generator by @theweipeng in #1571
- feat(java): enable deserializeUnexistedClass by default by @chaokunyang in #1575
- feat(java): support deserialize unexisted array/enum classes by @chaokunyang in #1569
- chore(java): move Platform class to memory package by @chaokunyang in #1578
- refactor(java): replace Guava's TypeToken with self-made by @Munoon in #1553
- fix(java): fix bytebuffer no such method error by @chaokunyang in #1580
- feat(golang): meta string encoding algorithm in golang by @qingoba in #1566
- fix(java): add guava derive comments by @chaokunyang in #1581
- refactor(java): move reflect utils into reflect package by @chaokunyang in #1583
- chore(java): move ignore method into Exception util by @chaokunyang in #1584
- fix(java): grow buffer to interger.max by @chaokunyang in #1582
- feat(java): support compatible mode for graalvm by @chaokunyang in #1586
- feat(java): revive soft reference by @chaokunyang in #1585
- fix(java): meta string strip last char && check empty encoded string by @qingoba in #1587
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
Full Changelog: v0.4.1...v0.5.0-rc4