-
Notifications
You must be signed in to change notification settings - Fork 92
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
Release Planning: unix-2.8.0.0 (GHC 9.6.x) #164
Comments
Is this a request to review the 4 PRs? |
Reviews would be nice. |
I've looked some of these over. Not sure what's next. For the Baud rates I really would like to see PatternSynonyms, and support for ad-hoc user-specified code points. For the stat structures, returning |
|
Don't know about everyone, but I'm definitely on-board. |
I'm generally not on board with dropping support for old GHCs unless it is not possible to support those anymore. As you can see in https://matrix.hackage.haskell.org/package/unix I've made sure that we kept support back till GHC 7.4.2 |
@hvr what's the reason to support GHC < 8.0 in 2020? When will you be ready to abandon it? |
I'm sympathetic to this on general principles, but find that managing system interfaces portably without PatternSynonyms is just too painful. One ends up locked into rigid algebraic datatypes that map poorly onto a platform-dependent and time-dependent set of constants, and require unnecessary conversions between the underlying numeric values and the supported enums. So for me GHC system programming really only becomes manageable with GHC 8.0. :-( [ EDIT: And as I mentioned elsewhere, only GHC 8.8 and 8.10 are still getting bug fixes, thus e.g. the MVar crash I ran into will not be fixed in 7.8, 7.10 or 8.0–8.6. To me that strongly signals that new releases of libraries do not need to target old GHC releases once doing so holds back doing new things "the right way". ] |
The release date of GHC 7.10.3a (last tagged 7.10.x release) will soon be 5 years in the past:
And 7.10.1 was released in March of the same year:
The 8.0 release has now been out for more than 4 years:
And the |
What is the recommended way to run |
Let's try an easier question :) |
I just tried something like that now. I say "like that", because I do have the GHC source tree and do my own GHC builds, but I tested the "unix" package from github, not the one in the GHC tree:
|
Note that the "unix" package in GHC differs from master in at least: --- System/Posix/IO.hsc 2020-01-24 03:31:15.944438000 -0500
+++ /home/viktor/dev/ghc/libraries/unix/System/Posix/IO.hsc 2019-09-29 21:53:25.804479000 -0400
@@ -76,12 +76,13 @@
-- for information on how to use the 'FileMode' type.
openFd :: FilePath
-> OpenMode
+ -> Maybe FileMode -- ^Just x => creates the file with the given modes, Nothing => the file must exist.
-> OpenFileFlags
-> IO Fd
-openFd name how flags =
- withFilePath name $ \str ->
+openFd name how maybe_mode flags = do
+ withFilePath name $ \str -> do
throwErrnoPathIfMinus1Retry "openFd" name $
- open_ str how flags
+ open_ str how maybe_mode flags
-- |Create and open this file in WriteOnly mode. A special case of
-- 'openFd'. See 'System.Posix.Files' for information on how to use
@@ -89,4 +90,4 @@
createFile :: FilePath -> FileMode -> IO Fd
createFile name mode
- = openFd name WriteOnly defaultFileFlags{ trunc=True, creat=(Just mode) }
+ = openFd name WriteOnly (Just mode) defaultFileFlags{ trunc=True } From which I surmise, that my test run used the tests from master, but the tests ran against the "unix" bundled with GHC. |
FWIW, according to the Haskell Weekly survey, there seem to be few GHC users for GHC < 8.2. I've recently posed the question of whether long-term support (at least longer than, say, 5 years) is worth the trouble if it holds back the project, or the maintenance burden is too high. Most people, including CLC members, urged dropping GHC versions. If we are unable to address #145 in a reasonable way due to GHC version blockage (we are), or if there is a clear elegant solution (there is), then we should seriously consider it. So i agree with @hs-viktor and @Bodigrim here. |
At the very best a future |
Now that CI is in better shape, it is perhaps time to return the backlog, but first I think we need to settle this issue. |
8.0 or 8.2? I thought that |
For me personally, the baseline is 8.0, because that makes PatternSynonyms available, which I find indispensable for system programming (modeling various FFI enums and bit fields). I haven't looked at the |
It requires |
Yeah, I just found the same comments, I guess I forgot all about it in the meantime. So yes, that PR requires 8.2. If there's no compelling reason to still support 8.0, I am OK with 8.2 as the base, but if #78 builds with 8.0 and just returns |
FVIW @bgamari asked me whether @vdukhovni what do you think? Given that |
So far we've gotten the project unstuck, with working CI and a more practical minimum GHC version, and have started to clear the PR backlog. But we've not yet had a chance to reassess what architectural debt we want to address that does not yet have a pending PR. If we only get to make one major version bump every few years, then perhaps we should not rush to make a 2.8 release. If on the other hand it'd be OK to have unix-2.8 for GHC 9.2 and unix-2.9 for GHC 9.4 (or whatever) six months to a year later, then we could ship 2.8 comparatively soon, with just the PR backlog cleared, and new work starting after 2.8. Why can't we do another major bump for the next major GHC release? |
Imagine Bumping upper bounds across the whole ecosystem is also no small business, and it's better do it once instead of twice. I've found a release schedule for GHC 9.2: https://mail.haskell.org/pipermail/ghc-devs/2021-February/019478.html |
I'm not sure what you mean exactly. We can still commit updated files. network does that too. Old
Yeah, me too.
The wasm action is causing trouble. |
Ok, I'm going to release filepath independent of unix. I have a feeling making a unix release will take another month at least. There are issues with CI and I can't manually push to master either. |
You can use https://github.com/nektos/act to debug GitHub Actions locally. In addition to that, could you not just configure the CI yml files to also point to a non-master branch, so that it doesn't get polluted? I'm not a fan of pushing to master to iterate on CI. However, if you (the maintainers) are okay with it, you can change it in the repo settings, I believe. |
We're not iterating on CI. But I need PR approvals to merge even simple things that I'm confident about. I don't see how I can manage a timely release in that manner, so I'm going to go ahead with other work. |
I understand the frustration. I have removed the need for PR approvals at this time, this can be re-added later if people decide it's wanted. |
@hasufell sorry, it's midsummer and people (incuding me) are on holidays, so things take longer than ideal. Let's not merge without approvals please. |
I'm just pushing because these are the last few weeks before my new job, after which I likely won't have time for a while... so bad timing I guess. |
I'm reviewing the backlog this weekend. |
Otherwise the only thing that's left seems to be to:
|
I think we can release. Any last words? |
Boot libraries must compile without warnings, so (assuming that https://gitlab.haskell.org/ghc/ghc/-/merge_requests/8478 is merged in time for GHC 9.6) we need #238 or equivalent. |
That's not released and no one knows if it will be merged and when. That can be a point release. I don't see why unreleased GHC versions should block a release. |
@Bodigrim but feel free to resolve the PR. I'd like to have a release this weekend to unblock certain filepath libraries that can't be uploaded to hackage yet. Win32 was just released on hackage with AFPP support. |
Let’s go! |
I uploaded the candidate: https://hackage.haskell.org/package/unix-2.8.0.0/candidate Tag: https://github.com/haskell/unix/releases/tag/v2.8.0.0 Another maintainer please test the candidate (e.g. configure script etc, which are generated on my machine with autoconf-2.69) and then press the publish button on the candidate page. |
Ok, re-uploaded: https://hackage.haskell.org/package/unix-2.8.0.0/candidate |
Published: https://hackage.haskell.org/package/unix-2.8.0.0. |
TODO:
Baud Rate
blockSize/blockCount
Doc fixes
The text was updated successfully, but these errors were encountered: