summaryrefslogtreecommitdiff
path: root/src/third_party/gperftools-2.7/NEWS
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2019-01-09 12:54:11 -0500
committerHenrik Edin <henrik.edin@mongodb.com>2019-01-25 13:37:26 -0500
commitcb7c8ceba4bf7d6007a250799bfa35c129dd3e58 (patch)
tree1a9285e804767841de1b664150c73abd36e2f45c /src/third_party/gperftools-2.7/NEWS
parent4f06ba60e0fef61a4136c4c77ae4e98627e16ffa (diff)
downloadmongo-cb7c8ceba4bf7d6007a250799bfa35c129dd3e58.tar.gz
SERVER-37996 Add stock gperftools 2.7 as an allocator option activated with --allocator=tcmalloc-experimental
Diffstat (limited to 'src/third_party/gperftools-2.7/NEWS')
-rw-r--r--src/third_party/gperftools-2.7/NEWS1003
1 files changed, 1003 insertions, 0 deletions
diff --git a/src/third_party/gperftools-2.7/NEWS b/src/third_party/gperftools-2.7/NEWS
new file mode 100644
index 00000000000..9938f0af77d
--- /dev/null
+++ b/src/third_party/gperftools-2.7/NEWS
@@ -0,0 +1,1003 @@
+== 29 Apr 2018 ==
+gperftools 2.7 is out!
+
+Few people contributed minor, but important fixes since rc.
+
+Changes:
+
+* bug in span stats printing introduced by new scalable page heap
+ change was fixed.
+
+* Christoph Müllner has contributed couple warnings fixes and initial
+ support for aarch64_ilp32 architecture.
+
+* Ben Dang contributed documentation fix for heap checker.
+
+* Fabrice Fontaine contributed fixed for linking benchmarks with
+ --disable-static.
+
+* Holy Wu has added sized deallocation unit tests.
+
+* Holy Wu has enabled support of sized deallocation (c++14) on recent
+ MSVC.
+
+* Holy Wu has fixed MSVC build in WIN32_OVERRIDE_ALLOCATORS mode. This
+ closed issue #716.
+
+* Holy Wu has contributed cleanup of config.h used on windows.
+
+* Mao Huang has contributed couple simple tcmalloc changes from
+ chromium code base. Making our tcmalloc forks a tiny bit closer.
+
+* issue #946 that caused compilation failures on some Linux clang
+ installations has been fixed. Much thanks to github user htuch for
+ helping to diagnose issue and proposing a fix.
+
+* Tulio Magno Quites Machado Filho has contributed build-time fix for
+ PPC (for problem introduced in one of commits since RC).
+
+== 18 Mar 2018 ==
+gperftools 2.7rc is out!
+
+Changes:
+
+* Most notable change in this release is that very large allocations
+ (>1MiB) are now handled be O(log n) implementation. This is
+ contributed by Todd Lipcon based on earlier work by Aliaksei
+ Kandratsenka and James Golick. Special thanks to Alexey Serbin for
+ contributing OSX fix for that commit.
+
+* detection of sized deallocation support is improved. Which should
+ fix another set of issues building on OSX. Much thanks to Alexey
+ Serbin for reporting the issue, suggesting a fix and verifying it.
+
+* Todd Lipcon made a change to extend page heaps freelists to 1 MiB
+ (up from 1MiB - 8KiB). This may help a little for some workloads.
+
+* Ishan Arora contributed typo fix to docs
+
+== 9 Dec 2017 ==
+gperftools 2.6.3 is out!
+
+Just two fixes were made in this release:
+
+* Stephan Zuercher has contributed a build fix for some recent XCode
+ versions. See issue #942 for more details.
+
+* assertion failure on some windows builds introduced by 2.6.2 was
+ fixed. Thanks to github user nkeemik for reporting it and testing
+ fix. See issue #944 for more details.
+
+== 30 Nov 2017 ==
+gperftools 2.6.2 is out!
+
+Most notable change is recently added support for C++17 over-aligned
+allocation operators contributed by Andrey Semashev. I've extended his
+implemention to have roughly same performance as malloc/new. This
+release also has native support for C11 aligned_alloc.
+
+Rest is mostly bug fixes:
+
+* Jianbo Yang has contributed a fix for potentially severe data race
+ introduced by malloc fast-path work in gperftools 2.6. This race
+ could cause occasional violation of total thread cache size
+ constraint. See issue #929 for more details.
+
+* Correct behavior in out-of-memory condition in fast-path cases was
+ restored. This was another bug introduced by fast-path optimization
+ in gperftools 2.6 which caused operator new to silently return NULL
+ instead of doing correct C++ OOM handling (calling new_handler and
+ throwing bad_alloc).
+
+* Khem Raj has contributed couple build fixes for newer glibcs (ucontext_t vs
+ struct ucontext and loff_t definition)
+
+* Piotr Sikora has contributed build fix for OSX (not building unwind
+ benchmark). This was issue #910 (thanks to Yuriy Solovyov for
+ reporting it).
+
+* Dorin Lazăr has contributed fix for compiler warning
+
+* issue #912 (occasional deadlocking calling getenv too early on
+ windows) was fixed. Thanks to github user shangcangriluo for
+ reporting it.
+
+* Couple earlier lsan-related commits still causing occasional issues
+ linking on OSX has been reverted. See issue #901.
+
+* Volodimir Krylov has contributed GetProgramInvocationName for FreeBSD
+
+* changsu lee has contributed couple minor correctness fixes (missing
+ va_end() and missing free() call in rarely executed Symbolize path)
+
+* Andrew C. Morrow has contributed some more page heap stats. See issue
+ #935.
+
+* some cases of built-time warnings from various gcc/clang versions
+ about throw() declarations have been fixes.
+
+== 9 July 2017 ==
+
+gperftools 2.6.1 is out! This is mostly bug-fixes release.
+
+* issue #901: build issue on OSX introduced in last-time commit in 2.6
+ was fixed (contributed by Francis Ricci)
+
+* tcmalloc_minimal now works on 32-bit ABI of mips64. This is issue
+ #845. Much thanks to Adhemerval Zanella and github user mtone.
+
+* Romain Geissler contributed build fix for -std=c++17. This is pull
+ request #897.
+
+* As part of fixing issue #904, tcmalloc atfork handler is now
+ installed early. This should fix slight chance of hitting deadlocks
+ at fork in some cases.
+
+== 4 July 2017 ==
+
+gperftools 2.6 is out!
+
+* Kim Gräsman contributed documentation update for HEAPPROFILESIGNAL
+ environment variable
+
+* KernelMaker contributed fix for population of min_object_size field
+ returned by MallocExtension::GetFreeListSizes
+
+* commit 8c3dc52fcfe0 "issue-654: [pprof] handle split text segments"
+ was reverted. Some OSX users reported issues with this commit. Given
+ our pprof implementation is strongly deprecated it is best to drop
+ recently introduced features rather than breaking it badly.
+
+* Francis Ricci contributed improvement for interaction with leak
+ sanitizer.
+
+== 22 May 2017 ==
+
+gperftools 2.6rc4 is out!
+
+Dynamic sized delete is disabled by default again. There is no hope of
+it working with eager dynamic symbols resolution (-z now linker
+flag). More details in
+https://bugzilla.redhat.com/show_bug.cgi?id=1452813
+
+== 21 May 2017 ==
+
+gperftools 2.6rc3 is out!
+
+gperftools compilation on older systems (e.g. rhel 5) was fixed. This
+was originally reported in github issue #888.
+
+== 14 May 2017 ==
+
+gperftools 2.6rc2 is out!
+
+Just 2 small fixes on top of 2.6rc. Particularly, Rajalakshmi
+Srinivasaraghavan contributed build fix for ppc32.
+
+== 14 May 2017 ==
+
+gperftools 2.6rc is out!
+
+Highlights of this release are performance work on malloc fast-path
+and support for more modern visual studio runtimes, and deprecation of
+bundled pprof. Another significant performance-affecting changes are
+reverting central free list transfer batch size back to 32 and
+disabling of aggressive decommit mode by default.
+
+Note, while we still ship perl implementation of pprof, everyone is
+strongly advised to use golang reimplementation of pprof from
+https://github.com/google/pprof.
+
+Here are notable changes in more details (and see ChangeLog for full
+details):
+
+* a bunch of performance tweaks to tcmalloc fast-path were
+ merged. This speeds up critical path of tcmalloc by few tens of
+ %. Well tuned and allocation-heavy programs should see substantial
+ performance boost (should apply to all modern elf platforms). This
+ is based on Google-internal tcmalloc changes for fast-path (with
+ obvious exception of lacking per-cpu mode, of course). Original
+ changes were made by Aliaksei Kandratsenka. And Andrew Hunter,
+ Dmitry Vyukov and Sanjay Ghemawat contributed with reviews and
+ discussions.
+
+* Architectures with 48 bits address space (x86-64 and aarch64) now
+ use faster 2 level page map. This was ported from Google-internal
+ change by Sanjay Ghemawat.
+
+* Default value of TCMALLOC_TRANSFER_NUM_OBJ was returned back to
+ 32. Larger values have been found to hurt certain programs (but help
+ some other benchmarks). Value can still be tweaked at run time via
+ environment variable.
+
+* tcmalloc aggressive decommit mode is now disabled by default
+ again. It was found to degrade performance of certain tensorflow
+ benchmarks. Users who prefer smaller heap over small performance win
+ can still set environment variable TCMALLOC_AGGRESSIVE_DECOMMIT=t.
+
+* runtime switchable sized delete support has be fixed and re-enabled
+ (on GNU/Linux). Programs that use C++ 14 or later that use sized
+ delete can again be sped up by setting environment variable
+ TCMALLOC_ENABLE_SIZED_DELETE=t. Support for enabling sized
+ deallication support at compile-time is still present, of course.
+
+* tcmalloc now explicitly avoids use of MADV_FREE on Linux, unless
+ TCMALLOC_USE_MADV_FREE is defined at compile time. This is because
+ performance impact of MADV_FREE is not well known. Original issue
+ #780 raised by Mathias Stearn.
+
+* issue #786 with occasional deadlocks in stack trace capturing via
+ libunwind was fixed. It was originally reported as Ceph issue:
+ http://tracker.ceph.com/issues/13522
+
+* ChangeLog is now automatically generated from git log. Old ChangeLog
+ is now ChangeLog.old.
+
+* tcmalloc now provides implementation of nallocx. Function was
+ originally introduced by jemalloc and can be used to return real
+ allocation size given allocation request size. This is ported from
+ Google-internal tcmalloc change contributed by Dmitry Vyukov.
+
+* issue #843 which made tcmalloc crash when used with erlang runtime
+ was fixed.
+
+* issue #839 which caused tcmalloc's aggressive decommit mode to
+ degrade performance in some corner cases was fixed.
+
+* Bryan Chan contributed support for 31-bit s390.
+
+* Brian Silverman contributed compilation fix for 32-bit ARMs
+
+* Issue #817 that was causing tcmalloc to fail on windows 10 and
+ later, as well as on recent msvc was fixed. We now patch _free_base
+ as well.
+
+* a bunch of minor documentaion/typos fixes by: Mike Gaffney
+ <mike@uberu.com>, iivlev <iivlev@productengine.com>, savefromgoogle
+ <savefromgoogle@users.noreply.github.com>, John McDole
+ <jtmcdole@gmail.com>, zmertens <zmertens@asu.edu>, Kirill Müller
+ <krlmlr@mailbox.org>, Eugene <n.eugene536@gmail.com>, Ola Olsson
+ <ola1olsson@gmail.com>, Mostyn Bramley-Moore <mostynb@opera.com>
+
+* Tulio Magno Quites Machado Filho has contributed removal of
+ deprecated glibc malloc hooks.
+
+* Issue #827 that caused intercepting malloc on osx 10.12 to fail was
+ fixed, by copying fix made by Mike Hommey to jemalloc. Much thanks
+ to Koichi Shiraishi and David Ribeiro Alves for reporting it and
+ testing fix.
+
+* Aman Gupta and Kenton Varda contributed minor fixes to pprof (but
+ note again that pprof is deprecated)
+
+* Ryan Macnak contributed compilation fix for aarch64
+
+* Francis Ricci has fixed unaligned memory access in debug allocator
+
+* TCMALLOC_PAGE_FENCE_NEVER_RECLAIM now actually works thanks to
+ contribution by Andrew Morrow.
+
+== 12 Mar 2016 ==
+
+gperftools 2.5 is out!
+
+Just single bugfix was merged after rc2. Which was fix for issue #777.
+
+== 5 Mar 2016 ==
+
+gperftools 2.5rc2 is out!
+
+New release contains just few commits on top of first release
+candidate. One of them is build fix for Visual Studio. Another
+significant change is that dynamic sized delete is now disabled by
+default. It turned out that IFUNC relocations are not supporting our
+advanced use case on all platforms and in all cases.
+
+== 21 Feb 2016 ==
+
+gperftools 2.5rc is out!
+
+Here are major changes since 2.4:
+
+* we've moved to github!
+
+* Bryan Chan has contributed s390x support
+
+* stacktrace capturing via libgcc's _Unwind_Backtrace was implemented
+ (for architectures with missing or broken libunwind).
+
+* "emergency malloc" was implemented. Which unbreaks recursive calls
+ to malloc/free from stacktrace capturing functions (such us glib'c
+ backtrace() or libunwind on arm). It is enabled by
+ --enable-emergency-malloc configure flag or by default on arm when
+ --enable-stacktrace-via-backtrace is given. It is another fix for a
+ number common issues people had on platforms with missing or broken
+ libunwind.
+
+* C++14 sized-deallocation is now supported (on gcc 5 and recent
+ clangs). It is off by default and can be enabled at configure time
+ via --enable-sized-delete. On GNU/Linux it can also be enabled at
+ run-time by either TCMALLOC_ENABLE_SIZED_DELETE environment variable
+ or by defining tcmalloc_sized_delete_enabled function which should
+ return 1 to enable it.
+
+* we've lowered default value of transfer batch size to 512. Previous
+ value (bumped up in 2.1) was too high and caused performance
+ regression for some users. 512 should still give us performance
+ boost for workloads that need higher transfer batch size while not
+ penalizing other workloads too much.
+
+* Brian Silverman's patch finally stopped arming profiling timer
+ unless profiling is started.
+
+* Andrew Morrow has contributed support for obtaining cache size of the
+ current thread and softer idling (for use in MongoDB).
+
+* we've implemented few minor performance improvements, particularly
+ on malloc fast-path.
+
+A number of smaller fixes were made. Many of them were contributed:
+
+* issue that caused spurious profiler_unittest.sh failures was fixed.
+
+* Jonathan Lambrechts contributed improved callgrind format support to
+ pprof.
+
+* Matt Cross contributed better support for debug symbols in separate
+ files to pprof.
+
+* Matt Cross contributed support for printing collapsed stack frame
+ from pprof aimed at producing flame graphs.
+
+* Angus Gratton has contributed documentation fix mentioning that on
+ windows only tcmalloc_minimal is supported.
+
+* Anton Samokhvalov has made tcmalloc use mi_force_{un,}lock on OSX
+ instead of pthread_atfork. Which apparently fixes forking
+ issues tcmalloc had on OSX.
+
+* Milton Chiang has contributed support for building 32-bit gperftools
+ on arm8.
+
+* Patrick LoPresti has contributed support for specifying alternative
+ profiling signal via CPUPROFILE_TIMER_SIGNAL environment variable.
+
+* Paolo Bonzini has contributed support configuring filename for
+ sending malloc tracing output via TCMALLOC_TRACE_FILE environment
+ variable.
+
+* user spotrh has enabled use of futex on arm.
+
+* user mitchblank has contributed better declaration for arg-less
+ profiler functions.
+
+* Tom Conerly contributed proper freeing of memory allocated in
+ HeapProfileTable::FillOrderedProfile on error paths.
+
+* user fdeweerdt has contributed curl arguments handling fix in pprof
+
+* Frederik Mellbin fixed tcmalloc's idea of mangled new and delete
+ symbols on windows x64
+
+* Dair Grant has contributed cacheline alignment for ThreadCache
+ objects
+
+* Fredrik Mellbin has contributed updated windows/config.h for Visual
+ Studio 2015 and other windows fixes.
+
+* we're not linking libpthread to libtcmalloc_minimal anymore. Instead
+ libtcmalloc_minimal links to pthread symbols weakly. As a result
+ single-threaded programs remain single-threaded when linking to or
+ preloading libtcmalloc_minimal.so.
+
+* Boris Sazonov has contributed mips compilation fix and printf misue
+ in pprof.
+
+* Adhemerval Zanella has contributed alignment fixes for statically
+ allocated variables.
+
+* Jens Rosenboom has contributed fixes for heap-profiler_unittest.sh
+
+* gshirishfree has contributed better description for GetStats method.
+
+* cyshi has contributed spinlock pause fix.
+
+* Chris Mayo has contributed --docdir argument support for configure.
+
+* Duncan Sands has contributed fix for function aliases.
+
+* Simon Que contributed better include for malloc_hook_c.h
+
+* user wmamrak contributed struct timespec fix for Visual Studio 2015.
+
+* user ssubotin contributed typo in PrintAvailability code.
+
+
+== 10 Jan 2015 ==
+
+gperftools 2.4 is out! The code is exactly same as 2.4rc.
+
+== 28 Dec 2014 ==
+
+gperftools 2.4rc is out!
+
+Here are changes since 2.3:
+
+* enabled aggressive decommit option by default. It was found to
+ significantly improve memory fragmentation with negligible impact on
+ performance. (Thanks to investigation work performed by Adhemerval
+ Zanella)
+
+* added ./configure flags for tcmalloc pagesize and tcmalloc
+ allocation alignment. Larger page sizes have been reported to
+ improve performance occasionally. (Patch by Raphael Moreira Zinsly)
+
+* sped-up hot-path of malloc/free. By about 5% on static library and
+ about 10% on shared library. Mainly due to more efficient checking
+ of malloc hooks.
+
+* improved stacktrace capturing in cpu profiler (due to issue found by
+ Arun Sharma). As part of that issue pprof's handling of cpu profiles
+ was also improved.
+
+== 7 Dec 2014 ==
+
+gperftools 2.3 is out!
+
+Here are changes since 2.3rc:
+
+* (issue 658) correctly close socketpair fds on failure (patch by glider)
+
+* libunwind integration can be disabled at configure time (patch by
+ Raphael Moreira Zinsly)
+
+* libunwind integration is disabled by default for ppc64 (patch by
+ Raphael Moreira Zinsly)
+
+* libunwind integration is force-disabled for OSX. It was not used by
+ default anyways. Fixes compilation issue I saw.
+
+== 2 Nov 2014 ==
+
+gperftools 2.3rc is out!
+
+Most small improvements in this release were made to pprof tool.
+
+New experimental Linux-only (for now) cpu profiling mode is a notable
+big improvement.
+
+Here are notable changes since 2.2.1:
+
+* (issue-631) fixed debugallocation miscompilation on mmap-less
+ platforms (courtesy of user iamxujian)
+
+* (issue-630) reference to wrong PROFILE (vs. correct CPUPROFILE)
+ environment variable was fixed (courtesy of WenSheng He)
+
+* pprof now has option to display stack traces in output for heap
+ checker (courtesy of Michael Pasieka)
+
+* (issue-636) pprof web command now works on mingw
+
+* (issue-635) pprof now handles library paths that contain spaces
+ (courtesy of user mich...@sebesbefut.com)
+
+* (issue-637) pprof now has an option to not strip template arguments
+ (patch by jiakai)
+
+* (issue-644) possible out-of-bounds access in GetenvBeforeMain was
+ fixed (thanks to user abyss.7)
+
+* (issue-641) pprof now has an option --show_addresses (thanks to user
+ yurivict). New option prints instruction address in addition to
+ function name in stack traces
+
+* (issue-646) pprof now works around some issues of addr2line
+ reportedly when DWARF v4 format is used (patch by Adam McNeeney)
+
+* (issue-645) heap profiler exit message now includes remaining memory
+ allocated info (patch by user yurivict)
+
+* pprof code that finds location of /proc/<pid>/maps in cpu profile
+ files is now fixed (patch by Ricardo M. Correia)
+
+* (issue-654) pprof now handles "split text segments" feature of
+ Chromium for Android. (patch by simonb)
+
+* (issue-655) potential deadlock on windows caused by early call to
+ getenv in malloc initialization code was fixed (bug reported and fix
+ proposed by user zndmitry)
+
+* incorrect detection of arm 6zk instruction set support
+ (-mcpu=arm1176jzf-s) was fixed. (Reported by pedronavf on old
+ issue-493)
+
+* new cpu profiling mode on Linux is now implemented. It sets up
+ separate profiling timers for separate threads. Which improves
+ accuracy of profiling on Linux a lot. It is off by default. And is
+ enabled if both librt.f is loaded and CPUPROFILE_PER_THREAD_TIMERS
+ environment variable is set. But note that all threads need to be
+ registered via ProfilerRegisterThread.
+
+== 21 Jun 2014 ==
+
+gperftools 2.2.1 is out!
+
+Here's list of fixes:
+
+* issue-626 was closed. Which fixes initialization statically linked
+ tcmalloc.
+
+* issue 628 was closed. It adds missing header file into source
+ tarball. This fixes for compilation on PPC Linux.
+
+== 3 May 2014 ==
+
+gperftools 2.2 is out!
+
+Here are notable changes since 2.2rc:
+
+* issue 620 (crash on windows when c runtime dll is reloaded) was
+ fixed
+
+== 19 Apr 2014 ==
+
+gperftools 2.2rc is out!
+
+Here are notable changes since 2.1:
+
+* a number of fixes for a number compilers and platforms. Notably
+ Visual Studio 2013, recent mingw with c++ threads and some OSX
+ fixes.
+
+* we now have mips and mips64 support! (courtesy of Jovan Zelincevic,
+ Jean Lee, user xiaoyur347 and others)
+
+* we now have aarch64 (aka arm64) support! (contributed by Riku
+ Voipio)
+
+* there's now support for ppc64-le (by Raphael Moreira Zinsly and
+ Adhemerval Zanella)
+
+* there's now some support of uclibc (contributed by user xiaoyur347)
+
+* google/ headers will now give you deprecation warning. They are
+ deprecated since 2.0
+
+* there's now new api: tc_malloc_skip_new_handler (ported from chromium
+ fork)
+
+* issue-557: added support for dumping heap profile via signal (by
+ Jean Lee)
+
+* issue-567: Petr Hosek contributed SysAllocator support for windows
+
+* Joonsoo Kim contributed several speedups for central freelist code
+
+* TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES environment variable now works
+
+* configure scripts are now using AM_MAINTAINER_MODE. It'll only
+ affect folks who modify source from .tar.gz and want automake to
+ automatically rebuild Makefile-s. See automake documentation for
+ that.
+
+* issue-586: detect main executable even if PIE is active (based on
+ patch by user themastermind1). Notably, it fixes profiler use with
+ ruby.
+
+* there is now support for switching backtrace capturing method at
+ runtime (via TCMALLOC_STACKTRACE_METHOD and
+ TCMALLOC_STACKTRACE_METHOD_VERBOSE environment variables)
+
+* there is new backtrace capturing method using -finstrument-functions
+ prologues contributed by user xiaoyur347
+
+* few cases of crashes/deadlocks in profiler were addressed. See
+ (famous) issue-66, issue-547 and issue-579.
+
+* issue-464 (memory corruption in debugalloc's realloc after
+ memallign) is now fixed
+
+* tcmalloc is now able to release memory back to OS on windows
+ (issue-489). The code was ported from chromium fork (by a number of
+ authors).
+
+* Together with issue-489 we ported chromium's "aggressive decommit"
+ mode. In this mode (settable via malloc extension and via
+ environment variable TCMALLOC_AGGRESSIVE_DECOMMIT), free pages are
+ returned back to OS immediately.
+
+* MallocExtension::instance() is now faster (based on patch by
+ Adhemerval Zanella)
+
+* issue-610 (hangs on windows in multibyte locales) is now fixed
+
+The following people helped with ideas or patches (based on git log,
+some contributions purely in bugtracker might be missing): Andrew
+C. Morrow, yurivict, Wang YanQing, Thomas Klausner,
+davide.italiano@10gen.com, Dai MIKURUBE, Joon-Sung Um, Jovan
+Zelincevic, Jean Lee, Petr Hosek, Ben Avison, drussel, Joonsoo Kim,
+Hannes Weisbach, xiaoyur347, Riku Voipio, Adhemerval Zanella, Raphael
+Moreira Zinsly
+
+== 30 July 2013 ==
+
+gperftools 2.1 is out!
+
+Just few fixes where merged after rc. Most notably:
+
+* Some fixes for debug allocation on POWER/Linux
+
+== 20 July 2013 ==
+
+gperftools 2.1rc is out!
+
+As a result of more than a year of contributions we're ready for 2.1
+release.
+
+But before making that step I'd like to create RC and make sure people
+have chance to test it.
+
+Here are notable changes since 2.0:
+
+* fixes for building on newer platforms. Notably, there's now initial
+ support for x32 ABI (--enable-minimal only at this time))
+
+* new getNumericProperty stats for cache sizes
+
+* added HEAP_PROFILER_TIME_INTERVAL variable (see documentation)
+
+* added environment variable to control heap size (TCMALLOC_HEAP_LIMIT_MB)
+
+* added environment variable to disable release of memory back to OS
+ (TCMALLOC_DISABLE_MEMORY_RELEASE)
+
+* cpu profiler can now be switched on and off by sending it a signal
+ (specified in CPUPROFILESIGNAL)
+
+* (issue 491) fixed race-ful spinlock wake-ups
+
+* (issue 496) added some support for fork-ing of process that is using
+ tcmalloc
+
+* (issue 368) improved memory fragmentation when large chunks of
+ memory are allocated/freed
+
+== 03 February 2012 ==
+
+I've just released gperftools 2.0
+
+The `google-perftools` project has been renamed to `gperftools`. I
+(csilvers) am stepping down as maintainer, to be replaced by
+David Chappelle. Welcome to the team, David! David has been an
+an active contributor to perftools in the past -- in fact, he's the
+only person other than me that already has commit status. I am
+pleased to have him take over as maintainer.
+
+I have both renamed the project (the Google Code site renamed a few
+weeks ago), and bumped the major version number up to 2, to reflect
+the new community ownership of the project. Almost all the
+[http://gperftools.googlecode.com/svn/tags/gperftools-2.0/ChangeLog changes]
+are related to the renaming.
+
+The main functional change from google-perftools 1.10 is that
+I've renamed the `google/` include-directory to be `gperftools/`
+instead. New code should `#include <gperftools/tcmalloc.h>`/etc.
+(Most users of perftools don't need any perftools-specific includes at
+all, so this is mostly directed to "power users.") I've kept the old
+names around as forwarding headers to the new, so `#include
+<google/tcmalloc.h>` will continue to work.
+
+(The other functional change which I snuck in is getting rid of some
+bash-isms in one of the unittest driver scripts, so it could run on
+Solaris.)
+
+Note that some internal names still contain the text `google`, such as
+the `google_malloc` internal linker section. I think that's a
+trickier transition, and can happen in a future release (if at all).
+
+
+=== 31 January 2012 ===
+
+I've just released perftools 1.10
+
+There is an API-incompatible change: several of the methods in the
+`MallocExtension` class have changed from taking a `void*` to taking a
+`const void*`. You should not be affected by this API change
+unless you've written your own custom malloc extension that derives
+from `MallocExtension`, but since it is a user-visible change, I have
+upped the `.so` version number for this release.
+
+This release focuses on improvements to linux-syscall-support.h,
+including ARM and PPC fixups and general cleanups. I hope this will
+magically fix an array of bugs people have been seeing.
+
+There is also exciting news on the porting front, with support for
+patching win64 assembly contributed by IBM Canada! This is an
+important step -- perhaps the most difficult -- to getting perftools
+to work on 64-bit windows using the patching technique (it doesn't
+affect the libc-modification technique). `premable_patcher_test` has
+been added to help test these changes; it is meant to compile under
+x86_64, and won't work under win32.
+
+For the full list of changes, including improved `HEAP_PROFILE_MMAP`
+support, see the
+[http://gperftools.googlecode.com/svn/tags/google-perftools-1.10/ChangeLog ChangeLog].
+
+
+=== 24 January 2011 ===
+
+The `google-perftools` Google Code page has been renamed to
+`gperftools`, in preparation for the project being renamed to
+`gperftools`. In the coming weeks, I'll be stepping down as
+maintainer for the perftools project, and as part of that Google is
+relinquishing ownership of the project; it will now be entirely
+community run. The name change reflects that shift. The 'g' in
+'gperftools' stands for 'great'. :-)
+
+=== 23 December 2011 ===
+
+I've just released perftools 1.9.1
+
+I missed including a file in the tarball, that is needed to compile on
+ARM. If you are not compiling on ARM, or have successfully compiled
+perftools 1.9, there is no need to upgrade.
+
+
+=== 22 December 2011 ===
+
+I've just released perftools 1.9
+
+This change has a slew of improvements, from better ARM and freebsd
+support, to improved performance by moving some code outside of locks,
+to better pprof reporting of code with overloaded functions.
+
+The full list of changes is in the
+[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.9/ChangeLog ChangeLog].
+
+
+=== 26 August 2011 ===
+
+I've just released perftools 1.8.3
+
+The star-crossed 1.8 series continues; in 1.8.1, I had accidentally
+removed some code that was needed for FreeBSD. (Without this code
+many apps would crash at startup.) This release re-adds that code.
+If you are not on FreeBSD, or are using FreeBSD with perftools 1.8 or
+earlier, there is no need to upgrade.
+
+=== 11 August 2011 ===
+
+I've just released perftools 1.8.2
+
+I was incorrectly calculating the patch-level in the configuration
+step, meaning the TC_VERSION_PATCH #define in tcmalloc.h was wrong.
+Since the testing framework checks for this, it was failing. Now it
+should work again. This time, I was careful to re-run my tests after
+upping the version number. :-)
+
+If you don't care about the TC_VERSION_PATCH #define, there's no
+reason to upgrae.
+
+=== 26 July 2011 ===
+
+I've just released perftools 1.8.1
+
+I was missing an #include that caused the build to break under some
+compilers, especially newer gcc's, that wanted it. This only affects
+people who build from source, so only the .tar.gz file is updated from
+perftools 1.8. If you didn't have any problems compiling perftools
+1.8, there's no reason to upgrade.
+
+=== 15 July 2011 ===
+
+I've just released perftools 1.8
+
+Of the many changes in this release, a good number pertain to porting.
+I've revamped OS X support to use the malloc-zone framework; it should
+now Just Work to link in tcmalloc, without needing
+`DYLD_FORCE_FLAT_NAMESPACE` or the like. (This is a pretty major
+change, so please feel free to report feedback at
+google-perftools@googlegroups.com.) 64-bit Windows support is also
+improved, as is ARM support, and the hooks are in place to improve
+FreeBSD support as well.
+
+On the other hand, I'm seeing hanging tests on Cygwin. I see the same
+hanging even with (the old) perftools 1.7, so I'm guessing this is
+either a problem specific to my Cygwin installation, or nobody is
+trying to use perftools under Cygwin. If you can reproduce the
+problem, and even better have a solution, you can report it at
+google-perftools@googlegroups.com.
+
+Internal changes include several performance and space-saving tweaks.
+One is user-visible (but in "stealth mode", and otherwise
+undocumented): you can compile with `-DTCMALLOC_SMALL_BUT_SLOW`. In
+this mode, tcmalloc will use less memory overhead, at the cost of
+running (likely not noticeably) slower.
+
+There are many other changes as well, too numerous to recount here,
+but present in the
+[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.8/ChangeLog ChangeLog].
+
+
+=== 7 February 2011 ===
+
+Thanks to endlessr..., who
+[http://code.google.com/p/google-perftools/issues/detail?id=307 identified]
+why some tests were failing under MSVC 10 in release mode. It does not look
+like these failures point toward any problem with tcmalloc itself; rather, the
+problem is with the test, which made some assumptions that broke under the
+some aggressive optimizations used in MSVC 10. I'll fix the test, but in
+the meantime, feel free to use perftools even when compiled under MSVC
+10.
+
+=== 4 February 2011 ===
+
+I've just released perftools 1.7
+
+I apologize for the delay since the last release; so many great new
+patches and bugfixes kept coming in (and are still coming in; I also
+apologize to those folks who have to slip until the next release). I
+picked this arbitrary time to make a cut.
+
+Among the many new features in this release is a multi-megabyte
+reduction in the amount of tcmalloc overhead uder x86_64, improved
+performance in the case of contention, and many many bugfixes,
+especially architecture-specific bugfixes. See the
+[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.7/ChangeLog ChangeLog]
+for full details.
+
+One architecture-specific change of note is added comments in the
+[http://google-perftools.googlecode.com/svn/tags/perftools-1.7/README README]
+for using tcmalloc under OS X. I'm trying to get my head around the
+exact behavior of the OS X linker, and hope to have more improvements
+for the next release, but I hope these notes help folks who have been
+having trouble with tcmalloc on OS X.
+
+*Windows users*: I've heard reports that some unittests fail on
+Windows when compiled with MSVC 10 in Release mode. All tests pass in
+Debug mode. I've not heard of any problems with earlier versions of
+MSVC. I don't know if this is a problem with the runtime patching (so
+the static patching discussed in README_windows.txt will still work),
+a problem with perftools more generally, or a bug in MSVC 10. Anyone
+with windows expertise that can debug this, I'd be glad to hear from!
+
+
+=== 5 August 2010 ===
+
+I've just released perftools 1.6
+
+This version also has a large number of minor changes, including
+support for `malloc_usable_size()` as a glibc-compatible alias to
+`malloc_size()`, the addition of SVG-based output to `pprof`, and
+experimental support for tcmalloc large pages, which may speed up
+tcmalloc at the cost of greater memory use. To use tcmalloc large
+pages, see the
+[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL
+INSTALL file]; for all changes, see the
+[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog
+ChangeLog].
+
+OS X NOTE: improvements in the profiler unittest have turned up an OS
+X issue: in multithreaded programs, it seems that OS X often delivers
+the profiling signal (from sigitimer()) to the main thread, even when
+it's sleeping, rather than spawned threads that are doing actual work.
+If anyone knows details of how OS X handles SIGPROF events (from
+setitimer) in threaded programs, and has insight into this problem,
+please send mail to google-perftools@googlegroups.com.
+
+To see if you're affected by this, look for profiling time that pprof
+attributes to `___semwait_signal`. This is work being done in other
+threads, that is being attributed to sleeping-time in the main thread.
+
+
+=== 20 January 2010 ===
+
+I've just released perftools 1.5
+
+This version has a slew of changes, leading to somewhat faster
+performance and improvements in portability. It adds features like
+`ITIMER_REAL` support to the cpu profiler, and `tc_set_new_mode` to
+mimic the windows function of the same name. Full details are in the
+[http://google-perftools.googlecode.com/svn/tags/perftools-1.5/ChangeLog
+ChangeLog].
+
+
+=== 11 September 2009 ===
+
+I've just released perftools 1.4
+
+The major change this release is the addition of a debugging malloc
+library! If you link with `libtcmalloc_debug.so` instead of
+`libtcmalloc.so` (and likewise for the `minimal` variants) you'll get
+a debugging malloc, which will catch double-frees, writes to freed
+data, `free`/`delete` and `delete`/`delete[]` mismatches, and even
+(optionally) writes past the end of an allocated block.
+
+We plan to do more with this library in the future, including
+supporting it on Windows, and adding the ability to use the debugging
+library with your default malloc in addition to using it with
+tcmalloc.
+
+There are also the usual complement of bug fixes, documented in the
+ChangeLog, and a few minor user-tunable knobs added to components like
+the system allocator.
+
+
+=== 9 June 2009 ===
+
+I've just released perftools 1.3
+
+Like 1.2, this has a variety of bug fixes, especially related to the
+Windows build. One of my bugfixes is to undo the weird `ld -r` fix to
+`.a` files that I introduced in perftools 1.2: it caused problems on
+too many platforms. I've reverted back to normal `.a` files. To work
+around the original problem that prompted the `ld -r` fix, I now
+provide `libtcmalloc_and_profiler.a`, for folks who want to link in
+both.
+
+The most interesting API change is that I now not only override
+`malloc`/`free`/etc, I also expose them via a unique set of symbols:
+`tc_malloc`/`tc_free`/etc. This enables clients to write their own
+memory wrappers that use tcmalloc:
+{{{
+ void* malloc(size_t size) { void* r = tc_malloc(size); Log(r); return r; }
+}}}
+
+
+=== 17 April 2009 ===
+
+I've just released perftools 1.2.
+
+This is mostly a bugfix release. The major change is internal: I have
+a new system for creating packages, which allows me to create 64-bit
+packages. (I still don't do that for perftools, because there is
+still no great 64-bit solution, with libunwind still giving problems
+and --disable-frame-pointers not practical in every environment.)
+
+Another interesting change involves Windows: a
+[http://code.google.com/p/google-perftools/issues/detail?id=126 new
+patch] allows users to choose to override malloc/free/etc on Windows
+rather than patching, as is done now. This can be used to create
+custom CRTs.
+
+My fix for this
+[http://groups.google.com/group/google-perftools/browse_thread/thread/1ff9b50043090d9d/a59210c4206f2060?lnk=gst&q=dynamic#a59210c4206f2060
+bug involving static linking] ended up being to make libtcmalloc.a and
+libperftools.a a big .o file, rather than a true `ar` archive. This
+should not yield any problems in practice -- in fact, it should be
+better, since the heap profiler, leak checker, and cpu profiler will
+now all work even with the static libraries -- but if you find it
+does, please file a bug report.
+
+Finally, the profile_handler_unittest provided in the perftools
+testsuite (new in this release) is failing on FreeBSD. The end-to-end
+test that uses the profile-handler is passing, so I suspect the
+problem may be with the test, not the perftools code itself. However,
+I do not know enough about how itimers work on FreeBSD to be able to
+debug it. If you can figure it out, please let me know!
+
+=== 11 March 2009 ===
+
+I've just released perftools 1.1!
+
+It has many changes since perftools 1.0 including
+
+ * Faster performance due to dynamically sized thread caches
+ * Better heap-sampling for more realistic profiles
+ * Improved support on Windows (MSVC 7.1 and cygwin)
+ * Better stacktraces in linux (using VDSO)
+ * Many bug fixes and feature requests
+
+Note: if you use the CPU-profiler with applications that fork without
+doing an exec right afterwards, please see the README. Recent testing
+has shown that profiles are unreliable in that case. The problem has
+existed since the first release of perftools. We expect to have a fix
+for perftools 1.2. For more details, see
+[http://code.google.com/p/google-perftools/issues/detail?id=105 issue 105].
+
+Everyone who uses perftools 1.0 is encouraged to upgrade to perftools
+1.1. If you see any problems with the new release, please file a bug
+report at http://code.google.com/p/google-perftools/issues/list.
+
+Enjoy!