rundo 0.4.0

Rundo is a redo / undo library for rust which can auto generate undo op. Below is an example to use Rundo.
Documentation
Kcov (35):
	* Only build the system daemon if libelf isn't available

	* Issue #208: Allow covering multiple binaries with the same name in the same
	  report

	-- Simon Kagstrom <simon.kagstrom@gmail.com>,

Kcov (34):
	* Issue #215: Correct build with binutils >= 2.29

	* Issue #216: Don't use SIGUNUSED (Dridi Boukelmoune)

	* Issue #211: Avoid blocking bash write (Mike Bland)

	* Issue #198: Correct skipped breakpoint count

	* Issue #92: kcov can now perform full-system instrumentation via a
	  daemon and statically instrumented binaries

	* Issue #193: Handle all available bash output (Ashley Straw)

	* Issue #187: Fix crash regression due to address verifier changes

	* Issue #166, Issue #209: Describe workaround for OSX build problems

	* Issue #183: python: Quote argument strings to avoid argv issues (Bashkar Rana)

	* Unit tests build again

	* Issue #165: bash: Provide basic parser mode to workaround bugs in the
	  parser

	* Issue #178: Port to AArch64 (though untested!)

	* Issue #180: kcov now honors LCOV_EXCL_LINE/START/STOP, so that regions of
	  code can be excluded from the report. Command-line options can also set
	  custom patterns (Me, Keith Wansbrough)

	* Issue #175: kcov can now ignore unreachable lines (Thomas Neumann)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun Sep 10 13:11:34 CEST 2017

Kcov (33):
	* Issue #167: Writers: Add pure JSON writer for gitlabCI (http://gitlab.com)
	  integration (Bryce Fisher-Fleig)

	* Issue #162: Use Xcode build in addtion to Make for Travis

	* Issue #163: Correct attaching to processes which create threads (ptrace)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Fri Jan 13 09:59:53 CET 2017

Kcov (32):
	* Issue #135: Covering binaries on OSX is now possible as well!

	* Issue #114, Issue #150, Kcov also works with codecov without changes!

	* Issue #152, Issue #154: bash: Correct handling heredoc special cases

	* Re-enable coverity for Travis CI builds again

	* Issue #148: Correct handling of PTRACE events (Niklas Ă–gren)

	* Issue #139: Create kcov-solib.pipe in a tempdir if out-dir is unfifoable

	* Issue #141: Make [merged] name configurable via --configure

	* Issue #138: Allow setting a different css file via --configure

	* Issue #140: Allow specifying command name via --configure

	* Issue #144: Allow setting configuration options manually with --configure

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Tue Nov 22 12:32:41 CET 2016

Kcov (31):
	* Exit with 0 when running --version (Pietro Monteiro)

	* travis: Run regression tests on OS X as well

	* Issue #130: bash: Correct handling of data accumulation with absolute paths

	* Issue #127: Add output support for the SonarQube coverage plugin

	* Refactor travis tests to use pyunit instead of Robot Framework

	* Allow --repace-src when running with --merge

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun Apr 17 09:42:12 CEST 2016

Kcov (30):
	* Issue #121: Add --version to display the current kcov version

	* Issue #119: Allow merged output to serve as input to another merge
	  session

	* Issue #21: Allow builds on Mac OSX as well (Python and Bash only)

	* Issue #122: Fix memory leak when adding shared libraries (jba31)

	* Issue #118: Correct merging of reports collected on another machine

	* Issue #116/#117: bash: Correct corner-cases for herecdocs and arithmetic
	  (Phil Whineray)

	* Fix various spelling errors (Veres Lajos)

	* Issue #110: Correct handling of vfork()

	* --pid= requires an executable, actually say that as well (Vincent Gibert)

	* Issue #105: Warn about --verify without binutils

	* Issue #104: Correct handling of shared libraries with build-id debug
	  information

	* Fix --skip-solibs handling

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Fri Nov 27 06:51:40 CET 2015

kcov (29):
	* Tagged v28 by mistake :-)

Kcov (28):
	* Don't report each invalid breakpoint on --verify (give a summary instead)

	* Issue #103: html: Display error message if JavaScript is disabled in
	  the browser 

	* Issue #101: Fix regression which caused --collect-only to work only
	  if the source code was available.

	* Coveralls: Use source_digest instead of source (current API?)

	* Issue #99: Add support for looking up debug info from .gnu_debuglink
	  sections (Vincent Brillault)

	* Issue #98: Show execution order in the HTML output and add headings for
	  the source view

	* Issue #26: Don't warn for non-existing ELFs (typically linux-vdso.so.1)

	* Issue #91: Correctly generate [merged] output after running two programs

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sat Jul  4 05:16:21 CEST 2015

Kcov (27):
	* Issue #90: coveralls: Publish merged results if available

	* Issue #88: bash: Correct handling of ${var#}

	* Issue #87: Allow coveralls uploads when using --merge (Ricardo Martins)

	* Issue #86: Fix build on distros with Python 3 as default (David Barnett)

	* python: Improve handling of some corner-cases for '''-strings

	* Issue #76: bash: Handle multi-line quoted strings

	* Issue #60: Add --merge option to merge output of multiple runs (i.e.,
	  what the kcov-merge script did, but now integrated)

	* Issue #81: Make --include-path= combined with --include-pattern=
	  coexist more naturally (i.e., consider both)

	* Lookup realpath of the paths passed to --include/exclude-path=

	* Issue #18: Add --verify option that checks that all breakpoints are
	  set on proper addresses (i.e., instruction boundaries)

	* Issue #80: Fix coverage accumulation for PIE executables

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Fri May  1 19:44:04 CEST 2015

Kcov (26):
	* Issue #77: Collect coverage for Position-Independent Executables
	 (Kang Seonghoon)

	* Issue #72: Don't crash on filenames <3 characters long (Kang Seonghoon)

	* Issue #71: Don't skip instructions on SIGSTOP (unbreaks PowerPC)

	* Issue #70: bash: Handle $# ad ${#var ..} (not comments)

	* Issue #66: bash: Unbreak handling of arithmetic shifts (conflict with
	  heredocs)

	* Issue #65: merge-parser: Don't panic on non-existing files (e.g., if moved)

	* Issue #64: bash: Always parse the file given on the command line

	* Issue #63: bash: Correct check for empty braces

	* Issue #62: bash: Check for balenced parenthesis (e.g., in cases)

	* Issue #51: bash: Collect coverage for #!/bin/sh executables via preloading
	  (off by default)

	* bash: Add ability to use DEBUG trap instead of PS4 (off by default, not
	  stable)

	* Unbreak accumulation (for certain programs)

	* Fix hanging regression introduced in v23 (don't take solib semaphore
	  before open/read)

	* Report file-not-found or file-not-executable errors more clearly

	* Issue #61: bash-engine: Output trace data via BASH_XTRACEFD when possible
	  (bash >= 4.2) and filter stdout to catch redirections otherwise

	* Issue #58: Lookup program in $PATH if it's not given on the command line

	* Issue #57: bash-engine: Correct handling of quoted multiline variables

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Tue Mar 17 19:16:46 CET 2015

Kcov (25):
	* Make database files smaller by storing only executed addresses

	* Issue #52: Don't include bash-helper.sh in the output

	* Issue #54: Implement handling of coverage accumulation for shared
	  libraries
	  
	* Issue #50: Make sure that Bash "heredoc" markers are words
	
	* Fix some failure handling coverity errors
	  
	* Issue #49 (WIP): Implement broken gcov engine (multiple issues still pending)

	* Refactor configuration handling to be more generic (avoid setters,
	  use key/value pairs via strings instead)
	
	* Add "capabilities" class to make parts of the implementation clearer
	  
	* HTML-writer: Correct off-by-one access to static data

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Tue Feb 10 19:38:04 CET 2015

Kcov (24):
	* Misc performance improvements here and there

	* Build: Use the travis-ci.org build service to make tests more
	  reliable.

	* Unbreak Python and Bash coverage collection on 32-bit builds

	* Correct clang build (well, in Fedora 20 it still fails)

	* Issue #43: Clarify elfutils dependency

	* Issue #46: Add support for uploading to coveralls.io via the
	 --coveralls-id=<travis-id-or-repo_token> option

	* Issue #45: Bash: Fix coverage collection when executing sub-scripts as
	  programs.

	* Issue #31: Fix handling of attaching to pid in a multithreaded process.
	  Implementation taken from GDB: kcov now loops through all threads in
	  a process and attaches to each one.

	* Issue #44: Bash: Fix issues with <<< redirection, which were parsed
	  as here documents

	* Update the HTML/Cobertura output to display single-shot, limited and
	  unlimited output in a logical way

	* Allow three hit modes for parsers/engines: Single-shot (covered or not,
	  as in the merge parser), limited (as in ptrace) and unlimited (line
	  execution count used in Python/Bash)

	* Remove some ptrace-specific stuff from the Engine interface

	* Document classes better

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Mon Jan  5 09:46:29 CET 2015

Kcov (23):
	* Correct use-after-free case when the solib thread is killed

	* Default to 5s output interval to avoid costly write-to-disk sessions
	  too often

	* Performance improvements for the Cobertura writer by reducing the amount
	  of string operations

	* Add a kcov-merge command which merges data from multiple kcov
	  directories into a single report (Chris Love)

	* Issue #39: Reduce the amount of extra output files by using filename
	  as a tie breaker instead of file data.

	* Issue #38: Fix several bugs which caused merged output to miss data
	  present in the regular output

	* Issue #37: Correct coverage accumulation for Python/bash

	* Issue #36: Collect coverage from dlopen:ed libraries (through unconditional
	  breakpoints in the dlopen call). Should also improve reliability of
	  general shared library coverage collection

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Tue Dec  2 20:42:04 CET 2014


Kcov (22):
	* Issue #35: Support installation RPATH for build (Chris Love)

	* Issue #32: Fix problems when running Python unittest modules

	* Various coverity resource leak fixes

	* Peek into files to improve performance for matching (also see Issue #33)

	* Break out solib handling from ptrace (not really related)

	* Improve ptrace performance a bit, while also simplifying code

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Wed Oct 29 12:58:18 CET 2014

Kcov (21):
	* Fix regression for coverage-of-32-bit-binaries-on-64-bit-systems introduced
	  in kcov 20

	* Slightly better file stat caching (slight performance improvement)

	* Avoid outputting merged cobertura output for single coverage runs

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Thu Aug  7 20:00:20 CEST 2014

Kcov (20):
	* Issue #25: Fix starvation bug where long report generation time could starve
	  the actual application. The bug was caused by a timestamp issue.

	* Issue #18: Provide explanation and possible workaround for SIGILL problems
	  with GCC 4.1.2

	* Issue #23: Warn if a binary has no debug symbols

	* Replace std::list/std::map with std::list/std::unordered_map where possible
	  (slight performance improvement)

	* Remove C++11 constructs (auto, nullptr, range-based for-loops) to allow
	  building with older compilers

	* Correct bug in --report-only (crash in ptrace upon termination)

	* Slight performance improvement and simplification in the lineid code

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Mon Aug  4 12:57:19 CEST 2014

Kcov (19):
	* bash coverage: Implemented support for collecting shell script
	  (sh/bash) coverage! Loosely based on shcov, which is now deprecated
	  because of this

	* html-writer: Correct executable lines/covered lines in the summary
	  (was wrong in some cases)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Mon Jun 30 18:30:37 CEST 2014

Kcov (18):
	* Performance: Improve performance by cacheing realpath()

	* HTML: Always put merged results last and don't include them in sorting

	* HTML: Coloring improvements (?) of the HTML output

	* HTML: Refactor HTML output completely to use javascript-based pages.
	  This allows selecting how to sort directly from the web page,
	  and greatly simplifies the generating C++ code

	* Correct filtering bug in the merged output, where the last
	  run would filter out data from the previous runs

	* Issue #20: Fix hanging-on-killed-by-signal

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Mon Jun  9 19:12:38 CEST 2014

Kcov (17):
	* Issue #19: Fix bug where kcov would let children which called
	  setpgid live even after terminating kcov itself (Oliver)

	* Issue #16: Output: Implement a merged mode, which shows a
	  combination of all covered programs under the [merged] link

	* Fix an HTML output bug introduced in kcov 14 where the summary
	  counts in the index page would be wrong.

	* Issue #15: Fix a crash when source lines are > ~2000 characters long

	* Issue #17: Fix parsing of multiple include/exclude patterns
	  (Jamie Kirkpatrick)

	* Split usage in common/uncommon options

	* Improve unit tests and robot framework tests

	* Various work on the kernel-engine and general refactoring

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun May 18 19:24:14 CEST 2014

Kcov (16):
	* kernel-engine: Implement an engine to handle kernel code coverage
	  collection (not finished)

	* kprobe-coverage: Refactor the kernel module so that it basically
	  works now

	* Code refactoring and more C++11-izing

	* Python: Filter out some false negatives (i.e., non-executable
	  lines marked as red)

	* Python: Report absolute paths so that output filtering works

	* Python: Catch exceptions in the python helper to avoid EOF etc
	  being propagated upwards (and coverage collection to fail)

	* Python: Fix a case where the engine would simply hang on waiting
	  for more data

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Fri Mar 21 16:38:28 CET 2014


Kcov (15):
	* Workaround a shared-library issue where kcov would sometimes hang on
	  the malloc. The workaround uses a static memory buffer instead.

	* Implemented support for collecting Python code coverage! Usage is the
	  same as for compiled code.

	* Code-restructuring to allow multiple "engines", which makes it possible
	  to add the python support above.

	* More C++11-izing of the code

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun Mar  2 10:50:00 CET 2014


Kcov (14):
	* Add two options, --collect-only and --report-only to only collect
	  coverage and produce Cobertura/HTML output respectively. Can be
	  used for example on embedded systems where the source code isn't
	  available.

	* PowerPC support has been added (thanks to Aleksandr Vilchinskii and
	  Konstantin Polivtsev for testing this)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Wed Feb  5 19:42:03 CET 2014


Kcov (13):
	* Don't hang the kcov main process if a breakpoint comes in
	  before the solib handler constructor has executed (depends on
	  the construction order)

	* Correct bug with realloc in solib handling (malloc all
	  data once only)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun Dec  8 19:34:37 CET 2013

Kcov (12):
	* Fix lockup bug in the solib code path (where processes with
	  many solibs would hang at startup)

	* Correct a crash in the reporter

	* Add test case for signals

	* Report from main thread to avoid threading issues
	
	* Fairly major refactoring of ptrace code to avoid an issue
	  where two PTRACE_CONTINUE calls could be done without
	  waitpid() in between. This would cause crashes in the
	  traced program.

	* Add support for looking for debug info in separate files
	  via build-id (Alexander Larsson)

	* Add --exit-first-process option to fork kcov when covering
	  daemons (otherwise kcov will wait for all children to finish)

	* Add --skip-solibs option to disable processing of shared
	  libraries, which also works around a bug which sometimes
	  triggers 

	* Add --replace-source-path option for cases where the sources
	  have been moved (James Warner)

	* Fix linking (Igor Murzov) 

	* Some build fixes to make it build with clang++

	* Fix various warnings

	* Add experimental profiler based on kcov

	* Add sorting by reverse-percent (high -> low, -u option)

	* Cache non-existing files to avoid doing lstat calls all the
	  time (slight performance improvement)

	* closedir() was not called from the html-writer, which creates
	  a resource leak (Karl Vogel)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sat Oct 19 11:06:42 CEST 2013
	

Kcov (11):
	* Fix handling of common paths in HTML writer

	* Fix bug in shared library handling where repeated exec()s would
	  cause strange hangs. Fixed by unsetting the KCOV_SOLIB_PATH environment
	  variable after the first executable has been started.
	  Add test-popen test case to check for this.

	* Expand ~'s in the --include-path and --exclude-path options

	* Unbreak accumulating data from multiple runs again (introduced
	  sometime during refactoring), and add test case for this

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sat Aug 18 08:45:03 CEST 2012

Kcov (10):
	* Fix bug where multiple files with the same name would only be shown
	  once in the HTML output.

	* Fix icache conflict bug (present while instrumenting shared libraries)
	  on multi-CPU systems by forcing all traced processes to one CPU

	* Re-enable the --pid=PID argument to trace a running process again

	* Fix race condition in the reporter

	* Only set breakpoints in executable sections. This avoids problems where
	  the DWARF line information points to non-code sections (which can happen)

	* Fix coverage reporting of orphaned children (where the parent does not
	  wait(2) for the child

	* Use std::unordered_map for breakpoints (improves performance somewhat)

	* Improve unit tests

	* Add robot-framework testsuite that can be run from a Jenkins server

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Mon Jul 23 13:28:43 CEST 2012
	
Kcov (9):
	* Completely refactor the source code (yes, everything!), and add
	  unit tests to verify kcov itself. The code is now in C++.
	  
	* Implement transparent coverage instrumentation for shared libraries
	  (done automatically)
	  
	* Implement a Cobertura-compatible XML backend. This allows integrating
	  kcov coverage information in Jenkins.
	  
	* Improve performance a lot by filtering out files already at the
	  instrumentation step (and not only during HTML generation). This
	  means that --include-pattern/--include-path can improve kcov performance
	  by quite a bit.

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Fri Jun 15 17:39:17 CEST 2012

Kcov (8):
	* Import the man-page from Debian and update it.

	* Simplify parts of the ptrace code

	* Correct the sorting of files-by-percentage when the difference
	  is less than 0.5% (thanks Martin!).

	* Correct the percentage-bar color according to the configured
	  limits in the report.

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun Dec  4 14:13:47 CET 2011

Kcov (7):
	* Weed out common parts of source paths from the report, display
	  the full path as the HTML title= tag

	* Fix crash bug in argument passing

	* Handle hit count a bit better

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, 2011-07-10

Kcov (6):
	* Correct hit count. The hit count is no longer over the number of
	  possible hits

	* Better error reporting when stripped or otherwise broken binaries
	  are passed to kcov

	* Handle files with relative directory paths (lookup the absolute
	  path via DWARF source files). Otherwise, some files are not reported
	  in the output.

	* Add test program to detect regressions

	* Detect stripped binaries and report that you'll need to build
	  with -g

	* Correct --include/exclude-path behavior. The previous version
	  will match PATH*/* instead of just PATH/* (Igor Murzov)
	  
	* Various small fixes 

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sat Apr 16 08:28:27 CEST 2011

Kcov (5):
	* Switch from libdwarf to libdw (from elfutils) for building
	  kcov. libdw is a bit more logical than libdwarf.
	  
	* Implement actual path matching (Igor Murzov)

	* Rename path-matching to pattern matching (which is what it does)
	  and set it up using long options.

	* Parse options with getopt

	* Don't escape all multibyte characters in the report. That will
	  break display of UTF-8 etc (Igor Murzov)

	* Improve cmake packaging support (Igor Murzov)

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sat Feb 12 15:25:57 CET 2011

Kcov (4):
	* Build system is now based on cmake (Igor Murzov)

	* Add MIPS32, ARM and PowerPC architecture support. This is untested though
	  and might very well not work at all. 
	  
	* Add -t option to set the title of the program to test (otherwise it
	  will be the filename) 

	* Refactored the architecture support to allow running i386 programs
	  on x86_64 machines, and easier add other architectures

	* Make it possible to collect coverage from multiple programs in a
	  single directory, useful for example when running a test suite

	* Add coverage color to the header as well

	* Misc refactoring  

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Tue Dec  7 18:20:28 CET 2010

Kcov (3):
	* Various bug fixes

	* Add ability to trace running processes by PID

	* Fix copyright headers

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sat Nov 13 08:13:03 CET 2010

Kcov (2):
	* Misc fixes

	* Add ability to specify low/high limits

	* Add state saving between runs. Re-starting the same program
	  will then add to existing coverage instead of starting from
	  scratch.

	* Link to web page in the report

	* Add option to sort by percentage or file name

	-- Simon Kagstrom <simon.kagstrom@gmail.com>, Sun Oct 24 09:15:39 CEST 2010

Kcov (1):
	* Initial release

	-- Simon Kagstrom <simon.kagstrom@gmail.com>