Modernize server build and CI#320
Closed
thomashoneyman wants to merge 3 commits into
Closed
Conversation
PureScript 0.15.16 was never uploaded to Hackage, so the extra-dep now pins the v0.15.16 release tag on GitHub. The other extra-deps mirror the upstream purescript stack.yaml at that tag, which also lets us drop the stale process/Cabal/protolude pins. The server is updated for scotty 0.22 (queryParam, defaultOptions) and now builds warning-free with -Wall -Werror; the cabal file is updated to cabal-version 2.4 with unused dependencies removed, and the redundant Setup.hs is deleted (build-type: Simple ignores it).
The set grew from 459 to 641 packages since psc-0.15.13-20231219, so the server's RTS heap cap is raised from 3G to 6G; deploying this requires more than the current 4GB of droplet RAM (the old set already peaked at 3.1G during startup). The version-sync script now understands a GitHub-pinned compiler extra-dep, and the client explicitly requires purs >= 0.15.16 (the previous ^0.15.2 range already floated there on fresh installs).
Node 20 reached end of life in April 2026. The -j1 flag dates from smaller CI runners; ubuntu-24.04 runners have 4 vCPUs and 16GB of RAM.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Scoped down after #316 landed — the compiler bump, package set, and deploy changes all live there now. What remains here is the server-build and CI modernization that composes with it:
lts-20.9→lts-20.26(GHC 9.2.5 → 9.2.8), the newest snapshot compatible withpurescript-0.15.15. Two pin adjustments were needed:protolude-0.3.3(0.3.1's bytestring bound predates lts-20.26's bytestring-0.11.4) andhappy-1.20.0(purescript pinshappy ==1.20.0exactly; the snapshot ships 1.20.1.1).cabal-version: 2.4, SPDX license,default-language, unused dependencies removed (http-types,directory,filepath), and the executable now builds with-Wall -Werror. The redundantSetup.hsis deleted (build-type: Simpleignores it).server/Main.hs: cleanup to get-Wall-clean — six dead imports removed, name shadowing fixed (includingnextshadowing scotty's export), and the port/glob arguments are now parsed withreadMaybeand a usage message instead of a partial pattern match. No behavior changes otherwise; the scotty 0.12 API (param,def) is untouched since that's what the snapshot ships.-j1from the server build — it dates from much smaller runners; ubuntu-24.04 runners have 4 vCPUs and 16GB of RAM.Not included (deliberately): the GHC 9.8 / lts-23 jump. That requires PureScript 0.15.16+, which never reached Hackage; it becomes a clean follow-up when 0.15.17 is published. The scotty 0.22 API changes go with it, since lts-23 ships scotty 0.22 natively.
Verified locally: full
stack buildon GHC 9.2.8 passes with-Wall -Werror, and the binary was smoke-tested (usage message on bad args, endpoints unchanged).