turtle-1.6.2: CHANGELOG.md
1.6.2
* Build against latest `ansi-wl-pprint` and `optparse-applicative` [[#445]](https://github.com/Gabriella439/turtle/pull/445) / [[#446]](https://github.com/Gabriella439/turtle/pull/446) / [[#447]](https://github.com/Gabriella439/turtle/pull/447)
1.6.1
* BUG FIX: Fix `turtle` to build on Windows
* BUG FIX: `stripPrefix` and `commonPrefix` now correctly handle files with
extensions
* For example, before this fix `stripPrefix "./" "./foo.bar"` would
return `Just "foo/.bar"`
1.6.0
* BREAKING CHANGE: Switch to the `FilePath` type from `base` instead of
`system-filepath`
* This is a breaking change for a couple of reasons:
* The `FilePath` type has changed, so the API is not backwards-compatible
* The thing most likely to break is if you directly imported utilities
from the `system-filepath` or `system-fileio` packages to operate on
`turtle`'s `FilePath`s
* If that happens, you should first check if the `Turtle` module
exports a utility of the same name. If so, then switch to that
* If there is no equivalent substitute from the `Turtle` module then
you will have to change your code to use the closest equivalent
utility from the `filepath` or `directory` package
* If you were previously using any of the `system-filepath` or
`system-fileio` utilities re-exported from the `Turtle` module then
those utilities will not break as they have been replaced with
versions compatible with the `FilePath` type from `base`
* The second thing most likely to break is any code that relies on
typeclasses since because if you defined any instances for the
`FilePath` type exported by `turtle` then those instances will now
overlap with any instances defined for the `String` type
* The conversion utilities (e.g. `toText`, `encodeString`) will still
work, so code that used those conversion utilities should be less
affected by this change
* The behavior of the `collapse` utility is subtly different
* `collapse` no longer interprets `..` in paths
* This new behavior is more correct in the presence of symlinks, so the
change is (hopefully) an improvement to downstream code
* The new API strives to match the old behavior as closely as possible
* … so this should (hopefully) not break too much code in practice
* With the exception of the `collapse` function the new API should be
bug-for-bug compatible with the old API
* Most of the surprising behavior inherited from the old API is around
how `.` and `..` are handled in paths
* `parent ".." == "."` is an example of such surprising behavior
* At some point in the future we may fix bugs in these utilities inherited
from `system-filepath` / `system-fileio`, but no decision either way has
been made, yet
* Some old utilities are marked `DEPRECATED` if their behavior exactly matches
the behavior of an existing utility from the `filepath` or `directory`
package
* These may be eventually removed at some point in the future or they
remain in a deprecated state indefinitely. No decision either way has
been made
* The `Turtle` module also re-exports any utility suggested by a
`DEPRECATED` pragma as a convenience
* Other utilities are not deprecated if the old behavior significantly departs
from any existing utility from the `filepath` or `directory` package
* For example, the behavior of the `filename` utility differs from the
behavior of `System.FilePath.takeFileName` for filenames that begin with a
`.`, so we have to preserve the old behavior to avoid breaking downstream
code
* At some point in the future utilities like these may be deprecated in
favor of their closest analogs in the `filepath` / `directory` packages or
they may be supported indefinitely. No decision either way has been made
* If you want to try to author code that is compatible with both the
pre-1.6 and post-1.6 API:
* If you add any instances to the `FilePath` type, import it qualified
directly from the `system-filepath` package and use it only for instances
* Otherwise, don't import anything else from the `system-filepath` /
`system-fileio` packages if you can help it. Instead, restrict yourself
entirely to the utilities and `FilePath` type exported by the `Turtle`
module
* Use the conversion utilities (e.g. `encodeStrings`, even if they are not
necessary post-1.6)
* If that's still not enough, use `CPP` and good luck!
1.5.25
* Build against latest version of `Win32` package
1.5.24
* Expose `Format` constructor
1.5.23
* Add `fromIO` utility
* Build against GHC 9.0 / 9.2
1.5.22
* Add new `update` utility
* Improve documentation for `limit`
1.5.21
* Build against `optparse-applicative-0.16.0.0`
1.5.20
* Build against `doctest-0.17`
* Only depend on `semigroups` for GHC < 8.0
1.5.19
* Add pattern synonyms for `Size`
1.5.18
* Fix space leak
1.5.17
* Add `optionsExt`: Extended version of `options` with header, footer,
porgram-description and version information in `--help` flag
* Add `readlink`
1.5.16
* Add `cptreeL`
1.5.15
* Add `toLines`
* Add `Turtle.Bytes.{fromUTF8,toUTF8}`
* Add `Turtle.Bytes.{compress,decompress}`
* Always expose a `MonadFail` instance, relying on the `fail` package
where needed. Related GHC 8.8 preparedness.
1.5.14
* Fix `cptree` to copy symlinks instead of descending into them
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/344
* Build against newer versions of `Win32` package
1.5.13
* Fix `chmod` bug
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/337
* Add `reduce` and re-export `(<&>)`
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/332
1.5.12
* Increase upper bound on `containers`
1.5.11
* Don't forward broken pipe exceptions when using `inproc`
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/321
* Increase upper bound on `stm`
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/321
* Tutorial improvements:
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/322
1.5.10
* Increase upper bound on `doctest` and `criterion`
1.5.9
* Add `symlink`
1.5.8
* Bug fix: `invert` no longer rejects inputs where a prefix matches the inverted
pattern
* See: https://github.com/Gabriel439/Haskell-Turtle-Library/pull/297
* Add lsdepth, findtree, cmin, and cmax
* Increase upper bound on `temporary` and `foldl`
1.5.7
* Increase upper bound on `doctest`
1.5.6
* Increase upper bound on `exceptions`
1.5.5
* Increase upper bound on `criterion`
1.5.4
* Increase upper bound on `exceptions`
1.5.3
* Increase upper bound on `doctest`
1.5.2
* Increase upper bound on `async`
1.5.1
* GHC 8.4 support
* Re-export `encodeString`/`decodeString`
* Update tutorial to use `stack script`
* Increase upper bounds on dependencies
1.5.0
* BREAKING CHANGE: Add `MonadCatch` instance for `Shell`
* This requires a breaking change to the internal implementation of `Shell`
* Most breaking changes can be fixed by replacing the `Shell` constructor
with the newly added `_Shell` utility for ease of migration
* If you don't use the `Shell` constructor then this change likely does not
affect you
* Add `eprintf`
1.4.5
* Add `grepText`, `uniq`, `nub`, `sort` to `Turtle.Prelude`
* Increase upper bound on `unix-compat`
1.4.4
* Fix small mistake in tutorial
1.4.3
* Increase upper bound on `doctest`
1.4.2
* Add `sed{Prefix,Suffix,Entire}` and `inplace{Prefix,Suffix,Entire}`
1.4.1
* Increase upper bound on `doctest`
1.4.0
* BREAKING CHANGE: Remove unnecessary `Maybe` from type of `single`
* BREAKING CHANGE: Consolidate `searchable` and `executable`
* `stream{,WithErr}` now throws an `ExitCode` on failure
1.3.6
* Build against `ghc-8.2`
* Relax upper bound on `optparse-applicative` and `foldl`
1.3.5
* Increase upper bound on `foldl`
1.3.4
* Bug fix: `cptree` now correctly copies files instead of creating directories
of the same name
* Increase upper bound on `criterion`
1.3.3
* Bug fix: Change `textToLines` to behave like `Data.Text.splitOn "\n"`
instead of `Data.Text.unlines`
* This fixes weird behavior around handling empty strings. `splitOn` does
the right thing, but `unlines` does not. For example, this indirectly
fixes a regression in `sed`, which would discard empty lines
* Bug fix: `which`/`whichAll` now behave correctly on Windows
* Add new `cptree`/`single` utilities
* Documentation fixes
1.3.2
* Fix bugs in subprocess management
* Generalize type of `repr` to return any type that implements `IsString`
* Add `optLine`, `argLine`, and `l` utilities to simplify working with `Line`s
1.3.1
* `find` no longer follows symlinks
* Increase upper bound on `directory`
1.3
* BREAKING CHANGE: Several utilities now produce and consume `Line`s instead of
`Text`
* The purpose of this change is to fix a very common source of confusion for
new users about which utilities are line-aware
* Most of the impact on existing code is just changing the types by
replacing `Text` with `Line` in the right places. The change at the
term level should be small (based on the changes to the tutorial examples)
* BREAKING CHANGE: `Description` now wraps a `Doc` instead of `Text`
* In the most common case where users use string literals this has no effect
* New `Turtle.Bytes` module that provides `ByteString` variations on subprocess
runners
* Fix `du` reporting incorrect sizes for directories
* Add `pushd`, `stat`, `lstat`, `which`, `procStrictWithErr`,
`shellStrictWithErr`, `onFiles`, `header`, `subcommandGroup`, and `parallel`
* Backport `need` to GHC 7.6.3
* Fix missing help text for option parsers
* Fix bugs in subprocess management
1.2.8
* Increase upper bound on `time` and `transformers`
* Fix incorrect lower bound for `base`
1.2.7
* Increase upper bound on `clock` dependency
1.2.6
* Generalize several types to use `MonadManaged`
* Generalize type of `printf` to use `MonadIO`
* Add `system`, and `copymod`
* Fix `rmtree` to more accurately match behavior of `rm -r`
1.2.5
* Add `printf`, `utc`, `procs`, and `shells`
1.2.4
* Generalize type of `d` format specifier to format any `Integral` type
* Add `inprocWithErr`, `inShellWithErr`, `inplace`, and `sz`
1.2.3
* Add `subcommand` and `testpath`
* Use line buffering for `Text`-based subprocesses
1.2.2
* Re-export `with`
* Add `begins`, `ends`, `contains`, `lowerBounded`, `mktempfile`, `nl`, `paste`
`endless`, `lsif`, and `cut`
* Fix subprocess management bugs
1.2.1
* Fix subprocess management bugs
1.2.0
* BREAKING CHANGE: `du` now returns a `Size` instead of an `Integer`
* New `Turtle.Options` module that provides convenient utilities for options
parsing
* Add `hostname`, `outhandle`, `stderr`, `cache`, `countChars`, `countWords`,
and `countLines`
* Fix subprocess management bugs
1.1.1
* Add `bounded`, `upperBounded`, `procStrict`, `shellStrict`, `arguments`
* Add several `Permissions`-related commands
* Generalize several types to `MonadIO`
1.1.0
* BREAKING CHANGE: Remove `Floating`/`Fractional` instances for `Pattern` and
`Shell`
* BREAKING CHANGE: Change behavior of `Num` instance for `Pattern` and `Shell`
* Re-export `(&)`
* Add `asciiCI`, `(.||.)`, `(.&&.)`, `strict`
1.0.2
* Add `fp` format specifier
* Add `chars`/`chars` high-efficiency parsing primitives
* Fix bugs in path handling
1.0.1
* Generalize type of `die`
* Fix doctest
1.0.0
* Initial release