Changes between Version 26 and Version 27 of SplitBase


Ignore:
Timestamp:
May 10, 2013 2:32:47 PM (2 years ago)
Author:
igloo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SplitBase

    v26 v27  
    2323==== (G4) Allow well-engineered libraries to be used in what is currently base ====
    2424
    25 At the moment we cannot use libraries like `containers` or `bytestring` in code that is in
    26 the `base` package.  (Why?  Because those libraries in turn depend on `base` and we don't allow mutual recursion between packages.)  If we split `base` up, we could use these libraries, and perhaps others, in at least parts of what is currently `base`.   Two examples:
     25At the moment we cannot use libraries like `containers`, `bytestring`, `unix` and `Win32` in code that is in
     26the `base` package.  (Why?  Because those libraries in turn depend on `base` and we don't allow mutual recursion between packages.)  If we split `base` up, we could use these libraries, and perhaps others, in at least parts of what is currently `base`.   Some examples:
    2727
    2828 * We would like to be able to use the Text and !ByteString types in the I/O layer. For example, we'd like to have:
     
    3737 * The I/O manager currently has a copy of !IntMap inside its implementation because base cannot use containers. Why?  Becuase `containers` depends on `base`, so `base` can't depend on `containers`.  Splitting base would let us get rid of this code duplication. For example:
    3838   * `base-pure` doesn't need `containers`
    39    * `containser` depends on `base-pure`
     39   * `containers` depends on `base-pure`
    4040   * `base-io` depends on `containers`
     41
     42 * In #7427, we would like to use functions from the `unix` package in `base:System.Environment`
    4143
    4244==== (G5) Installable base ====