sandy-sachin7 opened a new pull request, #10166: URL: https://github.com/apache/arrow-rs/pull/10166
## Which issue does this PR close? Closes #10164. ## Rationale for this change `FromBytes` is a `pub unsafe trait` whose `# Safety` contract only documented bit-pattern validity. Internally, `BitReader::get_batch` fast-paths cast `*mut T` to `*mut u16`/u32/u64 and call `std::slice::from_raw_parts_mut`, which requires the pointer to be at least as aligned as the target primitive type. Because the documented contract did not mention alignment, a downstream crate could soundly implement `FromBytes` for a `#[repr(packed)]` type of size 2 (align 1) and trigger undefined behavior when passed to `get_batch`. ## What changes are included in this PR? 1. **Sealed the trait**: Added `private::Sealed` as a supertrait of `FromBytes`, preventing external implementations entirely — matching the existing pattern used by `ParquetValueType` in `data_type.rs`. 2. **Updated the `# Safety` contract**: Now documents both the bit-pattern and alignment requirements. 3. **`impl private::Sealed` for every type implementing `FromBytes`**: `u8`–`u64`, `i8`–`i64`, `f32`, `f64`, `bool`, `Int96`, `ByteArray`, `FixedLenByteArray`. ## Are these changes tested? All 22 existing `bit_util` tests pass. The change is purely structural — existing implementations are unaffected. External code that attempted to implement `FromBytes` (unlikely — none found in the wild) will get a compile error about the sealed supertrait, which is the desired outcome. ## Are there any user-facing changes? No API changes for existing users. External implementations of `FromBytes` or `FromBitpacked` are no longer possible (but were not intended to be extensible — the trait was only `pub` for visibility, not for extension). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
