|
|
|
## Rationale
|
|
|
|
|
|
|
|
|
|
|
|
Changes to the basic libraries, especially the Prelude, can be disruptive, as they likely affect a large amount of existing code out there. Especially API breaking changes pose a challenge to library authors: Should they support the new version, the old version, or both, and if both, by what means should they support them (multiple versions, CPP, code that happens to work with either version)? The Core Library Committee decided to support the library authors with this problem, and offer a canonical solution.
|
|
|
|
|
|
|
|
## Policy
|
|
|
|
|
|
|
|
|
|
|
|
Changes to basic libraries are planned and implemented so that, at any time, it is possible to write code that works with the latest **three** releases of GHC and base, without resorting to CPP, and without causing warnings even when compiled with `-Wall`. Such code may not necessarily be idiomatic, though.
|
|
|
|
|
|
|
|
## Scope
|
|
|
|
|
|
|
|
|
|
|
|
The primary scope of this policy is the Prelude, as it affects the largest number of library authors. For other modules of base and other basic libraries, it is desirable to follow the guideline, if possible.
|
|
|
|
|
|
|
|
|
|
|
|
As this is but a guideline, it may be violated if it is impossible to adhere to, or causes major disadvantages.
|
|
|
|
|
|
|
|
## History
|
|
|
|
|
|
|
|
- 2015-10-13: Edward suggested the policy in a mail to the haskell-core-library committee: [ https://groups.google.com/d/msg/haskell-core-libraries/qXYMfV8JZ6k/tTuFrBMdDgAJ](https://groups.google.com/d/msg/haskell-core-libraries/qXYMfV8JZ6k/tTuFrBMdDgAJ)
|
|
|
|
- 2015-11-05: It was accepted at the committee meeting in November: [Libraries/Meetings/2015-11-05](libraries/meetings/2015-11-05)
|
|
|
|
- 2015-11-26: Joachim drafted this wiki page. |