All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
PeriodicArraygained a fifth type parameterGfor the inverse map (imap). The type signature changed fromPeriodicArray{T,N,A,F}toPeriodicArray{T,N,A,F,G}. Any code with explicit type annotations, dispatch rules, or type introspection on the four-parameter form will need to be updated.- The internal field previously named
.mapis now named.fmap; a new field.imapholds the inverse map. Direct field access must be updated accordingly. - The module was reorganised into separate source files
(
types.jl,indexing.jl,broadcast.jl,vector_interface.jl,repeat.jl,circshift.jl,reverse.jl,mapped_ref.jl).
PeriodicArraynow accepts an explicitimapargument (the inverse map used bysetindex!). When omitted,imapdefaults toNegatedShiftMap(fmap), i.e.(x, shifts...) -> fmap(x, -shifts...), preserving the previous behaviour. Supplying a customimapis useful whenfmapis not self-inverse under shift negation, or when mutation should be explicitly forbidden (pass animapthat throws).- New
MappedReftype andmapped_ref(arr, I...)function.mapped_refreturns a lazy, mutable wrapper for an out-of-bounds element that applies the forward map on reads and the inverse map on writes, solving the long-standing limitation where iterated indexing for mutation silently did nothing (e.g.x[i][j] = v).