support.md

September 5, 2019 ยท View on GitHub

support

Haskell compiler

supported Haskell 8.4.x, 8.6.x, 8.8.x:

  • GHC 8.4 (Mar 2018)
  • GHC 8.6 (Aug 2018)
  • GHC 8.8 (Aug 2019)

Not supported anymore:

  • GHC 8.2 (Jul 2017)
  • GHC 8.0 (May 2016)
  • GHC 7.10 (Apr 2015)
  • GHC 7.8 (Apr 2014)
  • Older GHCs

Libraries can be effectively gated against older GHCs using in .cabal file:

if impl(ghc < 8.4)
  Buildable: False
else
  build-depends: base

or in hpack format:

when:
  - condition: "impl(ghc < 8.4)"
    then:
      buildable: False
    else:
      dependencies: base

Operating system

Package SHOULD be operating system independent if possible.

supported:

  • Windows:
    • 10 (July 2015)
  • Mac OS:
    • 10.10 Yosemite (Jun 2014)
    • 10.11 El Capitan (Jun 2015)
    • 10.12 Sierra (Jun 2016)
    • 10.13 High Sierra (Jun 2017)
    • 10.14 Mojave (Sep 2018)
    • 10.15 Catalina (Sep 2019)
  • Linux
  • BSDs (FreeBSD, NetBSD, OpenBSD)

Not supported anymore:

  • Windows 8.1 (2013, mainstream support ended January 2018)
  • Windows 8 (2012, unsupported)
  • Windows Vista (2007, support ended)
  • Windows 7 (2009, support ended)
  • Older Windows
  • Mac OS 10.9 (Jun 2013) and older
  • Old Linuxes (TODO: define a cutoff)
  • Old BSDs (TODO: define a cutoff)

Architecture

Package SHOULD be architecture independent if possible.

Package MUST support:

  • 64 bits X86-64

Package COULD also support:

  • 32 bit i386
  • 32/64 bit ARM

Any other architecture is unsupported, but will possibly work with architecture independent code.

Missing support & Rationale

In an ideal situation, supporting everything would be nice. However the support cost has a non-negligeable cost in term of the either

  • The source code cleanness
  • Time to test complex matrix of differents versions
  • Time to add compatibility fixes
  • Time to have broad availability of a latest feature

So, the list of supported combinaison will not only be trimmed down as new combinaisons are added, but old combinaisons will be actively removed so that compatibility and other workaround are cleaned up and package stay maintainable.