bump version to 2.11rc

This commit is contained in:
Aliaksey Kandratsenka 2023-07-31 20:04:39 -04:00
parent 909fa3e649
commit dc25c1fd4c
5 changed files with 118 additions and 15 deletions

View File

@ -5,14 +5,14 @@ cmake_minimum_required(VERSION 3.12)
# Based on configure.ac
project(gperftools VERSION 2.10.0 LANGUAGES C CXX
project(gperftools VERSION 2.10.80 LANGUAGES C CXX
DESCRIPTION "Performance tools for C++"
HOMEPAGE_URL https://github.com/gperftools/gperftools)
# Update this value for every release!
set(TCMALLOC_SO_VERSION 9.10.5)
set(PROFILER_SO_VERSION 5.5.5)
set(TCMALLOC_AND_PROFILER_SO_VERSION 10.5.6)
set(TCMALLOC_SO_VERSION 9.11.5)
set(PROFILER_SO_VERSION 5.6.5)
set(TCMALLOC_AND_PROFILER_SO_VERSION 10.6.6)
# The user can choose not to compile in the heap-profiler, the
# heap-checker, or the cpu-profiler. There's also the possibility

106
NEWS
View File

@ -1,3 +1,109 @@
== 31 July 2023
gperftools 2.11rc is out!
Most notable change is that Linux/aarch64 and Linux/riscv are now
fully supported. That is, all unit tests pass on those architectures
(previously the heap leak checker was broken).
Also notable is that heap leak checker support is officially
deprecated as of this release. All bug fixes from now are on a best
effort basis. For clarity we also declare that it is only expected to
work (for some definition of work) on Linux/x86 (all kinds),
Linux/aarch64, Linux/arm, Linux/ppc (untested as of this writing) and
Linux/mips (untested as well). While some functionality worked in the
past on BSDs, it was never fully functional; and will never be. We
strongly recommend everyone to switch to asan and friends.
For major internal changes it is also worth mentioning that we now
fully switched to C++-11 std::atomic. All custom OS- and arch-specific
atomic bits have been removed at last.
Another notable change is that mmap and sbrk hooks facility is now
no-op. We keep API and ABI for formal compatibility, but the calls to
add mmap/sbrk hooks do nothing and return an error (whenever possible
as part of API). There seem to be no users of it anyways, and mmap
replacement API that is part of that facility really screwed up 64-bit
offsets on (some/most) 32-bit systems. Internally for heap profiler
and heap checker we have a new, but non-public API (see mmap_hook.h).
Most tests now pass on NetBSD x86-64 (I tested on version 9.2). And
only one that fails is new stacktrace test for stacktraces from signal
handler (so there could be some imperfections for cpu profiles).
We don't warn people away from the libgcc stacktrace capturing method
anymore. In fact users on most recent glibc-s are advised to use it
(pass --enable-libgcc-unwinder-by-default). This is thanks to the
dl_find_object API offered by glibc which allows this implementation
to be fully async-signal-safe. Modern Linux distros should from now on
build their gperftools package with this enabled (other than those
built on top of musl).
generic_fp and generic_fp_unsafe stacktrace capturing methods have
been expanded for more architectures and even some basic non-Linux
support. We have completely removed old x86-specific frame pointer
stacktrace implementation in favor of those 2. _unsafe one should be
roughly equivalent to the old x86 method. And 'safe' one is
recommended as a new default for those who want FP-based
stacktracing. Safe implementation robustly checks memory before
accessing it, preventing unlikely, but not impossible crashes when
frame pointers are bogus.
On platforms that support it, we now build gperftools with
"-fno-omit-frame-pointer -momit-leaf-frame-pointer". This makes
gperftools mostly frame-pointer-ful, but without performance hit in
places that matter (this is how Google builds their binaries
BTW). That should cover gcc (at least) on x86, aarch64 and
riscv. Intention for this change is to make distro-shipped
libtcmalloc.so compatible with frame-pointer stacktrace capturing (for
those who still do heap profiling, for example). Of course, passing
--enable-frame-pointers still gives you full frame pointers (i.e. even
for leaf functions).
There is now support for detecting actual page size at
runtime. tcmalloc will now allocate memory in units of this page
size. It particularly helps on arms with 64k pages to return memory
back to the kernel. But it is somewhat controversial, because it
effectively bumps tcmalloc logical page size on those machines
potentially increasing fragmentation. In any case, there is now a new
environment variable TCMALLOC_OVERRIDE_PAGESIZE allowing people to
override this check. I.e. to either reduce effective page size down to
tcmalloc's logical page size or to increase it.
MallocExtension::MarkThreadTemporarilyIdle has been changed to be
identical to MarkThreadIdle. MarkThreadTemporarilyIdle is believed to
be unused, anyways. See issue #880 for details.
There are a whole bunch of smaller fixes. Many of those smaller fixes
had no associated ticket, but some had. People are advised to see here
for list of notable tickets closed in this release:
https://github.com/gperftools/gperftools/issues?q=label%3Afixed-in-2.11+
Some of those tickets are quite notable (fixes for rare deadlocks in
cpu profiler ProfilerStop or while capturing heap growth stacktraces
(aka growthz)).
Here is list of notable contributions:
* Chris Cambly has contributed initial support for AIX
* Ali Saidi has contributed SpinlockPause implementation for aarch64
* Henrik Reinstädtler has contributed fix for cpuprofiler on aarch64
OSX
* Gabriel Marin has backported Chromium's commit for always sanity
checking large frees
* User zhangyiru has contributed a fix to report the number of leaked
bytes as size_t instead of (usually 32-bit) int.
* Sergey Fedorov has contributed some fix for building on older
ppc-based OSX-es
* User tigeran has removed unused using declaration
Huge thanks to all contributors.
== 30 May 2022 ==
gperftools 2.10 is out!

View File

@ -4,12 +4,12 @@
# make sure we're interpreted by some minimal autoconf
AC_PREREQ([2.69])
AC_INIT([gperftools],[2.10],[gperftools@googlegroups.com])
AC_INIT([gperftools],[2.10.80],[gperftools@googlegroups.com])
# Update this value for every release! (A:B:C will map to foo.so.(A-C).C.B)
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
TCMALLOC_SO_VERSION=9:10:5
PROFILER_SO_VERSION=5:5:5
TCMALLOC_AND_PROFILER_SO_VERSION=10:5:6
TCMALLOC_SO_VERSION=9:11:5
PROFILER_SO_VERSION=5:6:5
TCMALLOC_AND_PROFILER_SO_VERSION=10:6:6
AC_SUBST(TCMALLOC_SO_VERSION)
AC_SUBST(PROFILER_SO_VERSION)

View File

@ -212,7 +212,7 @@
#define PACKAGE_NAME "gperftools"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "gperftools 2.10"
#define PACKAGE_STRING "gperftools 2.10.80"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gperftools"
@ -221,7 +221,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "2.10"
#define PACKAGE_VERSION "2.10.80"
/* How to access the PC from a struct ucontext */
/* #undef PC_FROM_UCONTEXT */
@ -249,9 +249,6 @@
/* Define internal page size for tcmalloc as number of left bitshift */
/* #undef TCMALLOC_PAGE_SIZE_SHIFT */
/* Version number of package */
#define VERSION "2.9.1"
/* C99 says: define this to get the PRI... macros from stdint.h */
#ifndef __STDC_FORMAT_MACROS
# define __STDC_FORMAT_MACROS 1

View File

@ -44,8 +44,8 @@
/* Define the version number so folks can check against it */
#define TC_VERSION_MAJOR 2
#define TC_VERSION_MINOR 10
#define TC_VERSION_PATCH ""
#define TC_VERSION_STRING "gperftools 2.10"
#define TC_VERSION_PATCH ".80"
#define TC_VERSION_STRING "gperftools 2.10.80"
#ifndef PERFTOOLS_NOTHROW