Changes between Version 2 and Version 3 of StableInterfaces
- Timestamp:
- 09/27/07 07:06:22 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
StableInterfaces
v2 v3 3 3 4 4 == Cabal == 5 6 == Cabal file format == 7 This is backwards compatible and mostly forwards compatible. 8 New fields can be added without breaking older versions of Cabal. 9 Fields can be deprecated without breaking older packages. 10 5 11 == Command-line interface == 6 12 ==== Very Stable Command-line interfaces ==== … … 26 32 ==== Maybe Stable API ==== 27 33 * 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. 43 36 44 37 ==== Unstable API ==== 45 38 To 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. 46 39 * Various utility functions 47 * Everything else 48 40 * Everything under Distribution.Simple.* has no stability guarantee 49 41 50 42 == 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.
