[Update user guide on reporting bugs and stability of cabal interfaces Duncan Coutts **20080124201250 Fixes ticket #11. Though the section could do with a bit more detail. It corresponds to what's on the wiki: http://hackage.haskell.org/trac/hackage/wiki/StableInterfaces ] { hunk ./doc/Cabal.xml 2962 - Known bugs and deficiencies + Reporting bugs and deficiencies hunk ./doc/Cabal.xml 2964 - All these should be fixed in future versions: + Please report any flaws or feature requests in the + bug + tracker. + hunk ./doc/Cabal.xml 2969 - - - The scheme described in - will not work on Windows without MSYS or Cygwin. - - - - Cabal has some limitations both running under Hugs - and building packages for it: - - - Cabal requires the latest release (Mar 2005). - - - - It doesn't work with Windows. - - - - There is no hugs-pkg tool. - - - - - - Though the library runs under Nhc98, it cannot build - packages for Nhc98. - - - - - Please report any other flaws to - libraries@haskell.org. + For general disussion or queries email the libraries mailing list + libraries@haskell.org. There is also a development mailing + list cabal-devel@haskell.org. + hunk ./doc/Cabal.xml 2987 - - - - - + + Cabal file format + + This is backwards compatible and mostly forwards compatible. + New fields can be added without breaking older versions of Cabal. + Fields can be deprecated without breaking older packages. + + + + + Command-line interface + + Very Stable Command-line interfaces + + + + + ./setup configure + + --prefix + --user + --ghc, --hugs + --verbose + --prefix + + + + ./setup build + ./setup install + ./setup register + ./setup copy + + + + + Stable Command-line interfaces + + + + Unstable command-line + + + + + Functions and Types + + The Cabal library follows the Package + Versioning Policy. This means that within a stable major + release, for example 1.2.x, there will be no incompatible API changes. + But minor versions increments, for example 1.2.3, indicate compatable + API additions. + + + + The Package Versioning Policy does not require any API guarantees + between major releases, for example between 1.2.x and 1.4.x. In + practise of course not everything changes between major releases. Some + parts of the API are more prone to change than others. The rest of this + section gives some informal advice on what level of API stability you + can expect between major releases. + + + + Very Stable API + + defaultMain + + + defaultMainWithHooks defaultUserHooks + + + But regular defaultMainWithHooks isn't stable + since UserHooks changes. + + + + + + + Semi-stable API + + + + UserHooks The hooks api will change in the + future + + + Distribution.* + is mostly declarative information about packages and is somewhat + stable. + + + + + + + Unstable API + + Everything under + Distribution.Simple.* + has no stability guarantee. + + + + + + Hackage + + The index format is a partly stable interface. It consists of a tar.gz + file that contains directories with .cabal files + in. In future it may contain more kinds of files so do not assume every + file is a .cabal file. Incompatible revisions to + the format would involve bumping the name of the index file, ie + 00-index.tar.gz, + 01-index.tar.gz etc. + + }