-
Notifications
You must be signed in to change notification settings - Fork 30.4k
Add inline value support for small values (≤8 bytes) #89271
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: collision_tolerant_compaction
Are you sure you want to change the base?
Add inline value support for small values (≤8 bytes) #89271
Conversation
Merging this PR will not alter performance
Comparing Footnotes
|
Stats from current PR✅ No significant changes detected📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
📦 Dev Server (Webpack) (Legacy)📦 Dev Server (Webpack)
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles: **434 kB** → **434 kB** ✅ -2 B81 files with content-based hashes (individual files not comparable between builds) Server Middleware
Build DetailsBuild Manifests
📦 WebpackClient Main Bundles
Polyfills
Pages
Server Edge SSR
Middleware
Build DetailsBuild Manifests
Build Cache
🔄 Shared (bundler-independent)Runtimes
|
Store small values directly in the key block entry, eliminating the 8-byte indirection overhead (2-byte block index + 2-byte size + 4-byte position) for values that fit within that space. Key changes: - Add EntryValue::Inline variant for values ≤8 bytes - Add KEY_BLOCK_ENTRY_TYPE_INLINE_MIN (8) - types 8-255 encode inline sizes 0-247 - Return zero-copy ArcSlice for inline values via slice_from_subslice - Consolidate ArcSlice API: remove new_unchecked/full_arc, add slice_from_subslice
a0ba566 to
c34eeaa
Compare
a4b02d6 to
ade571c
Compare
Failing test suitesCommit: ade571c | About building and testing Next.js
Expand output● runtime prefetching › passed to a public cache › can completely prefetch a page that uses cookies and no uncached IO ● runtime prefetching › passed to a public cache › can completely prefetch a page that uses cookies and no uncached IO ● runtime prefetching › passed to a public cache › can completely prefetch a page that uses cookies and no uncached IO ● runtime prefetching › passed to a public cache › can completely prefetch a page that uses cookies and no uncached IO
Expand output● Test suite failed to run |

Implement Inline Value Storage in SST Files
This PR enhances the Static Sorted Table (SST) file format by implementing inline value storage for small values (≤8 bytes). Instead of storing these small values in separate value blocks, they are now stored directly in the key blocks, which:
The implementation:
EntryValue::Inlinevariant for values ≤8 bytesArcSlicewith a newslice_from_subslicemethod for zero-copy access to inline valuesReadimplementation forArcSlice<u8>to support streaming reads