Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
72817de
implement streaming read/write type info
chaokunyang Jan 15, 2026
8d0025e
fix java not null fields read/write
chaokunyang Jan 16, 2026
446a2e7
fix go test
chaokunyang Jan 16, 2026
1e24fca
fix metashared nullable read
chaokunyang Jan 16, 2026
3d8daa0
refactor java object serializer
chaokunyang Jan 16, 2026
1d9f76e
simplify debug output guard
chaokunyang Jan 16, 2026
021eaff
refine mode code
chaokunyang Jan 16, 2026
59dc47d
fix tests
chaokunyang Jan 16, 2026
6a1d48f
refactor dispatch logic
chaokunyang Jan 16, 2026
daf1cbe
refine field skipper
chaokunyang Jan 17, 2026
a2180c4
lint code
chaokunyang Jan 17, 2026
f5e2a95
fix object stream serializer
chaokunyang Jan 17, 2026
23d09ba
fix: add layer class meta reading to MetaSharedLayerCodecBuilder
chaokunyang Jan 17, 2026
4fbe39b
fix: handle sender layers not present in receiver for ObjectStreamSer…
chaokunyang Jan 17, 2026
b132ac0
feat: comprehensive schema evolution support for ObjectStreamSerializer
chaokunyang Jan 17, 2026
ee22c9e
refactor: read ClassDef in ObjectStreamSerializer before calling seri…
chaokunyang Jan 17, 2026
f965519
refactor object stream serializer
chaokunyang Jan 17, 2026
858cd3f
refactor objectstream serializer
chaokunyang Jan 17, 2026
7b4d341
add more tests for object stream serializer
chaokunyang Jan 17, 2026
4ec6af4
moke latest jdk tests as a module of fory
chaokunyang Jan 17, 2026
6b88375
fix record serializer
chaokunyang Jan 17, 2026
d00d245
add comprehensive tests
chaokunyang Jan 17, 2026
4304f86
fix failed tests
chaokunyang Jan 17, 2026
152b0d7
refactor type system for java
chaokunyang Jan 18, 2026
10e369c
refactor type system
chaokunyang Jan 18, 2026
d375a83
refactor more type system
chaokunyang Jan 18, 2026
2efc29b
fix(java): align codec builder with field types
chaokunyang Jan 18, 2026
d1fe4eb
fix(java): align compatible meta share and xlang nullability
chaokunyang Jan 18, 2026
56c0ba5
style(java): apply spotless
chaokunyang Jan 18, 2026
62deeb0
fix(go): align compatible read order with remote schema
chaokunyang Jan 19, 2026
774bcfa
fix(java,kotlin): align xlang boxed nullability
chaokunyang Jan 19, 2026
c430c77
fix ci failure
chaokunyang Jan 19, 2026
f1390ad
fix(java,scala): stabilize registered ext type ids
chaokunyang Jan 19, 2026
133b7d6
add registerSerializerAndType API
chaokunyang Jan 19, 2026
57a1bf6
refactor(java): unify resolver type id maps
chaokunyang Jan 19, 2026
d5cef28
fix(java): align user type ids with serializer
chaokunyang Jan 19, 2026
5a2cc28
perf(java): inline class info reads
chaokunyang Jan 19, 2026
0418aa8
optimzie long map initial size for user type
chaokunyang Jan 19, 2026
2c3056d
adjust benchmakr params
chaokunyang Jan 19, 2026
39b436b
fix go skip meta
chaokunyang Jan 19, 2026
d3b0d69
fix lint
chaokunyang Jan 19, 2026
72d8765
update java spec
chaokunyang Jan 19, 2026
aee8b30
update spec doc
chaokunyang Jan 19, 2026
1235825
update field order
chaokunyang Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,7 @@ jobs:
- name: Run Rust Xlang Test
env:
FORY_RUST_JAVA_CI: "1"
ENABLE_FORY_DEBUG_OUTPUT: "1"
run: |
cd java
mvn -T16 --no-transfer-progress clean install -DskipTests
Expand Down Expand Up @@ -410,6 +411,7 @@ jobs:
- name: Run CPP Xlang Test
env:
FORY_CPP_JAVA_CI: "1"
ENABLE_FORY_DEBUG_OUTPUT: "1"
run: |
cd java
mvn -T16 --no-transfer-progress clean install -DskipTests
Expand Down Expand Up @@ -531,6 +533,7 @@ jobs:
- name: Run Python Xlang Test
env:
FORY_PYTHON_JAVA_CI: "1"
ENABLE_FORY_DEBUG_OUTPUT: "1"
run: |
cd java
mvn -T16 --no-transfer-progress clean install -DskipTests
Expand Down Expand Up @@ -599,6 +602,7 @@ jobs:
- name: Run Go Xlang Test
env:
FORY_GO_JAVA_CI: "1"
ENABLE_FORY_DEBUG_OUTPUT: "1"
run: |
cd java
mvn -T16 --no-transfer-progress clean install -DskipTests
Expand Down
6 changes: 2 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ While working on Fory, please remember:
- **Cross-Language Consistency**: Maintain consistency across language implementations while respecting language-specific idioms.
- **Graalvm Support using fory codegen**: For graalvm, please use `fory codegen` to generate the serializer when building graalvm native image, do not use graallvm reflect-related configuration unless for JDK `proxy`.
- **Xlang Type System**: Java `native mode(xlang=false)` shares same type systems between type id from `Types.BOOL~Types.STRING` with `xlang mode(xlang=true)`, but for other types, java `native mode` has different type ids.
- **Remote git repository**: `git@github.com:apache/fory.git` is remote repository, do not use other remote repository when you want to check code under `main` branch.
- **Contributor git repository**: A contributor should fork the `git@github.com:apache/fory.git` repo, and git push the code changes into their forked repo, then create a pull request from the branch in their forked repo into `git@github.com:apache/fory.git`.

## Build and Development Commands

Expand Down Expand Up @@ -295,9 +297,6 @@ it_dir=$(pwd)
# Run graalvm tests
cd $it_dir/graalvm_tests && mvn -T16 -DskipTests=true -Pnative package && target/main

# Run latest_jdk_tests
cd $it_dir/latest_jdk_tests && mvn -T16 test

# Run JDK compatibility tests
cd $it_dir/jdk_compatibility_tests && mvn -T16 test

Expand Down Expand Up @@ -498,7 +497,6 @@ Fory rust provides macro-based serialization and deserialization. Fory rust cons
- Note that fory use codegen to support graalvm instead of reflection, fory don't use `reflect-config.json` for
serialization, this is the core advantage of compared to graalvm JDK serialization.
- **jdk_compatibility_tests**: test suite for fory serialization compatibility between multiple JDK versions
- **latest_jdk_tests**: test suite for `jdk17+` versions

## Key Development Guidelines

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public Object flatbuffers_deserialize(FlatBuffersState.FlatBuffersUserTypeState
public static void main(String[] args) throws IOException {
if (args.length == 0) {
String commandLine =
"org.apache.fory.*UserTypeDeserializeSuite.fory* -f 1 -wi 5 -i 10 -t 1 -w 2s -r 2s -rf csv "
"org.apache.fory.*UserTypeDeserializeSuite.* -f 1 -wi 3 -i 3 -t 1 -w 2s -r 2s -rf csv "
+ "-p objectType=MEDIA_CONTENT -p bufferType=array -p references=false";
System.out.println(commandLine);
args = commandLine.split(" ");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public Object flatbuffers_serialize(FlatBuffersState.FlatBuffersUserTypeState st
public static void main(String[] args) throws IOException {
if (args.length == 0) {
String commandLine =
"org.apache.fory.*UserTypeSerializeSuite.fory_serialize_compatible -f 1 -wi 5 -i 10 -t 1 -w 200s -r 2s -rf csv "
"org.apache.fory.*UserTypeSerializeSuite.* -f 1 -wi 3 -i 3 -t 1 -w 2s -r 2s -rf csv "
+ "-p objectType=MEDIA_CONTENT -p bufferType=array -p references=false";
System.out.println(commandLine);
args = commandLine.split(" ");
Expand Down
2 changes: 1 addition & 1 deletion ci/format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ format_java() {
cd "$ROOT/benchmarks/java_benchmark"
mvn -T10 --no-transfer-progress spotless:apply
cd "$ROOT/integration_tests"
dirs=("graalvm_tests" "jdk_compatibility_tests" "latest_jdk_tests")
dirs=("graalvm_tests" "jdk_compatibility_tests")
for d in "${dirs[@]}" ; do
pushd "$d"
mvn -T10 --no-transfer-progress spotless:apply
Expand Down
3 changes: 1 addition & 2 deletions ci/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,15 +186,14 @@ def bump_java_version(new_version):
"integration_tests/graalvm_tests",
"integration_tests/jdk_compatibility_tests",
"integration_tests/jpms_tests",
"integration_tests/latest_jdk_tests",
"integration_tests/latest_jdk_tests",
"benchmarks/java_benchmark",
"java/fory-core",
"java/fory-format",
"java/fory-simd",
"java/fory-extensions",
"java/fory-test-core",
"java/fory-testsuite",
"java/fory-latest-jdk-tests",
]:
_bump_version(p, "pom.xml", new_version, _update_pom_parent_version)
# mvn versions:set too slow
Expand Down
10 changes: 0 additions & 10 deletions ci/run_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,6 @@ integration_tests() {
echo "benchmark tests"
cd "$ROOT"/benchmarks/java_benchmark
mvn -T10 -B --no-transfer-progress clean test install -Pjmh
echo "Start latest jdk tests"
cd "$ROOT"/integration_tests/latest_jdk_tests
echo "latest_jdk_tests: JDK 21"
export JAVA_HOME="$ROOT/zulu21.28.85-ca-jdk21.0.0-linux_x64"
export PATH=$JAVA_HOME/bin:$PATH
mvn -T10 -B --no-transfer-progress clean test
echo "Start JPMS tests"
cd "$ROOT"/integration_tests/jpms_tests
mvn -T10 -B --no-transfer-progress clean compile
Expand Down Expand Up @@ -220,10 +214,6 @@ jdk17_plus_tests() {
exit $testcode
fi
echo "Executing fory java tests succeeds"
echo "Executing latest_jdk_tests"
cd "$ROOT"/integration_tests/latest_jdk_tests
mvn -T10 -B --no-transfer-progress clean test
echo "Executing latest_jdk_tests succeeds"
}

kotlin_tests() {
Expand Down
17 changes: 0 additions & 17 deletions ci/tasks/java.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,12 +175,6 @@ def run_jdk17_plus(java_version="17"):
common.exec_cmd("mvn -T10 --batch-mode --no-transfer-progress install")

logging.info("Executing fory java tests succeeds")
logging.info("Executing latest_jdk_tests")

common.cd_project_subdir("integration_tests/latest_jdk_tests")
common.exec_cmd("mvn -T10 -B --no-transfer-progress clean test")

logging.info("Executing latest_jdk_tests succeeds")


def run_windows_java21():
Expand Down Expand Up @@ -218,17 +212,6 @@ def run_integration_tests():
common.cd_project_subdir("benchmarks/java_benchmark")
common.exec_cmd("mvn -T10 -B --no-transfer-progress clean test install -Pjmh")

logging.info("Start latest jdk tests")
common.cd_project_subdir("integration_tests/latest_jdk_tests")
logging.info("latest_jdk_tests: JDK 21")

# Set Java 21 as the current JDK
java_home = os.path.join(common.PROJECT_ROOT_DIR, JDKS["21"])
os.environ["JAVA_HOME"] = java_home
os.environ["PATH"] = f"{java_home}/bin:{os.environ.get('PATH', '')}"

common.exec_cmd("mvn -T10 -B --no-transfer-progress clean test")

logging.info("Start JPMS tests")
common.cd_project_subdir("integration_tests/jpms_tests")
common.exec_cmd("mvn -T10 -B --no-transfer-progress clean compile")
Expand Down
Loading
Loading