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]

Reply via email to