airbnb-ruby-prof 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/CHANGES +483 -0
  2. data/LICENSE +25 -0
  3. data/README.rdoc +426 -0
  4. data/Rakefile +51 -0
  5. data/bin/ruby-prof +279 -0
  6. data/bin/ruby-prof-check-trace +45 -0
  7. data/examples/flat.txt +50 -0
  8. data/examples/graph.dot +84 -0
  9. data/examples/graph.html +823 -0
  10. data/examples/graph.txt +139 -0
  11. data/examples/multi.flat.txt +23 -0
  12. data/examples/multi.graph.html +760 -0
  13. data/examples/multi.grind.dat +114 -0
  14. data/examples/multi.stack.html +547 -0
  15. data/examples/stack.html +547 -0
  16. data/ext/ruby_prof/extconf.rb +67 -0
  17. data/ext/ruby_prof/rp_call_info.c +374 -0
  18. data/ext/ruby_prof/rp_call_info.h +59 -0
  19. data/ext/ruby_prof/rp_fast_call_tree_printer.c +247 -0
  20. data/ext/ruby_prof/rp_fast_call_tree_printer.h +10 -0
  21. data/ext/ruby_prof/rp_measure.c +71 -0
  22. data/ext/ruby_prof/rp_measure.h +56 -0
  23. data/ext/ruby_prof/rp_measure_allocations.c +74 -0
  24. data/ext/ruby_prof/rp_measure_cpu_time.c +134 -0
  25. data/ext/ruby_prof/rp_measure_gc_runs.c +71 -0
  26. data/ext/ruby_prof/rp_measure_gc_time.c +58 -0
  27. data/ext/ruby_prof/rp_measure_memory.c +75 -0
  28. data/ext/ruby_prof/rp_measure_process_time.c +69 -0
  29. data/ext/ruby_prof/rp_measure_wall_time.c +43 -0
  30. data/ext/ruby_prof/rp_method.c +717 -0
  31. data/ext/ruby_prof/rp_method.h +79 -0
  32. data/ext/ruby_prof/rp_stack.c +221 -0
  33. data/ext/ruby_prof/rp_stack.h +81 -0
  34. data/ext/ruby_prof/rp_thread.c +312 -0
  35. data/ext/ruby_prof/rp_thread.h +36 -0
  36. data/ext/ruby_prof/ruby_prof.c +800 -0
  37. data/ext/ruby_prof/ruby_prof.h +64 -0
  38. data/ext/ruby_prof/vc/ruby_prof.sln +32 -0
  39. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +108 -0
  40. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +110 -0
  41. data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +110 -0
  42. data/lib/ruby-prof.rb +63 -0
  43. data/lib/ruby-prof/aggregate_call_info.rb +76 -0
  44. data/lib/ruby-prof/assets/call_stack_printer.css.html +117 -0
  45. data/lib/ruby-prof/assets/call_stack_printer.js.html +385 -0
  46. data/lib/ruby-prof/assets/call_stack_printer.png +0 -0
  47. data/lib/ruby-prof/assets/flame_graph_printer.lib.css.html +149 -0
  48. data/lib/ruby-prof/assets/flame_graph_printer.lib.js.html +707 -0
  49. data/lib/ruby-prof/assets/flame_graph_printer.page.js.html +56 -0
  50. data/lib/ruby-prof/assets/flame_graph_printer.tmpl.html.erb +39 -0
  51. data/lib/ruby-prof/call_info.rb +111 -0
  52. data/lib/ruby-prof/call_info_visitor.rb +40 -0
  53. data/lib/ruby-prof/compatibility.rb +186 -0
  54. data/lib/ruby-prof/method_info.rb +109 -0
  55. data/lib/ruby-prof/printers/abstract_printer.rb +85 -0
  56. data/lib/ruby-prof/printers/call_info_printer.rb +41 -0
  57. data/lib/ruby-prof/printers/call_stack_printer.rb +260 -0
  58. data/lib/ruby-prof/printers/call_tree_printer.rb +130 -0
  59. data/lib/ruby-prof/printers/dot_printer.rb +132 -0
  60. data/lib/ruby-prof/printers/fast_call_tree_printer.rb +87 -0
  61. data/lib/ruby-prof/printers/flame_graph_html_printer.rb +59 -0
  62. data/lib/ruby-prof/printers/flame_graph_json_printer.rb +157 -0
  63. data/lib/ruby-prof/printers/flat_printer.rb +70 -0
  64. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +64 -0
  65. data/lib/ruby-prof/printers/graph_html_printer.rb +244 -0
  66. data/lib/ruby-prof/printers/graph_printer.rb +116 -0
  67. data/lib/ruby-prof/printers/multi_printer.rb +58 -0
  68. data/lib/ruby-prof/profile.rb +22 -0
  69. data/lib/ruby-prof/profile/exclude_common_methods.rb +201 -0
  70. data/lib/ruby-prof/rack.rb +95 -0
  71. data/lib/ruby-prof/task.rb +147 -0
  72. data/lib/ruby-prof/thread.rb +35 -0
  73. data/lib/ruby-prof/version.rb +4 -0
  74. data/lib/ruby-prof/walker.rb +95 -0
  75. data/lib/unprof.rb +10 -0
  76. data/ruby-prof.gemspec +56 -0
  77. data/test/aggregate_test.rb +136 -0
  78. data/test/basic_test.rb +128 -0
  79. data/test/block_test.rb +74 -0
  80. data/test/call_info_test.rb +78 -0
  81. data/test/call_info_visitor_test.rb +31 -0
  82. data/test/duplicate_names_test.rb +32 -0
  83. data/test/dynamic_method_test.rb +55 -0
  84. data/test/enumerable_test.rb +21 -0
  85. data/test/exceptions_test.rb +16 -0
  86. data/test/exclude_methods_test.rb +146 -0
  87. data/test/exclude_threads_test.rb +53 -0
  88. data/test/fiber_test.rb +79 -0
  89. data/test/issue137_test.rb +63 -0
  90. data/test/line_number_test.rb +71 -0
  91. data/test/measure_allocations_test.rb +26 -0
  92. data/test/measure_cpu_time_test.rb +213 -0
  93. data/test/measure_gc_runs_test.rb +32 -0
  94. data/test/measure_gc_time_test.rb +36 -0
  95. data/test/measure_memory_test.rb +33 -0
  96. data/test/measure_process_time_test.rb +63 -0
  97. data/test/measure_wall_time_test.rb +255 -0
  98. data/test/module_test.rb +45 -0
  99. data/test/multi_measure_test.rb +38 -0
  100. data/test/multi_printer_test.rb +83 -0
  101. data/test/no_method_class_test.rb +15 -0
  102. data/test/pause_resume_test.rb +166 -0
  103. data/test/prime.rb +54 -0
  104. data/test/printers_test.rb +255 -0
  105. data/test/printing_recursive_graph_test.rb +127 -0
  106. data/test/rack_test.rb +93 -0
  107. data/test/recursive_test.rb +212 -0
  108. data/test/singleton_test.rb +38 -0
  109. data/test/stack_printer_test.rb +65 -0
  110. data/test/stack_test.rb +138 -0
  111. data/test/start_stop_test.rb +112 -0
  112. data/test/test_helper.rb +264 -0
  113. data/test/thread_test.rb +187 -0
  114. data/test/unique_call_path_test.rb +202 -0
  115. data/test/yarv_test.rb +55 -0
  116. metadata +211 -0
data/CHANGES ADDED
@@ -0,0 +1,483 @@
1
+ AIRBNB CHANGES
2
+ ==============
3
+
4
+ 0.0.1 (based off 0.16.2)
5
+ =====
6
+
7
+ * improved method naming in callgrind output
8
+ * eliminate methods during profiling
9
+ * detect recursion during profiling
10
+ * WIP flamegraph printer
11
+ * optimized C impl of CallTreePrinter
12
+ * collect multiple measures during a profile run
13
+
14
+ UPSTREAM CHANGES
15
+ ================
16
+
17
+ 0.16.2 (2016-08-25)
18
+ =====================
19
+ * fixed incorrect setting of RUBY_VERSION macro
20
+
21
+ 0.16.1 (2016-08-24)
22
+ =====================
23
+ * fixed compile problem with ruby 2.1.10
24
+
25
+ 0.16.0 (2016-08-24)
26
+ =====================
27
+ * ruby-prof can now be installed if ruby has been compiled with --disable-gems or
28
+ RUBYOPT includes --disable-gems (thx to Arthur Nogueira Neves)
29
+ * Profile.new now accepts and prefers an options hash:
30
+ - measure_mode: one of the RubyProf measure mode constants
31
+ - exclude_threads: an array of threads to ignore when collecting profile data
32
+ - include_threads: an array of threads to include when collecting profile data
33
+ - merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
34
+ * overhauled printer for cachegrind profiles:
35
+ - profile data for each thread dumped to a separate file, as kcachegrind does not
36
+ fully implement the cachegrind specification
37
+ - this required a change in interface: it's now necessary to specify a directory
38
+ where to dump the cachegrind files
39
+ - naming convention for cachegrind files changed so that kcachegrind shows them
40
+ all in the open dialog
41
+ * improved Rack middleware:
42
+ - it's now possible to use the MultiPrinter
43
+ - new option ignore_existing_threads: will ignore all prexisiting threads
44
+ when profiling a request, except the thread perfoming the request.
45
+ - new option request_thread_only: will ignore all preexisting threads, but also
46
+ all threads spwaned during the execution of the rack request.
47
+ - new option merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
48
+ * fixed setting threshold bug when displaying stack profiles (thx to Michal Konarski)
49
+ * code related to printing profiles is now autoloaded for efficiency (thx to Dave Gynn)
50
+
51
+ 0.15.9 (2015-12-08)
52
+ ======================
53
+ * rack profiler now supports lambdas for generating profile paths (thx to Jean Rougé)
54
+ * fixed a bug when printing graph profiles
55
+
56
+ 0.15.8 (2015-04-24)
57
+ ======================
58
+ * added missing assets to gem build
59
+ * fixed randomly failing test
60
+
61
+ 0.15.7 (2015-04-23)
62
+ ======================
63
+ * html profiles are now single page (thx to Thomas Leishman)
64
+
65
+ 0.15.6 (2015-02-22)
66
+ ======================
67
+ * improved upon computing children time in graph printers
68
+
69
+ 0.15.5 (2015-02-22)
70
+ ======================
71
+ * changed output format of flat_printer_with_line_number
72
+ * support using multi printer from command line (Dov Murik)
73
+
74
+ 0.15.4 (2015-02-14)
75
+ ======================
76
+ * using env variable to specify mesaurement mode work again
77
+ * measuring memory/object allocations works for 2.1 adn 2.2 again
78
+
79
+ 0.15.3 (2015-01-16)
80
+ ======================
81
+ * support ruby 2.2.0
82
+
83
+ 0.15.2 (2014-05-20)
84
+ ======================
85
+ * rack middleware creates print dir for profile result (Neng)
86
+
87
+ 0.15.1 (2014-05-20)
88
+ ======================
89
+ * added license to gemspec
90
+
91
+ 0.15.0 (2014-05-02)
92
+ ======================
93
+ * improved cpu time measurement (Charlie Somerville)
94
+
95
+ 0.14.2 (2014-01-05)
96
+ ======================
97
+ * hopefully fixed compile problem under Windows
98
+
99
+ 0.14.0 (2014-01-02)
100
+ ======================
101
+ * support ruby 2.1.0
102
+ * dropped support for 1.8.x, 1.9.1 and 1.9.2
103
+
104
+ 0.13.1 (2013-12-14)
105
+ ======================
106
+ * speed up for displaying large call stacks (Benjamin Quoming)
107
+
108
+ 0.13 (2013-03-10)
109
+ ======================
110
+ * support fibers on 1.9.x+
111
+ * improved display for very wide call stacks (Sammy Larbi)
112
+
113
+ 0.12.2 (2013-02-13)
114
+ ======================
115
+ * Fixed segfault when using falcon or railsexpress patches for 1.9.3
116
+
117
+ 0.12.1 (2013-01-07)
118
+ ======================
119
+ * Add back in pause/resume support since Rails uses it
120
+
121
+ 0.12.0 (2013-01-06)
122
+ ======================
123
+ * Ruby 2.0.0 support (Charlie Savage)
124
+ * Fix issue where profiling results could exceed 100% if profile code had multiple top level methods (Charlie Savage)
125
+ * Replaced RubyProf::Thread#top_method with RubyProf::Thread#top_methods (Charlie Savage)
126
+ * Added RubyProf::Thread#total_time (Charlie Savage)
127
+ * Remove the -r and -e command line options. If you need specific libraries or code profiled then add them
128
+ to your code (Charlie Savage).
129
+ * Rewrite ruby-prof script to be more self-contained (Gary Weaver)
130
+ * Fix list formatting in readme (Thilo Rusche)
131
+ * Remove pause/resume support since its buggy and complicates the code
132
+
133
+ 0.11.3 (2012-12-27)
134
+ ======================
135
+ * Prefix c functions with prof_ to avoid name conflicts (Kenta Murata)
136
+ * Update ruby-prof script to avoid seg faults (Gary Weaver)
137
+ * Rakefile updates (Roger Pack)
138
+ * Fix regexp file reading (Gilbert Roulot)
139
+ * Update documentation (Timo Schilling)
140
+ * Fix up ruby warnings (Mike Gehard)
141
+ * Remove duplicate code (Chas Lemley)
142
+
143
+
144
+ 0.11.2 (2012-05-06)
145
+ ======================
146
+ * Fix compile issue with BOOL. Should be _Bool for C99.
147
+
148
+
149
+ 0.11.1 (2012-05-06)
150
+ ======================
151
+ * Added option --exclude-common-callbacks, plus exclude #map and #inject in common cycles (Vasily Fedoseyev)
152
+ * Add option --exclude-common-cycles to exclude common iterators (Vasily Fedoseyev)
153
+ * Allow method elimination from command line via '-x' and '-X' keys (Vasily Fedoseyev)
154
+
155
+
156
+ 0.11.0 (2012-05-05)
157
+ ======================
158
+ * Fix pause/resume so it actually works and add tests (David Barri)
159
+ * Resume now returns the result of the block when given (David Barri)
160
+ * Make recursive method explanation more clear (Charlie Savage)
161
+ * Fix ruby warnings (Charlie Savage)
162
+ * Toggle GC.enable_stats when profiling for memory to get the data (Vasily Fedoseyev)
163
+ * Fix patched ruby support and remove some warnings (Vasily Fedoseyev)
164
+ * Fix tests on 1.8.7 (rogerdpack)
165
+
166
+
167
+ 0.11.0.rc3 (2012-03-26)
168
+ ======================
169
+ * Include missing files in gemspec (Charlie Savage).
170
+
171
+
172
+ 0.11.0.rc2 (2012-03-25)
173
+ ======================
174
+ * Lots of improvements to Rack handler - this can be used to profile requests
175
+ in Rails and other rack-based ruby web frameworks (Charlie Savage).
176
+ * Reimplemented handling of recursive calls using CallInfoVisitor (Charlie Savage).
177
+ * Fix bug where child times were not correctly reported in complicated
178
+ call graphs with recursion like in frameworks like Rails (Charlie Savage).
179
+ * Add in recursive call information to Flat, Graph and Graph HTML reports (Charlie Savage).
180
+ * Add in new thread class add added RubyProf::Thread#top_method to
181
+ make report generation easier (Charlie Savage).
182
+ * Add in CallInfoVisitor class to make it easy to iterate over a call graph (Charlie Savage).
183
+ * Add in CallInfoPrinter to make it visualize RubyProf's internal call graphs (Charlie Savage).
184
+ * Significant updates to documentation (Charlie Savage).
185
+ * More c code cleanup (Charlie Savage).
186
+
187
+ 0.11.0.rc1 (2012-03-24)
188
+ ======================
189
+ * Big internal refactoring of C code to make RubyProf easier to understand and extend (Charlie Savage).
190
+ * Profile results are now returned as instances of a new class RubyProf::Profile. The old api
191
+ is supported via a compatability layer that at some point will be deprecated. (Charlie Savage).
192
+ * On Windows, use QueryPerformanceCounter and QueryPerformanceFrequency to measure CPU time instead
193
+ of rdtsc. This change is based on Microsoft's recommendation (Charlie Savage).
194
+ * On Windows use GetProcessTimes to return real PROCESS_TIME times instead of wall times (Charlie Savage).
195
+ * Split out tests for each time of measurement (cpu_time, process_time, etc.) (Charlie Savage).
196
+ * Dropped support for Ruby 1.8.4 and 1.8.6 and 1.9.0 (Charlie Savage).
197
+ * Added support for sorting results by total, self, wait and child times (Jan Suchal)
198
+ * Added tests for sorting behaviour & removed options from constructor to print method (Jan Suchal)
199
+ * Fix line number tests due to changes at top of file (Charlie Savage).
200
+ * Add encoding statement to top of all files for Ruby 1.9.x compatability (Charlie Savage).
201
+ * Add def file for VC to avoid the whole declspec annoyance (Charlie Savage).
202
+ * Update test suite to ensure current working directory is correct (Charlie Savage).
203
+ * Modernize gem file and remove various custom/home grown solutions that aren't needed anymore (Charlie Savage).
204
+ * Remove custom mingw build scripts, use rake compiler instead (Charlie Savage).
205
+ * Fixes for compiling with VC 2010 (Charlie Savage).
206
+
207
+ 0.10.8 (2011-07-06)
208
+ ======================
209
+ * 1.9.3 super class (Roger Pack)
210
+
211
+ 0.10.7 (2011-05-09)
212
+ ======================
213
+ * Fix a bug with REE's GC stats. Issue #53 [thanks graaff]
214
+
215
+ 0.10.6 (2011-04-29)
216
+ ======================
217
+ * Slightly more normalized url for linux/windows links to files.
218
+
219
+ 0.10.5 (2011-04-20)
220
+ =======================
221
+ * 1.8.6 compat for -v command (bug fix)
222
+
223
+ 0.10.4 (2011-04-20)
224
+ =======================
225
+ * Faster load time for ruby-prof itself.
226
+
227
+ 0.10.3
228
+ =======================
229
+ * Can cleanly load before rubygems now.
230
+
231
+ 0.10.2
232
+ =======================
233
+ * Fix for 1.9.2, os x for latest commits (thanks skaes!)
234
+
235
+ 0.10.1
236
+ =======================
237
+ * Fix bug in linux wall time, also load with only relative paths so that you can use it to benchmark rubygems startup overhead,
238
+ itself.
239
+
240
+ 0.10.0
241
+ =======================
242
+ * Some rdoc changes, for linux wall time attempt to use higher granularity (thanks to all the contributors for this round!)
243
+
244
+ 0.9.2
245
+ =======================
246
+ * Make graphviz work on 1.8.6
247
+ * Roll back some 1.9.2 optimizations until I can figure out what caused them.
248
+
249
+ 0.9.1
250
+ =======================
251
+ * Add a graphviz output
252
+
253
+ 0.9.0
254
+ =======================
255
+ * measurements for recursive methods are now correct
256
+ * gave up on splitting up recursive methods according to call depth
257
+ * made it possible to eliminate methods from profiling results
258
+ * new printer for call stack visualization
259
+ * new printer to print several profiles in one run
260
+ * HTML profiles contain Textmate links so you can jump to the source code easily
261
+ * producing an event log is now a runtime option
262
+
263
+ 0.7.10 (2009-01-22)
264
+ =======================
265
+ * fix SEGFAULT in 1.9
266
+ * add new printer flat_printer_with_line_numbers
267
+
268
+ 0.7.7 (2009-01-13)
269
+ ======================
270
+ * "fix" multi threading support for 1.9 http://redmine.ruby-lang.org/issues/show/2012
271
+ * speedups
272
+
273
+ 0.7.6 (2009-12-31)
274
+ ======================
275
+ * fix some tests for 1.9 (no real code changes)
276
+
277
+ 0.7.5 (2009-12)
278
+ ========================
279
+ * fix a GC collection bug (nobu's patch).
280
+ * correctly report recursive call depths (Kevin Scaldeferri).
281
+ * sort methods on output (Kevin Scaldeferri).
282
+
283
+ 0.7.3 (2008-12-09)
284
+ ========================
285
+ * Fixed compile error with new x86_64 code using GCC.
286
+
287
+ 0.7.2 (2008-12-08)
288
+ ========================
289
+ * Fixed major bug in printing child methods in graph reports.
290
+
291
+ * Fixes for supporting x86_64 machines (Diego Pettenò)
292
+
293
+
294
+ 0.7.1 (2008-11-28)
295
+ ========================
296
+ * Added new AggregateCallInfo class for printers to
297
+ make results easier to read. Take this call sequence
298
+ for example:
299
+
300
+ A B C
301
+ | | |
302
+ Z A A
303
+ | |
304
+ Z Z
305
+
306
+ By default, ruby-prof will show that Z was called by 3 separate
307
+ instances of A. In an IDE that is helpful but in a text report
308
+ it is not since it makes the report much harder to read.
309
+ As a result, printers now aggregate together callers (and children),
310
+ matching ruby-prof's output from versions prior to 0.7.0.
311
+
312
+ * Fixes for supporting x86_64 machines (Matt Sanford)
313
+
314
+
315
+ 0.7.0 (2008-11-04)
316
+ ========================
317
+
318
+ Features
319
+ --------
320
+ * Added two new methods - RubyProf.resume and RubyProf.pause.
321
+ RubyProf.resume takes an optional block, which ensures that
322
+ RubyProf.pause is called. For example:
323
+
324
+ 10.times do |i|
325
+ RubyProf.resume do
326
+ # Some long process
327
+ end
328
+ end
329
+
330
+ result = RubyProf.stop
331
+
332
+ * Added support for profiling tests that use Ruby's built-in
333
+ unit test framework (ie, test derived from
334
+ Test::Unit::TestCase). To enable profiling simply add
335
+ the following line of code to your test class:
336
+
337
+ include RubyProf::Test
338
+
339
+ By default, profiling results are written to the current
340
+ processes working directory. To change this, or other
341
+ profiling options, simply modify the PROFILE_OPTIONS hash
342
+ table as needed.
343
+
344
+ * Used the new support for profiling test cases to revamp
345
+ the way that Rails profiling works. For more information
346
+ please refer to RubyProf's documentation.
347
+
348
+ * Keep track of call stack for each method to enable more
349
+ powerful profile visualizations in Integrated Development
350
+ Environments (Hin Boean, work supported by CodeGear).
351
+
352
+ * Expose measurements to Ruby (Jeremy Kemper).
353
+
354
+ * Add support for additional memory measurements modes in Ruby 1.9 (Jeremy Kemper).
355
+
356
+ * Add support for Lloyd Hilaiel's Ruby patch for measuring total heap size.
357
+ See http://lloydforge.org/projects/ruby. (Jeremy Kemper).
358
+
359
+
360
+ Fixes
361
+ -------
362
+ * RubyProf.profile no longer crashes if an exception is
363
+ thrown during a profiling run.
364
+
365
+ * Measure memory in fractional kilobytes rather than rounding down (Jeremy Kemper)
366
+
367
+
368
+ 0.6.0 (2008-02-03)
369
+ ========================
370
+
371
+ ruby-prof 0.6.0 adds support for Ruby 1.9 and memory profiling.
372
+
373
+ Features
374
+ --------
375
+ * Added support for ruby 1.9 (Shugo Maeda)
376
+ * Added support for outputting printer results to a String, Array or IO
377
+ object (Michael Granger)
378
+ * Add new memory profiling mode. Note this mode depends on a
379
+ patched Ruby interpreter (Alexander Dymo)
380
+
381
+ Fixes
382
+ -------
383
+ * Improvements to GraphHtmlPrinter including updated documentation,
384
+ fixes for min_time support, ability to specify templates using
385
+ strings or filenames, and table layout fixes (Makoto Kuwata)
386
+ * Fixes to scaling factor for calltrees so that precision is not lost
387
+ due to the conversion to doubles (Sylvain Joyeux)
388
+ * Changed constant ALLOCATED_OBJECTS to ALLOCATIONS in the C code to
389
+ match the Ruby code (Sylvain Joyeux)
390
+ * Added support for calltree printer to ruby-prof binary script (Sylvain Joyeux)
391
+ * Fix support for the allocator measure mode to extconf.rb (Sylvain Joyeux)
392
+ * Honor measure mode when specified on the command line (Sylvain Joyeux)
393
+ * Sorting of methods by total time was incorrect (Dan Fitch, Charlie Savage)
394
+ * Fix ruby-prof to work with the latest version of GEMS (Alexander Dymo)
395
+ * Always define MEASURE_CPU_TIME and MEASURE_ALLOCATIONS in Ruby code, but
396
+ set their values to nil if the functionality is not available.
397
+
398
+
399
+ 0.5.2 (2007-07-19)
400
+ ========================
401
+
402
+ ruby-prof 0.5.2 is a bug fix release.
403
+
404
+ Fixes
405
+ -------
406
+ * Include missing rails plugin
407
+
408
+
409
+ 0.5.1 (2007-07-18)
410
+ ========================
411
+
412
+ ruby-prof 0.5.1 is a bug fix and performance release.
413
+
414
+ Performance
415
+ --------
416
+ * Significantly reduced the number of thread lookups by
417
+ caching the last executed thread.
418
+
419
+ Fixes
420
+ -------
421
+ * Properly escape method names in HTML reports
422
+ * Fix use of -m and --min-percent command line switches
423
+ * Default source file information to ruby_runtime#0 for c calls
424
+ * Moved rails_plugin to top level so it is more obvious
425
+ * Updated rails_plugin to write reports to the current
426
+ Rails log directory
427
+ * Added additional tests
428
+
429
+
430
+ 0.5.0 (2007-07-09)
431
+ ========================
432
+
433
+ Features
434
+ --------
435
+ * Added support for timing multi-threaded applications
436
+ * Added support for 64 bit systems (patch from Diego 'Flameeyes' Petten)
437
+ * Added suport for outputting data in the format used by
438
+ KCacheGrind (patch from Carl Shimer)
439
+ * Add filename and line numbers to call tree information (patch from Carl Shimer)
440
+ * Added Visual Studio 2005 project file.
441
+ * Added replace-progname switch, als rcov.
442
+ * Added better support for recursive methods
443
+ * Added better support for profiling Rails applications
444
+
445
+ Fixes
446
+ -------
447
+ * Fixes bug when the type of an attached object (singleton) is inherited
448
+ from T_OBJECT as opposed to being a T_OBJECT (identified by Francis Cianfrocca)
449
+ * ruby-prof now works in IRB.
450
+ * Fix sort order in reports.
451
+ * Fixed rdoc compile error.
452
+ * Fix tabs in erb template for graph html report on windows.
453
+
454
+ 0.4.1 (2006-06-26)
455
+ ========================
456
+
457
+ Features
458
+ --------
459
+ * Added a RubyProf.running? method to indicate whether a profile is in progress.
460
+ * Added tgz and zip archives to release
461
+
462
+ Fixes
463
+ -------
464
+ * Duplicate method names are now allowed
465
+ * The documentation has been updated to show the correct API usage is RubyProf.stop not RubyProf.end
466
+
467
+
468
+ 0.4.0 (2006-06-16)
469
+ ========================
470
+ Features
471
+ --------
472
+ * added support for call graphs
473
+ * added support for printers. Currently there is a FlatPrinter,
474
+ GraphPrinter and GraphHtmlPrinter.
475
+ * added support for recursive methods
476
+ * added Windows support
477
+ * now packaged as a RubyGem
478
+
479
+ Fixes
480
+ -------
481
+ * Fixes bug where RubyProf would crash depending on the
482
+ way it was invoked - for example, it did not run when
483
+ used with Arachno Ruby's customized version of Ruby.