15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)== 03 February 2012 ==
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released gperftools 2.0
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The `google-perftools` project has been renamed to `gperftools`.  I
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(csilvers) am stepping down as maintainer, to be replaced by
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)David Chappelle.  Welcome to the team, David!  David has been an
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)an active contributor to perftools in the past -- in fact, he's the
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)only person other than me that already has commit status.  I am
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pleased to have him take over as maintainer.
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I have both renamed the project (the Google Code site renamed a few
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weeks ago), and bumped the major version number up to 2, to reflect
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the new community ownership of the project.  Almost all the
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://gperftools.googlecode.com/svn/tags/gperftools-2.0/ChangeLog changes]
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)are related to the renaming.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The main functional change from google-perftools 1.10 is that
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've renamed the `google/` include-directory to be `gperftools/`
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)instead.  New code should `#include <gperftools/tcmalloc.h>`/etc.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(Most users of perftools don't need any perftools-specific includes at
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)all, so this is mostly directed to "power users.")  I've kept the old
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)names around as forwarding headers to the new, so `#include
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)<google/tcmalloc.h>` will continue to work.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(The other functional change which I snuck in is getting rid of some
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bash-isms in one of the unittest driver scripts, so it could run on
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Solaris.)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Note that some internal names still contain the text `google`, such as
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the `google_malloc` internal linker section.  I think that's a
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)trickier transition, and can happen in a future release (if at all).
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 31 January 2012 ===
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.10
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There is an API-incompatible change: several of the methods in the
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`MallocExtension` class have changed from taking a `void*` to taking a
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`const void*`.  You should not be affected by this API change
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)unless you've written your own custom malloc extension that derives
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from `MallocExtension`, but since it is a user-visible change, I have
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)upped the `.so` version number for this release.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This release focuses on improvements to linux-syscall-support.h,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)including ARM and PPC fixups and general cleanups.  I hope this will
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magically fix an array of bugs people have been seeing.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There is also exciting news on the porting front, with support for
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)patching win64 assembly contributed by IBM Canada!  This is an
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)important step -- perhaps the most difficult -- to getting perftools
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to work on 64-bit windows using the patching technique (it doesn't
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)affect the libc-modification technique).  `premable_patcher_test` has
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)been added to help test these changes; it is meant to compile under
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)x86_64, and won't work under win32.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)For the full list of changes, including improved `HEAP_PROFILE_MMAP`
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)support, see the
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://gperftools.googlecode.com/svn/tags/google-perftools-1.10/ChangeLog ChangeLog].
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 24 January 2011 ===
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The `google-perftools` Google Code page has been renamed to
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`gperftools`, in preparation for the project being renamed to
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`gperftools`.  In the coming weeks, I'll be stepping down as
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maintainer for the perftools project, and as part of that Google is
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relinquishing ownership of the project; it will now be entirely
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)community run.  The name change reflects that shift.  The 'g' in
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'gperftools' stands for 'great'. :-)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 23 December 2011 ===
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.9.1
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I missed including a file in the tarball, that is needed to compile on
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ARM.  If you are not compiling on ARM, or have successfully compiled
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)perftools 1.9, there is no need to upgrade.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 22 December 2011 ===
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.9
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This change has a slew of improvements, from better ARM and freebsd
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)support, to improved performance by moving some code outside of locks,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to better pprof reporting of code with overloaded functions.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The full list of changes is in the
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.9/ChangeLog ChangeLog].
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 26 August 2011 ===
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8.3
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The star-crossed 1.8 series continues; in 1.8.1, I had accidentally
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)removed some code that was needed for FreeBSD.  (Without this code
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)many apps would crash at startup.)  This release re-adds that code.
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If you are not on FreeBSD, or are using FreeBSD with perftools 1.8 or
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)earlier, there is no need to upgrade.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 11 August 2011 ===
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8.2
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I was incorrectly calculating the patch-level in the configuration
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)step, meaning the TC_VERSION_PATCH #define in tcmalloc.h was wrong.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Since the testing framework checks for this, it was failing.  Now it
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)should work again.  This time, I was careful to re-run my tests after
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)upping the version number. :-)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If you don't care about the TC_VERSION_PATCH #define, there's no
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)reason to upgrae.
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 26 July 2011 ===
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8.1
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I was missing an #include that caused the build to break under some
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compilers, especially newer gcc's, that wanted it.  This only affects
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)people who build from source, so only the .tar.gz file is updated from
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)perftools 1.8.  If you didn't have any problems compiling perftools
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)1.8, there's no reason to upgrade.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 15 July 2011 ===
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Of the many changes in this release, a good number pertain to porting.
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've revamped OS X support to use the malloc-zone framework; it should
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)now Just Work to link in tcmalloc, without needing
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`DYLD_FORCE_FLAT_NAMESPACE` or the like.  (This is a pretty major
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)change, so please feel free to report feedback at
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)google-perftools@googlegroups.com.)  64-bit Windows support is also
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)improved, as is ARM support, and the hooks are in place to improve
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FreeBSD support as well.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)On the other hand, I'm seeing hanging tests on Cygwin.  I see the same
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hanging even with (the old) perftools 1.7, so I'm guessing this is
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)either a problem specific to my Cygwin installation, or nobody is
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)trying to use perftools under Cygwin.  If you can reproduce the
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)problem, and even better have a solution, you can report it at
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)google-perftools@googlegroups.com.
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Internal changes include several performance and space-saving tweaks.
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)One is user-visible (but in "stealth mode", and otherwise
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)undocumented): you can compile with `-DTCMALLOC_SMALL_BUT_SLOW`.  In
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)this mode, tcmalloc will use less memory overhead, at the cost of
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)running (likely not noticeably) slower.
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There are many other changes as well, too numerous to recount here,
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but present in the
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.8/ChangeLog ChangeLog].
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 7 February 2011 ===
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Thanks to endlessr..., who
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://code.google.com/p/google-perftools/issues/detail?id=307 identified]
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)why some tests were failing under MSVC 10 in release mode.  It does not look
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)like these failures point toward any problem with tcmalloc itself; rather, the
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)problem is with the test, which made some assumptions that broke under the
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)some aggressive optimizations used in MSVC 10.  I'll fix the test, but in
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the meantime, feel free to use perftools even when compiled under MSVC
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)10.
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 4 February 2011 ===
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.7
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I apologize for the delay since the last release; so many great new
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)patches and bugfixes kept coming in (and are still coming in; I also
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)apologize to those folks who have to slip until the next release).  I
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)picked this arbitrary time to make a cut.
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Among the many new features in this release is a multi-megabyte
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)reduction in the amount of tcmalloc overhead uder x86_64, improved
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)performance in the case of contention, and many many bugfixes,
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)especially architecture-specific bugfixes.  See the
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.7/ChangeLog ChangeLog]
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for full details.
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)One architecture-specific change of note is added comments in the
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.7/README README]
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for using tcmalloc under OS X.  I'm trying to get my head around the
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exact behavior of the OS X linker, and hope to have more improvements
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for the next release, but I hope these notes help folks who have been
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)having trouble with tcmalloc on OS X.
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*Windows users*: I've heard reports that some unittests fail on
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Windows when compiled with MSVC 10 in Release mode.  All tests pass in
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Debug mode.  I've not heard of any problems with earlier versions of
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MSVC.  I don't know if this is a problem with the runtime patching (so
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the static patching discussed in README_windows.txt will still work),
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a problem with perftools more generally, or a bug in MSVC 10.  Anyone
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)with windows expertise that can debug this, I'd be glad to hear from!
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 5 August 2010 ===
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.6
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This version also has a large number of minor changes, including
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)support for `malloc_usable_size()` as a glibc-compatible alias to
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`malloc_size()`, the addition of SVG-based output to `pprof`, and
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)experimental support for tcmalloc large pages, which may speed up
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)tcmalloc at the cost of greater memory use.  To use tcmalloc large
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pages, see the
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTALL file]; for all changes, see the
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChangeLog].
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OS X NOTE: improvements in the profiler unittest have turned up an OS
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)X issue: in multithreaded programs, it seems that OS X often delivers
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the profiling signal (from sigitimer()) to the main thread, even when
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)it's sleeping, rather than spawned threads that are doing actual work.
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If anyone knows details of how OS X handles SIGPROF events (from
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)setitimer) in threaded programs, and has insight into this problem,
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)please send mail to google-perftools@googlegroups.com.
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)To see if you're affected by this, look for profiling time that pprof
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)attributes to `___semwait_signal`.  This is work being done in other
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)threads, that is being attributed to sleeping-time in the main thread.
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 20 January 2010 ===
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.5
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This version has a slew of changes, leading to somewhat faster
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)performance and improvements in portability.  It adds features like
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`ITIMER_REAL` support to the cpu profiler, and `tc_set_new_mode` to
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mimic the windows function of the same name.  Full details are in the
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.5/ChangeLog
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChangeLog].
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 11 September 2009 ===
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.4
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The major change this release is the addition of a debugging malloc
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library!  If you link with `libtcmalloc_debug.so` instead of
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`libtcmalloc.so` (and likewise for the `minimal` variants) you'll get
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a debugging malloc, which will catch double-frees, writes to freed
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)data, `free`/`delete` and `delete`/`delete[]` mismatches, and even
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(optionally) writes past the end of an allocated block.
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)We plan to do more with this library in the future, including
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)supporting it on Windows, and adding the ability to use the debugging
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library with your default malloc in addition to using it with
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)tcmalloc.
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There are also the usual complement of bug fixes, documented in the
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChangeLog, and a few minor user-tunable knobs added to components like
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the system allocator.
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 9 June 2009 ===
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.3
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Like 1.2, this has a variety of bug fixes, especially related to the
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Windows build.  One of my bugfixes is to undo the weird `ld -r` fix to
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`.a` files that I introduced in perftools 1.2: it caused problems on
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)too many platforms.  I've reverted back to normal `.a` files.  To work
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)around the original problem that prompted the `ld -r` fix, I now
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)provide `libtcmalloc_and_profiler.a`, for folks who want to link in
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)both.
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The most interesting API change is that I now not only override
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`malloc`/`free`/etc, I also expose them via a unique set of symbols:
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`tc_malloc`/`tc_free`/etc.  This enables clients to write their own
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)memory wrappers that use tcmalloc:
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){{{
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   void* malloc(size_t size) { void* r = tc_malloc(size); Log(r); return r; }
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}}}
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 17 April 2009 ===
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.2.
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This is mostly a bugfix release.  The major change is internal: I have
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a new system for creating packages, which allows me to create 64-bit
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)packages.  (I still don't do that for perftools, because there is
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)still no great 64-bit solution, with libunwind still giving problems
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)and --disable-frame-pointers not practical in every environment.)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Another interesting change involves Windows: a
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://code.google.com/p/google-perftools/issues/detail?id=126 new
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)patch] allows users to choose to override malloc/free/etc on Windows
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rather than patching, as is done now.  This can be used to create
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)custom CRTs.
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)My fix for this
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://groups.google.com/group/google-perftools/browse_thread/thread/1ff9b50043090d9d/a59210c4206f2060?lnk=gst&q=dynamic#a59210c4206f2060
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bug involving static linking] ended up being to make libtcmalloc.a and
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libperftools.a a big .o file, rather than a true `ar` archive.  This
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)should not yield any problems in practice -- in fact, it should be
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)better, since the heap profiler, leak checker, and cpu profiler will
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)now all work even with the static libraries -- but if you find it
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)does, please file a bug report.
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Finally, the profile_handler_unittest provided in the perftools
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)testsuite (new in this release) is failing on FreeBSD.  The end-to-end
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test that uses the profile-handler is passing, so I suspect the
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)problem may be with the test, not the perftools code itself.  However,
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I do not know enough about how itimers work on FreeBSD to be able to
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)debug it.  If you can figure it out, please let me know!
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 11 March 2009 ===
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.1!
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)It has many changes since perftools 1.0 including
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * Faster performance due to dynamically sized thread caches
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * Better heap-sampling for more realistic profiles
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * Improved support on Windows (MSVC 7.1 and cygwin)
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * Better stacktraces in linux (using VDSO)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * Many bug fixes and feature requests
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Note: if you use the CPU-profiler with applications that fork without
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)doing an exec right afterwards, please see the README.  Recent testing
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)has shown that profiles are unreliable in that case.  The problem has
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)existed since the first release of perftools.  We expect to have a fix
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for perftools 1.2.  For more details, see
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://code.google.com/p/google-perftools/issues/detail?id=105 issue 105].
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Everyone who uses perftools 1.0 is encouraged to upgrade to perftools
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)1.1.  If you see any problems with the new release, please file a bug
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)report at http://code.google.com/p/google-perftools/issues/list.
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Enjoy!
339