This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory-site.git
The following commit(s) were added to refs/heads/main by this push:
new 1f820e03db 🔄 synced local 'docs/specification/' with remote
'docs/specification/'
1f820e03db is described below
commit 1f820e03dbf5f03fdbdb0ad237cc7466d69f841f
Author: chaokunyang <[email protected]>
AuthorDate: Fri May 8 06:22:24 2026 +0000
🔄 synced local 'docs/specification/' with remote 'docs/specification/'
---
docs/specification/java_serialization_spec.md | 10 ++++++++--
docs/specification/xlang_serialization_spec.md | 8 +++++++-
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/docs/specification/java_serialization_spec.md
b/docs/specification/java_serialization_spec.md
index c52695f1cc..094dcb1351 100644
--- a/docs/specification/java_serialization_spec.md
+++ b/docs/specification/java_serialization_spec.md
@@ -206,9 +206,15 @@ Header layout (lower bits on the right):
```
- size: lower 8 bits. If size equals the mask (0xFF), write extra size as
varuint32 and add it.
-- compress: bit 8, set when payload is compressed.
+- compress: bit 8, set when class meta bytes are compressed.
- reserved: bits 9-11 are reserved for future use and must be zero.
-- hash: 52-bit hash of the payload.
+- hash: 52 stored hash bits derived from MurmurHash3 x64_128 seed 47 over
+ `class meta bytes || header_low12_le`. `header_low12_le` is two
little-endian bytes containing
+ the low 12 header bits (size, compress, and reserved bits); the upper four
bits of the second
+ byte are zero. Take lane 0 of the 128-bit MurmurHash3 result as a signed
int64, left-shift it by
+ 12 with two's-complement 64-bit wraparound, apply signed absolute value
(leaving `INT64_MIN`
+ unchanged), then mask with `0xfffffffffffff000`. The final header is the
masked hash bits OR-ed
+ with the low 12 header bits.
### Class meta bytes
diff --git a/docs/specification/xlang_serialization_spec.md
b/docs/specification/xlang_serialization_spec.md
index 851791edbc..516622ae64 100644
--- a/docs/specification/xlang_serialization_spec.md
+++ b/docs/specification/xlang_serialization_spec.md
@@ -557,7 +557,13 @@ The 8-byte header is a little-endian uint64:
Current xlang writers MUST leave this bit unset and current xlang readers
MUST treat a set bit
as unsupported.
- Bits 9-11: reserved for future extension (must be zero).
-- High 52 bits: hash of the TypeDef body.
+- High 52 bits: stored hash bits derived from MurmurHash3 x64_128 seed 47 over
+ `TypeDef body || header_low12_le`. `header_low12_le` is two little-endian
bytes containing the low
+ 12 header bits (size, compress, and reserved bits); the upper four bits of
the second byte are
+ zero. Take lane 0 of the 128-bit MurmurHash3 result as a signed int64,
left-shift it by 12 with
+ two's-complement 64-bit wraparound, apply signed absolute value (leaving
`INT64_MIN` unchanged),
+ then mask with `0xfffffffffffff000`. The final header is the masked hash
bits OR-ed with the low
+ 12 header bits.
#### TypeDef body
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]