# \[ANN\] HaloArrays.jl — halo-exchange arrays for serial, threaded, and MPI

**URL:** https://discourse.julialang.org/t/ann-haloarrays-jl-halo-exchange-arrays-for-serial-threaded-and-mpi/137906
**Category:** Package Announcements
**Tags:** announcement
**Created:** [July 2, 2026, 8:09am UTC](https://discourse.julialang.org/t/ann-haloarrays-jl-halo-exchange-arrays-for-serial-threaded-and-mpi/137906 "2026-07-02T08:09:22Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![fafafrens](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fafafrens/32/210932_2.png) [@fafafrens](https://discourse.julialang.org/u/fafafrens)
#### Post date: [July 2, 2026, 8:09am UTC](https://discourse.julialang.org/t/ann-haloarrays-jl-halo-exchange-arrays-for-serial-threaded-and-mpi/137906/1 "2026-07-02T08:09:22Z")

</div>

`HaloArrays.jl` automates the tedious, error-prone parts of stencil, finite-volume, and lattice codes: ghost-cell (halo) exchange and boundary handling. Write your kernel once and run it serial, multithreaded, or distributed with MPI — same API, just swap the backend.

- Halo exchange handled for you — non-blocking, with comm–compute overlap
- Boundary conditions built in: periodic, reflecting, anti-reflecting, repeating, custom, coupled
- Global reductions + gather + HDF5; GPU-ready via KernelAbstractions
- Composes as an OrdinaryDiffEq state and a Krylov vector (SciML)

Repo: [GitHub - fafafrens/HaloArrays.jl · GitHub](https://github.com/fafafrens/HaloArrays.jl) — feedback welcome!
