# \[ANN\] ManualMemory.jl

**URL:** <https://discourse.julialang.org/t/ann-manualmemory-jl/10363>\
**Category:** Community\
**Tags:** package, announcement\
**Created:** [April 16, 2018, 1:12pm UTC](https://discourse.julialang.org/t/ann-manualmemory-jl/10363 "2018-04-16T13:12:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![jamii](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jamii/32/1373_2.png) [@jamii](https://discourse.julialang.org/u/jamii)\
**Post date:** [April 16, 2018, 1:12pm UTC](https://discourse.julialang.org/t/ann-manualmemory-jl/10363/1 "2018-04-16T13:12:35Z")

</div>

[ManualMemory.jl](https://github.com/RelationalAI-oss/ManualMemory.jl) makes it easy to lay out complex data-structures within a single memory region. Data-structures built using this library:

- are relocatable - internal pointers are converted to offsets, so the entire memory region can be moved to/from disk or sent over the network without pointer patching
- require no deserialization - they can be directly read/written without first copying the data into a Julia-native data-structure
- require no heap allocation - field access is just pointer arithmetic and every field read/write returns an `isbits` type which can stored on the stack

This makes them ideal for implementing out-of-core data-structures or for DMA to co-processors.
