# Changelog for [`filepath` package](http://hackage.haskell.org/package/filepath)

_Note: below all `FilePath` values are unquoted, so `\\` really means two backslashes._

## 1.5.5.0 *Jan 2026*

* support MicroHS wrt [#257](https://github.com/haskell/filepath/pull/257)
* Switch from template-haskell to template-haskell-quasiquoter and -lift wrt [#258](https://github.com/haskell/filepath/pull/258)

## 1.5.4.0 *Nov 2024*

* Don't catch async exceptions in internal functions wrt https://github.com/haskell/os-string/issues/22

## 1.5.3.0 *Jun 2024*

* Adjust for `encodeFS`/`decodedFS` deprecation in os-string

## 1.5.2.0 *Jan 2024*

* Fix a bug in `[splitFileName](https://github.com/haskell/filepath/issues/219)`
* make `osp :: QuasiQuoter` valid as a pattern wrt [#210](https://github.com/haskell/filepath/pull/210)
* Add `unsafeEncodeUtf` from os-string

## 1.5.0.0 *Nov 2023*

* remove `OsString` modules

## 1.4.200.0 *Nov 2023*

* deprecate `OsString` modules

## 1.4.100.4 *Jul 2023*

* Fix isInfixOf and breakSubString in Word16, wrt [#195](https://github.com/haskell/filepath/issues/195)

## 1.4.100.3 *Feb 2023*

* Fix a regression in `splitFileName` wrt [#189](https://github.com/haskell/filepath/pull/189)

## 1.4.100.2 *Feb 2023*

* Speed up `splitFileName`, `splitExtension`, `readDriveLetter` and various other helpers (up to 20x faster) by @Bodigrim

## 1.4.100.1 *Feb 2023*

* Fix regression in `System.FilePath.Windows.normalise` wrt [#187](https://github.com/haskell/filepath/issues/187)
* Fix tests on GHC 9.4.4
* Avoid head and tail

## 1.4.100.0 *July 2022*

Implementation of the [Abstract FilePath Proposal](https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/abstract-file-path)
in user-space as a separate type.

Introduction to the new API is explained [in this blog post](https://hasufell.github.io/posts/2022-06-29-fixing-haskell-filepaths.html).

## 1.4.2.2 *Dec 2021*

This release is purely a documentation release, fixing the broken haddock links.

### Affected users

This release affects users who apply downstream patches to `System.FilePath.Internal`,
since `System.FilePath.Posix` and `System.FilePath.Windows` are now generated via `make cpp`
during development.

To make your patch apply, either apply it to `System.FilePath.Posix` and `System.FilePath.Windows`
instead or run `make cpp` after applying your patch.

### Changes

* Document relation between `joinPath` and `(</>)` wrt [#82](https://github.com/haskell/filepath/issues/82), [#82](https://github.com/haskell/filepath/issues/86)
* Clarify that `normalise` does not remove `..` wrt [#86](https://github.com/haskell/filepath/issues/86)
* Make clear that `equalFilePath` does not expand `..` wrt [#87](https://github.com/haskell/filepath/issues/87)
* Fix haddock source links by manually cpping wrt [#81](https://github.com/haskell/filepath/issues/81)
* Make export list in `System.FilePath` explicit to get haddocks on the landing module


## 1.4.2.1 *Jul 2018*

 * Bundled with GHC 8.6.1

## 1.4.2 *Jan 2018*

 * Bundled with GHC 8.4.1

 * Add `isExtensionOf` function.

## 1.4.1.2  *Feb 2017*

 * Bundled with GHC 8.2.1

## 1.4.1.1  *Nov 2016*

 * Bundled with GHC 8.0.2

 * Documentation improvements

## 1.4.1.0  *Dec 2015*

 * Bundled with GHC 8.0.1

 * Add `replaceExtensions` and `stripExtension` functions.

 * Make `isValid` detect more invalid Windows paths, e.g. `nul .txt` and `foo\nbar`.

 * Improve the documentation.

 * Bug fix: `isValid "\0"` now returns `False`, instead of `True`

## 1.4.0.0  *Mar 2015*

  * Bundled with GHC 7.10.1

  * New function: Add `-<.>` as an alias for `replaceExtension`.

  * Semantic change: `joinDrive /foo bar` now returns `/foo/bar`, instead of `/foobar`

  * Semantic change: on Windows, `splitSearchPath File1;\"File 2\"` now returns `[File1,File2]` instead of `[File1,\"File2\"]`

  * Bug fix: on Posix systems, `normalise //home` now returns `/home`, instead of `//home`

  * Bug fix: `normalise /./` now returns `/` on Posix and `\` on Windows, instead of `//` and `\\`

  * Bug fix: `isDrive ""` now returns `False`, instead of `True`

  * Bug fix: on Windows, `dropTrailingPathSeparator /` now returns `/` unchanged, instead of the normalised `\`

  * Bug fix: on Windows, `equalFilePath C:\ C:` now returns `False`, instead of `True`

  * Bug fix: on Windows, `isValid \\\foo` now returns `False`, instead of `True`

  * Bug fix: on Windows, `isValid \\?\D:file` now returns `False`, instead of `True`

  * Bug fix: on Windows, `normalise \` now returns `\` unchanged, instead of `\\`

  * Bug fix: on Windows, `normalise C:.\` now returns `C:`, instead of `C:\\`

  * Bug fix: on Windows, `normalise //server/test` now returns `\\server\test`, instead of `//server/test` unchanged

  * Bug fix: on Windows, `makeRelative / //` now returns `//`, instead of `""`

## 1.3.0.2  *Mar 2014*

  * Bundled with GHC 7.8.1

  * Update to Cabal 1.10 format

  * Minor Haddock cleanups

## 1.3.0.1  *Sep 2012*

  * Bundled with GHC 7.6.1

  * No changes

## 1.3.0.0  *Feb 2012*

  * Bundled with GHC 7.4.1

  * Add support for SafeHaskell

  * Bug fix: `normalise /` now returns `/`, instead of `/.`
