# Change log

## [v0.9.0] - 2019-09-28

### Changed
* Change gemspec to require Ruby >= 2.0.0

## [v0.8.2] - 2018-08-07

### Changed
* Change gemspec to load only required files

### Fixed
* Fix issue with Ruby greater than 2.5.0 displaying thread error traceback by default

## [v0.8.1] - 2018-05-20

### Changed
* Change ProcessRunner#write_stream to handle all writing logic

## [v0.8.0] - 2018-04-22

### Added
* Add :output_only_on_error option by Iulian Onofrei(@revolter)
* Add :verbose flag to toggle warnings

### Changed
* Change ProcessRunner to use waitpid2 api for direct status
* Change ProcessRunner stdout & stderr reading to use IO.select and be non-blocking

### Fixed
* Fix :timeout to raise when long running without input or output
* Fix ProcessRunner to ensure no zombie processes on timeouts

## [v0.7.0] - 2017-11-19

### Added
* Add :binmode option to allow configuring input & ouput as binary
* Add :pty option to allow runnig commands in PTY(pseudo terminal)

### Changed
* Change Command to remove threads synchronization to leave it up to client to handle
* Change Cmd to allow updating options
* Change Command to accept options for all commands such as :timeout, :binmode etc...
* Change Execute to ChildProcess module
* Change ChildProcess to skip spawn redirect close options on Windows platform
* Change to enforce UTF-8 encoding for process pipes to be cross platform
* Change ProcessRunner to stop rescuing runtime failures
* Change to stop mutating String instances

### Fixed
* Fix ProcessRunner threads deadlocking on exclusive mutex
* Fix :timeout option to raise TimeoutExceeded error
* Fix test suite to work on Windows
* Fix Cmd arguments escaping

## [v0.6.0] - 2017-07-22

### Added
* Add runtime property to command result
* Add ability to merge multiple redirects

### Changed
* Change to make all strings immutable
* Change waiting for pid to recover when already dead

### Fix
* Fix redirection to instead of redirecting to parent process, redirect to child process. And hence allow for :out => :err redirection to work with output logging.

## [v0.5.0] - 2017-07-16

### Added
* Add :signal option for timeout
* Add :input option for handling stdin input
* Add ability for Command#run to specify a callback that is invoked whenever stdout or stderr receive output
* Add Command#wait for polling a long running script for matching output

### Changed
* Change ProcessRunner to immediately sync write pipe
* Change ProcessRunner to write to stdin stream when writable

### Fixed
* Fix quiet printer write call by @jamesepatrick
* Fix to correctly close all pipe ends between parent and child process
* Fix timeout behaviour for writable and readable streams

## [v0.4.0] - 2017-02-22

### Changed
* Remove automatic insertion of semicolons on line breaks and fix issue #27

## [v0.3.3] - 2017-02-10

### Changed
* Update deprecated Fixnum class to Integer for Ruby 2.4 compatability by Edmund Larden(@admund)
* Remove self extension from Execute

## [v0.3.2] - 2017-02-06

### Fixed
* Fix File namespacing

## [v0.3.1] - 2017-01-22

### Fixed
* Fix top level File constant

## [v0.3.0] - 2017-01-13

### Added
* Add ability to enumerate Result output
* Add #record_saparator for specifying delimiter for enumeration

### Changed
* Change Abstract printer to separate arguments out
* Change Cmd to prevent modifications
* Change pastel dependency version

## [v0.2.0] - 2016-07-03

### Added
* Add ruby interperter helper

### Fixed
* Fix multibyte content truncation for streams by Ondrej Moravcik(@ondra-m)

## [v0.1.0] - 2016-05-29

* Initial implementation and release

[v0.9.0]: https://github.com/piotrmurach/tty-command/compare/v0.8.2...v0.9.0
[v0.8.2]: https://github.com/piotrmurach/tty-command/compare/v0.8.1...v0.8.2
[v0.8.1]: https://github.com/piotrmurach/tty-command/compare/v0.8.0...v0.8.1
[v0.8.0]: https://github.com/piotrmurach/tty-command/compare/v0.7.0...v0.8.0
[v0.7.0]: https://github.com/piotrmurach/tty-command/compare/v0.6.0...v0.7.0
[v0.6.0]: https://github.com/piotrmurach/tty-command/compare/v0.5.0...v0.6.0
[v0.5.0]: https://github.com/piotrmurach/tty-command/compare/v0.4.0...v0.5.0
[v0.4.0]: https://github.com/piotrmurach/tty-command/compare/v0.3.3...v0.4.0
[v0.3.3]: https://github.com/piotrmurach/tty-command/compare/v0.3.2...v0.3.3
[v0.3.2]: https://github.com/piotrmurach/tty-command/compare/v0.3.1...v0.3.2
[v0.3.1]: https://github.com/piotrmurach/tty-command/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/piotrmurach/tty-command/compare/v0.2.0...v0.3.0
[v0.2.0]: https://github.com/piotrmurach/tty-command/compare/v0.1.0...v0.2.0
[v0.1.0]: https://github.com/piotrmurach/tty-command/compare/v0.1.0
