Changes between Version 2 and Version 3 of StableInterfaces

Show
Ignore:
Timestamp:
09/27/07 07:06:22 (6 years ago)
Author:
duncan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • StableInterfaces

    v2 v3  
    33 
    44== Cabal == 
     5 
     6== Cabal file format == 
     7This is backwards compatible and mostly forwards compatible. 
     8New fields can be added without breaking older versions of Cabal. 
     9Fields can be deprecated without breaking older packages. 
     10 
    511== Command-line interface == 
    612==== Very Stable Command-line interfaces ==== 
     
    2632==== Maybe Stable API ==== 
    2733 * UserHooks 
    28    {{{ 
    29 runTests :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ExitCode, -- ^Used for @.\/setup test@ 
    30 readDesc :: IO (Maybe PackageDescription), -- ^Read the description file 
    31 hookedPreProcessors :: [ PPSuffixHandler ], 
    32    -- ^Custom preprocessors in addition to and overriding 'knownSuffixHandlers'. 
    33 hookedPrograms :: [Program], 
    34    -- ^These programs are detected at configure time.  Arguments for them are added to the configure command. 
    35   -- |Hook to run before configure command 
    36 preConf  :: Args -> ConfigFlags -> IO HookedBuildInfo, 
    37 -- |Over-ride this hook to get different behavior during configure. 
    38 confHook :: PackageDescription -> ConfigFlags -> IO LocalBuildInfo, 
    39  -- |Hook to run after configure command 
    40 postConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, 
    41 ... 
    42 }}} 
     34   The hooks api will change in the future. 
     35 * Distribution.* is mostly declarative information about packages and is somewhat stable. 
    4336 
    4437==== Unstable API ==== 
    4538To what extent should the rest of the API be stabalized?  Sometimes utility functions are useful to layered tools, either to find out where stuff is in the build tree, or to compute something like the package name, given the package identifier. 
    4639 * Various utility functions 
    47  * Everything else 
    48  
     40 * Everything under Distribution.Simple.* has no stability guarantee 
    4941 
    5042== Hackage == 
    51  * FIX: XML-RPC interface from hackage-client?  Just client-side functions? 
    52  
    53 == cabal-get == 
     43 * 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.