Home | History | Annotate | Download | only in vendor
      1 == 03 February 2012 ==
      2 
      3 I've just released gperftools 2.0
      4 
      5 The `google-perftools` project has been renamed to `gperftools`.  I
      6 (csilvers) am stepping down as maintainer, to be replaced by
      7 David Chappelle.  Welcome to the team, David!  David has been an
      8 an active contributor to perftools in the past -- in fact, he's the
      9 only person other than me that already has commit status.  I am
     10 pleased to have him take over as maintainer.
     11 
     12 I have both renamed the project (the Google Code site renamed a few
     13 weeks ago), and bumped the major version number up to 2, to reflect
     14 the new community ownership of the project.  Almost all the
     15 [http://gperftools.googlecode.com/svn/tags/gperftools-2.0/ChangeLog changes]
     16 are related to the renaming.
     17 
     18 The main functional change from google-perftools 1.10 is that
     19 I've renamed the `google/` include-directory to be `gperftools/`
     20 instead.  New code should `#include <gperftools/tcmalloc.h>`/etc.
     21 (Most users of perftools don't need any perftools-specific includes at
     22 all, so this is mostly directed to "power users.")  I've kept the old
     23 names around as forwarding headers to the new, so `#include
     24 <google/tcmalloc.h>` will continue to work.
     25 
     26 (The other functional change which I snuck in is getting rid of some
     27 bash-isms in one of the unittest driver scripts, so it could run on
     28 Solaris.)
     29 
     30 Note that some internal names still contain the text `google`, such as
     31 the `google_malloc` internal linker section.  I think that's a
     32 trickier transition, and can happen in a future release (if at all).
     33 
     34 
     35 === 31 January 2012 ===
     36 
     37 I've just released perftools 1.10
     38 
     39 There is an API-incompatible change: several of the methods in the
     40 `MallocExtension` class have changed from taking a `void*` to taking a
     41 `const void*`.  You should not be affected by this API change
     42 unless you've written your own custom malloc extension that derives
     43 from `MallocExtension`, but since it is a user-visible change, I have
     44 upped the `.so` version number for this release.
     45 
     46 This release focuses on improvements to linux-syscall-support.h,
     47 including ARM and PPC fixups and general cleanups.  I hope this will
     48 magically fix an array of bugs people have been seeing.
     49 
     50 There is also exciting news on the porting front, with support for
     51 patching win64 assembly contributed by IBM Canada!  This is an
     52 important step -- perhaps the most difficult -- to getting perftools
     53 to work on 64-bit windows using the patching technique (it doesn't
     54 affect the libc-modification technique).  `premable_patcher_test` has
     55 been added to help test these changes; it is meant to compile under
     56 x86_64, and won't work under win32.
     57 
     58 For the full list of changes, including improved `HEAP_PROFILE_MMAP`
     59 support, see the
     60 [http://gperftools.googlecode.com/svn/tags/google-perftools-1.10/ChangeLog ChangeLog].
     61 
     62 
     63 === 24 January 2011 ===
     64 
     65 The `google-perftools` Google Code page has been renamed to
     66 `gperftools`, in preparation for the project being renamed to
     67 `gperftools`.  In the coming weeks, I'll be stepping down as
     68 maintainer for the perftools project, and as part of that Google is
     69 relinquishing ownership of the project; it will now be entirely
     70 community run.  The name change reflects that shift.  The 'g' in
     71 'gperftools' stands for 'great'. :-)
     72 
     73 === 23 December 2011 ===
     74 
     75 I've just released perftools 1.9.1
     76 
     77 I missed including a file in the tarball, that is needed to compile on
     78 ARM.  If you are not compiling on ARM, or have successfully compiled
     79 perftools 1.9, there is no need to upgrade.
     80 
     81 
     82 === 22 December 2011 ===
     83 
     84 I've just released perftools 1.9
     85 
     86 This change has a slew of improvements, from better ARM and freebsd
     87 support, to improved performance by moving some code outside of locks,
     88 to better pprof reporting of code with overloaded functions.
     89 
     90 The full list of changes is in the
     91 [http://google-perftools.googlecode.com/svn/tags/google-perftools-1.9/ChangeLog ChangeLog].
     92 
     93 
     94 === 26 August 2011 ===
     95 
     96 I've just released perftools 1.8.3
     97 
     98 The star-crossed 1.8 series continues; in 1.8.1, I had accidentally
     99 removed some code that was needed for FreeBSD.  (Without this code
    100 many apps would crash at startup.)  This release re-adds that code.
    101 If you are not on FreeBSD, or are using FreeBSD with perftools 1.8 or
    102 earlier, there is no need to upgrade.
    103 
    104 === 11 August 2011 ===
    105 
    106 I've just released perftools 1.8.2
    107 
    108 I was incorrectly calculating the patch-level in the configuration
    109 step, meaning the TC_VERSION_PATCH #define in tcmalloc.h was wrong.
    110 Since the testing framework checks for this, it was failing.  Now it
    111 should work again.  This time, I was careful to re-run my tests after
    112 upping the version number. :-)
    113 
    114 If you don't care about the TC_VERSION_PATCH #define, there's no
    115 reason to upgrae.
    116 
    117 === 26 July 2011 ===
    118 
    119 I've just released perftools 1.8.1
    120 
    121 I was missing an #include that caused the build to break under some
    122 compilers, especially newer gcc's, that wanted it.  This only affects
    123 people who build from source, so only the .tar.gz file is updated from
    124 perftools 1.8.  If you didn't have any problems compiling perftools
    125 1.8, there's no reason to upgrade.
    126 
    127 === 15 July 2011 ===
    128 
    129 I've just released perftools 1.8
    130 
    131 Of the many changes in this release, a good number pertain to porting.
    132 I've revamped OS X support to use the malloc-zone framework; it should
    133 now Just Work to link in tcmalloc, without needing
    134 `DYLD_FORCE_FLAT_NAMESPACE` or the like.  (This is a pretty major
    135 change, so please feel free to report feedback at
    136 google-perftools (a] googlegroups.com.)  64-bit Windows support is also
    137 improved, as is ARM support, and the hooks are in place to improve
    138 FreeBSD support as well.
    139 
    140 On the other hand, I'm seeing hanging tests on Cygwin.  I see the same
    141 hanging even with (the old) perftools 1.7, so I'm guessing this is
    142 either a problem specific to my Cygwin installation, or nobody is
    143 trying to use perftools under Cygwin.  If you can reproduce the
    144 problem, and even better have a solution, you can report it at
    145 google-perftools (a] googlegroups.com.
    146 
    147 Internal changes include several performance and space-saving tweaks.
    148 One is user-visible (but in "stealth mode", and otherwise
    149 undocumented): you can compile with `-DTCMALLOC_SMALL_BUT_SLOW`.  In
    150 this mode, tcmalloc will use less memory overhead, at the cost of
    151 running (likely not noticeably) slower.
    152 
    153 There are many other changes as well, too numerous to recount here,
    154 but present in the
    155 [http://google-perftools.googlecode.com/svn/tags/google-perftools-1.8/ChangeLog ChangeLog].
    156 
    157 
    158 === 7 February 2011 ===
    159 
    160 Thanks to endlessr..., who
    161 [http://code.google.com/p/google-perftools/issues/detail?id=307 identified]
    162 why some tests were failing under MSVC 10 in release mode.  It does not look
    163 like these failures point toward any problem with tcmalloc itself; rather, the
    164 problem is with the test, which made some assumptions that broke under the
    165 some aggressive optimizations used in MSVC 10.  I'll fix the test, but in
    166 the meantime, feel free to use perftools even when compiled under MSVC
    167 10.
    168 
    169 === 4 February 2011 ===
    170 
    171 I've just released perftools 1.7
    172 
    173 I apologize for the delay since the last release; so many great new
    174 patches and bugfixes kept coming in (and are still coming in; I also
    175 apologize to those folks who have to slip until the next release).  I
    176 picked this arbitrary time to make a cut.
    177 
    178 Among the many new features in this release is a multi-megabyte
    179 reduction in the amount of tcmalloc overhead uder x86_64, improved
    180 performance in the case of contention, and many many bugfixes,
    181 especially architecture-specific bugfixes.  See the
    182 [http://google-perftools.googlecode.com/svn/tags/google-perftools-1.7/ChangeLog ChangeLog]
    183 for full details.
    184 
    185 One architecture-specific change of note is added comments in the
    186 [http://google-perftools.googlecode.com/svn/tags/perftools-1.7/README README]
    187 for using tcmalloc under OS X.  I'm trying to get my head around the
    188 exact behavior of the OS X linker, and hope to have more improvements
    189 for the next release, but I hope these notes help folks who have been
    190 having trouble with tcmalloc on OS X.
    191 
    192 *Windows users*: I've heard reports that some unittests fail on
    193 Windows when compiled with MSVC 10 in Release mode.  All tests pass in
    194 Debug mode.  I've not heard of any problems with earlier versions of
    195 MSVC.  I don't know if this is a problem with the runtime patching (so
    196 the static patching discussed in README_windows.txt will still work),
    197 a problem with perftools more generally, or a bug in MSVC 10.  Anyone
    198 with windows expertise that can debug this, I'd be glad to hear from!
    199 
    200 
    201 === 5 August 2010 ===
    202 
    203 I've just released perftools 1.6
    204 
    205 This version also has a large number of minor changes, including
    206 support for `malloc_usable_size()` as a glibc-compatible alias to
    207 `malloc_size()`, the addition of SVG-based output to `pprof`, and
    208 experimental support for tcmalloc large pages, which may speed up
    209 tcmalloc at the cost of greater memory use.  To use tcmalloc large
    210 pages, see the
    211 [http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL
    212 INSTALL file]; for all changes, see the
    213 [http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog
    214 ChangeLog].
    215 
    216 OS X NOTE: improvements in the profiler unittest have turned up an OS
    217 X issue: in multithreaded programs, it seems that OS X often delivers
    218 the profiling signal (from sigitimer()) to the main thread, even when
    219 it's sleeping, rather than spawned threads that are doing actual work.
    220 If anyone knows details of how OS X handles SIGPROF events (from
    221 setitimer) in threaded programs, and has insight into this problem,
    222 please send mail to google-perftools (a] googlegroups.com.
    223 
    224 To see if you're affected by this, look for profiling time that pprof
    225 attributes to `___semwait_signal`.  This is work being done in other
    226 threads, that is being attributed to sleeping-time in the main thread.
    227 
    228 
    229 === 20 January 2010 ===
    230 
    231 I've just released perftools 1.5
    232 
    233 This version has a slew of changes, leading to somewhat faster
    234 performance and improvements in portability.  It adds features like
    235 `ITIMER_REAL` support to the cpu profiler, and `tc_set_new_mode` to
    236 mimic the windows function of the same name.  Full details are in the
    237 [http://google-perftools.googlecode.com/svn/tags/perftools-1.5/ChangeLog
    238 ChangeLog].
    239 
    240 
    241 === 11 September 2009 ===
    242 
    243 I've just released perftools 1.4
    244 
    245 The major change this release is the addition of a debugging malloc
    246 library!  If you link with `libtcmalloc_debug.so` instead of
    247 `libtcmalloc.so` (and likewise for the `minimal` variants) you'll get
    248 a debugging malloc, which will catch double-frees, writes to freed
    249 data, `free`/`delete` and `delete`/`delete[]` mismatches, and even
    250 (optionally) writes past the end of an allocated block.
    251 
    252 We plan to do more with this library in the future, including
    253 supporting it on Windows, and adding the ability to use the debugging
    254 library with your default malloc in addition to using it with
    255 tcmalloc.
    256 
    257 There are also the usual complement of bug fixes, documented in the
    258 ChangeLog, and a few minor user-tunable knobs added to components like
    259 the system allocator.
    260 
    261 
    262 === 9 June 2009 ===
    263 
    264 I've just released perftools 1.3
    265 
    266 Like 1.2, this has a variety of bug fixes, especially related to the
    267 Windows build.  One of my bugfixes is to undo the weird `ld -r` fix to
    268 `.a` files that I introduced in perftools 1.2: it caused problems on
    269 too many platforms.  I've reverted back to normal `.a` files.  To work
    270 around the original problem that prompted the `ld -r` fix, I now
    271 provide `libtcmalloc_and_profiler.a`, for folks who want to link in
    272 both.
    273 
    274 The most interesting API change is that I now not only override
    275 `malloc`/`free`/etc, I also expose them via a unique set of symbols:
    276 `tc_malloc`/`tc_free`/etc.  This enables clients to write their own
    277 memory wrappers that use tcmalloc:
    278 {{{
    279    void* malloc(size_t size) { void* r = tc_malloc(size); Log(r); return r; }
    280 }}}
    281 
    282 
    283 === 17 April 2009 ===
    284 
    285 I've just released perftools 1.2.
    286 
    287 This is mostly a bugfix release.  The major change is internal: I have
    288 a new system for creating packages, which allows me to create 64-bit
    289 packages.  (I still don't do that for perftools, because there is
    290 still no great 64-bit solution, with libunwind still giving problems
    291 and --disable-frame-pointers not practical in every environment.)
    292 
    293 Another interesting change involves Windows: a
    294 [http://code.google.com/p/google-perftools/issues/detail?id=126 new
    295 patch] allows users to choose to override malloc/free/etc on Windows
    296 rather than patching, as is done now.  This can be used to create
    297 custom CRTs.
    298 
    299 My fix for this
    300 [http://groups.google.com/group/google-perftools/browse_thread/thread/1ff9b50043090d9d/a59210c4206f2060?lnk=gst&q=dynamic#a59210c4206f2060
    301 bug involving static linking] ended up being to make libtcmalloc.a and
    302 libperftools.a a big .o file, rather than a true `ar` archive.  This
    303 should not yield any problems in practice -- in fact, it should be
    304 better, since the heap profiler, leak checker, and cpu profiler will
    305 now all work even with the static libraries -- but if you find it
    306 does, please file a bug report.
    307 
    308 Finally, the profile_handler_unittest provided in the perftools
    309 testsuite (new in this release) is failing on FreeBSD.  The end-to-end
    310 test that uses the profile-handler is passing, so I suspect the
    311 problem may be with the test, not the perftools code itself.  However,
    312 I do not know enough about how itimers work on FreeBSD to be able to
    313 debug it.  If you can figure it out, please let me know!
    314 
    315 === 11 March 2009 ===
    316 
    317 I've just released perftools 1.1!
    318 
    319 It has many changes since perftools 1.0 including
    320 
    321   * Faster performance due to dynamically sized thread caches
    322   * Better heap-sampling for more realistic profiles
    323   * Improved support on Windows (MSVC 7.1 and cygwin)
    324   * Better stacktraces in linux (using VDSO)
    325   * Many bug fixes and feature requests
    326 
    327 Note: if you use the CPU-profiler with applications that fork without
    328 doing an exec right afterwards, please see the README.  Recent testing
    329 has shown that profiles are unreliable in that case.  The problem has
    330 existed since the first release of perftools.  We expect to have a fix
    331 for perftools 1.2.  For more details, see
    332 [http://code.google.com/p/google-perftools/issues/detail?id=105 issue 105].
    333 
    334 Everyone who uses perftools 1.0 is encouraged to upgrade to perftools
    335 1.1.  If you see any problems with the new release, please file a bug
    336 report at http://code.google.com/p/google-perftools/issues/list.
    337 
    338 Enjoy!
    339