Lines Matching +full:os +full:- +full:manifest +full:- +full:offset

14   - Fix a severe virtual memory leak on Windows.  This regression was first
15 released in 5.0.0. (@Ignition, @j0t, @frederik-h, @davidtgoldblatt,
17 - Fix size 0 handling in posix_memalign(). This regression was first released
19 - Fix the prof_log unit test which may observe unexpected backtraces from
22 - Fix the declaration of the extent_avail tree. This regression was first
24 - Fix an incorrect reference in jeprof. This functionality was first released
25 in 3.0.0. (@prehistoric-penguin)
26 - Fix an assertion on the deallocation fast-path. This regression was first
28 - Fix the TLS_MODEL attribute in headers. This regression was first released
32 - Implement opt.retain on Windows and enable by default on 64-bit. (@interwq,
34 - Optimize away a branch on the operator delete[] path. (@mgrice)
35 - Add format annotation to the format generator function. (@zoulasc)
36 - Refactor and improve the size class header generation. (@yinan1048576)
37 - Remove best fit. (@djwatson)
38 - Avoid blocking on background thread locks for stats. (@oranagra, @interwq)
43 1) improved fast-path performance from the optimizations by @djwatson; 2)
47 prior dev versions have gone through large-scale production testing.
50 - Implement oversize_threshold, which uses a dedicated arena for allocations
52 - Add extents usage information to stats. (@tyleretzel)
53 - Log time information for sampled allocations. (@tyleretzel)
54 - Support 0 size in sdallocx. (@djwatson)
55 - Output rate for certain counters in malloc_stats. (@zinoale)
56 - Add configure option --enable-readlinkat, which allows the use of readlinkat
58 - Add configure options --{enable,disable}-{static,shared} to allow not
60 - Add configure option --disable-libdl to enable fully static builds.
62 - Add mallctl interfaces:
70 - Update MSVC builds. (@maksqwe, @rustyx)
71 - Workaround a compiler optimizer bug on s390x. (@rkmisra)
72 - Make use of pthread_set_name_np(3) on FreeBSD. (@trasz)
73 - Implement malloc_getcpu() to enable percpu_arena for windows. (@santagada)
74 - Link against -pthread instead of -lpthread. (@paravoid)
75 - Make background_thread not dependent on libdl. (@interwq)
76 - Add stringify to fix a linker directive issue on MSVC. (@daverigby)
77 - Detect and fall back when 8-bit atomics are unavailable. (@interwq)
78 - Fall back to the default pthread_create if dlsym(3) fails. (@interwq)
81 - Refactor the TSD module. (@davidtgoldblatt)
82 - Avoid taking extents_muzzy mutex when muzzy is disabled. (@interwq)
83 - Avoid taking large_mtx for auto arenas on the tcache flush path. (@interwq)
84 - Optimize ixalloc by avoiding a size lookup. (@interwq)
85 - Implement opt.oversize_threshold which uses a dedicated arena for requests
88 - Clean compilation with -Wextra. (@gnzlbg, @jasone)
89 - Refactor the size class module. (@davidtgoldblatt)
90 - Refactor the stats emitter. (@tyleretzel)
91 - Optimize pow2_ceil. (@rkmisra)
92 - Avoid runtime detection of lazy purging on FreeBSD. (@trasz)
93 - Optimize mmap(2) alignment handling on FreeBSD. (@trasz)
94 - Improve error handling for THP state initialization. (@jsteemann)
95 - Rework the malloc() fast path. (@djwatson)
96 - Rework the free() fast path. (@djwatson)
97 - Refactor and optimize the tcache fill / flush paths. (@djwatson)
98 - Optimize sync / lwsync on PowerPC. (@chmeeedalf)
99 - Bypass extent_dalloc() when retain is enabled. (@interwq)
100 - Optimize the locking on large deallocation. (@interwq)
101 - Reduce the number of pages committed from sanity checking in debug build.
103 - Deprecate OSSpinLock. (@interwq)
104 - Lower the default number of background threads to 4 (when the feature
106 - Optimize the trylock spin wait. (@djwatson)
107 - Use arena index for arena-matching checks. (@interwq)
108 - Avoid forced decay on thread termination when using background threads.
110 - Disable muzzy decay by default. (@djwatson, @interwq)
111 - Only initialize libgcc unwinder when profiling is enabled. (@paravoid,
115 - Fix background thread index issues with max_background_threads. (@djwatson,
117 - Fix stats output for opt.lg_extent_max_active_fit. (@interwq)
118 - Fix opt.prof_prefix initialization. (@davidtgoldblatt)
119 - Properly trigger decay on tcache destroy. (@interwq, @amosbird)
120 - Fix tcache.flush. (@interwq)
121 - Detect whether explicit extent zero out is necessary with huge pages or
123 - Fix a side effect caused by extent_max_active_fit combined with decay-based
126 - Fix a missing unlock on extent register error handling. (@zoulasc)
129 - Simplify the Travis script output. (@gnzlbg)
130 - Update the test scripts for FreeBSD. (@devnexen)
131 - Add unit tests for the producer-consumer pattern. (@interwq)
132 - Add Cirrus-CI config for FreeBSD builds. (@jasone)
133 - Add size-matching sanity checks on tcache flush. (@davidtgoldblatt,
137 - Remove --with-lg-page-sizes. (@davidtgoldblatt)
140 - Attempt to build docs by default, however skip doc building when xsltproc
145 This release is primarily about fine-tuning, ranging from several new features
152 performance-critical applications, the newly added TUNING.md provides
156 - Implement transparent huge page support for internal metadata. (@interwq)
157 - Add opt.thp to allow enabling / disabling transparent huge pages for all
159 - Add maximum background thread count option. (@djwatson)
160 - Allow prof_active to control opt.lg_prof_interval and prof.gdump.
162 - Allow arena index lookup based on allocation addresses via mallctl.
164 - Allow disabling initial-exec TLS model. (@davidtgoldblatt, @KenMacD)
165 - Add opt.lg_extent_max_active_fit to set the max ratio between the size of
168 - Add retain_grow_limit to set the max size when growing virtual address
170 - Add mallctl interfaces:
181 - Support GNU/kFreeBSD configuration. (@paravoid)
182 - Support m68k, nios2 and SH3 architectures. (@paravoid)
183 - Fall back to FD_CLOEXEC when O_CLOEXEC is unavailable. (@zonyitoo)
184 - Fix symbol listing for cross-compiling. (@tamird)
185 - Fix high bits computation on ARM. (@davidtgoldblatt, @paravoid)
186 - Disable the CPU_SPINWAIT macro for Power. (@davidtgoldblatt, @marxin)
187 - Fix MSVC 2015 & 2017 builds. (@rustyx)
188 - Improve RISC-V support. (@EdSchouten)
189 - Set name mangling script in strict mode. (@nicolov)
190 - Avoid MADV_HUGEPAGE on ARM. (@marxin)
191 - Modify configure to determine return value of strerror_r.
193 - Make sure CXXFLAGS is tested with CPP compiler. (@nehaljwani)
194 - Fix 32-bit build on MSVC. (@rustyx)
195 - Fix external symbol on MSVC. (@maksqwe)
196 - Avoid a printf format specifier warning. (@jasone)
197 - Add configure option --disable-initial-exec-tls which can allow jemalloc to
199 - AArch64: Add ILP32 support. (@cmuellner)
200 - Add --with-lg-vaddr configure option to support cross compiling.
204 - Improve active extent fit with extent_max_active_fit. This considerably
207 - Eagerly coalesce large extents to reduce fragmentation. (@interwq)
208 - sdallocx: only read size info when page aligned (i.e. possibly sampled),
210 - Avoid attempting new mappings for in place expansion with retain, since
212 - Refactor OOM handling in newImpl. (@wqfish)
213 - Add internal fine-grained logging functionality for debugging use.
215 - Refactor arena / tcache interactions. (@davidtgoldblatt)
216 - Refactor extent management with dumpable flag. (@davidtgoldblatt)
217 - Add runtime detection of lazy purging. (@interwq)
218 - Use pairing heap instead of red-black tree for extents_avail. (@djwatson)
219 - Use sysctl on startup in FreeBSD. (@trasz)
220 - Use thread local prng state instead of atomic. (@djwatson)
221 - Make decay to always purge one more extent than before, because in
225 - Fast division by dynamic values. (@davidtgoldblatt)
226 - Improve the fit for aligned allocation. (@interwq, @edwinsmith)
227 - Refactor extent_t bitpacking. (@rkmisra)
228 - Optimize the generated assembly for ticker operations. (@davidtgoldblatt)
229 - Convert stats printing to use a structured text emitter. (@davidtgoldblatt)
230 - Remove preserve_lru feature for extents management. (@djwatson)
231 - Consolidate two memory loads into one on the fast deallocation path.
235 - Fix deadlock with multithreaded fork in OS X. (@davidtgoldblatt)
236 - Validate returned file descriptor before use. (@zonyitoo)
237 - Fix a few background thread initialization and shutdown issues. (@interwq)
238 - Fix an extent coalesce + decay race by taking both coalescing extents off
240 - Fix potentially unbound increase during decay, caused by one thread keep
243 - Fix a FreeBSD bootstrap assertion. (@strejda, @interwq)
244 - Handle 32 bit mutex counters. (@rkmisra)
245 - Fix a indexing bug when creating background threads. (@davidtgoldblatt,
247 - Fix arguments passed to extent_init. (@yuleniwo, @interwq)
248 - Fix addresses used for ordering mutexes. (@rkmisra)
249 - Fix abort_conf processing during bootstrap. (@interwq)
250 - Fix include path order for out-of-tree builds. (@cmuellner)
253 - Remove --disable-thp. (@interwq)
254 - Remove mallctl interfaces:
258 - Add TUNING.md. (@interwq, @davidtgoldblatt, @djwatson)
266 - Update decay->nunpurged before purging, in order to avoid potential update
268 - Only abort on dlsym(3) error if the failure impacts an enabled feature (lazy
272 - Modify tsd management so that it neither crashes nor leaks if a thread's
276 - Mask signals during background thread creation. This prevents signals from
279 - Avoid inactivity checks within background threads, in order to prevent
281 - Fix extent_grow_retained() to use the specified hooks when the
284 - Add missing reentrancy support for custom extent hooks which allocate.
286 - Post-fork(2), re-initialize the list of tcaches associated with each arena
288 - Add missing post-fork(2) mutex reinitialization for extent_grow_mtx. This
290 - Enforce minimum autoconf version (currently 2.68), since 2.63 is known to
292 - Ensure that the configured page size (--with-lg-page) is no larger than the
293 configured huge page size (--with-lg-hugepage). (@jasone)
298 aligned "chunks" for virtual memory management, and instead uses page-aligned
310 - Implement optional per-CPU arena support; threads choose which arena to use
311 based on current CPU rather than on fixed thread-->arena associations.
313 - Implement two-phase decay of unused dirty pages. Pages transition from
314 dirty-->muzzy-->clean, where the first phase transition relies on
316 pages such that they are replaced with demand-zeroed pages on next access.
318 - Increase decay time resolution from seconds to milliseconds. (@jasone)
319 - Implement opt-in per CPU background threads, and use them for asynchronous
320 decay-driven unused dirty page purging. (@interwq)
321 - Add mutex profiling, which collects a variety of statistics useful for
323 - Add C++ new/delete operator bindings. (@djwatson)
324 - Support manually created arena destruction, such that all data and metadata
327 - Add MALLCTL_ARENAS_ALL as a fixed index for use in accessing
329 - Add opt.abort_conf to optionally abort if invalid configuration options are
331 - Add opt.stats_print_opts, so that e.g. JSON output can be selected for the
333 - Add --with-version=VERSION for use when embedding jemalloc into another
335 - Add --disable-thp to support cross compiling. (@jasone)
336 - Add --with-lg-hugepage to support cross compiling. (@jasone)
337 - Add mallctl interfaces (various authors):
373 - Improve reentrant allocation support, such that deadlock is less likely if
376 - Support static linking of jemalloc with glibc. (@djwatson)
379 - Organize virtual memory as "extents" of virtual memory pages, rather than as
383 - Fold large and huge size classes together; only small and large size classes
385 - Unify the allocation paths, and merge most fast-path branching decisions.
387 - Embed per thread automatic tcache into thread-specific data, which reduces
389 fast-path data locality. (@interwq)
390 - Rewrite atomics to closely model the C11 API, convert various
391 synchronization from mutex-based to atomic, and use the explicit memory
394 - Extensively optimize rtree via various methods:
396 part of fast-path deallocation. (@interwq)
399 + Embed the root node in the top-level rtree data structure, thus avoiding
402 and directly embed extent metadata needed for fast-path deallocation.
404 + Ignore leading always-zero address bits (architecture-specific).
406 - Reorganize headers (ongoing work) to make them hermetic, and disentangle
408 - Convert various internal data structures such as size class metadata from
409 boot-time-initialized to compile-time-initialized. Propagate resulting data
410 structure simplifications, such as making arena metadata fixed-size.
412 - Simplify size class lookups when constrained to size classes that are
416 - Lock individual extents when possible for localized extent operations,
417 rather than relying on a top-level arena lock. (@davidtgoldblatt, @jasone)
418 - Use first fit layout policy instead of best fit, in order to improve
420 - If munmap(2) is not in use, use an exponential series to grow each arena's
423 - Implement per arena base allocators, so that arenas never share any virtual
425 - Automatically generate private symbol name mangling macros. (@jasone)
428 - Replace chunk hooks with an expanded/normalized set of extent hooks.
430 - Remove ratio-based purging. (@jasone)
431 - Remove --disable-tcache. (@jasone)
432 - Remove --disable-tls. (@jasone)
433 - Remove --enable-ivsalloc. (@jasone)
434 - Remove --with-lg-size-class-group. (@jasone)
435 - Remove --with-lg-tiny-min. (@jasone)
436 - Remove --disable-cc-silence. (@jasone)
437 - Remove --enable-code-coverage. (@jasone)
438 - Remove --disable-munmap (replaced by opt.retain). (@jasone)
439 - Remove Valgrind support. (@jasone)
440 - Remove quarantine support. (@jasone)
441 - Remove redzone support. (@jasone)
442 - Remove mallctl interfaces (various authors):
477 - Improve interval-based profile dump triggering to dump only one profile when
479 - Use prefixed function names (as controlled by --with-jemalloc-prefix) when
490 - Add --disable-thp and the opt.thp mallctl to provide opt-out mechanisms for
492 - Update zone allocator integration to work with macOS 10.12. (@glandium)
493 - Restructure *CFLAGS configuration, so that CFLAGS behaves typically, and
494 EXTRA_CFLAGS provides a way to specify e.g. -Werror during building, but not
498 - Fix DSS (sbrk(2)-based) allocation. This regression was first released in
500 - Handle race in per size class utilization computation. This functionality
502 - Fix lock order reversal during gdump. (@jasone)
503 - Fix/refactor tcache synchronization. This regression was first released in
505 - Fix various JSON-formatted malloc_stats_print() bugs. This functionality
507 - Fix huge-aligned allocation. This regression was first released in 4.4.0.
509 - When transparent huge page integration is enabled, detect what state pages
511 arena chunks to non-huge during purging if that is not their initial state.
513 - Fix lg_chunk clamping for the --enable-cache-oblivious --disable-fill case.
515 - Properly detect sparc64 when building for Linux. (@glaubitz)
520 - Add configure support for *-*-linux-android. (@cferris1000, @jasone)
521 - Add the --disable-syscall configure option, for use on systems that place
522 security-motivated limitations on syscall(2). (@jasone)
523 - Add support for Debian GNU/kFreeBSD. (@thesam)
526 - Add extent serial numbers and use them where appropriate as a sort key that
530 - Refactor madvise(2) configuration so that MADV_FREE is detected and utilized
532 - Mark partially purged arena chunks as non-huge-page. This improves
536 - Fix size class computations for edge conditions involving extremely large
539 - Remove overly restrictive assertions related to the cactive statistic. This
541 - Implement a more reliable detection scheme for os_unfair_lock on macOS.
547 - Fix a severe virtual memory leak. This regression was first released in
549 - Refactor atomic and prng APIs to restore support for 32-bit platforms that
550 use pre-C11 toolchains, e.g. FreeBSD's mips. (@jasone)
556 integration via AppVeyor (and Travis CI for Linux and OS X).
559 - Add "J" (JSON) support to malloc_stats_print(). (@jasone)
560 - Add Cray compiler support. (@ronawho)
563 - Add/use adaptive spinning for bootstrapping and radix tree node
567 - Fix large allocation to search starting in the optimal size class heap,
570 - Fix stats.arenas.<i>.nthreads accounting. (@interwq)
571 - Fix and simplify decay-based purging. (@jasone)
572 - Make DSS (sbrk(2)-related) operations lockless, which resolves potential
574 - Fix over-sized allocation of radix tree leaf nodes. (@mjp41, @ogaun,
576 - Fix over-sized allocation of arena_t (plus associated stats) data
578 - Fix EXTRA_CFLAGS to not affect configuration. (@jasone)
579 - Fix a Valgrind integration bug. (@ronawho)
580 - Disallow 0x5a junk filling when running in Valgrind. (@jasone)
581 - Fix a file descriptor leak on Linux. This regression was first released in
583 - Fix static linking of jemalloc with glibc. (@djwatson)
584 - Use syscall(2) rather than {open,read,close}(2) during boot on Linux. This
587 - Fix OS X default zone replacement to work with OS X 10.12. (@glandium,
589 - Fix cached memory management to avoid needless commit/decommit operations
592 - Fix TSD fetches to avoid (recursive) allocation. This is relevant to
593 non-TLS and Windows configurations. (@jasone)
594 - Fix malloc_conf overriding to work on Windows. (@jasone)
595 - Forcibly disable lazy-lock on Windows (was forcibly *enabled*). (@jasone)
600 - Fix bootstrapping issues for configurations that require allocation during
601 tsd initialization (e.g. --disable-tls). (@cferris1000, @jasone)
602 - Fix gettimeofday() version of nstime_update(). (@ronawho)
603 - Fix Valgrind regressions in calloc() and chunk_alloc_wrapper(). (@ronawho)
604 - Fix potential VM map fragmentation regression. (@jasone)
605 - Fix opt_zero-triggered in-place huge reallocation zeroing. (@jasone)
606 - Fix heap profiling context leaks in reallocation edge cases. (@jasone)
611 - Add the arena.<i>.reset mallctl, which makes it possible to discard all of
613 - Add the stats.retained and stats.arenas.<i>.retained statistics. (@jasone)
614 - Add the --with-version configure option. (@jasone)
615 - Support --with-lg-page values larger than actual page size. (@jasone)
618 - Use pairing heaps rather than red-black trees for various hot data
620 - Streamline fast paths of rtree operations. (@jasone)
621 - Optimize the fast paths of calloc() and [m,d,sd]allocx(). (@jasone)
622 - Decommit unused virtual memory if the OS does not overcommit. (@jasone)
623 - Specify MAP_NORESERVE on Linux if [heuristic] overcommit is active, in order
627 - Fix chunk accounting related to triggering gdump profiles. (@jasone)
628 - Link against librt for clock_gettime(2) if glibc < 2.17. (@jasone)
629 - Scale leak report summary according to sampling probability. (@jasone)
634 bitmap fix is critical for 64-bit Windows.
637 - Fix the linear scan version of bitmap_sfu() to shift by the proper amount
638 even when sizeof(long) is not the same as sizeof(void *), as on 64-bit
640 - Fix hashing functions to avoid unaligned memory accesses (and resulting
641 crashes). This is relevant at least to some ARM-based platforms.
643 - Fix fork()-related lock rank ordering reversals. These reversals were
646 - Fix various chunk leaks in OOM code paths. (@jasone)
647 - Fix malloc_stats_print() to print opt.narenas correctly. (@jasone)
648 - Fix MSVC-specific build/test issues. (@rustyx, @yuslepukhin)
649 - Fix a variety of test failures that were due to test fragility rather than
655 of portability-motivated refactoring and enhancements. Many people worked on
663 - Implement decay-based unused dirty page purging, a major optimization with
664 mallctl API impact. This is an alternative to the existing ratio-based
674 - Add --with-malloc-conf, which makes it possible to embed a default
676 specify --with-malloc-conf=purge:decay , since the default must remain
678 - Add MS Visual Studio 2015 support. (@rustyx, @yuslepukhin)
679 - Make *allocx() size class overflow behavior defined. The maximum
684 - jeprof:
686 + Add --retain and --exclude for backtrace symbol filtering. (@jasone)
689 - Optimize the fast path to combine various bootstrapping and configuration
691 - Use linear scan for small bitmaps (used for small object tracking). In
692 addition to speeding up bitmap operations on 64-bit systems, this reduces
694 - Separate arena_avail trees, which substantially speeds up run tree
696 - Use memoization (boot-time-computed table) for run quantization. Separate
698 - Attempt mmap-based in-place huge reallocation. This can dramatically speed
702 - Make opt.narenas unsigned rather than size_t. (@jasone)
705 - Fix stats.cactive accounting regression. (@rustyx, @jasone)
706 - Handle unaligned keys in hash(). This caused problems for some ARM systems.
708 - Refactor arenas array. In addition to fixing a fork-related deadlock, this
710 - Move retained memory allocation out of the default chunk allocation
714 - Fix a potential tsd cleanup leak. (@cferris1000, @jasone)
715 - Fix run quantization. In practice this bug had no impact unless
718 - Fix LinuxThreads-specific bootstrapping deadlock. (Cosmin Paraschiv)
719 - jeprof:
722 - Fix stats.arenas.<i>.{dss,lg_dirty_mult,decay_time,pactive,pdirty} for
723 --disable-stats case. (@jasone)
733 - Fix xallocx(..., MALLOCX_ZERO to zero the last full trailing page of large
734 allocations that have been randomly assigned an offset of 0 when
735 --enable-cache-oblivious configure option is enabled.
742 - Fix xallocx(..., MALLOCX_ZERO) to zero all trailing bytes of large
743 allocations when --enable-cache-oblivious configure option is enabled.
744 - Fix xallocx(..., MALLOCX_ZERO) to zero trailing bytes of huge allocations
746 - Fix prof_tctx_dump_iter() to filter out nodes that were created after heap
748 - Work around a potentially bad thread-specific data initialization
756 - Fix ixallocx_prof_sample() to never modify nor create sampled small
759 - Fix irallocx_prof_sample() to always allocate large regions, even when
760 alignment is non-zero.
761 - Fix prof_alloc_rollback() to read tdata from thread-specific data rather
774 - Avoid a chunk metadata read in arena_prof_tctx_set(), since it is in the
778 - Optimize irallocx_prof() to optimistically update the sampler state. The
783 - Fix TLS configuration such that it is enabled by default for platforms on
785 - Fix arenas_cache_cleanup() and arena_get_hard() to handle
786 allocation/deallocation within the application's thread-specific data
788 - Fix xallocx() bugs related to size+extra exceeding HUGE_MAXCLASS.
789 - Fix chunk purge hook calls for in-place huge shrinking reallocation to
793 - Fix heap profiling bugs:
808 - Fix portability bugs:
829 - Normalize size class spacing to be consistent across the complete size
831 is now configurable via the --with-lg-size-class-group option. Also add the
832 --with-lg-page, --with-lg-page-sizes, --with-lg-quantum, and
833 --with-lg-tiny-min options, which can be used to tweak page and size class
843 - Add support for explicit tcaches. The "tcache.create", "tcache.flush", and
847 - Implement per thread heap profiling, as well as the ability to
852 - Add support for per arena application-specified chunk allocators, configured
854 - Refactor huge allocation to be managed by arenas, so that arenas now
856 the context of user-specified chunk allocators, aside from the scalability
867 - Add the 'util' column to malloc_stats_print() output, which reports the
870 - Add "alloc" and "free" modes for for junk filling (see the "opt.junk"
873 - Add the jemalloc-config script, which provides information about how
875 - Add metadata statistics, which are accessible via the "stats.metadata",
878 - Add the "stats.resident" mallctl, which reports the upper limit of
880 - Add per arena control over unused dirty page purging, via the
883 - Add the "prof.gdump" mallctl, which makes it possible to toggle the gdump
885 - Add sdallocx(), which implements sized deallocation. The primary
888 - Add missing header includes in jemalloc/jemalloc.h, so that applications
890 - Add support for additional platforms:
899 - Maintain dirty runs in per arena LRUs rather than in per arena trees of
900 dirty-run-containing chunks. In practice this change significantly reduces
902 - Integrate whole chunks into the unused dirty page purging machinery. This
905 - Split the arena chunk map into two separate arrays, in order to increase
907 - Move small run metadata out of runs, into arena chunk headers. This reduces
911 - Randomly distribute large allocation base pointer alignment relative to page
913 disabled via the --disable-cache-oblivious configure option, and queried via
915 - Micro-optimize the fast paths for the public API functions.
916 - Refactor thread-specific data to reside in a single structure. This assures
918 - Implement in-place huge allocation growing and shrinking.
919 - Refactor rtree (radix tree for chunk lookups) to be lock-free, and make
926 - Replace --enable-cc-silence with --disable-cc-silence to suppress spurious
928 - Assure that the constness of malloc_usable_size()'s return type matches that
930 - Change the heap profile dump format to support per thread heap profiling,
931 rename pprof to jeprof, and enhance it with the --thread=<n> option. As a
934 - Disable "opt.prof_final" by default, in order to avoid atexit(3), which can
936 - Change the "arenas.nlruns" mallctl type from size_t to unsigned.
937 - Replace the "stats.arenas.<i>.bins.<j>.allocated" mallctl with
939 - Ignore MALLOC_CONF in set{uid,gid,cap} binaries.
940 - Ignore MALLOCX_ARENA(a) in dallocx(), in favor of using the
944 - Remove the *allocm() API, which is superseded by the *allocx() API.
945 - Remove the --enable-dss options, and make dss non-optional on all platforms
947 - Remove the "arenas.purge" mallctl, which was obsoleted by the
949 - Remove the unnecessary "opt.valgrind" mallctl; jemalloc automatically
951 - Remove the "stats.huge.allocated", "stats.huge.nmalloc", and
953 - Remove the --enable-mremap option.
954 - Remove the "stats.chunks.current", "stats.chunks.total", and
958 - Fix the cactive statistic to decrease (rather than increase) when active
960 - Fix OOM handling in memalign() and valloc(). A variant of this bug existed
962 - Fix an OOM-related regression in arena_tcache_fill_small(), which could
965 - Fix size class overflow handling for malloc(), posix_memalign(), memalign(),
967 - Fix the "arena.<i>.dss" mallctl to return an error if "primary" or
969 - Fix fallback lg_floor() implementations to handle extremely large inputs.
970 - Ensure the default purgeable zone is after the default zone on OS X.
971 - Fix latent bugs in atomic_*().
972 - Fix the "arena.<i>.dss" mallctl to handle read-only calls.
973 - Fix tls_model configuration to enable the initial-exec model when possible.
974 - Mark malloc_conf as a weak symbol so that the application can override it.
975 - Correctly detect glibc's adaptive pthread mutexes.
976 - Fix the --without-export configure option.
984 - Fix a regression in arena_chunk_alloc() that caused crashes during
988 - Fix backtracing for gcc intrinsics-based backtracing by specifying
989 -fno-omit-frame-pointer to gcc. Note that the application (and all the
992 - Use dss allocation precedence for huge allocations as well as small/large
994 - Fix test assertion failure message formatting. This bug did not manifest on
996 - Fix inconsequential test failures for hash and SFMT code.
999 - Support heap profiling on FreeBSD. This feature depends on the proc
1007 - Configure Solaris/Illumos to use MADV_FREE.
1008 - Fix junk filling for mremap(2)-based huge reallocation. This is only
1009 relevant if configuring with the --enable-mremap option specified.
1010 - Avoid compilation failure if 'restrict' C99 keyword is not supported by the
1012 - Add a configure test for SSE2 rather than assuming it is usable on i686
1013 systems. This fixes test compilation errors, especially on 32-bit Linux
1015 - Fix mallctl argument size mismatches (size_t vs. uint64_t) in the stats unit
1017 - Fix/remove flawed alignment-related overflow tests.
1018 - Prevent compiler optimizations that could change backtraces in the
1024 includes some non-trivial heap profiling optimizations not mentioned below.
1027 - Add the *allocx() API, which is a successor to the experimental *allocm()
1032 slated for removal in the next non-bugfix release.
1033 - Add support for LinuxThreads.
1036 - Unless heap profiling is enabled, disable floating point code and don't link
1037 with libm. This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64
1039 use. Some versions of glibc neglect to save/restore caller-saved floating
1043 - Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling
1046 - Fix a file descriptor leak in a prof_dump_maps() error path.
1047 - Fix prof_dump() to close the dump file descriptor for all relevant error
1049 - Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for
1051 - Fix a data race for large allocation stats counters.
1052 - Fix a potential infinite loop during thread exit. This bug occurred on
1055 - Don't junk-fill reallocations unless usable size changes. This fixes a
1057 - Fix growing large reallocation to junk fill new space.
1058 - Fix huge deallocation to junk fill when munmap is disabled.
1059 - Change the default private namespace prefix from empty to je_, and change
1060 --with-private-namespace-prefix so that it prepends an additional prefix
1063 - Add missing private namespace mangling (relevant when
1064 --with-private-namespace is specified).
1065 - Add and use JEMALLOC_INLINE_C so that static inline functions are marked as
1067 - Add a missing mutex unlock in a malloc_init_hard() error path. In practice
1069 - Fix numerous bugs in malloc_strotumax() error handling/reporting. These
1071 - Fix numerous bugs in malloc_snprintf(). These bugs were not exercised by
1077 - Fix a race in the "arenas.extend" mallctl that could cause memory corruption
1079 - Fix Valgrind integration flaws that caused Valgrind warnings about reads of
1082 + internal zero-initialized data structures (relevant to tcache and prof
1084 - Preserve errno during the first allocation. A readlink(2) call during
1087 - Fix compilation warnings reported by gcc 4.8.1.
1095 - Fix race-triggered deadlocks in chunk_record(). These deadlocks were
1100 - Add support for the aarch64 architecture.
1105 custom run-time options.
1108 - Fix a locking order bug that could cause deadlock during fork if heap
1110 - Fix a chunk recycling bug that could cause the allocator to lose track of
1111 whether a chunk was zeroed. On FreeBSD, NetBSD, and OS X, it could cause
1115 --disable-munmap configure option or the "dss:primary" option was
1118 - Fix TLS-related memory corruption that could occur during thread exit if the
1121 - Fix two quarantine bugs:
1126 - Fix Valgrind integration to annotate all internally allocated memory in a
1128 - Fix building for s390 systems.
1136 - Add clipping support to lg_chunk option processing.
1137 - Add the --enable-ivsalloc option.
1138 - Add the --without-export option.
1139 - Add the --disable-zone-allocator option.
1142 - Fix "arenas.extend" mallctl to output the number of arenas.
1143 - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory
1145 - Fix build break on FreeBSD related to alloca.h.
1151 page-level virtual memory fragmentation.
1154 - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1).
1157 - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
1159 - Fix deadlock in the "arenas.purge" mallctl. This regression was introduced
1165 - Auto-detect whether running inside Valgrind, thus removing the need to
1167 - Add the "arenas.extend" mallctl, which allows applications to create
1169 - Add the ALLOCM_ARENA() flag for {,r,d}allocm().
1170 - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls,
1172 - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge".
1173 - Define LG_QUANTUM for hppa.
1176 - Disable tcache by default if running inside Valgrind, in order to avoid
1178 - Drop const from malloc_usable_size() argument on Linux.
1181 - Fix heap profiling crash if sampled object is freed via realloc(p, 0).
1182 - Remove const from __*_hook variable declarations, so that glibc can modify
1184 - Fix mlockall(2)/madvise(2) interaction.
1185 - Fix fork(2)-related deadlocks.
1186 - Fix error return value for "thread.tcache.enabled" mallctl.
1200 - Implement Valgrind support, redzones, and quarantine.
1201 - Add support for additional platforms:
1203 + Mac OS X Lion
1206 - Add support for additional architectures:
1210 - Add support for cross compiling.
1211 - Add nallocm(), which rounds a request size up to the nearest size class
1213 - Implement aligned_alloc() (blame C11).
1214 - Add the "thread.tcache.enabled" mallctl.
1215 - Add the "opt.prof_final" mallctl.
1216 - Update pprof (from gperftools 2.0).
1217 - Add the --with-mangling option.
1218 - Add the --disable-experimental option.
1219 - Add the --disable-munmap option, and make it the default on Linux.
1220 - Add the --enable-mremap option, which disables use of mremap(2) by default.
1223 - Enable stats by default.
1224 - Enable fill by default.
1225 - Disable lazy locking by default.
1226 - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
1227 - Rename the "arenas.pagesize" mallctl to "arenas.page".
1228 - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
1229 - Change the "opt.prof_accum" default from true to false.
1232 - Remove the swap feature, including the "config.swap", "swap.avail",
1234 - Remove highruns statistics, including the
1237 - As part of small size class refactoring, remove the "opt.lg_[qc]space_max",
1240 - Remove the "arenas.chunksize" mallctl.
1241 - Remove the "opt.lg_prof_tcmax" option.
1242 - Remove the "opt.lg_prof_bt_max" option.
1243 - Remove the "opt.lg_tcache_gc_sweep" option.
1244 - Remove the --disable-tiny option, including the "config.tiny" mallctl.
1245 - Remove the --enable-dynamic-page-shift configure option.
1246 - Remove the --enable-sysv configure option.
1249 - Fix a statistics-related bug in the "thread.arena" mallctl that could cause
1251 - Work around TLS deallocation via free() on Linux. This bug could cause
1252 write-after-free memory corruption.
1253 - Fix a potential deadlock that could occur during interval- and
1254 growth-triggered heap profile dumps.
1255 - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags.
1256 - Fix chunk_alloc_dss() to stop claiming memory is zeroed. This bug could
1257 cause memory corruption and crashes with --enable-dss specified.
1258 - Fix fork-related bugs that could cause deadlock in children between fork
1260 - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
1261 - Fix realloc(p, 0) to act like free(p).
1262 - Do not enforce minimum alignment in memalign().
1263 - Check for NULL pointer in malloc_usable_size().
1264 - Fix an off-by-one heap profile statistics bug that could be observed in
1265 interval- and growth-triggered heap profiles.
1266 - Fix the "epoch" mallctl to update cached stats even if the passed in epoch
1268 - Fix bin->runcur management to fix a layout policy bug. This bug did not
1270 - Fix a bug in choose_arena_hard() that potentially caused more arenas to be
1272 - Add missing "opt.lg_tcache_max" mallctl implementation.
1273 - Use glibc allocator hooks to make mixed allocator usage less likely.
1274 - Fix build issues for --disable-tcache.
1275 - Don't mangle pthread_create() when --with-private-namespace is specified.
1280 - Fix huge_ralloc() race when using mremap(2). This is a serious bug that
1282 - Fix huge_ralloc() to maintain chunk statistics.
1283 - Fix malloc_stats_print(..., "a") output.
1288 - Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as
1289 well as for --disable-tls builds in earlier releases.
1290 - Do not assume a 4 KiB page size in test/rallocm.c.
1297 - Fix a prof-related race condition. This bug could cause memory corruption,
1298 but only occurred in non-default configurations (prof_accum:false).
1299 - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
1301 - Fix a prof-related bug in realloc() (only triggered by OOM errors).
1302 - Fix prof-related bugs in allocm() and rallocm().
1303 - Fix prof_tdata_cleanup() for --disable-tls builds.
1304 - Fix a relative include path, to fix objdir builds.
1309 - Fix a build error for --disable-tcache.
1310 - Fix assertions in arena_purge() (for real this time).
1311 - Add the --with-private-namespace option. This is a workaround for symbol
1317 - Implement atomic operations for x86/x64. This fixes compilation failures
1319 - Fix an assertion in arena_purge().
1327 - Add the "stats.cactive" mallctl.
1328 - Update pprof (from google-perftools 1.7).
1329 - Improve backtracing-related configuration logic, and add the
1330 --disable-prof-libgcc option.
1333 - Change default symbol visibility from "internal", to "hidden", which
1334 decreases the overhead of library-internal function calls.
1335 - Fix symbol visibility so that it is also set on OS X.
1336 - Fix a build dependency regression caused by the introduction of the .pic.o
1338 - Add missing checks for mutex initialization failures.
1339 - Don't use libgcc-based backtracing except on x64, where it is known to work.
1340 - Fix deadlocks on OS X that were due to memory allocation in
1342 - Heap profiling-specific fixes:
1353 - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
1354 for OS X in 2.1.2).
1355 - Fix a "thread.arena" mallctl bug.
1356 - Fix a thread cache stats merging bug.
1361 - Fix "thread.{de,}allocatedp" mallctl for OS X.
1362 - Add missing jemalloc.a to build system.
1367 - Fix aligned huge reallocation (affected allocm()).
1368 - Fix the ALLOCM_LG_ALIGN macro definition.
1369 - Fix a heap dumping deadlock.
1370 - Fix a "thread.arena" mallctl bug.
1378 - Use Linux's mremap(2) for huge object reallocation when possible.
1379 - Avoid locking in mallctl*() when possible.
1380 - Add the "thread.[de]allocatedp" mallctl's.
1381 - Convert the manual page source from roff to DocBook, and generate both roff
1385 - Fix a crash due to incorrect bootstrap ordering. This only impacted
1386 --enable-debug --enable-dss configurations.
1387 - Fix a minor statistics bug for mallctl("swap.avail", ...).
1392 - Fix a race condition in heap profiling that could cause undefined behavior
1394 - Add missing mutex unlocks for some OOM error paths in the heap profiling
1396 - Fix a compilation error for non-C99 builds.
1401 run-time configuration/introspection. Nonetheless, numerous performance
1405 - Implement the experimental {,r,s,d}allocm() API, which provides a superset
1410 - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
1411 more human-readable, and more flexible. For example:
1415 - Port to Apple OS X. Sponsored by Mozilla.
1416 - Make it possible for the application to control thread-->arena mappings via
1418 - Add compile-time support for all TLS-related functionality via pthreads TSD.
1419 This is mainly of interest for OS X, which does not support TLS, but has a
1421 - Override memalign() and valloc() if they are provided by the system.
1422 - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
1424 - Make cumulative heap profiling data optional, so that it is possible to
1426 - Add per thread allocation counters that can be accessed via the
1430 - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
1431 - Increase default backtrace depth from 4 to 128 for heap profiling.
1432 - Disable interval-based profile dumps by default.
1435 - Remove bad assertions in fork handler functions. These assertions could
1437 - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
1438 - Fix leak context reporting. This bug tended to cause the number of contexts
1441 - Fix a realloc() bug for large in-place growing reallocation. This bug could
1443 - Fix an allocation bug for small allocations that could be triggered if
1445 - Enhance the heap profiler to trigger samples based on usable size, rather
1447 - Fix a heap profiling bug due to sometimes losing track of requested object
1453 - Fix the libunwind-based implementation of stack backtracing (used for heap
1454 profiling). This bug could cause zero-length backtraces to be reported.
1455 - Add a missing mutex unlock in library initialization code. If multiple
1462 - Fix junk filling of large objects, which could cause memory corruption.
1463 - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
1470 - Fix compilation when --enable-fill is specified.
1471 - Fix threads-related profiling bugs that affected accuracy and caused memory
1473 - Fix dirty page purging race conditions that could cause crashes.
1474 - Fix crash in tcache flushing code during thread destruction.
1478 This release focuses on speed and run-time introspection. Numerous
1483 - Implement autoconf-based configuration system.
1484 - Add mallctl*(), for the purposes of introspection and run-time
1486 - Make it possible for the application to manually flush a thread's cache, via
1488 - Base maximum dirty page count on proportion of active memory.
1489 - Compute various additional run-time statistics, including per size class
1491 - Expose malloc_stats_print(), which can be called repeatedly by the
1493 - Simplify the malloc_message() signature to only take one string argument,
1496 - Add support for allocation backed by one or more swap files, and allow the
1497 application to disable over-commit if swap files are in use.
1498 - Implement allocation profiling and leak checking.
1501 - Remove the dynamic arena rebalancing code, since thread-specific caching
1505 - Modify chunk allocation to work when address space layout randomization
1507 - Fix thread cleanup bugs related to TLS destruction.
1508 - Handle 0-size allocation requests in posix_memalign().
1509 - Fix a chunk leak. The leaked chunks were never touched, so this impacted
1514 These snapshot releases are the simple result of incorporating Linux-specific
1517 --------------------------------------------------------------------------------