Crates.io | membase |
lib.rs | membase |
version | 0.2.1 |
created_at | 2025-07-10 19:38:19.495099+00 |
updated_at | 2025-07-11 05:40:12.030487+00 |
description | Ultra-high performance async runtime with fast task cycling, lock-free scheduling, and zero-overhead performance |
homepage | https://github.com/jamesgober/membase |
repository | https://github.com/jamesgober/membase |
max_upload_size | |
id | 1746968 |
size | 115,581,255 |
MemBase is a cross-platform, memory-mapped I/O library engineered for performance-critical systems. Optimized to deliver maximum throughput for extreme memory mapping operations and heavy data manipulation with minimal overhead.
Sequential Read Performance:
Random Access Performance:
Direct memory access eliminates buffer copying and system call overhead, delivering raw performance for data-intensive applications.
Intelligent memory mapping strategies optimize for both sequential and random access patterns, automatically adapting to workload characteristics.
Native support across Windows, macOS, and Linux with platform-specific optimizations under a unified API.
Memory-safe operations with Rust's ownership model, preventing common pitfalls like buffer overflows and use-after-free errors.
Built-in database functionality with optimized query execution and in-place file modifications for persistent data structures.
MemBase leverages OS-level memory mapping primitives with intelligent prefetching and cache-aware algorithms. The library automatically handles:
Add this to your Cargo.toml
:
[dependencies]
MemMap = "0.2.0"
use MemMap::{MmapOptions, Mmap};
use std::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Open a file
let file = File::open("data.bin")?;
// Create a memory map with default options
let map = unsafe { MmapOptions::new().map(&file)? };
// Access the memory map
if map.len() >= 8 {
let value = unsafe { *(map.as_ptr() as *const u64) };
println!("First 8 bytes as u64: {}", value);
}
Ok(())
}
use MemMap::{MmapOptions, Mmap, HugePageSize, PrefetchStrategy};
use MemMap::platform::Advice;
use std::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Open a file
let file = File::open("large_data.bin")?;
// Create a memory map with advanced options
let map = unsafe {
MmapOptions::new()
.read(true)
.write(true)
// Use huge pages if available
.huge_pages(HugePageSize::TwoMB)
// Use sequential prefetching
.prefetch(PrefetchStrategy::Sequential)
// Populate the mapping immediately
.populate(true)
// Map the file
.map_mut(&file)?
};
// Advise the kernel about our access pattern
map.advise(Advice::Sequential)?;
// Use the memory map
// ...
// Flush changes to disk
map.flush()?;
Ok(())
}
Licensed under the Apache License, version 2.0 (the "License"); you may not use this software, including, but not limited to the source code, media files, ideas, techniques, or any other associated property or concept belonging to, associated with, or otherwise packaged with this software except in compliance with the License.
You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the LICENSE file included with this project for the specific language governing permissions and limitations under the License.