0.17.0 (2017-12-17)
=====================
* Changed method/class names produced by the callgrind printer to be more kcachegrind
  friendly (thx to Nelson Gauthier and Ben Hughes, see https://github.com/ruby-prof/ruby-prof/pull/200).
* Recursive instances of a method call are now dtected during profiling (thx to Nelson Gauthier and
  Ben Hughes, see https://github.com/ruby-prof/ruby-prof/pull/201).
* Methods can now be ignored during a profiling run instead of eliminating them
  after a profile run, which has been deprecated (thx to Nelson Gauthier and Ben Hughes,
  see https://github.com/ruby-prof/ruby-prof/pull/202).
* Use RUBY_PROF_EDITOR_URI=emacs to open source code links in the one true editor.
  (thx Alexander Egorov, see https://github.com/ruby-prof/ruby-prof/pull/183 and
  https://github.com/typester/emacs-handler).
* Fixed that calling profile.stop would stop profiling all active profiling runs.
* Fixed that remembering parent call frame pointer before stack reallocation could cause a segfault.

0.16.2 (2016-08-25)
=====================
* fixed incorrect setting of RUBY_VERSION macro

0.16.1 (2016-08-24)
=====================
* fixed compile problem with ruby 2.1.10

0.16.0 (2016-08-24)
=====================
* ruby-prof can now be installed if ruby has been compiled with --disable-gems or
  RUBYOPT includes --disable-gems (thx to Arthur Nogueira Neves)
* Profile.new now accepts and prefers an options hash:
  - measure_mode: one of the RubyProf measure mode constants
  - exclude_threads: an array of threads to ignore when collecting profile data
  - include_threads: an array of threads to include when collecting profile data
  - merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
* overhauled printer for cachegrind profiles:
  - profile data for each thread dumped to a separate file, as kcachegrind does not
    fully implement the cachegrind specification
  - this required a change in interface: it's now necessary to specify a directory
    where to dump the cachegrind files
  - naming convention for cachegrind files changed so that kcachegrind shows them
    all in the open dialog
* improved Rack middleware:
  - it's now possible to use the MultiPrinter
  - new option ignore_existing_threads: will ignore all prexisiting threads
    when profiling a request, except the thread perfoming the request.
  - new option request_thread_only: will ignore all preexisting threads, but also
    all threads spwaned during the execution of the rack request.
  - new option merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
* fixed setting threshold bug when displaying stack profiles (thx to Michal Konarski)
* code related to printing profiles is now autoloaded for efficiency (thx to Dave Gynn)

0.15.9 (2015-12-08)
======================
* rack profiler now supports lambdas for generating profile paths (thx to Jean Rougé)
* fixed a bug when printing graph profiles

0.15.8 (2015-04-24)
======================
* added missing assets to gem build
* fixed randomly failing test

0.15.7 (2015-04-23)
======================
* html profiles are now single page (thx to Thomas Leishman)

0.15.6 (2015-02-22)
======================
* improved upon computing children time in graph printers

0.15.5 (2015-02-22)
======================
* changed output format of flat_printer_with_line_number
* support using multi printer from command line (Dov Murik)

0.15.4 (2015-02-14)
======================
* using env variable to specify mesaurement mode work again
* measuring memory/object allocations works for 2.1 adn 2.2 again

0.15.3 (2015-01-16)
======================
* support ruby 2.2.0

0.15.2 (2014-05-20)
======================
* rack middleware creates print dir for profile result (Neng)

0.15.1 (2014-05-20)
======================
* added license to gemspec

0.15.0 (2014-05-02)
======================
* improved cpu time measurement (Charlie Somerville)

0.14.2 (2014-01-05)
======================
* hopefully fixed compile problem under Windows

0.14.0 (2014-01-02)
======================
* support ruby 2.1.0
* dropped support for 1.8.x, 1.9.1 and 1.9.2

0.13.1 (2013-12-14)
======================
* speed up for displaying large call stacks (Benjamin Quoming)

0.13 (2013-03-10)
======================
* support fibers on 1.9.x+
* improved display for very wide call stacks (Sammy Larbi)

0.12.2 (2013-02-13)
======================
* Fixed segfault when using falcon or railsexpress patches for 1.9.3

0.12.1 (2013-01-07)
======================
* Add back in pause/resume support since Rails uses it

0.12.0 (2013-01-06)
======================
* Ruby 2.0.0 support (Charlie Savage)
* Fix issue where profiling results could exceed 100% if profile code had multiple top level methods (Charlie Savage)
* Replaced RubyProf::Thread#top_method with RubyProf::Thread#top_methods (Charlie Savage)
* Added RubyProf::Thread#total_time (Charlie Savage)
* Remove the -r and -e command line options.  If you need specific libraries or code profiled then add them
  to your code (Charlie Savage).
* Rewrite ruby-prof script to be more self-contained (Gary Weaver)
* Fix list formatting in readme (Thilo Rusche)
* Remove pause/resume support since its buggy and complicates the code

0.11.3 (2012-12-27)
======================
* Prefix c functions with prof_ to avoid name conflicts (Kenta Murata)
* Update ruby-prof script to avoid seg faults (Gary Weaver)
* Rakefile updates (Roger Pack)
* Fix regexp file reading (Gilbert Roulot)
* Update documentation (Timo Schilling)
* Fix up ruby warnings (Mike Gehard)
* Remove duplicate code (Chas Lemley)


0.11.2 (2012-05-06)
======================
* Fix compile issue with BOOL.  Should be _Bool for C99.


0.11.1 (2012-05-06)
======================
* Added option --exclude-common-callbacks, plus exclude #map and #inject in common cycles (Vasily Fedoseyev)
* Add option --exclude-common-cycles to exclude common iterators (Vasily Fedoseyev)
* Allow method elimination from command line via '-x' and '-X' keys (Vasily Fedoseyev)


0.11.0 (2012-05-05)
======================
* Fix pause/resume so it actually works and add tests (David Barri)
* Resume now returns the result of the block when given (David Barri)
* Make recursive method explanation more clear (Charlie Savage)
* Fix ruby warnings (Charlie Savage)
* Toggle GC.enable_stats when profiling for memory to get the data (Vasily Fedoseyev)
* Fix patched ruby support and remove some warnings (Vasily Fedoseyev)
* Fix tests on 1.8.7 (rogerdpack)


0.11.0.rc3 (2012-03-26)
======================
* Include missing files in gemspec (Charlie Savage).


0.11.0.rc2 (2012-03-25)
======================
* Lots of improvements to Rack handler - this can be used to profile requests
  in Rails and other rack-based ruby web frameworks (Charlie Savage).
* Reimplemented handling of recursive calls using CallInfoVisitor (Charlie Savage).
* Fix bug where child times were not correctly reported in complicated
  call graphs with recursion like in frameworks like Rails (Charlie Savage).
* Add in recursive call information to Flat, Graph and Graph HTML reports (Charlie Savage).
* Add in new thread class add added RubyProf::Thread#top_method to
  make report generation easier (Charlie Savage).
* Add in CallInfoVisitor class to make it easy to iterate over a call graph (Charlie Savage).
* Add in CallInfoPrinter to make it visualize RubyProf's internal call graphs (Charlie Savage).
* Significant updates to documentation (Charlie Savage).
* More c code cleanup (Charlie Savage).

0.11.0.rc1 (2012-03-24)
======================
* Big internal refactoring of C code to make RubyProf easier to understand and extend (Charlie Savage).
* Profile results are now returned as instances of a new class RubyProf::Profile.  The old api
  is supported via a compatability layer that at some point will be deprecated.  (Charlie Savage).
* On Windows, use QueryPerformanceCounter and QueryPerformanceFrequency to measure CPU time instead
  of rdtsc.  This change is based on Microsoft's recommendation (Charlie Savage).
* On Windows use GetProcessTimes to return real PROCESS_TIME times instead of wall times (Charlie Savage).
* Split out tests for each time of measurement (cpu_time, process_time, etc.) (Charlie Savage).
* Dropped support for Ruby 1.8.4 and 1.8.6 and 1.9.0 (Charlie Savage).
* Added support for sorting results by total, self, wait and child times (Jan Suchal)
* Added tests for sorting behaviour & removed options from constructor to print method (Jan Suchal)
* Fix line number tests due to changes at top of file (Charlie Savage).
* Add encoding statement to top of all files for Ruby 1.9.x compatability (Charlie Savage).
* Add def file for VC to avoid the whole declspec annoyance (Charlie Savage).
* Update test suite to ensure current working directory is correct (Charlie Savage).
* Modernize gem file and remove various custom/home grown solutions that aren't needed anymore (Charlie Savage).
* Remove custom mingw build scripts, use rake compiler instead  (Charlie Savage).
* Fixes for compiling with VC 2010 (Charlie Savage).

0.10.8 (2011-07-06)
======================
* 1.9.3 super class (Roger Pack)

0.10.7 (2011-05-09)
======================
* Fix a bug with REE's GC stats. Issue #53 [thanks graaff]

0.10.6 (2011-04-29)
======================
* Slightly more normalized url for linux/windows links to files.

0.10.5 (2011-04-20)
=======================
* 1.8.6 compat for -v command (bug fix)

0.10.4 (2011-04-20)
=======================
* Faster load time for ruby-prof itself.

0.10.3
=======================
* Can cleanly load before rubygems now.

0.10.2
=======================
* Fix for 1.9.2, os x for latest commits (thanks skaes!)

0.10.1
=======================
* Fix bug in linux wall time, also load with only relative paths so that you can use it to benchmark rubygems startup overhead,
  itself.

0.10.0
=======================
* Some rdoc changes, for linux wall time attempt to use higher granularity (thanks to all the contributors for this round!)

0.9.2
=======================
* Make graphviz work on 1.8.6
* Roll back some 1.9.2 optimizations until I can figure out what caused them.

0.9.1
=======================
* Add a graphviz output

0.9.0
=======================
* measurements for recursive methods are now correct
* gave up on splitting up recursive methods according to call depth
* made it possible to eliminate methods from profiling results
* new printer for call stack visualization
* new printer to print several profiles in one run
* HTML profiles contain Textmate links so you can jump to the source code easily
* producing an event log is now a runtime option

0.7.10 (2009-01-22)
=======================
* fix SEGFAULT in 1.9
* add new printer flat_printer_with_line_numbers

0.7.7 (2009-01-13)
======================
* "fix" multi threading support for 1.9 http://redmine.ruby-lang.org/issues/show/2012
* speedups

0.7.6 (2009-12-31)
======================
* fix some tests for 1.9 (no real code changes)

0.7.5 (2009-12)
========================
* fix a GC collection bug (nobu's patch).
* correctly report recursive call depths (Kevin Scaldeferri).
* sort methods on output (Kevin Scaldeferri).

0.7.3 (2008-12-09)
========================
* Fixed compile error with new x86_64 code using GCC.

0.7.2 (2008-12-08)
========================
* Fixed major bug in printing child methods in graph reports.

* Fixes for supporting x86_64 machines (Diego Pettenò)


0.7.1 (2008-11-28)
========================
* Added new AggregateCallInfo class for printers to
  make results easier to read.  Take this call sequence
  for example:

   A   B   C
   |   |   |
   Z   A   A
       |   |
       Z   Z

  By default, ruby-prof will show that Z was called by 3 separate
  instances of A.  In an IDE that is helpful but in a text report
  it is not since it makes the report much harder to read.
  As a result, printers now aggregate together callers (and children),
  matching ruby-prof's output from versions prior to 0.7.0.

* Fixes for supporting x86_64 machines (Matt Sanford)


0.7.0 (2008-11-04)
========================

Features
--------
* Added two new methods - RubyProf.resume and RubyProf.pause.
  RubyProf.resume takes an optional block, which ensures that
  RubyProf.pause is called.  For example:

  10.times do |i|
    RubyProf.resume do
      # Some long process
    end
  end

  result = RubyProf.stop

* Added support for profiling tests that use Ruby's built-in
  unit test framework (ie, test derived from
  Test::Unit::TestCase).  To enable profiling simply add
  the following line of code to your test class:

    include RubyProf::Test

  By default, profiling results are written to the current
  processes working directory.  To change this, or other
  profiling options, simply modify the PROFILE_OPTIONS hash
  table as needed.

* Used the new support for profiling test cases to revamp
  the way that Rails profiling works.  For more information
  please refer to RubyProf's documentation.

* Keep track of call stack for each method to enable more
  powerful profile visualizations in Integrated Development
  Environments (Hin Boean, work supported by CodeGear).

* Expose measurements to Ruby (Jeremy Kemper).

* Add support for additional memory measurements modes in Ruby 1.9 (Jeremy Kemper).

* Add support for Lloyd Hilaiel's Ruby patch for measuring total heap size.
   See http://lloydforge.org/projects/ruby. (Jeremy Kemper).


Fixes
-------
* RubyProf.profile no longer crashes if an exception is
  thrown during a profiling run.

* Measure memory in fractional kilobytes rather than rounding down (Jeremy Kemper)


0.6.0 (2008-02-03)
========================

ruby-prof 0.6.0 adds support for Ruby 1.9 and memory profiling.

Features
--------
* Added support for ruby 1.9 (Shugo Maeda)
* Added support for outputting printer results to a String, Array or IO
  object (Michael Granger)
* Add new memory profiling mode.  Note this mode depends on a
  patched Ruby interpreter (Alexander Dymo)

Fixes
-------
* Improvements to GraphHtmlPrinter including updated documentation,
  fixes for min_time support, ability to specify templates using
  strings or filenames, and table layout fixes (Makoto Kuwata)
* Fixes to scaling factor for calltrees so that precision is not lost
  due to the conversion to doubles (Sylvain Joyeux)
* Changed constant ALLOCATED_OBJECTS to ALLOCATIONS in the C code to
  match the Ruby code (Sylvain Joyeux)
* Added support for calltree printer to ruby-prof binary script (Sylvain Joyeux)
* Fix support for the allocator measure mode to extconf.rb (Sylvain Joyeux)
* Honor measure mode when specified on the command line (Sylvain Joyeux)
* Sorting of methods by total time was incorrect (Dan Fitch, Charlie Savage)
* Fix ruby-prof to work with the latest version of GEMS (Alexander Dymo)
* Always define MEASURE_CPU_TIME and MEASURE_ALLOCATIONS in Ruby code, but
  set their values to nil if the functionality is not available.


0.5.2 (2007-07-19)
========================

ruby-prof 0.5.2 is a bug fix release.

Fixes
-------
* Include missing rails plugin


0.5.1 (2007-07-18)
========================

ruby-prof 0.5.1 is a bug fix and performance release.

Performance
--------
* Significantly reduced the number of thread lookups by
  caching the last executed thread.

Fixes
-------
* Properly escape method names in HTML reports
* Fix use of -m and --min-percent command line switches
* Default source file information to ruby_runtime#0 for c calls
* Moved rails_plugin to top level so it is more obvious
* Updated rails_plugin to write reports to the current
  Rails log directory
* Added additional tests


0.5.0 (2007-07-09)
========================

Features
--------
* Added support for timing multi-threaded applications
* Added support for 64 bit systems (patch from Diego 'Flameeyes' Petten)
* Added suport for outputting data in the format used by
  KCacheGrind (patch from Carl Shimer)
* Add filename and line numbers to call tree information (patch from Carl Shimer)
* Added Visual Studio 2005 project file.
* Added replace-progname switch, als rcov.
* Added better support for recursive methods
* Added better support for profiling Rails applications

Fixes
-------
* Fixes bug when the type of an attached object (singleton) is inherited
  from T_OBJECT as opposed to being a T_OBJECT (identified by Francis Cianfrocca)
* ruby-prof now works in IRB.
* Fix sort order in reports.
* Fixed rdoc compile error.
* Fix tabs in erb template for graph html report on windows.

0.4.1 (2006-06-26)
========================

Features
--------
* Added a RubyProf.running? method to indicate whether a profile is in progress.
* Added tgz and zip archives to release

Fixes
-------
* Duplicate method names are now allowed
* The documentation has been updated to show the correct API usage is RubyProf.stop not RubyProf.end


0.4.0 (2006-06-16)
========================
Features
--------
* added support for call graphs
* added support for printers.  Currently there is a FlatPrinter,
  GraphPrinter and GraphHtmlPrinter.
* added support for recursive methods
* added Windows support
* now packaged as a RubyGem

Fixes
-------
* Fixes bug where RubyProf would crash depending on the
  way it was invoked - for example, it did not run when
  used with Arachno Ruby's customized version of Ruby.
