-
Notifications
You must be signed in to change notification settings - Fork 8
Add Haskell GHC 8.8.x (LTS 16.x) with -O1
#9
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
Comments
Another big change is the |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
I'd like to see Regarding lts: if the snapshot version isn't going to be updated for a long time then it doesn't matter if you go with lts or nightly. long term support has no effect when not coming back for that support. ghc 8.10 has been out for a while now, the packages that codewars requires are most likely there. I'd also like to see the package Yes, I do see the previous comment about not planning to change anything other than versions. |
@namedots I honestly had forgotten about this, so thanks for reminding me. We don't use stack ghc -- -j2 +RTS -A128m -n2m -RTS --make -v0 -outputdir /tmp test/Main.hs -o test && ./test The authors (or solvers) can add other flags with I can add the latest LTS after cleaning up the remaining GHC 7.x kata and replacing it. We don't need to worry about breaking changes. Then remove GHC 8.2 if it's compatible with existing kata. |
Oh. Hmm. I was seeing some not-at-all-funny performance. please add -O1 in there! <3 I'd even prefer 8.2 with -O1 over any other changes, kata authors/solvers won't be adding it and it's needed in both those files No chance of 8.10.2 then? Otherwise we update to something that's already getting old. I imagine all you would be doing is writing nightly-2020-12-07 in place of lts-16.25 Anyway. Regardless of what I/we get. Thank you :3 |
Why can't the author update them? Does For nightly or not, I just prefer stability to bleeding edge as a maintainer. But I can consider adding one after replacing the current versions with the latest LTS (so newest LTS + nightly instead of 7.10 + 8.2). It might be also helpful to prepare for any future changes. Why doesn't 8.10 have LTS if it's been out that long and it's usable? |
To my understanding they're waiting for some linking issue on windows
individual ones can, of course, but getting authors and translators to do it, and having the extra option in the the solution too since it is per file.. not great. It does seem that I think the small amount of code involved makes -O1 a perfectly reasonable default, and it often has a large effect in haskell, it's not just a little bit. |
Cool, then we can add |
-O1
Speaking of compilation time, I suspect invoking the stack executable is adding some (because it does a bunch of housekeeping, but there's probably no housekeeping to do here) It's not something I care to warrior for (it's probably out of scope here too) but I thought I'd point it out in the context of -O1 possibly adding time. Losing a flat half second isn't something I care about... The problems I've been encountering is that things run at 15% of expected speed. :^)
|
If the setup time per solution goes from two to five seconds, some kata are going to need 15 instead of 12 seconds total, because sometimes longer compilation time is not offset by shorter run time. Would those be the kata that need Case in point: The Dollar Game |
If this (a change to 8.2 in the last 24h) was an -O1 experiment for 8.2: Yes, this is worse, and should be reverted :(. It is worse even for code that already specifies |
🤦♂️ All I did was add persistent package and rebuild the image so I can update the last kata that required 7.x. |
7.x is not slower though |
Yeah, I haven't touched 7.x image. I just added My plan was to:
I can revert the change and ignore the one kata for now. |
I would LOVE to have 8.8! You're not willing to have three versions? |
My thought with 8.10 was that 8.8 could be skipped, same as 8.4 and 8.6 Changing lts may come with breaking library changes. Idk what those would be, just pointing out that the current 8.2 kata aren't necessarily compatible :/ |
No, unless it's absolutely necessary for some reason. I try to keep the number of versions per language at most 2 (some languages like JavaScript are exceptions because of the technical dept). It's just much easier to maintain. Haskell images are not small, so it also adds up to affect the time to build runner VMs (pulling all the language images takes about 40 minutes at the moment) and deploy them. Having two versions makes updating language versions easier. The community can prepare for the new version by updating all kata to the newer version. Then I'll replace the older one with the newest. All Haskell kata are compatible with 8.2 now (ignoring the SQL one that needs To be clear, the runner can easily add new language versions. But having too many language versions have significant cost. It's also not great for the users because this usually means the supported version varies significantly by each kata (e.g., JS on Codewars often confuses users because of different Node versions). If you'd like to have your favorite language to receive more frequent updates, please help to update existing kata :)
Exactly. That's why I'm not replacing it. |
I reverted the change to the 8.2 image. |
If you meant the compilation time, maybe it's related to caching?
The runner executes each submission in an ephemeral container, so nothing is persisted. This can make a significant difference when you compare the performance against your local setup. Maybe I can compile some sample code during image build with different flags to populate cache. I'll try avoiding |
So will I'm quite willing to help, but there seem to be no |
Yes, I'll remove 7.x and add 8.8 soonish. Ignoring SQL kata for now. I'm pretty sure it can be updated later to 8.8 quickly because I had fixed it last night to work with 8.2 with There's nothing for the community to help at the moment in terms of existing content. Thanks for helping with the update to 8.2 :) I'll update the list after deploying 8.8 and updating compatible kata. I might ask for help if I run into any issues building a new image for 8.8. |
I was hoping for that ( three versions simultaneously, temporarily, if unavoidable ), but I didn't dare say it out loud. 😋 |
Once the program gets to running I expect somewhat comparable characteristics to what I do locally. Me, I care about upgrading to something reasonable + hopefully being able to have -O1 because then the world makes sense. |
This comment has been minimized.
This comment has been minimized.
I decided to use Stack, but without installing GHC through it. I'll also continue to use The following are the numbers on my laptop, so it's different from what you'll see, but it's faster:
GHC 8.8 has |
@namedots @JohanWiltink Feel free to open new issues for package requests. I can add them if it's widely used or if you have a specific use case. Current name: challenge
version: 0.1.0
license: BSD3
synopsis: Haskell challenge
dependencies:
- base >= 4.7 && < 5
- attoparsec
- haskell-src-exts
- hspec
- hspec-attoparsec
- hspec-codewars
- hspec-contrib
- hspec-formatters-codewars
- hspec-megaparsec
- HUnit-approx
- lens
- megaparsec
- mtl
- parsec
- persistent
- persistent-sqlite
- persistent-template
- random
- regex-pcre
- regex-posix
- regex-tdfa
- split
- text
- transformers
- vector
library:
source-dirs: src |
Deployed GHC 8.8.4. We have 23 kata not compatible with it. Please help to update them. Also, let me know if you notice anything weird or slow. We can try to improve it. |
Yet another Collatz kata required |
Not sure which repo is appropriate, so I'll say it here: the Haskell tests template was not updated after removing the older language versions, and it still contains obsolete code from those times.
|
Those are still optional and won't do any harm, but I'll update it. |
Name: Haskell
Version: Haskell 8.2.2 (LTS 10.4) -> Haskell 8.6.3 (LTS 13.4)
Release Notes
base
packageIMO, the biggest change is in the
base
package in version 4.11, which includes the enhancedSemigroup
andMonoid
along with their exposure toPrelude
and improved instances ofMaybe
. Plus, albeit not documented,liftA2
is now inPrelude
.While I don't think updating the GHC and base will break anything, switching the Stackage LTS version might involve a few big changes in other bundled packages.
The text was updated successfully, but these errors were encountered: