# CHANGELOG

## Master (Unreleased)

## 10.0.1 - 2018-03-21

### Fixed

* Error when using byebug with `debase` gem (#443, @tzmfreedom)

## 10.0.0 - 2018-01-26

### Changed

* Breaking on methods now stops on the first effective line of a method, not on
  the line containing the `def` keyword.

### Added

* Show valid breakpoint locations when invalid location given (#393, @ko1).
* Ruby 2.5.0 support (#397, @yui-knk).
* Log host & port when launching byebug's client in remote mode.
* Some love & tests to remote debugging (#82).
* `remote_byebug` shortcut to start the most common case for remote debugging (#141).

### Fixed

* Properly ignore ruby fullpath executable when passed to byebug script (#419).
* Remote server crash when interrupting client (#141, #274).
* Control server thread being able to `interrupt` main thread only a single time. (#239).

## 9.1.0 - 2017-08-22

### Added

* Better UI messages for breakpoint management.

### Fixed

* `where` command failing on instance_exec block stack frames.
* `restart` command crashing in certain cases because of a missing `require "English"` (#321, @akaneko3).
* `restart` command crashing when debugged script is not executable or has no shebang (#321, @akaneko3).

### Removed

* Ruby 2.0 and Ruby 2.1 official & unofficial support. Byebug no longer installs
  on these platforms.

## 9.0.6 - 2016-09-29

### Fixed

* Error when using `byebug` with a ruby compiled against libedit (#241).
* Allow `Byebug.start_server` to yield the block passed to it when the actual
  port is already known (#277, thanks @cben).
* Use a standard license name so it can be more reliably used by tools (#275).

## 9.0.5 - 2016-05-28

### Fixed

* Error loading rc file when `ENV["HOME"]` is unset.

## 9.0.4 - 2016-05-19

### Fixed

* Errors in rc file not being displayed to the user.

## 9.0.3 - 2016-05-16

### Fixed

* Unfriendly output in byebug's executable when no script specified (#256).
* Unfriendly output in byebug's executable when script doesn't exist.
* Unfriendly output in byebug's executable when script has invalid code.

## 9.0.2 - 2016-05-15

### Fixed

* Skip to get a line in eval context (#263, thanks @k0kubun).
* Debugger getting disabled after `continue` even when linetrace is enabled
  (#264, thanks @k0kubun).

## 9.0.1 - 2016-05-14

### Fixed

* `quit` never exiting when remote debugging (#201).

## 9.0.0 - 2016-05-11

### Fixed

* `irb` command unintentionally changing $PROGRAM_NAME.
* `pry` command failing.
* Unrelated error message when using `pry` command and Pry not installed.
* Interrupting program execution from remote control interface (#239, thanks
  @izaera).

### Removed

* Official Ruby 2.0.0 support. `var local` no longer works in Ruby 2.0. The
  rest of the commands should still work as before, but `byebug` is no longer
  tested against this version so they might start breaking in the
  future.

## 8.2.5 - 2016-04-27

### Fixed

* Allows paths with spaces (#244, thanks @HookyQR).
* Allows paths with colons (#244, thanks @HookyQR).

## 8.2.4 - 2016-04-08

### Fixed

* Reverts #211 which leads to an unusable debugger.

## 8.2.3 - 2016-04-07

### Fixed

* Better interaction with utilities like RSpec when hitting Ctrl-C.
* `irb` command when original program modified ARGV (#197, thanks @josephks).
* Unusable debugger when stdin redirected (#211,thanks @sethk).
* RC file loading when no explicit flag included (#223).
* Installation on some Windows systems (#175, #226).

## 8.2.2 - 2016-02-01

### Fixed

* Bug in rc file loading where most initialization commands would not be run.

## 8.2.1 - 2015-11-26

### Fixed

* Bug in evaluations using "eval".

## 8.2.0 - 2015-11-12

### Fixed

* [#184](https://github.com/deivid-rodriguez/byebug/issues/184) &
  [#188](https://github.com/deivid-rodriguez/byebug/issues/188), both due
  to the way of running evaluations in a separate thread.

### Added

* `debug` command to evaluate things in a separate thread, since this behavior
  was removed from default `eval` to fix the above issues.

## 8.1.0 - 2015-11-09

### Fixed

* Command history should be specific per project.
* Better error message in certain edge cases when printing the backtrace.
* Bug in evaluator which would show information about having stopped at a
  breakpoint in some cases.

### Added

* Ability to autolist source code after `frame` command.
* Ability to stop at lines where methods return.

## 8.0.1 - 2015-11-07

### Fixed

* Error stream wouldn't be properly reset when using standalone `byebug`.
* Confusing error message for invalid breakpoint locations.

## 8.0.0 - 2015-11-05

### Fixed

* [#183](https://github.com/deivid-rodriguez/byebug/issues/183). Compilation
  in Ruby 2.0. Regression introduced in 7.0.0
* "Return value is: nil" would be displayed when stopping right before the end
  of a class definition. We want to avoid showing anything instead.

### Changed

* Plugins now need to implement an `at_end` method (separate from `at_return`)
  in their custom processors.

## 7.0.0 - 2015-11-04

### Fixed

* [#177](https://github.com/deivid-rodriguez/byebug/issues/177). Some issues
  with formatting results of evaluations.
* [#144](https://github.com/deivid-rodriguez/byebug/issues/144). Ruby process
  after using byebug does no longer get slow.
* [#121](https://github.com/deivid-rodriguez/byebug/issues/121). `byebug`
  commands inside code evaluated from debugger's prompt are now properly working.
* Another evaluation bug in autocommands.
* `finish 0` command would sometimes fail to stop right before exiting the
  current frame.
* Runner's `--[no-]stop` option now works (thanks @windwiny).
* Change variable name `bool`, avoid conflict clang's predefined macro

### Removed

* `ps` command.

### Changed

* [#166](https://github.com/deivid-rodriguez/byebug/issues/166). Don't load
  the entire library on require, but only when a `byebug` call is issued. Thanks
  @bquorning.
* The above fix to the `finish 0` command cause `byebug`'s entrypoint to
  require 3 steps out instead of 2. In general, plugins using
  `Byebug::Context.step_out` will need to be changed to consider "c return
  events" as well.

### Added

* `autopry` setting that calls `pry` on every stop.
* Return value information to debugger's output when `finish 0` is used.

## 6.0.2 - 2015-08-20

### Fixed

* The user should always be given back a prompt unless (s)he explicitly states
  the opposite. This provides a more general fix to the bug resolved in 6.0.1.

## 6.0.1 - 2015-08-19

### Fixed

* Bug in evaluation where the user would lose the command prompt when entering
  an expression with a syntax error.

## 6.0.0 - 2015-08-17

### Removed

* `autoeval` setting. I haven't heard of anyone setting it to false.
* `pp`, `putl`, `eval`. People just want to evaluate Ruby code, so the less
  magic the better. Most of the people probably were not aware that `byebug`
  was overriding stuff like `pp` or `eval`. Only keeping `ps` as the single
  "enhanced evaluation" command.
* `verbose` setting.
* `info catch` command. Use `catch` without arguments instead.
* `R` command alias for `restart`.

### Changed

* `info args` is now `var args`.
* `interrupt` is now aliased to `int`, not to `i`.
* API to define custom commands and subcommands (see the Command class).

### Fixed

* [#140](https://github.com/deivid-rodriguez/byebug/issues/140). `help` command
  not showing the list of available commands and their descriptions.
* [#147](https://github.com/deivid-rodriguez/byebug/issues/147). Setting
  breakpoints at symlinked files.

### Added

* API to define custom command processors (see the CommandProcessor class).

## 5.0.0 - 2015-05-18

### Fixed

* [#136](https://github.com/deivid-rodriguez/byebug/issues/136). `frame`
  command not working with negative numbers (thanks @ark6).

### Added

* IDE support and a new command/subcommand API for plugins.
* Add a "savefile" setting holding the file where "save" command saves current
  debugger's state.

### Changed

* `disable` no longer disable all breakpoints, it just shows command's help
  instead. To disable all breakpoints now you need to do `disable breakpoints`
  (or `dis b`). Similarly, you can't no longer use `dis 1 2 3` but need to do
  `dis b 1 2 3` to disable specific breakpoints. The same applies to the
  `enable` command.

### Removed

* `help set <setting>` no longer works. `help set` includes that same output and
  it's not verbose enough so that this is a problem. Same with `help
  show <setting>`.

## 4.0.5 - 2015-04-02

### Fixed

* [#131](https://github.com/deivid-rodriguez/byebug/issues/131)
* Thread commands help format should be consistent with the rest of the help
  system now.

## 4.0.4 - 2015-03-27

### Fixed

* [#127](https://github.com/deivid-rodriguez/byebug/issues/127)

## 4.0.3 - 2015-03-19

### Fixed

* Unused variable warning in context.c

## 4.0.2 - 2015-03-16

### Fixed

* [#118](https://github.com/deivid-rodriguez/byebug/issues/118). Remove
  `rb-readline` as a dependency and show a help message whenever requiring
  `readline` fails instead.

## 4.0.1 - 2015-03-13

### Fixed

* .yml files needed for printers support were missing from the release... :S
* [#118](https://github.com/deivid-rodriguez/byebug/issues/118). Add `readline`
  as a dependency.

## 4.0.0 - 2015-03-13

### Added

* `untracevar` command that stops tracing a global variable.
* Window CI build through AppVeyor.
* OSX CI build through Travis.
* Style enforcement through RuboCop.
* C style enforment using the `indent` command line utility.
* Some remote debugging tests (thanks @eric-hu).
* Printer's support (thanks @astashov).

### Changed

* A lot of internal refactoring.
* `tracevar` now requires the full global variable name (with "$").
* [#92](https://github.com/deivid-rodriguez/byebug/issues/92). The `catch`
  command is not allowed in post_mortem mode anymore. It was not working anyways.
* [#85](https://github.com/deivid-rodriguez/byebug/issues/85). `step` is now
  more user friendly when used in combination with `up`.
* `var const` can now be called without an argument and will show constants in
  the current scope.
* `break` with a class name now creates breakpoints regardless of class not
  being yet defined. If that's the case, it gives a warning but the class is
  created anyways.

### Fixed

* Code reloading issues.
* `set fullpath` was not showing fullpaths. Now it is.
* `up`, `down` and `frame` commands now work in post_mortem mode (#93).
* rc file (`.byebugrc`) loading: invalid commands are just ignored instead of
  aborting, global (home) rc file is now properly loaded before project's file.
* [#93](https://github.com/deivid-rodriguez/byebug/issues/93). Backtraces not
  working in `post_mortem` mode.
* 'cmd1 ; cmd2 ; ...; cmdN' syntax which allows running several commands
  sequentially.
* [#101](https://github.com/deivid-rodriguez/byebug/issues/101). `finish`
  command not stopping at the correct line.
* [#106](https://github.com/deivid-rodriguez/byebug/issues/106). `break` with
  namespaced class, like `break A::B#c` should now work.
* Command history is now persisted before exiting byebug.
* Setting breakpoint in a method would stop not only at the beginning of the
  method but also at the beginning of every block inside the method.
* [#122](https://github.com/deivid-rodriguez/byebug/issues/122). Setting
  breakpoints on module methods (@x-yuri).

### Removed

* `autoreload` setting as it's not necessary anymore. Code should always be up
  to date.
* `reload` command for the same reason.
* Gem dependency on `debugger-linecache`.
* `step+`, `step-`, `next+`, `next-`, `set/show linetrace_plus` and
  `set/show forcestep` commands. These were all mechanisms to deal with
  TracePoint API event dupplication, but this duplicated events have been
  completely removed from the API since [r48609](
  bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/48609), so
  they are no longer necessary.
* `info file` subcommands: `info file breakpoints`, `info file mtime`, `info
  file sha1`, `info file all`. Now all information is listed under `info file`.
* `testing` setting. It was just a hack to be able to test `byebug`. Nobody was
  supposed to actually use it!
* `var class` command, just use Ruby (`self.class.class_variables`).
* `p` command, just use `eval`, or just type your expression and `byebug` will
  autoevaluate it.
* `exit` alias for `quit`.

## 3.5.1 - 2014-09-29

### Fixed

* [#79](https://github.com/deivid-rodriguez/byebug/issues/79). Windows
  installation.
* `condition` command not properly detecting invalid breakpoint ids.

## 3.5.0 - 2014-09-28

### Fixed

* [#81](https://github.com/deivid-rodriguez/byebug/issues/81). Byebug's history
  messing up other programs using Readline.
* Readline's history not being properly saved and inmediately available.
* User not being notified when trying to debug a non existent script.

### Changed

* Complete rewrite of byebug's history.
* Complete rewrite of list command.
* Docs about stacktrace related commands (up, down, frame, backtrace).

## 3.4.2 - 2014-09-26

### Fixed

* [#67](https://github.com/deivid-rodriguez/byebug/issues/67). Debugging
  commands invoked by ruby executable, as in `byebug -- ruby -Itest a_test.rb
  -n test_something`.

## 3.4.1 - 2014-09-25

### Fixed

* [#54](https://github.com/deivid-rodriguez/byebug/issues/54). Use of threads
  inside `eval` command.
* `list` command not listing backwards after reaching the end of the file.

## 3.4.0 - 2014-09-01

### Fixed

* deivid-rodriguez/pry-byebug#32 in a better way.

## 3.3.0 - 2014-08-28

### Fixed

* `set verbose` command.
* `set post_mortem false` command.
* Debugger stopping in `byebug`'s internal frames in some cases.
* `backtrace` crashing when `fullpath` setting disabled and calculated stack
  size being smaller than the real one.

### Changed

* The `-t` option for `bin/byebug` now turns tracing on whereas the `-x` option
  tells byebug to run the initialization file (.byebugrc) on startup. This is
  the default behaviour though.
* `bin/byebug` libified and tests added.

### Removed

* `info locals` command. Use `var local` instead.
* `info instance_variables` command. Use `var instance` instead.
* `info global_variables` command. Use `var global` instead.
* `info variables` command. Use `var all` instead.
* `irb` command stepping capabilities, see
  [8e226d0](https://github.com/deivid-rodriguez/byebug/commit/8e226d0).
* `script` and `restart-script` options for `bin/byebug`.

## 3.2.0 - 2014-08-02

### Fixed

* [#71](https://github.com/deivid-rodriguez/byebug/issues/71). Remote debugging
  (thanks @shuky19).
* [#69](https://github.com/deivid-rodriguez/byebug/issues/69). `source` command
  (thanks @Olgagr).

### Removed

* `post_mortem` activation through `Byebug.post_mortem`. Use `set post_mortem`
  instead.
* `info stack` command. Use `where` instead.
* `method iv` command. Use `var instance` instead.
* [#77](https://github.com/deivid-rodriguez/byebug/issues/77). Warning.

## 3.1.2 - 2014-04-23

### Fixed

* `post_mortem` mode in `bin/byebug` (really).
* Line tracing in `bin/byebug`.

## 3.1.1 - 2014-04-23

### Fixed

* `post_mortem` mode in bin/byebug.

## 3.1.0 - 2014-04-23

### Removed

* `show commands` command. Use `history` instead.
* Byebug.start accepting options. Any program settings you want applied from
  the start should be set in `.byebugrc`.
* `trace` command. Use `set linetrace` for line tracing and `tracevar` for
  global variable tracing.
* `show version` command. Use `byebug --version` to check byebug's version.
* `set arg` setting. Use the `restart` command instead.

### Changed

* `linetrace_plus` setting renamed to `tracing_plus`.

### Added

* `history` command to check byebug's history of previous commands.

## 3.0.0 - 2014-04-17

### Fixed

* Plain `byebug` not working when `pry-byebug` installed.
* `post_mortem` mode.
* Command history not being saved after regular program termination.
* [#54](https://github.com/deivid-rodriguez/byebug/issues/54). (Again) calling
  `Byebug.start` with `Timeout.timeout` (thanks @zmoazeni).

### Added

* Allow disabling `post_mortem` mode.

### Changed

* `show commands` command for listing history of previous commands now behaves
  like shell's `history` command.
* `show/set history filename` is now `show/set histfile`
* `show/set history size` is now `show/set histsize`
* `show/set history save` is now `show/set autosave`
* `finish` semantics, see
  [61f9b4d](https://github.com/deivid-rodriguez/byebug/commit/61f9b4d).
* Use `per project` history file by default.

### Removed

* The `init` option for `Byebug.start`. Information to make the `restart`
  command work is always saved now.

## 2.7.0 - 2014-02-24

### Fixed

* [#52](https://github.com/deivid-rodriguez/byebug/issues/52). `IGNORED_FILES`
  slowing down startup.
* [#53](https://github.com/deivid-rodriguez/byebug/issues/53) and
  [#54](https://github.com/deivid-rodriguez/byebug/issues/54). Calling
  `Byebug.start` with `Timeout.timeout`.

## 2.6.0 - 2014-02-08

### Fixed

* Circular dependency affecting `pry-byebug` (thanks @andreychernih).

## 2.5.0 - 2013-12-14

### Added

* Support for `sublime-debugger`.

## 2.4.1 - 2013-12-05

### Fixed

* [#40](https://github.com/deivid-rodriguez/byebug/issues/40). Installation
  error in Mac OSX (thanks @luislavena).

## 2.4.0 - 2013-12-02

### Fixed

* `thread list` showing too many threads.
* Fix setting post mortem mode with `set post_mortem`. Now this is the only
  post mortem functionality available as specifying `Byebug.post_mortem` with a
  block has been removed in this version.

### Added

* (Again) `debugger` as an alias to `byebug` (thanks @wallace).
* `-R` option for `bin/byebug` to specify server's hostname:port for remote
  debugging (thanks @mrkn).

### Changed

* Use `require` instead of `require_relative` for loading byebug's extension
  library (thanks @nobu).
* `trace variable $foo` should be now `trace variable $foo`.

## 2.3.1 - 2013-10-17

### Fixed

* Breakpoint removal.
* Broken test suite.

## 2.3.0 - 2013-10-09

### Added

* Compatibility with Phusion Passenger Enterprise (thanks @FooBarWidget).

### Changed

* More minimalist help system.

## 2.2.2 - 2013-09-25

### Fixed

* Compilation issue in 64 bit systems.

## 2.2.1 - 2013-09-24

### Fixed

* [#26](https://github.com/deivid-rodriguez/byebug/issues/26). Compilation issue
  introduced in `2.2.0`.

### Changed

* `show/set stack_trace_on_error` is now `show/set stack_on_error`.

## 2.2.0 - 2013-09-22

### Fixed

* Stack size calculations.
* Setting `post_mortem` mode.

### Added

* `verbose` setting for TracePoint API event inspection.

### Changed

* Warning free byebug.
* Allow `edit <filename>` without a line number.

## 2.1.1 - 2013-09-10

### Fixed

* Debugging code inside `-e` Ruby flag.

## 2.1.0 - 2013-09-08

### Fixed

* Remote debugging display.
* `eval` crashing when inspecting raised an exception (reported by @iblue).

### Changed

* `enable breakpoints` now enables every breakpoint.
* `disable breakpoints` now disables every breakpoint.

## 2.0.0 - 2013-08-30

### Added

* "Official" definition of a command API.
* Thread support.

### Removed

* `jump` command. It had never worked.

### Changed

* Several internal refactorings.

## 1.8.2 - 2013-08-16

### Fixed

* `save` command now saves the list of `displays`.
* Stack size calculation.

### Changed

* More user friendly regexps for commands.
* Better help for some commands.

## 1.8.1 - 2013-08-12

### Fixed

* Major regression introduced in 1.8.0.

## 1.8.0 - 2013-08-12

### Added

* Remote debugging support.

## 1.7.0 - 2013-08-03

### Added

* List command automatically called after callstack navigation commands.
* C-frames specifically marked in the callstack.
* C-frames skipped when navigating the callstack.

## 1.6.1 - 2013-07-10

### Fixed

* Windows compatibiliy: compilation and terminal width issues.

## 1.6.0 - 2013-07-10

### Fixed

* `byebug` placed at the end of a block or method call not working as expected.
* `autolist` being applied when Ruby `-e` option used.

### Changed

* Backtrace callstyles. Use `long` for detailed frames in callstack and `short`
  for more concise frames.

## 1.5.0 - 2013-06-21

### Fixed

* Incomplete backtraces when the debugger was not started at program startup.

## 1.4.2 - 2013-06-20

### Fixed

* `help command subcommand` command.
* Interaction with Rails Console debugging flag.
* `post_mortem` mode when running byebug from the outset.
* `no-quit` flag when running byebug from the outset.

## 1.4.1 - 2013-06-15

### Fixed

* Crash when printing some filenames in backtraces.
* Allow byebug developers to easily use compilers different from gcc (thanks
  @GarthSnyder!).

## 1.4.0 - 2013-06-05

### Fixed

* Memory leaks causing `byebug` to randomly crash.

### Changed

* Use the Debug Inspector API for backtrace information.

## 1.3.1 - 2013-06-02

### Fixed

* Interaction with Rails debugging flag.
* Crash when trying to print lines of code containing the character '%'.
* `basename` and `linetrace` options not working together.

## 1.3.0 - 2013-05-25

### Added

* Support colon-delimited include paths in command-line front-end (@ender672).

## 1.2.0 - 2013-05-20

### Fixed

* Ctrl+C during command line editing (works like pry/irb).

### Added

* `pry` command.

## 1.1.1 - 2013-05-07

### Added

* `pry-byebug` compatibility.

### Changed

* Better help system.
* Code cleanup.

## 1.1.0 - 2013-04-30

### Added

* Post Mortem support.

## 1.0.3 - 2013-04-23

### Fixed

* Negative line numbers shown by list command at the beginning of file.
* `backtrace` command segfaulting when trying to show info on some frame args.
  Don't know the reason yet, but the exception is handled now and command does
  not segfault anymore.

### Changed

* `autoreload` is set by default now.
* Try some thread support (not even close to usable).

## 1.0.2 - 2013-04-09

### Fixed

* backtraces messed up when using both `next`/`step` and backtrace navigation
  commands.

### Changed

* `autolist` and `autoeval` are default settings now.

## 1.0.1 - 2013-04-06

### Fixed

* Byebug not loading properly.

## 1.0.0 - 2013-03-29

### Fixed

* Green test suite.

## 0.0.1 - 2013-03-18

### Added

* Initial release.
