Releases: MasonProtter/Bumper.jl
Releases · MasonProtter/Bumper.jl
v0.7.1
Bumper v0.7.1
- Fixed a bug that would cause invalid memory access if a buffer gets garbage collected while in use.
Merged pull requests:
- Amend the "static compilation" section to reflect current reality (#44) (@asinghvi17)
- Fix possible memory corruption when buffer is not GC rooted (#47) (@MasonProtter)
- fix readme typos (#48) (@MasonProtter)
Closed issues:
v0.7.0
Bumper v0.7.0
Breaking changes
- The type of array created by
@alloc
andalloc!
has been changed from aStrideArraysCore.PtrArray
toUnsafeArrays.UnsafeArray
. This shouldn't matter for most purposes, but can break code that relies on a specific return type.
Merged pull requests:
- Drop StrideArrays.jl, move to UnsafeArrays.jl (#42) (@MasonProtter)
Closed issues:
v0.6.0
Bumper v0.6.0
Breaking changes
- Removed the package extension which was added in v0.5.1, because we're making Bumper.jl a direct dependancy of StaticTools.jl
Merged pull requests:
- Remove StaticCompilerExt (#31) (@MasonProtter)
v0.5.4
Bumper v0.5.4
- Changed the default size heuristics for
SlabBuffer
, the default slab size is now 1 megabyte, and custom slabs
are now created for allocations which are larger than half the slab size, rather than larger than the slab size. - Changed the default size heuristic for
AllocBuffer
.AllocBuffer()
now creates a buffer of 1 megabyte capacity.
Merged pull requests:
- Docfixes (#29) (@MasonProtter)
- Adjust size heuristics (#30) (@MasonProtter)
v0.5.3
Bumper v0.5.3
- Added
@alloc_ptr(n)
which is like@alloc
except it returns ann
byte pointer directly instead of an array.
Merged pull requests:
- add
@alloc_ptr
(#28) (@MasonProtter)
v0.5.2
v0.5.1
Bumper v0.5.1
- Added a package extension (only works on julia versions 1.9+) which lets the
AllocBuffer
work under
StaticCompiler.jl, and defines methods likeAllocBuffer(::Type{MallocVector}, n::Int)
andfree(AllocBuffer{<:MallocArray})
for convenience.
Merged pull requests:
- Add package extension for StaticCompiler.jl (#26) (@MasonProtter)
v0.5.0
Bumper v0.5.0
- The default allocator is now something known as a slab allocator
SlabBuffer
. This comes with a very slight performance hit relative toAllocBuffer
, but the advantage is that it scales very well from handling small allocations all the way up to handling very large allocations. It will only run out of memory when your computer runs out of memory, but it also won't hog memory that's not in use. It is also be much faster to construct than the old defaultAllocBuffer
. AllocBuffer
still exists, but now defaults to 128kb of storage instead of 1/8th of your computer's physical memory. This allocator is very slightly faster than the slab allocator, but will error if it runs out of memory. It also is more flexible in the kinds of types it can wrap to use as underlying storage.- There is now an API for hooking user-defined allocators into the
@no_escape
and@alloc
machinery. alloc(::Type{T}, buffer, dims...)
is nowalloc!(buffer, ::Type{T}, dims...)
alloc_nothrow
and@alloc_nothrow
have been removed. People who need this can instead create custom no-throw buffer types.
Merged pull requests:
- Switch to slab allocators, add allocator API (#24) (@MasonProtter)
Closed issues: