blob: bb4b6437b07a6823f84382d6c7854271b8cb4d1b [file] [log] [blame]
Aliaksey Kandratsenkaf47fefb2016-02-21 22:38:23 -08001== 21 Feb 2015 ==
2
3gperftools 2.5rc is out!
4
5Here are major changes since 2.4:
6
7* we've moved to github!
8
9* Bryan Chan has contributed s390x support
10
11* stacktrace capturing via libgcc's _Unwind_Backtrace was implemented
12 (for architectures with missing or broken libunwind).
13
14* "emergency malloc" was implemented. Which unbreaks recursive calls
15 to malloc/free from stacktrace capturing functions (such us glib'c
16 backtrace() or libunwind on arm). It is enabled by
17 --enable-emergency-malloc configure flag or by default on arm when
18 --enable-stacktrace-via-backtrace is given. It is another fix for a
19 number common issues people had on platforms with missing or broken
20 libunwind.
21
22* C++14 sized-deallocation is now supported (on gcc 5 and recent
23 clangs). It is off by default and can be enabled at configure time
24 via --enable-sized-delete. On GNU/Linux it can also be enabled at
25 run-time by either TCMALLOC_ENABLE_SIZED_DELETE environment variable
26 or by defining tcmalloc_sized_delete_enabled function which should
27 return 1 to enable it.
28
29* we've lowered default value of transfer batch size to 512. Previous
30 value (bumped up in 2.1) was too high and caused performance
31 regression for some users. 512 should still give us performance
32 boost for workloads that need higher transfer batch size while not
33 penalizing other workloads too much.
34
35* Brian Silverman's patch finally stopped arming profiling timer
36 unless profiling is started.
37
38* Andrew Morrow has contributed support for obtaining cache size of the
39 current thread and softer idling (for use in MongoDB).
40
41* we've implemented few minor performance improvements, particularly
42 on malloc fast-path.
43
44A number of smaller fixes were made. Many of them were contributed:
45
46* issue that caused spurious profiler_unittest.sh failures was fixed.
47
48* Jonathan Lambrechts contributed improved callgrind format support to
49 pprof.
50
51* Matt Cross contributed better support for debug symbols in separate
52 files to pprof.
53
54* Matt Cross contributed support for printing collapsed stack frame
55 from pprof aimed at producing flame graphs.
56
57* Angus Gratton has contributed documentation fix mentioning that on
58 windows only tcmalloc_minimal is supported.
59
60* Anton Samokhvalov has made tcmalloc use mi_force_{un,}lock on OSX
61 instead of pthread_atfork. Which apparently fixes forking
62 issues tcmalloc had on OSX.
63
64* Milton Chiang has contributed support for building 32-bit gperftools
65 on arm8.
66
67* Patrick LoPresti has contributed support for specifying alternative
68 profiling signal via CPUPROFILE_TIMER_SIGNAL environment variable.
69
70* Paolo Bonzini has contributed support configuring filename for
71 sending malloc tracing output via TCMALLOC_TRACE_FILE environment
72 variable.
73
74* user spotrh has enabled use of futex on arm.
75
76* user mitchblank has contributed better declaration for arg-less
77 profiler functions.
78
79* Tom Conerly contributed proper freeing of memory allocated in
80 HeapProfileTable::FillOrderedProfile on error paths.
81
82* user fdeweerdt has contributed curl arguments handling fix in pprof
83
84* Frederik Mellbin fixed tcmalloc's idea of mangled new and delete
85 symbols on windows x64
86
87* Dair Grant has contributed cacheline alignment for ThreadCache
88 objects
89
90* Fredrik Mellbin has contributed updated windows/config.h for Visual
91 Studio 2015 and other windows fixes.
92
93* we're not linking libpthread to libtcmalloc_minimal anymore. Instead
94 libtcmalloc_minimal links to pthread symbols weakly. As a result
95 single-threaded programs remain single-threaded when linking to or
96 preloading libtcmalloc_minimal.so.
97
98* Boris Sazonov has contributed mips compilation fix and printf misue
99 in pprof.
100
101* Adhemerval Zanella has contributed alignment fixes for statically
102 allocated variables.
103
104* Jens Rosenboom has contributed fixes for heap-profiler_unittest.sh
105
106* gshirishfree has contributed better description for GetStats method.
107
108* cyshi has contributed spinlock pause fix.
109
110* Chris Mayo has contributed --docdir argument support for configure.
111
112* Duncan Sands has contributed fix for function aliases.
113
114* Simon Que contributed better include for malloc_hook_c.h
115
116* user wmamrak contributed struct timespec fix for Visual Studio 2015.
117
118* user ssubotin contributed typo in PrintAvailability code.
119
120
Aliaksey Kandratsenkaaa963a22015-02-09 08:35:03 -0800121== 10 Jan 2015 ==
Aliaksey Kandratsenka689e4a52015-01-10 12:26:51 -0800122
123gperftools 2.4 is out! The code is exactly same as 2.4rc.
124
Aliaksey Kandratsenkac4dfdeb2014-12-28 17:53:02 -0800125== 28 Dec 2014 ==
126
127gperftools 2.4rc is out!
128
129Here are changes since 2.3:
130
131* enabled aggressive decommit option by default. It was found to
132 significantly improve memory fragmentation with negligible impact on
133 performance. (Thanks to investigation work performed by Adhemerval
134 Zanella)
135
136* added ./configure flags for tcmalloc pagesize and tcmalloc
137 allocation alignment. Larger page sizes have been reported to
138 improve performance occasionally. (Patch by Raphael Moreira Zinsly)
139
140* sped-up hot-path of malloc/free. By about 5% on static library and
141 about 10% on shared library. Mainly due to more efficient checking
142 of malloc hooks.
143
144* improved stacktrace capturing in cpu profiler (due to issue found by
145 Arun Sharma). As part of that issue pprof's handling of cpu profiles
146 was also improved.
147
Aliaksey Kandratsenka76e81382014-12-07 12:46:49 -0800148== 7 Dec 2014 ==
149
150gperftools 2.3 is out!
151
152Here are changes since 2.3rc:
153
154* (issue 658) correctly close socketpair fds on failure (patch by glider)
155
156* libunwind integration can be disabled at configure time (patch by
157 Raphael Moreira Zinsly)
158
159* libunwind integration is disabled by default for ppc64 (patch by
160 Raphael Moreira Zinsly)
161
162* libunwind integration is force-disabled for OSX. It was not used by
163 default anyways. Fixes compilation issue I saw.
Aliaksey Kandratsenka1d44d372014-11-02 19:38:29 -0800164
Aliaksey Kandratsenka81ed7df2014-12-07 13:33:40 -0800165== 2 Nov 2014 ==
166
Aliaksey Kandratsenka1d44d372014-11-02 19:38:29 -0800167gperftools 2.3rc is out!
168
169Most small improvements in this release were made to pprof tool.
170
171New experimental Linux-only (for now) cpu profiling mode is a notable
172big improvement.
173
174Here are notable changes since 2.2.1:
175
176* (issue-631) fixed debugallocation miscompilation on mmap-less
177 platforms (courtesy of user iamxujian)
178
179* (issue-630) reference to wrong PROFILE (vs. correct CPUPROFILE)
180 environment variable was fixed (courtesy of WenSheng He)
181
182* pprof now has option to display stack traces in output for heap
183 checker (courtesy of Michael Pasieka)
184
185* (issue-636) pprof web command now works on mingw
186
187* (issue-635) pprof now handles library paths that contain spaces
188 (courtesy of user mich...@sebesbefut.com)
189
190* (issue-637) pprof now has an option to not strip template arguments
191 (patch by jiakai)
192
193* (issue-644) possible out-of-bounds access in GetenvBeforeMain was
194 fixed (thanks to user abyss.7)
195
196* (issue-641) pprof now has an option --show_addresses (thanks to user
197 yurivict). New option prints instruction address in addition to
198 function name in stack traces
199
200* (issue-646) pprof now works around some issues of addr2line
201 reportedly when DWARF v4 format is used (patch by Adam McNeeney)
202
203* (issue-645) heap profiler exit message now includes remaining memory
204 allocated info (patch by user yurivict)
205
206* pprof code that finds location of /proc/<pid>/maps in cpu profile
207 files is now fixed (patch by Ricardo M. Correia)
208
209* (issue-654) pprof now handles "split text segments" feature of
210 Chromium for Android. (patch by simonb)
211
212* (issue-655) potential deadlock on windows caused by early call to
213 getenv in malloc initialization code was fixed (bug reported and fix
214 proposed by user zndmitry)
215
216* incorrect detection of arm 6zk instruction set support
217 (-mcpu=arm1176jzf-s) was fixed. (Reported by pedronavf on old
218 issue-493)
219
220* new cpu profiling mode on Linux is now implemented. It sets up
221 separate profiling timers for separate threads. Which improves
222 accuracy of profiling on Linux a lot. It is off by default. And is
223 enabled if both librt.f is loaded and CPUPROFILE_PER_THREAD_TIMERS
224 environment variable is set. But note that all threads need to be
225 registered via ProfilerRegisterThread.
226
Aliaksey Kandratsenka577b9402014-06-21 15:39:46 -0700227== 21 Jun 2014 ==
228
229gperftools 2.2.1 is out!
230
231Here's list of fixes:
232
233* issue-626 was closed. Which fixes initialization statically linked
234 tcmalloc.
235
236* issue 628 was closed. It adds missing header file into source
237 tarball. This fixes for compilation on PPC Linux.
238
Aliaksey Kandratsenkacdf8e1e2014-05-03 17:44:38 -0700239== 3 May 2014 ==
240
241gperftools 2.2 is out!
242
243Here are notable changes since 2.2rc:
244
245* issue 620 (crash on windows when c runtime dll is reloaded) was
246 fixed
247
Aliaksey Kandratsenkae8e082a2014-04-19 13:16:02 -0700248== 19 Apr 2014 ==
249
250gperftools 2.2rc is out!
251
252Here are notable changes since 2.1:
253
254* a number of fixes for a number compilers and platforms. Notably
255 Visual Studio 2013, recent mingw with c++ threads and some OSX
256 fixes.
257
258* we now have mips and mips64 support! (courtesy of Jovan Zelincevic,
259 Jean Lee, user xiaoyur347 and others)
260
261* we now have aarch64 (aka arm64) support! (contributed by Riku
262 Voipio)
263
264* there's now support for ppc64-le (by Raphael Moreira Zinsly and
265 Adhemerval Zanella)
266
267* there's now some support of uclibc (contributed by user xiaoyur347)
268
269* google/ headers will now give you deprecation warning. They are
270 deprecated since 2.0
271
272* there's now new api: tc_malloc_skip_new_handler (ported from chromium
273 fork)
274
275* issue-557: added support for dumping heap profile via signal (by
276 Jean Lee)
277
278* issue-567: Petr Hosek contributed SysAllocator support for windows
279
280* Joonsoo Kim contributed several speedups for central freelist code
281
282* TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES environment variable now works
283
284* configure scripts are now using AM_MAINTAINER_MODE. It'll only
285 affect folks who modify source from .tar.gz and want automake to
286 automatically rebuild Makefile-s. See automake documentation for
287 that.
288
289* issue-586: detect main executable even if PIE is active (based on
290 patch by user themastermind1). Notably, it fixes profiler use with
291 ruby.
292
293* there is now support for switching backtrace capturing method at
294 runtime (via TCMALLOC_STACKTRACE_METHOD and
295 TCMALLOC_STACKTRACE_METHOD_VERBOSE environment variables)
296
297* there is new backtrace capturing method using -finstrument-functions
298 prologues contributed by user xiaoyur347
299
300* few cases of crashes/deadlocks in profiler were addressed. See
301 (famous) issue-66, issue-547 and issue-579.
302
303* issue-464 (memory corruption in debugalloc's realloc after
304 memallign) is now fixed
305
306* tcmalloc is now able to release memory back to OS on windows
307 (issue-489). The code was ported from chromium fork (by a number of
308 authors).
309
310* Together with issue-489 we ported chromium's "aggressive decommit"
311 mode. In this mode (settable via malloc extension and via
312 environment variable TCMALLOC_AGGRESSIVE_DECOMMIT), free pages are
313 returned back to OS immediately.
314
315* MallocExtension::instance() is now faster (based on patch by
316 Adhemerval Zanella)
317
318* issue-610 (hangs on windows in multibyte locales) is now fixed
319
320The following people helped with ideas or patches (based on git log,
321some contributions purely in bugtracker might be missing): Andrew
322C. Morrow, yurivict, Wang YanQing, Thomas Klausner,
323davide.italiano@10gen.com, Dai MIKURUBE, Joon-Sung Um, Jovan
324Zelincevic, Jean Lee, Petr Hosek, Ben Avison, drussel, Joonsoo Kim,
325Hannes Weisbach, xiaoyur347, Riku Voipio, Adhemerval Zanella, Raphael
326Moreira Zinsly
327
alkondratenko@gmail.com674fcd92013-07-30 09:14:20 +0000328== 30 July 2013 ==
329
330gperftools 2.1 is out!
331
332Just few fixes where merged after rc. Most notably:
333
334* Some fixes for debug allocation on POWER/Linux
335
alkondratenko@gmail.comee2bf092013-07-20 21:37:26 +0000336== 20 July 2013 ==
337
338gperftools 2.1rc is out!
339
340As a result of more than a year of contributions we're ready for 2.1
341release.
342
343But before making that step I'd like to create RC and make sure people
344have chance to test it.
345
346Here are notable changes since 2.0:
347
348* fixes for building on newer platforms. Notably, there's now initial
349 support for x32 ABI (--enable-minimal only at this time))
350
351* new getNumericProperty stats for cache sizes
352
353* added HEAP_PROFILER_TIME_INTERVAL variable (see documentation)
354
355* added environment variable to control heap size (TCMALLOC_HEAP_LIMIT_MB)
356
357* added environment variable to disable release of memory back to OS
358 (TCMALLOC_DISABLE_MEMORY_RELEASE)
359
360* cpu profiler can now be switched on and off by sending it a signal
361 (specified in CPUPROFILESIGNAL)
362
363* (issue 491) fixed race-ful spinlock wake-ups
364
365* (issue 496) added some support for fork-ing of process that is using
366 tcmalloc
367
368* (issue 368) improved memory fragmentation when large chunks of
369 memory are allocated/freed
370
csilvers4e9432c2012-02-04 00:07:36 +0000371== 03 February 2012 ==
372
373I've just released gperftools 2.0
374
375The `google-perftools` project has been renamed to `gperftools`. I
376(csilvers) am stepping down as maintainer, to be replaced by
377David Chappelle. Welcome to the team, David! David has been an
378an active contributor to perftools in the past -- in fact, he's the
379only person other than me that already has commit status. I am
380pleased to have him take over as maintainer.
381
382I have both renamed the project (the Google Code site renamed a few
383weeks ago), and bumped the major version number up to 2, to reflect
384the new community ownership of the project. Almost all the
csilversce289122012-02-04 00:10:11 +0000385[http://gperftools.googlecode.com/svn/tags/gperftools-2.0/ChangeLog changes]
csilvers4e9432c2012-02-04 00:07:36 +0000386are related to the renaming.
387
388The main functional change from google-perftools 1.10 is that
389I've renamed the `google/` include-directory to be `gperftools/`
390instead. New code should `#include <gperftools/tcmalloc.h>`/etc.
391(Most users of perftools don't need any perftools-specific includes at
392all, so this is mostly directed to "power users.") I've kept the old
393names around as forwarding headers to the new, so `#include
394<google/tcmalloc.h>` will continue to work.
395
396(The other functional change which I snuck in is getting rid of some
397bash-isms in one of the unittest driver scripts, so it could run on
398Solaris.)
399
400Note that some internal names still contain the text `google`, such as
401the `google_malloc` internal linker section. I think that's a
402trickier transition, and can happen in a future release (if at all).
403
404
405=== 31 January 2012 ===
csilvers0afb0782012-01-31 19:11:26 +0000406
407I've just released perftools 1.10
408
409There is an API-incompatible change: several of the methods in the
410`MallocExtension` class have changed from taking a `void*` to taking a
411`const void*`. You should not be affected by this API change
412unless you've written your own custom malloc extension that derives
413from `MallocExtension`, but since it is a user-visible change, I have
414upped the `.so` version number for this release.
415
416This release focuses on improvements to linux-syscall-support.h,
417including ARM and PPC fixups and general cleanups. I hope this will
418magically fix an array of bugs people have been seeing.
419
420There is also exciting news on the porting front, with support for
421patching win64 assembly contributed by IBM Canada! This is an
422important step -- perhaps the most difficult -- to getting perftools
423to work on 64-bit windows using the patching technique (it doesn't
424affect the libc-modification technique). `premable_patcher_test` has
425been added to help test these changes; it is meant to compile under
426x86_64, and won't work under win32.
427
428For the full list of changes, including improved `HEAP_PROFILE_MMAP`
429support, see the
csilvers4e9432c2012-02-04 00:07:36 +0000430[http://gperftools.googlecode.com/svn/tags/google-perftools-1.10/ChangeLog ChangeLog].
csilvers0afb0782012-01-31 19:11:26 +0000431
432
433=== 24 January 2011 ===
csilverse0eaf592012-01-28 00:13:43 +0000434
435The `google-perftools` Google Code page has been renamed to
436`gperftools`, in preparation for the project being renamed to
437`gperftools`. In the coming weeks, I'll be stepping down as
438maintainer for the perftools project, and as part of that Google is
439relinquishing ownership of the project; it will now be entirely
440community run. The name change reflects that shift. The 'g' in
441'gperftools' stands for 'great'. :-)
442
443=== 23 December 2011 ===
csilvers4fa02db2011-12-24 01:00:32 +0000444
445I've just released perftools 1.9.1
446
447I missed including a file in the tarball, that is needed to compile on
448ARM. If you are not compiling on ARM, or have successfully compiled
449perftools 1.9, there is no need to upgrade.
450
451
csilverse0eaf592012-01-28 00:13:43 +0000452=== 22 December 2011 ===
csilvers2a7b3b82011-12-23 00:45:49 +0000453
454I've just released perftools 1.9
455
456This change has a slew of improvements, from better ARM and freebsd
457support, to improved performance by moving some code outside of locks,
458to better pprof reporting of code with overloaded functions.
459
460The full list of changes is in the
461[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.9/ChangeLog ChangeLog].
462
463
464=== 26 August 2011 ===
csilversc2eedce2011-08-26 21:08:59 +0000465
466I've just released perftools 1.8.3
467
468The star-crossed 1.8 series continues; in 1.8.1, I had accidentally
469removed some code that was needed for FreeBSD. (Without this code
470many apps would crash at startup.) This release re-adds that code.
471If you are not on FreeBSD, or are using FreeBSD with perftools 1.8 or
472earlier, there is no need to upgrade.
473
474=== 11 August 2011 ===
csilversf633b402011-08-11 22:06:22 +0000475
476I've just released perftools 1.8.2
477
478I was incorrectly calculating the patch-level in the configuration
479step, meaning the TC_VERSION_PATCH #define in tcmalloc.h was wrong.
480Since the testing framework checks for this, it was failing. Now it
481should work again. This time, I was careful to re-run my tests after
482upping the version number. :-)
483
484If you don't care about the TC_VERSION_PATCH #define, there's no
485reason to upgrae.
486
487=== 26 July 2011 ===
csilversd2faf462011-07-27 04:18:01 +0000488
489I've just released perftools 1.8.1
490
491I was missing an #include that caused the build to break under some
492compilers, especially newer gcc's, that wanted it. This only affects
493people who build from source, so only the .tar.gz file is updated from
494perftools 1.8. If you didn't have any problems compiling perftools
4951.8, there's no reason to upgrade.
496
497=== 15 July 2011 ===
csilvers100c38c2011-07-16 01:07:10 +0000498
499I've just released perftools 1.8
500
501Of the many changes in this release, a good number pertain to porting.
502I've revamped OS X support to use the malloc-zone framework; it should
503now Just Work to link in tcmalloc, without needing
504`DYLD_FORCE_FLAT_NAMESPACE` or the like. (This is a pretty major
505change, so please feel free to report feedback at
506google-perftools@googlegroups.com.) 64-bit Windows support is also
507improved, as is ARM support, and the hooks are in place to improve
508FreeBSD support as well.
509
510On the other hand, I'm seeing hanging tests on Cygwin. I see the same
511hanging even with (the old) perftools 1.7, so I'm guessing this is
512either a problem specific to my Cygwin installation, or nobody is
513trying to use perftools under Cygwin. If you can reproduce the
514problem, and even better have a solution, you can report it at
515google-perftools@googlegroups.com.
516
517Internal changes include several performance and space-saving tweaks.
518One is user-visible (but in "stealth mode", and otherwise
519undocumented): you can compile with `-DTCMALLOC_SMALL_BUT_SLOW`. In
520this mode, tcmalloc will use less memory overhead, at the cost of
521running (likely not noticeably) slower.
522
523There are many other changes as well, too numerous to recount here,
524but present in the
csilversd2faf462011-07-27 04:18:01 +0000525[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.8/ChangeLog ChangeLog].
csilvers100c38c2011-07-16 01:07:10 +0000526
527
528=== 7 February 2011 ===
csilversdd3d9d92011-02-08 01:03:37 +0000529
530Thanks to endlessr..., who
531[http://code.google.com/p/google-perftools/issues/detail?id=307 identified]
532why some tests were failing under MSVC 10 in release mode. It does not look
533like these failures point toward any problem with tcmalloc itself; rather, the
534problem is with the test, which made some assumptions that broke under the
535some aggressive optimizations used in MSVC 10. I'll fix the test, but in
536the meantime, feel free to use perftools even when compiled under MSVC
53710.
538
csilvers100c38c2011-07-16 01:07:10 +0000539=== 4 February 2011 ===
csilvers7375b4f2011-02-05 00:19:37 +0000540
541I've just released perftools 1.7
542
543I apologize for the delay since the last release; so many great new
544patches and bugfixes kept coming in (and are still coming in; I also
545apologize to those folks who have to slip until the next release). I
546picked this arbitrary time to make a cut.
547
548Among the many new features in this release is a multi-megabyte
549reduction in the amount of tcmalloc overhead uder x86_64, improved
550performance in the case of contention, and many many bugfixes,
551especially architecture-specific bugfixes. See the
csilversd2faf462011-07-27 04:18:01 +0000552[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.7/ChangeLog ChangeLog]
csilvers7375b4f2011-02-05 00:19:37 +0000553for full details.
554
555One architecture-specific change of note is added comments in the
556[http://google-perftools.googlecode.com/svn/tags/perftools-1.7/README README]
557for using tcmalloc under OS X. I'm trying to get my head around the
558exact behavior of the OS X linker, and hope to have more improvements
559for the next release, but I hope these notes help folks who have been
560having trouble with tcmalloc on OS X.
561
562*Windows users*: I've heard reports that some unittests fail on
563Windows when compiled with MSVC 10 in Release mode. All tests pass in
564Debug mode. I've not heard of any problems with earlier versions of
565MSVC. I don't know if this is a problem with the runtime patching (so
566the static patching discussed in README_windows.txt will still work),
567a problem with perftools more generally, or a bug in MSVC 10. Anyone
568with windows expertise that can debug this, I'd be glad to hear from!
569
570
csilvers682ff7d2010-08-05 20:36:47 +0000571=== 5 August 2010 ===
572
573I've just released perftools 1.6
574
575This version also has a large number of minor changes, including
576support for `malloc_usable_size()` as a glibc-compatible alias to
577`malloc_size()`, the addition of SVG-based output to `pprof`, and
578experimental support for tcmalloc large pages, which may speed up
579tcmalloc at the cost of greater memory use. To use tcmalloc large
580pages, see the
csilvers3014cf12010-11-18 01:07:25 +0000581[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL
csilvers682ff7d2010-08-05 20:36:47 +0000582INSTALL file]; for all changes, see the
csilvers3014cf12010-11-18 01:07:25 +0000583[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog
csilvers682ff7d2010-08-05 20:36:47 +0000584ChangeLog].
585
586OS X NOTE: improvements in the profiler unittest have turned up an OS
587X issue: in multithreaded programs, it seems that OS X often delivers
588the profiling signal (from sigitimer()) to the main thread, even when
589it's sleeping, rather than spawned threads that are doing actual work.
590If anyone knows details of how OS X handles SIGPROF events (from
591setitimer) in threaded programs, and has insight into this problem,
592please send mail to google-perftools@googlegroups.com.
593
594To see if you're affected by this, look for profiling time that pprof
csilvers3014cf12010-11-18 01:07:25 +0000595attributes to `___semwait_signal`. This is work being done in other
csilvers682ff7d2010-08-05 20:36:47 +0000596threads, that is being attributed to sleeping-time in the main thread.
597
598
csilversd8c02762010-05-07 21:53:24 +0000599=== 20 January 2010 ===
600
601I've just released perftools 1.5
602
603This version has a slew of changes, leading to somewhat faster
604performance and improvements in portability. It adds features like
605`ITIMER_REAL` support to the cpu profiler, and `tc_set_new_mode` to
606mimic the windows function of the same name. Full details are in the
607[http://google-perftools.googlecode.com/svn/tags/perftools-1.5/ChangeLog
608ChangeLog].
609
csilvers7375b4f2011-02-05 00:19:37 +0000610
csilversd8c02762010-05-07 21:53:24 +0000611=== 11 September 2009 ===
612
613I've just released perftools 1.4
614
615The major change this release is the addition of a debugging malloc
616library! If you link with `libtcmalloc_debug.so` instead of
617`libtcmalloc.so` (and likewise for the `minimal` variants) you'll get
618a debugging malloc, which will catch double-frees, writes to freed
619data, `free`/`delete` and `delete`/`delete[]` mismatches, and even
620(optionally) writes past the end of an allocated block.
621
622We plan to do more with this library in the future, including
623supporting it on Windows, and adding the ability to use the debugging
624library with your default malloc in addition to using it with
625tcmalloc.
626
627There are also the usual complement of bug fixes, documented in the
628ChangeLog, and a few minor user-tunable knobs added to components like
629the system allocator.
630
631
632=== 9 June 2009 ===
633
634I've just released perftools 1.3
635
636Like 1.2, this has a variety of bug fixes, especially related to the
637Windows build. One of my bugfixes is to undo the weird `ld -r` fix to
638`.a` files that I introduced in perftools 1.2: it caused problems on
639too many platforms. I've reverted back to normal `.a` files. To work
640around the original problem that prompted the `ld -r` fix, I now
641provide `libtcmalloc_and_profiler.a`, for folks who want to link in
642both.
643
644The most interesting API change is that I now not only override
645`malloc`/`free`/etc, I also expose them via a unique set of symbols:
646`tc_malloc`/`tc_free`/etc. This enables clients to write their own
647memory wrappers that use tcmalloc:
648{{{
649 void* malloc(size_t size) { void* r = tc_malloc(size); Log(r); return r; }
650}}}
651
652
653=== 17 April 2009 ===
654
655I've just released perftools 1.2.
656
657This is mostly a bugfix release. The major change is internal: I have
658a new system for creating packages, which allows me to create 64-bit
659packages. (I still don't do that for perftools, because there is
660still no great 64-bit solution, with libunwind still giving problems
661and --disable-frame-pointers not practical in every environment.)
662
663Another interesting change involves Windows: a
664[http://code.google.com/p/google-perftools/issues/detail?id=126 new
665patch] allows users to choose to override malloc/free/etc on Windows
666rather than patching, as is done now. This can be used to create
667custom CRTs.
668
669My fix for this
670[http://groups.google.com/group/google-perftools/browse_thread/thread/1ff9b50043090d9d/a59210c4206f2060?lnk=gst&q=dynamic#a59210c4206f2060
671bug involving static linking] ended up being to make libtcmalloc.a and
672libperftools.a a big .o file, rather than a true `ar` archive. This
673should not yield any problems in practice -- in fact, it should be
674better, since the heap profiler, leak checker, and cpu profiler will
675now all work even with the static libraries -- but if you find it
676does, please file a bug report.
677
678Finally, the profile_handler_unittest provided in the perftools
679testsuite (new in this release) is failing on FreeBSD. The end-to-end
680test that uses the profile-handler is passing, so I suspect the
681problem may be with the test, not the perftools code itself. However,
682I do not know enough about how itimers work on FreeBSD to be able to
683debug it. If you can figure it out, please let me know!
684
685=== 11 March 2009 ===
686
687I've just released perftools 1.1!
688
689It has many changes since perftools 1.0 including
690
691 * Faster performance due to dynamically sized thread caches
692 * Better heap-sampling for more realistic profiles
693 * Improved support on Windows (MSVC 7.1 and cygwin)
694 * Better stacktraces in linux (using VDSO)
695 * Many bug fixes and feature requests
696
697Note: if you use the CPU-profiler with applications that fork without
698doing an exec right afterwards, please see the README. Recent testing
699has shown that profiles are unreliable in that case. The problem has
700existed since the first release of perftools. We expect to have a fix
701for perftools 1.2. For more details, see
702[http://code.google.com/p/google-perftools/issues/detail?id=105 issue 105].
703
704Everyone who uses perftools 1.0 is encouraged to upgrade to perftools
7051.1. If you see any problems with the new release, please file a bug
706report at http://code.google.com/p/google-perftools/issues/list.
707
708Enjoy!