| CARVIEW |
Select Language
HTTP/2 200
date: Tue, 30 Dec 2025 11:18:16 GMT
content-type: application/atom+xml; charset=utf-8
content-length: 163499
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"83f544ce17be27bc57bd63f74ca8d2b2"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com github.githubassets.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
accept-ranges: bytes
set-cookie: _gh_sess=6GHUfZUAJAIf4n5OyxdU5i%2B9KUr4V1JvziLIB1lAhzTruxJ4VmKc6fmk3%2Fm8fEE5fmR87YcRVgMptVs1BiIQgUQn5ITfJHjbL8ozefb4ZaFLtrpxggQylbLRAgKjOmImrRiq0hHT%2FgRMLmLjyxqXN5%2F54jr%2F9QX%2BaIL8Sc6lxdpifSrwocgduRTM36BZ74bxclrcI5yIOPTi%2BFkdGGLkEtGcpLL3zkaD2LFR30jGJNc1DP18s20NgYjFMQI31nzkKF2sfNbhtXFnDX9BSL%2BvlA%3D%3D--wH6VlUM1nSAl%2F%2Blq--cMoBoFPRKkxHv1atcOL2bA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.594013318.1767093496; Path=/; Domain=github.com; Expires=Wed, 30 Dec 2026 11:18:16 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Wed, 30 Dec 2026 11:18:16 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C1A4:22001A:84ADAC:90E2F9:6953B4F8
tag:github.com,2008:https://github.com/jemalloc/jemalloc/releases
Release notes from jemalloc
2022-05-06T18:28:52Z
tag:github.com,2008:Repository/13310527/5.3.0
2022-05-06T19:14:21Z
5.3.0
<p>This release contains many speed and space optimizations, from micro<br>
optimizations on common paths to rework of internal data structures and<br>
locking schemes, and many more too detailed to list below. Multiple percent<br>
of system level metric improvements were measured in tested production<br>
workloads. The release has gone through large-scale production testing.</p>
<p>New features:</p>
<ul>
<li>Add the <code>thread.idle</code> mallctl which hints that the calling thread will be<br>
idle for a nontrivial period of time. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Allow small size classes to be the maximum size class to cache in the<br>
thread-specific cache, through the <code>opt.[lg_]tcache_max</code> option. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jordalgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jordalgo">@jordalgo</a>)</li>
<li>Make the behavior of <code>realloc(ptr, 0)</code> configurable with <code>opt.zero_realloc</code>.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Add <code>make uninstall</code> support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sangshuduo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sangshuduo">@sangshuduo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lapenkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lapenkov">@Lapenkov</a>)</li>
<li>Support C++17 over-aligned allocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/marksantaniello/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/marksantaniello">@marksantaniello</a>)</li>
<li>Add the <code>thread.peak</code> mallctl for approximate per-thread peak memory tracking.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Add interval-based stats output <code>opt.stats_interval</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add <code>prof.prefix</code> to override filename prefixes for dumps. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zhxchen17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zhxchen17">@zhxchen17</a>)</li>
<li>Add high resolution timestamp support for profiling. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyroguru/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyroguru">@tyroguru</a>)</li>
<li>Add the <code>--collapsed</code> flag to jeprof for flamegraph generation.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/igorwwwwwwwwwwwwwwwwwwww/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/igorwwwwwwwwwwwwwwwwwwww">@igorwwwwwwwwwwwwwwwwwwww</a>)</li>
<li>Add the <code>--debug-syms-by-id</code> option to jeprof for debug symbols discovery.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DeannaGelbart/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DeannaGelbart">@DeannaGelbart</a>)</li>
<li>Add the <code>opt.prof_leak_error</code> option to exit with error code when leak is<br>
detected using <code>opt.prof_final</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yunxuo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yunxuo">@yunxuo</a>)</li>
<li>Add <code>opt.cache_oblivious</code> as an runtime alternative to <code>config.cache_oblivious</code>.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add mallctl interfaces:
<ul>
<li><code>opt.zero_realloc</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li><code>opt.cache_oblivious</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>opt.prof_leak_error</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yunxuo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yunxuo">@yunxuo</a>)</li>
<li><code>opt.stats_interval</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>opt.stats_interval_opts</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>opt.tcache_max</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>opt.trust_madvise</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/azat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/azat">@azat</a>)</li>
<li><code>prof.prefix</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zhxchen17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zhxchen17">@zhxchen17</a>)</li>
<li><code>stats.zero_reallocs</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li><code>thread.idle</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li><code>thread.peak.{read,reset}</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
</ul>
</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>Fix the synchronization around explicit tcache creation which could cause<br>
invalid tcache identifiers. This regression was first released in 5.0.0.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yoshinorim/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yoshinorim">@yoshinorim</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Fix a profiling biasing issue which could cause incorrect heap usage and<br>
object counts. This issue existed in all previous releases with the heap<br>
profiling feature. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Fix the order of stats counter updating on large realloc which could cause<br>
failed assertions. This regression was first released in 5.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/azat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/azat">@azat</a>)</li>
<li>Fix the locking on the arena destroy mallctl, which could cause concurrent<br>
arena creations to fail. This functionality was first introduced in 5.0.0.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Portability improvements:</p>
<ul>
<li>Remove <code>nothrow</code> from system function declarations on macOS and FreeBSD.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fredemmott/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fredemmott">@fredemmott</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/leres/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/leres">@leres</a>)</li>
<li>Improve overcommit and page alignment settings on NetBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zoulasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zoulasc">@zoulasc</a>)</li>
<li>Improve CPU affinity support on BSD platforms. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Improve utrace detection and support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Improve QEMU support with <code>MADV_DONTNEED</code> zeroed pages detection. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/azat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/azat">@azat</a>)</li>
<li>Add memcntl support on Solaris / illumos. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Improve CPU_SPINWAIT on ARM. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AWSjswinney/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AWSjswinney">@AWSjswinney</a>)</li>
<li>Improve TSD cleanup on FreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lapenkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lapenkov">@Lapenkov</a>)</li>
<li>Disable <code>percpu_arena</code> if the CPU count cannot be reliably detected. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/azat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/azat">@azat</a>)</li>
<li>Add <code>malloc_size(3)</code> override support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Add mmap <code>VM_MAKE_TAG</code> support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Add support for <code>MADV_[NO]CORE</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Add support for DragonFlyBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Fix the QUANTUM setting on MIPS64. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brooksdavis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brooksdavis">@brooksdavis</a>)</li>
<li>Add the QUANTUM setting for ARC. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vineetgarc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vineetgarc">@vineetgarc</a>)</li>
<li>Add the QUANTUM setting for LoongArch. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wangjl-uos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wangjl-uos">@wangjl-uos</a>)</li>
<li>Add QNX support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jqian-aurora/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jqian-aurora">@jqian-aurora</a>)</li>
<li>Avoid <code>atexit(3)</code> calls unless the relevant profiling features are enabled.<br>
(<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BusyJay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BusyJay">@BusyJay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/laiwei-rice/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/laiwei-rice">@laiwei-rice</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix unknown option detection when using Clang. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lapenkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lapenkov">@Lapenkov</a>)</li>
<li>Fix symbol conflict with musl libc. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/georgthegreat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/georgthegreat">@georgthegreat</a>)</li>
<li>Add <code>-Wimplicit-fallthrough</code> checks. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nickdesaulniers/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nickdesaulniers">@nickdesaulniers</a>)</li>
<li>Add <code>__forceinline</code> support on MSVC. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/santagada/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/santagada">@santagada</a>)</li>
<li>Improve FreeBSD and Windows CI support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lapenkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lapenkov">@Lapenkov</a>)</li>
<li>Add CI support for PPC64LE architecture. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ezeeyahoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ezeeyahoo">@ezeeyahoo</a>)</li>
</ul>
<p>Incompatible changes:</p>
<ul>
<li>Maximum size class allowed in tcache (<code>opt.[lg_]tcache_max</code>) now has an upper<br>
bound of 8MiB. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Optimizations and refactors (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lapenkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lapenkov">@Lapenkov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>):</p>
<ul>
<li>Optimize the common cases of the thread cache operations.</li>
<li>Optimize internal data structures, including RB tree and pairing heap.</li>
<li>Optimize the internal locking on extent management.</li>
<li>Extract and refactor the internal page allocator and interface modules.</li>
</ul>
<p>Documentation:</p>
<ul>
<li>Fix doc build with <code>--with-install-suffix</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lawmurray/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lawmurray">@lawmurray</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add <a href="https://github.com/jemalloc/jemalloc/blob/dev/doc_internal/PROFILING_INTERNALS.md">PROFILING_INTERNALS.md</a>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Ensure the proper order of doc building and installation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mingli-Yu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mingli-Yu">@Mingli-Yu</a>)</li>
</ul>
interwq
tag:github.com,2008:Repository/13310527/5.2.1
2019-08-05T20:41:17Z
5.2.1
<p>This release is primarily about Windows. A critical virtual memory leak is resolved on all Windows platforms. The regression was present in all releases since 5.0.0.</p>
<p>Bug fixes:</p>
<ul>
<li>Fix a severe virtual memory leak on Windows. This regression was first released in 5.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ignition/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ignition">@Ignition</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/j0t/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/j0t">@j0t</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frederik-h/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frederik-h">@frederik-h</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix size 0 handling in <code>posix_memalign()</code>. This regression was first released in 5.2.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix the prof_log unit test which may observe unexpected backtraces from compiler optimizations. The test was first added in 5.2.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/marxin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/marxin">@marxin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gnzlbg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gnzlbg">@gnzlbg</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix the declaration of the extent_avail tree. This regression was first released in 5.1.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zoulasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zoulasc">@zoulasc</a>)</li>
<li>Fix an incorrect reference in jeprof. This functionality was first released in 3.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Prehistoric-penguin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Prehistoric-penguin">@Prehistoric-penguin</a>)</li>
<li>Fix an assertion on the deallocation fast-path. This regression was first released in 5.2.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yinan1048576/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yinan1048576">@yinan1048576</a>)</li>
<li>Fix the TLS_MODEL attribute in headers. This regression was first released in 5.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zoulasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zoulasc">@zoulasc</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Optimizations and refactors:</p>
<ul>
<li>Implement <code>opt.retain</code> on Windows and enable by default on 64-bit. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Optimize away a branch on the <code>operator delete</code> path. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mgrice/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mgrice">@mgrice</a>)</li>
<li>Add format annotation to the format generator function. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zoulasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zoulasc">@zoulasc</a>)</li>
<li>Refactor and improve the size class header generation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yinan1048576/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yinan1048576">@yinan1048576</a>)</li>
<li>Remove best fit. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Avoid blocking on background thread locks for stats. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/oranagra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/oranagra">@oranagra</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
interwq
tag:github.com,2008:Repository/13310527/5.2.0
2019-04-03T05:25:26Z
5.2.0
<p>This release includes a few notable improvements, which are summarized below: 1) improved fast-path performance from the optimizations by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>; 2) reduced virtual memory fragmentation and metadata usage; and 3) bug fixes on setting the number of background threads. In addition, peak / spike memory usage is improved with certain allocation patterns. As usual, the release and prior dev versions have gone through large-scale production testing.</p>
<p>New features:</p>
<ul>
<li>Implement <code>oversize_threshold</code>, which uses a dedicated arena for allocations crossing the specified threshold to reduce fragmentation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add extents usage information to stats. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyleretzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyleretzel">@tyleretzel</a>)</li>
<li>Log time information for sampled allocations. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyleretzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyleretzel">@tyleretzel</a>)</li>
<li>Support 0 size in <code>sdallocx</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Output rate for certain counters in <code>malloc_stats</code>. (@zinoale)</li>
<li>Add configure option <code>--enable-readlinkat</code>, which allows the use of readlinkat over readlink. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Add configure options <code>--{enable,disable}-{static,shared}</code> to allow not building unwanted libraries. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ericson2314/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ericson2314">@Ericson2314</a>)</li>
<li>Add configure option <code>--disable-libdl</code> to enable fully static builds. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add mallctl interfaces:
<ul>
<li><code>opt.oversize_threshold</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>stats.arenas.<i>.extent_avail</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyleretzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyleretzel">@tyleretzel</a>)</li>
<li><code>stats.arenas.<i>.extents.<j>.n{dirty,muzzy,retained}</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyleretzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyleretzel">@tyleretzel</a>)</li>
<li><code>stats.arenas.<i>.extents.<j>.{dirty,muzzy,retained}_bytes</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyleretzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyleretzel">@tyleretzel</a>)</li>
</ul>
</li>
</ul>
<p>Portability improvements:</p>
<ul>
<li>Update MSVC builds. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/maksqwe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/maksqwe">@maksqwe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rustyx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rustyx">@rustyx</a>)</li>
<li>Workaround a compiler optimizer bug on s390x. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rkmisra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rkmisra">@rkmisra</a>)</li>
<li>Make use of <code>pthread_set_name_np(3)</code> on FreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/trasz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/trasz">@trasz</a>)</li>
<li>Implement malloc_getcpu() to enable <code>percpu_arena</code> for windows. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/santagada/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/santagada">@santagada</a>)</li>
<li>Link against <code>-pthread</code> instead of <code>-lpthread</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paravoid/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paravoid">@paravoid</a>)</li>
<li>Make <code>background_thread</code> not dependent on libdl. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add stringify to fix a linker directive issue on MSVC. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/daverigby/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/daverigby">@daverigby</a>)</li>
<li>Detect and fall back when 8-bit atomics are unavailable. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fall back to the default <code>pthread_create(3)</code> if <code>dlsym(3)</code> fails. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Optimizations and refactors:</p>
<ul>
<li>Refactor the TSD module. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Avoid taking extents_muzzy mutex when muzzy is disabled. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Avoid taking large_mtx for auto arenas on the tcache flush path. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Optimize <code>ixalloc</code> by avoiding a size lookup. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Implement <code>opt.oversize_threshold</code> which uses a dedicated arena for requests crossing the threshold, also eagerly purges the oversize extents. Default the threshold to 8 MiB. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Clean compilation with <code>-Wextra</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gnzlbg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gnzlbg">@gnzlbg</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Refactor the size class module. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Refactor the stats emitter. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyleretzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyleretzel">@tyleretzel</a>)</li>
<li>Optimize pow2_ceil. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rkmisra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rkmisra">@rkmisra</a>)</li>
<li>Avoid runtime detection of lazy purging on FreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/trasz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/trasz">@trasz</a>)</li>
<li>Optimize <code>mmap(2)</code> alignment handling on FreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/trasz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/trasz">@trasz</a>)</li>
<li>Improve error handling for THP state initialization. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jsteemann/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jsteemann">@jsteemann</a>)</li>
<li>Rework the <code>malloc()</code> fast path. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Rework the <code>free()</code> fast path. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Refactor and optimize the tcache fill / flush paths. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Optimize sync / lwsync on PowerPC. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chmeeedalf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chmeeedalf">@chmeeedalf</a>)</li>
<li>Bypass extent_dalloc() when retain is enabled. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Optimize the locking on large deallocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Reduce the number of pages committed from sanity checking in debug build. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/trasz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/trasz">@trasz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Deprecate OSSpinLock. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Lower the default number of background threads to 4 (when the feature is enabled). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Optimize the trylock spin wait. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Use arena index for arena-matching checks. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Avoid forced decay on thread termination when using background threads. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Disable muzzy decay by default. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Only initialize libgcc unwinder when profiling is enabled. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paravoid/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paravoid">@paravoid</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Bug fixes (all only relevant to jemalloc 5.x):</p>
<ul>
<li>Fix background thread index issues with <code>max_background_threads</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix stats output for <code>opt.lg_extent_max_active_fit</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix <code>opt.prof_prefix</code> initialization. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Properly trigger decay on tcache destroy. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amosbird/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amosbird">@amosbird</a>)</li>
<li>Fix <code>tcache.flush</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Detect whether explicit extent zero out is necessary with huge pages or custom extent hooks, which may change the purge semantics. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix a side effect caused by <code>extent_max_active_fit</code> combined with decay-based purging, where freed extents can accumulate and not be reused for an extended period of time. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mpghf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mpghf">@mpghf</a>)</li>
<li>Fix a missing unlock on extent register error handling. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zoulasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zoulasc">@zoulasc</a>)</li>
</ul>
<p>Testing:</p>
<ul>
<li>Simplify the Travis script output. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gnzlbg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gnzlbg">@gnzlbg</a>)</li>
<li>Update the test scripts for FreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devnexen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devnexen">@devnexen</a>)</li>
<li>Add unit tests for the producer-consumer pattern. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add Cirrus-CI config for FreeBSD builds. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add size-matching sanity checks on tcache flush. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Incompatible changes:</p>
<ul>
<li>Remove <code>--with-lg-page-sizes</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
</ul>
<p>Documentation:</p>
<ul>
<li>Attempt to build docs by default, however skip doc building when <code>xsltproc</code> is missing. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmuellner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmuellner">@cmuellner</a>)</li>
</ul>
interwq
tag:github.com,2008:Repository/13310527/5.1.0
2018-05-08T21:20:31Z
5.1.0
<p>This release is primarily about fine-tuning, ranging from several new features to numerous notable performance and portability enhancements. The release and prior dev versions have been running in multiple large scale applications for months, and the cumulative improvements are substantial in many cases.</p>
<p>Given the long and successful production runs, this release is likely a good candidate for applications to upgrade, from both jemalloc 5.0 and before. For performance-critical applications, the newly added <a href="https://github.com/jemalloc/jemalloc/blob/dev/TUNING.md">TUNING.md</a> provides guidelines on jemalloc tuning.</p>
<p>New features:</p>
<ul>
<li>Implement transparent huge page support for internal metadata. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add <code>opt.thp</code> to allow enabling / disabling transparent huge pages for all mappings. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add maximum background thread count option. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Allow <code>prof_active</code> to control <code>opt.lg_prof_interval</code> and <code>prof.gdump</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Allow arena index lookup based on allocation addresses via mallctl. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lionkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lionkov">@lionkov</a>)</li>
<li>Allow disabling initial-exec TLS model. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KenMacD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KenMacD">@KenMacD</a>)</li>
<li>Add <code>opt.lg_extent_max_active_fit</code> to set the max ratio between the size of the active extent selected (to split off from) and the size of the requested allocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Add <code>retain_grow_limit</code> to set the max size when growing virtual address space. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add mallctl interfaces:
<ul>
<li><code>arena.<i>.retain_grow_limit</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>arenas.lookup</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lionkov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lionkov">@lionkov</a>)</li>
<li><code>max_background_threads</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li><code>opt.lg_extent_max_active_fit</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>opt.max_background_threads</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li><code>opt.metadata_thp</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>opt.thp</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>stats.metadata_thp</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
</li>
</ul>
<p>Portability improvements:</p>
<ul>
<li>Support GNU/kFreeBSD configuration. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paravoid/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paravoid">@paravoid</a>)</li>
<li>Support m68k, nios2 and SH3 architectures. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paravoid/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paravoid">@paravoid</a>)</li>
<li>Fall back to <code>FD_CLOEXEC</code> when <code>O_CLOEXEC</code> is unavailable. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zonyitoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zonyitoo">@zonyitoo</a>)</li>
<li>Fix symbol listing for cross-compiling. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tamird/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tamird">@tamird</a>)</li>
<li>Fix high bits computation on ARM. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paravoid/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paravoid">@paravoid</a>)</li>
<li>Disable the <code>CPU_SPINWAIT</code> macro for Power. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/marxin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/marxin">@marxin</a>)</li>
<li>Fix MSVC 2015 & 2017 builds. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rustyx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rustyx">@rustyx</a>)</li>
<li>Improve RISC-V support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EdSchouten/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EdSchouten">@EdSchouten</a>)</li>
<li>Set name mangling script in strict mode. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nicolov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nicolov">@nicolov</a>)</li>
<li>Avoid <code>MADV_HUGEPAGE</code> on ARM. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/marxin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/marxin">@marxin</a>)</li>
<li>Modify configure to determine return value of <code>strerror_r</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cferris1000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cferris1000">@cferris1000</a>)</li>
<li>Make sure CXXFLAGS is tested with CPP compiler. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nehaljwani/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nehaljwani">@nehaljwani</a>)</li>
<li>Fix 32-bit build on MSVC. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rustyx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rustyx">@rustyx</a>)</li>
<li>Fix external symbol on MSVC. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/maksqwe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/maksqwe">@maksqwe</a>)</li>
<li>Avoid a printf format specifier warning. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add configure option <code>--disable-initial-exec-tls</code> which can allow jemalloc to be dynamically loaded after program startup. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KenMacD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KenMacD">@KenMacD</a>)</li>
<li>AArch64: Add ILP32 support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmuellner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmuellner">@cmuellner</a>)</li>
<li>Add <code>--with-lg-vaddr</code> configure option to support cross compiling. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmuellner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmuellner">@cmuellner</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
</ul>
<p>Optimizations and refactors:</p>
<ul>
<li>Improve active extent fit with <code>extent_max_active_fit</code>. This considerably reduces fragmentation over time and improves virtual memory and metadata usage. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Eagerly coalesce large extents to reduce fragmentation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li><code>sdallocx</code>: only read size info when page aligned (i.e. possibly sampled), which speeds up the sized deallocation path significantly. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Avoid attempting new mappings for in place expansion with retain, since it rarely succeeds in practice and causes high overhead. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Refactor OOM handling in <code>newImpl</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wqfish/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wqfish">@wqfish</a>)</li>
<li>Add internal fine-grained logging functionality for debugging use. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Refactor arena / tcache interactions. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Refactor extent management with dumpable flag. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Add runtime detection of lazy purging. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Use pairing heap instead of red-black tree for extents_avail. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Use <code>sysctl</code> on startup in FreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/trasz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/trasz">@trasz</a>)</li>
<li>Use thread local prng state instead of atomic. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Make decay to always purge one more extent than before, because in practice large extents are usually the ones that cross the decay threshold. Purging the additional extent helps save memory as well as reduce VM fragmentation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fast division by dynamic values. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Improve the fit for aligned allocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/edwinsmith/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/edwinsmith">@edwinsmith</a>)</li>
<li>Refactor extent_t bitpacking. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rkmisra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rkmisra">@rkmisra</a>)</li>
<li>Optimize the generated assembly for ticker operations. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Convert stats printing to use a structured text emitter. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Remove preserve_lru feature for extents management. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Consolidate two memory loads into one on the fast deallocation path. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
<p>Bug fixes (most of the issues are only relevant to jemalloc 5.0):</p>
<ul>
<li>Fix deadlock with multithreaded fork in OS X. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Validate returned file descriptor before use. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zonyitoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zonyitoo">@zonyitoo</a>)</li>
<li>Fix a few background thread initialization and shutdown issues. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix an extent coalesce + decay race by taking both coalescing extents off the LRU list. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix potentially unbound increase during decay, caused by one thread keep stashing memory to purge while other threads generating new pages. The number of pages to purge is checked to prevent this. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix a FreeBSD bootstrap assertion. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/strejda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/strejda">@strejda</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Handle 32 bit mutex counters. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rkmisra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rkmisra">@rkmisra</a>)</li>
<li>Fix a indexing bug when creating background threads. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/binliu19/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/binliu19">@binliu19</a>)</li>
<li>Fix arguments passed to extent_init. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuleniwo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuleniwo">@yuleniwo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix addresses used for ordering mutexes. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rkmisra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rkmisra">@rkmisra</a>)</li>
<li>Fix <code>abort_conf</code> processing during bootstrap. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix include path order for out-of-tree builds. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmuellner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmuellner">@cmuellner</a>)</li>
</ul>
<p>Incompatible changes:</p>
<ul>
<li>Remove <code>--disable-thp</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Remove mallctl interfaces:
<ul>
<li><code>config.thp</code> (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
</ul>
</li>
</ul>
<p>Documentation:</p>
<ul>
<li>Add <code>TUNING.md</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
</ul>
interwq
tag:github.com,2008:Repository/13310527/5.0.1
2017-07-03T18:00:34Z
5.0.1
<p>This bugfix release fixes several issues, most of which are obscure enough that typical applications are not impacted.</p>
<p>Bug fixes:</p>
<ul>
<li>Update <code>decay->nunpurged</code> before purging, in order to avoid potential update races and subsequent incorrect purging volume. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Only abort on <code>dlsym(3)</code> error if the failure impacts an enabled feature (lazy locking and/or background threads). This mitigates an initialization failure bug for which we still do not have a clear reproduction test case. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Modify tsd management so that it neither crashes nor leaks if a thread's only allocation activity is to call <code>free()</code> after TLS destructors have been executed. This behavior was observed when operating with GNU libc, and is unlikely to be an issue with other libc implementations. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Mask signals during background thread creation. This prevents signals from being inadvertently delivered to background threads. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Avoid inactivity checks within background threads, in order to prevent recursive mutex acquisition. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix extent_grow_retained() to use the specified hooks when the <code>arena.<i>.extent_hooks</code> mallctl is used to override the default hooks. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add missing reentrancy support for custom extent hooks which allocate. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Post-<code>fork(2)</code>, re-initialize the list of tcaches associated with each arena to contain no tcaches except the forking thread's. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add missing post-<code>fork(2)</code> mutex reinitialization for <code>extent_grow_mtx</code>. This fixes potential deadlocks after <code>fork(2)</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Enforce minimum autoconf version (currently 2.68), since 2.63 is known to generate corrupt configure scripts. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Ensure that the configured page size (<code>--with-lg-page</code>) is no larger than the configured huge page size (<code>--with-lg-hugepage</code>). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
jasone
tag:github.com,2008:Repository/13310527/5.0.0
2017-06-13T20:32:22Z
5.0.0
<p>Unlike all previous jemalloc releases, this release does not use naturally aligned "chunks" for virtual memory management, and instead uses page-aligned "extents". This change has few externally visible effects, but the internal impacts are... extensive. Many other internal changes combine to make this the most cohesively designed version of jemalloc so far, with ample opportunity for further enhancements.</p>
<p>Continuous integration is now an integral aspect of development thanks to the efforts of <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, and the dev branch tends to remain reasonably stable on the tested platforms (Linux, FreeBSD, macOS, and Windows). As a side effect the official release frequency may decrease over time.</p>
<p>New features:</p>
<ul>
<li>Implement optional per-CPU arena support; threads choose which arena to use based on current CPU rather than on fixed thread-->arena associations. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Implement two-phase decay of unused dirty pages. Pages transition from dirty-->muzzy-->clean, where the first phase transition relies on <code>madvise(... MADV_FREE)</code> semantics, and the second phase transition discards pages such that they are replaced with demand-zeroed pages on next access. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Increase decay time resolution from seconds to milliseconds. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Implement opt-in per CPU background threads, and use them for asynchronous decay-driven unused dirty page purging. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add mutex profiling, which collects a variety of statistics useful for diagnosing overhead/contention issues. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add C++ new/delete operator bindings. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Support manually created arena destruction, such that all data and metadata are discarded. Add <code>MALLCTL_ARENAS_DESTROYED</code> for accessing merged stats associated with destroyed arenas. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add <code>MALLCTL_ARENAS_ALL</code> as a fixed index for use in accessing merged/destroyed arena statistics via mallctl. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add opt.abort_conf to optionally abort if invalid configuration options are detected during initialization. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Add opt.stats_print_opts, so that e.g. JSON output can be selected for the stats dumped during exit if opt.stats_print is true. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add <code>--with-version=VERSION</code> for use when embedding jemalloc into another project's git repository. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add <code>--disable-thp</code> to support cross compiling. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add <code>--with-lg-hugepage</code> to support cross compiling. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add mallctl interfaces (various authors):
<ul>
<li><code>background_thread</code></li>
<li><code>opt.abort_conf</code></li>
<li><code>opt.retain</code></li>
<li><code>opt.percpu_arena</code></li>
<li><code>opt.background_thread</code></li>
<li><code>opt.{dirty,muzzy}_decay_ms</code></li>
<li><code>opt.stats_print_opts</code></li>
<li><code>arena.<i>.initialized</code></li>
<li><code>arena.<i>.destroy</code></li>
<li><code>arena.<i>.{dirty,muzzy}_decay_ms</code></li>
<li><code>arena.<i>.extent_hooks</code></li>
<li><code>arenas.{dirty,muzzy}_decay_ms</code></li>
<li><code>arenas.bin.<i>.slab_size</code></li>
<li><code>arenas.nlextents</code></li>
<li><code>arenas.lextent.<i>.size</code></li>
<li><code>arenas.create</code></li>
<li><code>stats.background_thread.{num_threads,num_runs,run_interval}</code></li>
<li><code>stats.mutexes.{ctl,background_thread,prof,reset}.{num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,num_owner_switch}</code></li>
<li><code>stats.arenas.<i>.{dirty,muzzy}_decay_ms</code></li>
<li><code>stats.arenas.<i>.uptime</code></li>
<li><code>stats.arenas.<i>.{pmuzzy,base,internal,resident}</code></li>
<li><code>stats.arenas.<i>.{dirty,muzzy}_{npurge,nmadvise,purged}</code></li>
<li><code>stats.arenas.<i>.bins.<j>.{nslabs,reslabs,curslabs}</code></li>
<li><code>stats.arenas.<i>.bins.<j>.mutex.{num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,num_owner_switch}</code></li>
<li><code>stats.arenas.<i>.lextents.<j>.{nmalloc,ndalloc,nrequests,curlextents}</code></li>
<li><code>stats.arenas.i.mutexes.{large,extent_avail,extents_dirty,extents_muzzy,extents_retained,decay_dirty,decay_muzzy,base,tcache_list}.{num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,num_owner_switch}</code></li>
</ul>
</li>
</ul>
<p>Portability improvements:</p>
<ul>
<li>Improve reentrant allocation support, such that deadlock is less likely if e.g. a system library call in turn allocates memory. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Support static linking of jemalloc with glibc. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
</ul>
<p>Optimizations and refactors:</p>
<ul>
<li>Organize virtual memory as "extents" of virtual memory pages, rather than as naturally aligned "chunks", and store all metadata in arbitrarily distant locations. This reduces virtual memory external fragmentation, and will interact better with huge pages (not yet explicitly supported). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fold large and huge size classes together; only small and large size classes remain. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Unify the allocation paths, and merge most fast-path branching decisions. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Embed per thread automatic tcache into thread-specific data, which reduces conditional branches and dereferences. Also reorganize tcache to increase fast-path data locality. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Rewrite atomics to closely model the C11 API, convert various synchronization from mutex-based to atomic, and use the explicit memory ordering control to resolve various hypothetical races without increasing synchronization overhead. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Extensively optimize rtree via various methods:
<ul>
<li>Add multiple layers of rtree lookup caching, since rtree lookups are now part of fast-path deallocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Determine rtree layout at compile time. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Make the tree shallower for common configurations. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Embed the root node in the top-level rtree data structure, thus avoiding one level of indirection. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Further specialize leaf elements as compared to internal node elements, and directly embed extent metadata needed for fast-path deallocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Ignore leading always-zero address bits (architecture-specific). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
</li>
<li>Reorganize headers (ongoing work) to make them hermetic, and disentangle various module dependencies. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>)</li>
<li>Convert various internal data structures such as size class metadata from boot-time-initialized to compile-time-initialized. Propagate resulting data structure simplifications, such as making arena metadata fixed-size. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Simplify size class lookups when constrained to size classes that are multiples of the page size. This speeds lookups, but the primary benefit is complexity reduction in code that was the source of numerous regressions. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Lock individual extents when possible for localized extent operations, rather than relying on a top-level arena lock. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Use first fit layout policy instead of best fit, in order to improve packing. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>If <code>munmap(2)</code> is not in use, use an exponential series to grow each arena's virtual memory, so that the number of disjoint virtual memory mappings remains low. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Implement per arena base allocators, so that arenas never share any virtual memory pages. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Automatically generate private symbol name mangling macros. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
<p>Incompatible changes:</p>
<ul>
<li>Replace chunk hooks with an expanded/normalized set of extent hooks. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove ratio-based purging. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--disable-tcache</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--disable-tls</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--enable-ivsalloc</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--with-lg-size-class-group</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--with-lg-tiny-min</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--disable-cc-silence</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--enable-code-coverage</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove <code>--disable-munmap</code> (replaced by <code>opt.retain</code>). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove Valgrind support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove quarantine support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove redzone support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Remove mallctl interfaces (various authors):
<ul>
<li><code>config.munmap</code></li>
<li><code>config.tcache</code></li>
<li><code>config.tls</code></li>
<li><code>config.valgrind</code></li>
<li><code>opt.lg_chunk</code></li>
<li><code>opt.purge</code></li>
<li><code>opt.lg_dirty_mult</code></li>
<li><code>opt.decay_time</code></li>
<li><code>opt.quarantine</code></li>
<li><code>opt.redzone</code></li>
<li><code>opt.thp</code></li>
<li><code>arena.<i>.lg_dirty_mult</code></li>
<li><code>arena.<i>.decay_time</code></li>
<li><code>arena.<i>.chunk_hooks</code></li>
<li><code>arenas.initialized</code></li>
<li><code>arenas.lg_dirty_mult</code></li>
<li><code>arenas.decay_time</code></li>
<li><code>arenas.bin.<i>.run_size</code></li>
<li><code>arenas.nlruns</code></li>
<li><code>arenas.lrun.<i>.size</code></li>
<li><code>arenas.nhchunks</code></li>
<li><code>arenas.hchunk.<i>.size</code></li>
<li><code>arenas.extend</code></li>
<li><code>stats.cactive</code></li>
<li><code>stats.arenas.<i>.lg_dirty_mult</code></li>
<li><code>stats.arenas.<i>.decay_time</code></li>
<li><code>stats.arenas.<i>.metadata.{mapped,allocated}</code></li>
<li><code>stats.arenas.<i>.{npurge,nmadvise,purged}</code></li>
<li><code>stats.arenas.<i>.huge.{allocated,nmalloc,ndalloc,nrequests}</code></li>
<li><code>stats.arenas.<i>.bins.<j>.{nruns,reruns,curruns}</code></li>
<li><code>stats.arenas.<i>.lruns.<j>.{nmalloc,ndalloc,nrequests,curruns}</code></li>
<li><code>stats.arenas.<i>.hchunks.<j>.{nmalloc,ndalloc,nrequests,curhchunks}</code></li>
</ul>
</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>Improve interval-based profile dump triggering to dump only one profile when a single allocation's size exceeds the interval. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Use prefixed function names (as controlled by --with-jemalloc-prefix) when pruning backtrace frames in jeprof. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
jasone
tag:github.com,2008:Repository/13310527/4.5.0
2017-03-01T18:04:28Z
4.5.0
<p>This is the first release to benefit from much broader continuous integration testing, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidtgoldblatt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidtgoldblatt">@davidtgoldblatt</a>. Had we had this testing infrastructure in place for prior releases, it would have caught all of the most serious regressions fixed by this release.</p>
<p>New features:</p>
<ul>
<li>Add <code>--disable-thp</code> and the <code>opt.thp</code> mallctl to provide opt-out mechanisms for transparent huge page integration. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Update zone allocator integration to work with macOS 10.12. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/glandium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/glandium">@glandium</a>)</li>
<li>Restructure <code>*CFLAGS</code> configuration, so that <code>CFLAGS</code> behaves typically, and <code>EXTRA_CFLAGS</code> provides a way to specify e.g. <code>-Werror</code> during building, but not during configuration. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ronawho/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ronawho">@ronawho</a>)</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>Fix DSS (<code>sbrk(2)</code>-based) allocation. This regression was first released in 4.3.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Handle race in per size class utilization computation. This functionality was first released in 4.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix lock order reversal during gdump. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix/refactor tcache synchronization. This regression was first released in 4.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix various JSON-formatted <code>malloc_stats_print()</code> bugs. This functionality was first released in 4.3.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix huge-aligned allocation. This regression was first released in 4.4.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>When transparent huge page integration is enabled, detect what state pages start in according to the kernel's current operating mode, and only convert arena chunks to non-huge during purging if that is not their initial state. This functionality was first released in 4.4.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix <code>lg_chunk</code> clamping for the <code>--enable-cache-oblivious --disable-fill</code> case. This regression was first released in 4.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/428desmo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/428desmo">@428desmo</a>)</li>
<li>Properly detect sparc64 when building for Linux. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/glaubitz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/glaubitz">@glaubitz</a>)</li>
</ul>
jasone
tag:github.com,2008:Repository/13310527/4.4.0
2016-12-04T07:10:05Z
4.4.0
<p>New features:</p>
<ul>
<li>Add configure support for <em>-</em>-linux-android. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cferris1000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cferris1000">@cferris1000</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add the <code>--disable-syscall</code> configure option, for use on systems that place security-motivated limitations on <code>syscall(2)</code>. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add support for Debian GNU/kFreeBSD. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thesam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thesam">@thesam</a>)</li>
</ul>
<p>Optimizations:</p>
<ul>
<li>Add extent serial numbers and use them where appropriate as a sort key that is higher priority than address, so that the allocation policy prefers older extents. This tends to improve locality (decrease fragmentation) when memory grows downward. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Refactor <code>madvise(2)</code> configuration so that <code>MADV_FREE</code> is detected and utilized on Linux 4.5 and newer. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Mark partially purged arena chunks as non-huge-page. This improves interaction with Linux's transparent huge page functionality. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>Fix size class computations for edge conditions involving extremely large allocations. This regression was first released in 4.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingvarha/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingvarha">@ingvarha</a>)</li>
<li>Remove overly restrictive assertions related to the <code>cactive</code> statistic. This regression was first released in 4.1.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Implement a more reliable detection scheme for <code>os_unfair_lock</code> on macOS. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jszakmeister/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jszakmeister">@jszakmeister</a>)</li>
</ul>
jasone
tag:github.com,2008:Repository/13310527/4.3.1
2016-11-08T01:28:54Z
4.3.1
<p>Bug fixes:</p>
<ul>
<li>Fix a severe virtual memory leak. This regression was first released in 4.3.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Refactor atomic and prng APIs to restore support for 32-bit platforms that use pre-C11 toolchains, e.g. FreeBSD's mips. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
jasone
tag:github.com,2008:Repository/13310527/4.3.0
2016-11-05T00:58:56Z
4.3.0
<p>This is the first release that passes the test suite for multiple Windows configurations, thanks in large part to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/glandium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/glandium">@glandium</a> setting up continuous integration via AppVeyor (and Travis CI for Linux and OS X).</p>
<p>New features:</p>
<ul>
<li>Add "J" (JSON) support to malloc_stats_print(). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Add Cray compiler support. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ronawho/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ronawho">@ronawho</a>)</li>
</ul>
<p>Optimizations:</p>
<ul>
<li>Add/use adaptive spinning for bootstrapping and radix tree node initialization. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>Fix large allocation to search starting in the optimal size class heap, which can substantially reduce virtual memory churn and fragmentation. This regression was first released in 4.0.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mjp41/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mjp41">@mjp41</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix stats.arenas.<i>.nthreads accounting. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix and simplify decay-based purging. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Make DSS (<code>sbrk(2)</code>-related) operations lockless, which resolves potential deadlocks during thread exit. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix over-sized allocation of radix tree leaf nodes. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mjp41/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mjp41">@mjp41</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ogaun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ogaun">@ogaun</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix over-sized allocation of <code>arena_t</code> (plus associated stats) data structures. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/interwq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/interwq">@interwq</a>)</li>
<li>Fix <code>EXTRA_CFLAGS</code> to not affect configuration. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix a Valgrind integration bug. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ronawho/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ronawho">@ronawho</a>)</li>
<li>Disallow <code>0x5a</code> junk filling when running in Valgrind. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix a file descriptor leak on Linux. This regression was first released in 4.2.0. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vsarunas/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vsarunas">@vsarunas</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix static linking of jemalloc with glibc. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djwatson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djwatson">@djwatson</a>)</li>
<li>Use <code>syscall(2)</code> rather than <code>{open,read,close}(2)</code> during boot on Linux. This works around other libraries' system call wrappers performing reentrant allocation. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kspinka/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kspinka">@kspinka</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Whissi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Whissi">@Whissi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix OS X default zone replacement to work with OS X 10.12. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/glandium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/glandium">@glandium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix cached memory management to avoid needless commit/decommit operations during purging, which resolves permanent virtual memory map fragmentation issues on Windows. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mjp41/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mjp41">@mjp41</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix TSD fetches to avoid (recursive) allocation. This is relevant to non-TLS and Windows configurations. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Fix <code>malloc_conf</code> overriding to work on Windows. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
<li>Forcibly disable lazy-lock on Windows (was forcibly <em>enabled</em>). (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasone">@jasone</a>)</li>
</ul>
jasone