-
Notifications
You must be signed in to change notification settings - Fork 696
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC Backwards-compatibility scheme (guidelines, not policy) #4998
Comments
Note: we also have http://cabal.readthedocs.io/en/latest/misc.html#stability-of-cabal-interfaces, but I'm not sure that page is very true. |
Comments: The goal of the proposal is to define the guidelines (i.e. not strict policy) how to deal with breakages in Also to give a recommendation how to name such transient functions (which are there only for legacy reasons), withTempDirectory :: Verbosity -> FilePath -> String -> (FilePath -> IO a) -> IO a
withTempDirectory verbosity targetDir template f = withFrozenCallStack $
withTempDirectoryEx verbosity defaultTempFileOptions targetDir template
(withLexicalCallStack f)
withTempDirectoryEx :: Verbosity -> TempFileOptions
-> FilePath -> String -> (FilePath -> IO a) -> IO a So for the future |
I think we should recommend Ubuntu users to switch to @hvr's PPA. Versions in official repos have always been ancient, usually lagging behind Debian. Also we should add back the update reminder removed in #2089, but make it possible to disable it via both a compile-time flag and a |
To make it clear: I don't want such guidelines, Starting with Also: #3600 So alternative proposal is simply: Cabal-the-lib doesn't have any stronger guarantees about API breakage than PVP. Note: this discussion is triggered by History note The original |
Also seems that http://cabal.readthedocs.io/en/latest/misc.html#stability-of-cabal-interfaces if from time before |
I'm okay with removing The BC policy we seem to be following in practice is "try to preserve BC unless it's too costly" -- so, a softer version of "PVP guarantees". I think we can add a rule that when someone adds a The stability page should mention/link to |
Perhaps we can still do that, if an impact assessment (see https://github.com/23Skidoo/all-custom-setups) shows that only a small number of packages will be affected. |
Looks like there's also #3573. Yearly topic! |
I guess, Cabal is just a library. Use version bounds. |
Continuation of #4981
We shall make possible to do most tasks without
build-type: Custom
. It's a can of worms. I don't mentionacme-mutable-package
. Given that,build-type: Custom
should be a rare case in the long run, so I wouldn't use too much resources to keep backward compatibility inCabal
the lib. (The most problematic case is that newcabal-install
should be able to talk to oldSetup.hs
).Given that, we should have
cabal-install
buildingCustom
packages with oldCabal
in repository, that might be tricky to setup though. @ezyang cancabal-testsuite
do that, i.e. use system'sCabal
lib, in that particular test?However, we shouldn't deliberately break things. I think aiming to only grow the API is good.
Yet, as an example,
license
field will change next week (See #4887, my first point). #2547 is soon three years old issue. Here my point is: changing the type ofrewriteFile
isn't a as big thing asAMP
,FTP
orSMP
, which are well planned, with clear schedule when things will happen.template-haskell
breaks a little every GHC release, why cannotCabal
?Also as #4997 shows,
FlagAssignent
being now opaque breaks currentidris
setup script, not badly - but breaks anyway.Back to grow the API. To be clear: I like
rewriteFileEx
, because of it, I don't need to do changes incabal-doctest
right now. However, API cannot grow indefinitely. My proposal for such type signature changes:foobarEx
with new signaturefoobar
with a message: Use foobarEx, because .foobar
will change its type in Cabal-X+Nfoobar
to new signaturefoobarEx
with a message: foobarEx was a compat name in Cabal-X -- Cabal-X+N. It will be removed in `Cabal-X+MfoobarEx
IMHO, N=1, M=2 would be enough.
That's already heavy process! Yet, I'll go thru
{-# DEPRECATED #-}
pragmas today, and amend messages with: this function will be removed in Cabal-3.0 (estimated: Oct 2018) https://github.com/haskell/cabal/milestone/42In Ubuntu
18.04 LTS - can we do something about this?
In Debian:
So I guess we have to keep 1.24 in mind for a while, when developing
Cabal
the lib. We cannot tell all users to update theircabal-install
, luxurystack
has!.The text was updated successfully, but these errors were encountered: