#![feature(portable_simd)]
//! SIMD and hot kernels for qroissant.
//!
//! This crate provides two categories of primitives:
//!
//! 1. **Constants** – null sentinels and epoch-offset values used throughout
//!    the workspace to interpret q IPC wire bytes.
//!
//! 2. **Scalar transforms** – functions that operate on typed Rust slices.
//!    These are correct scalar implementations; future iterations will add
//!    `portable_simd` specialisations in this same crate without changing the
//!    public API consumed by `qroissant-arrow`.
//!
//! # Architecture rule
//! All nightly-sensitive code (`portable_simd`, intrinsics, etc.) must live
//! in this crate so that the rest of the workspace can remain on stable if
//! needed and so that performance-sensitive code has a single home.

pub mod boolean;
pub mod nulls;
pub mod temporal;

pub use boolean::*;
pub use nulls::*;
pub use temporal::*;
