# \[ANN\] GooseArrays.jl : Fixed-size Julia arrays with explicit lifetimes, backed by a reusable memory arena

**URL:** <https://discourse.julialang.org/t/ann-goosearrays-jl-fixed-size-julia-arrays-with-explicit-lifetimes-backed-by-a-reusable-memory-arena/140435>\
**Category:** Package Announcements\
**Created:** [October 31, 2026, 5:12pm UTC](https://discourse.julialang.org/t/ann-goosearrays-jl-fixed-size-julia-arrays-with-explicit-lifetimes-backed-by-a-reusable-memory-arena/140435 "2026-10-31T17:12:04Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yolhan\_mannes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yolhan_mannes/32/220485_2.png) [@yolhan\_mannes](https://discourse.julialang.org/u/yolhan_mannes)\
**Post date:** [October 31, 2026, 5:12pm UTC](https://discourse.julialang.org/t/ann-goosearrays-jl-fixed-size-julia-arrays-with-explicit-lifetimes-backed-by-a-reusable-memory-arena/140435/1 "2026-10-31T17:12:04Z")

</div>

Hi everyone!

I’d like to share [GooseArrays.jl](https://github.com/yolhan83/GooseArrays.jl), a package inspired by Goose’s memory management approach.

The idea is to provide temporary, mutable Julia arrays with fixed sizes and explicit lifetimes, backed by a reusable memory arena rather than ordinary GC-managed array storage.

The package provides two main types:

- `GooseArray`: fixed-size arrays without specializing on their length.
- `StaticGooseArray`: arrays with dimensions encoded in the type for additional compiler optimizations.

Here’s a small example:

```julia
using GooseArrays

result = with_datastack(1 << 20) do s
    x = GooseVector{Float64}(s, undef, 4)
    fill!(x, 2.0)

    y = StaticGooseVector{Float64,4}(s, undef)
    y .= 2 .* x .+ 1

    Array(y)
end

```

I’ve also benchmarked the package against `Array`, `FixedSizeArrays.jl`, and `StaticArrays.jl`. The first results are promising, particularly for temporary arrays and avoiding GC allocations, although performance depends on the workload.

The package is still experimental (v0.1) with some parts a little too vibe coded and unpublished yet, I’d still be happy to get feedback, suggestions, or ideas for improvements!

- One thing that may change: Normal and Static seems to have very similar perf (a little better for static) and static doesn’t seem to add unreasonable specialisation meaning GooseArrays may become a version than can change size at some point which would also clear up ;the difference with AllocArrays.jl which for now is quite close to GooseArrays

**GitHub:** [GitHub - yolhan83/GooseArrays.jl · GitHub](https://github.com/yolhan83/GooseArrays.jl)

**Documentation:** [Home · GooseArrays.jl](https://yolhan83.github.io/GooseArrays.jl/)  
**Benchmarks:** [Performance · GooseArrays.jl](https://yolhan83.github.io/GooseArrays.jl/performance/)
