The GitHub Actions job "Fory CI" on fory.git/main has failed. Run started by GitHub user chaokunyang (triggered by chaokunyang).
Head commit for run: 777bde71e1d8013e44659e93f3ae80ffd0b5703e / Shawn Yang <[email protected]> feat(xlang): support unsigned int for xlang (#3111) ## Why? This PR adds support for unsigned integers in the cross-language (xlang) serialization specification. Previously, the xlang protocol only supported signed integer types, which required workarounds when serializing unsigned integers across languages like C++, Rust, and Go that have native unsigned types. ## What does this PR do? ### 1. Add Unsigned Integer Type IDs Adds new type IDs for unsigned integers to the xlang specification: - **UINT8** (9): 8-bit unsigned integer - **UINT16** (10): 16-bit unsigned integer - **UINT32** (11): 32-bit unsigned integer - **VARU32** (12): Variable-length encoded 32-bit unsigned integer - **UINT64** (13): 64-bit unsigned integer - **VARU64** (14): Variable-length encoded 64-bit unsigned integer - **HU64** (15): Hybrid encoded 64-bit unsigned integer Also adds unsigned array types: UINT8_ARRAY, UINT16_ARRAY, UINT32_ARRAY, UINT64_ARRAY. ### 2. Rename Type Names for Consistency Standardizes type names across all languages: - `VAR_INT32` → `VAR32` - `VAR_INT64` → `VAR64` - `SLI_INT64` → `H64` (Hybrid encoding) - `FLOAT` → `FLOAT32` - `DOUBLE` → `FLOAT64` - `HALF_FLOAT` → `FLOAT16` ### 3. Reorganize Type ID Layout Restructures the type ID space for better logical grouping: - **0-8**: Signed integers (BOOL, INT8-INT64, VAR32, VAR64, H64) - **9-15**: Unsigned integers (UINT8-UINT64, VARU32, VARU64, HU64) - **16-18**: Floating point (FLOAT16, FLOAT32, FLOAT64) - **19**: STRING - **20-22**: Collections (LIST, SET, MAP) - **23-30**: User types (ENUM, STRUCT variants, EXT variants) - **31-32**: Type combinators (UNION, NONE) - **33+**: Other types (DURATION, TIMESTAMP, arrays, etc.) ### 4. Update All Language Implementations Updates type definitions consistently across: - **C++**: `cpp/fory/type/type.h` - **Java**: `java/fory-core/src/main/java/org/apache/fory/type/Types.java` - **Python**: `python/pyfory/types.py` (refactored from `type_util.py`) - **Go**: `go/fory/types.go` - **Rust**: `rust/fory-core/src/types.rs` - **JavaScript**: `javascript/packages/fory/lib/type.ts` ### 5. Update Specification Documents - Updates `docs/specification/xlang_serialization_spec.md` with new type IDs - Updates `docs/specification/xlang_type_mapping.md` with type mappings ## Related issues #3110 ## Does this PR introduce any user-facing change? - [x] Does this PR introduce any public API change? - New unsigned integer types available for xlang serialization - Type name changes (with backward compatibility aliases in some languages) - [x] Does this PR introduce any binary protocol compatibility change? - **Breaking change**: Type IDs have been reorganized. Data serialized with old type IDs will not be compatible with the new format. - This is expected as the xlang protocol is still evolving before 1.0 release. ## Benchmark N/A - This is a protocol specification change with no expected performance impact. Report URL: https://github.com/apache/fory/actions/runs/20705776422 With regards, GitHub Actions via GitBox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
