Skip to content

Releases: microsoft/snmalloc

0.7.5

Choose a tag to compare

@mjp41 mjp41 released this 22 Jun 17:19
526c55b

What's Changed

This release adds C23 API support, pointer-authentication protection for the free list, improved AArch64 platform support, and expanded memory usage statistics in Rust.

New Features

C23 API support

Security mitigations

Platform support

  • Implement tick() for AArch64 on non-Apple platforms by @mjp41 in #854

Rust

Bug Fixes

  • Fix MSVC C4864 warning and testlib message_impl link error by @matajoh in #858

Testing

  • Add tests for src/snmalloc/override/new.cc by @paulhdk in #839
  • Add corruption-detection test for probabilistic mitigations by @mjp41 in #848
  • Move test_memory_stats to an integration test by @mjp41 in #856

Build

CI

  • Add cross-platform Coverage CI by @mjp41 in #842
  • Reduce ctest wall-time without losing coverage by @mjp41 in #844
  • Fix shell quoting in coverage-comment workflow by @mjp41 in #845
  • Resolve PR by head SHA in coverage-comment workflow by @mjp41 in #847
  • Don't mis-route nightly coverage comment to last-merged PR by @mjp41 in #849

New Contributors

Full Changelog: 0.7.4...0.7.5

0.7.4

Choose a tag to compare

@mjp41 mjp41 released this 24 Mar 16:26
cd2b19b

What's Changed

Optimisations

Bug Fixes

Platform support

Rust

C++ support

Build

CI

New Contributors

Full Changelog: 0.7.3...0.7.4

0.7.3

Choose a tag to compare

@mjp41 mjp41 released this 23 Oct 10:30
92ca918

What's Changed

This release primarily improves for CMake for downstream uses of snmalloc.

Build

CI

New Contributors

Full Changelog: 0.7.2...0.7.3

0.7.2

Choose a tag to compare

@mjp41 mjp41 released this 05 Aug 10:30
3385660

What's Changed

Secondary Allocator

Thanks to Schrodinger ZHU Yifan (@SchrodingerZhu) for allowing snmalloc to support a secondary allocator, such as GWP-Asan.
This feature allows snmalloc to pass some allocation and their corresponding deallocation to another allocator.
This can be used for a GWP-Asan integration, and will be used to enable detours on Windows to override the default allocator.

The next major release will build more on this feature.

Platforms

Windows support

Thanks to Neil Monday (@NeilMonday) for the Windows support improvements in particular the ability to unload snmalloc without leaking the memory associated with snmalloc.

Rust

Libc support

C++ support

CI and build

Bazel

Thanks to Jaya Kasa (@jayakasadev) for adding Bazel support to snmallocs build.

Refactor and minor bugs fixes

New Contributors

Full Changelog: 0.7.1...0.7.2

0.7.1

Choose a tag to compare

@mjp41 mjp41 released this 04 Feb 18:57
32495fd

What's Changed

If you are using 0.7.0, it is highly recommended you update to 0.7.1 to fix a bug in the wake on address implementation.

Bug Fixes

Optimisations

Platform support

Docs

Build

CI

Code Refactoring

New Contributors

Full Changelog: 0.7.0...0.7.1

0.7.0

Choose a tag to compare

@mjp41 mjp41 released this 28 Nov 14:44
564c88b

What's Changed

See https://github.com/microsoft/snmalloc/blob/main/docs/release/0.7/README.md for an introduction to the 0.7 release.

Optimisation

Startup time

Produce Consumer workloads (BatchIt)

Security Features

Platforms and Bindings

Libc

Rust

Windows

Haiku

NetBSD

Minor changes and refactorings

Build and CI

New Contributors

Full Changelog: 0.6.2...0.7.0

0.6.2

Choose a tag to compare

@mjp41 mjp41 released this 28 Jun 10:44
dc12688

Minor release primarily improving support on CHERI and Open Enclave

Thanks to David CARLIER (@devnexen), Saar Amar (@saaramar), Axel PASCON (@brvtalcake), Julien Maffre (@jumaffre) and EAirPeter (@EAirPeter) for your contributions to this release.

0.6.1

Choose a tag to compare

@mjp41 mjp41 released this 02 Sep 16:10
88a2740

Minor release. Largest change is bringing online Morello CHERI support.

Thanks to the external contributors Jakub Panek (@panekj), David CARLIER (@devnexen) and Matthias Wahl (@mfelsche).

0.6.0

Choose a tag to compare

@mjp41 mjp41 released this 09 May 12:40
d5c732f

This is a major revision of the snmalloc design. The redesign has been primarily focused on adding new security features. The redesign affects all aspects of snmalloc. A more comprehensive explanation of the new features can be found in the docs

  • Uses Buddy Allocators for large allocations: In 0.5.3, we never reconsolidate large allocations, so if you ask for several 1MiB allocations, return them, and then ask for several 2MiB allocations it won't be able to use the space from the 1MiB allocations.  This is not a problem in 0.6 as we have a proper buddy allocator at that level so we recombine the big bits of memory properly
  • Variable sized slabs and out of band meta-data - Previously, snmalloc used fixed sized super slabs with metadata at the head. By using variable sized slabs and out of band meta-data, the slabs don't have to be grouped into superslabs which reduces the minimum memory requirement. (https://github.com/microsoft/snmalloc/blob/main/docs/security/VariableSizedChunks.md)
  • Improved per thread caching - #511 - This enables very small per thread usage initially that can grow to the level required. This means that low foot print scenarios on OpenEnclave can be supported with exactly the same code paths as high footprint scenarios. This brings the per thread costs down to approximately 16k per thread of metadata + 16k per thread per sizeclass used. This will grow in powers of 2 (upto 2MiB) to cover the required amount.

0.5.3

Choose a tag to compare

@mjp41 mjp41 released this 29 Jan 15:16
a3660c4

All minor changes

  • Fix performance regression for Debug builds (#274)
  • Refactoring towards sandbox support (#221, #268, #269)
  • Refactoring towards CHERI support (#266)
  • Bug fixes for Power (#265), SPARC (#264), ARM 32bit (#263) Solaris (#262),