Logs: liberachat/#haskell
| 2026-02-05 20:39:27 | × | Carlodiociottene quits (~Carlodioc@host51.141-13-31.as49605.net) (Client Quit) |
| 2026-02-05 20:40:16 | <tomsmeding> | EvanR: yes, but with caveats: in a single dependency tree, every package can indeed occur with only one version. However, cabal has the concept of a "build dependency", which is not linked in but used as an executable; typical examples are alex, happy, c2hs. Those have their _own_ dependency tree, and those trees can contain different versions |
| 2026-02-05 20:40:52 | <EvanR> | that's convenient |
| 2026-02-05 20:40:55 | <tomsmeding> | this is relevant knowledge if you're trying to constrain the version of a dependency used to build a build tool; this is what the "any." in a cabal.project.freeze is for :p |
| 2026-02-05 20:41:05 | <tomsmeding> | (I learned this the hard way) |
| 2026-02-05 20:41:39 | <EvanR> | I'll have to read up on this freeze file you speak of |
| 2026-02-05 20:41:51 | <tomsmeding> | ah, then that was not a helpful reference |
| 2026-02-05 20:41:54 | <tomsmeding> | (`cabal freeze`) |
| 2026-02-05 20:42:06 | <tomsmeding> | it's part of the syntax of a `constraints:` block in a cabal.project file |
| 2026-02-05 20:42:19 | → | merijn joins (~merijn@62.45.136.136) |
| 2026-02-05 20:42:29 | <tomsmeding> | writing `constraints: foo >= 2` constrains the main dependency tree only; writing `constraints: any.foo >= 2` also constrains build tool dependencies |
| 2026-02-05 20:42:53 | <tomsmeding> | `cabal freeze` emits a "freeze file" with such constraints for everything (to make the build deterministic), and it emits any. constraints |
| 2026-02-05 20:46:56 | × | merijn quits (~merijn@62.45.136.136) (Ping timeout: 240 seconds) |
| 2026-02-05 20:47:44 | → | yin joins (~zero@user/zero) |
| 2026-02-05 20:54:26 | <EvanR> | I see, because without a freeze file cabal might come up with a different solution set in a different circumstances? |
| 2026-02-05 20:54:43 | <EvanR> | it checks the phase of the moon |
| 2026-02-05 20:54:53 | <tomsmeding> | well, if one does `cabal update`, cabal may select newer versions |
| 2026-02-05 20:54:55 | <tomsmeding> | :) |
| 2026-02-05 20:55:19 | <tomsmeding> | or because system libraries changed and some pkg-config dependencies are now available or not available, different flags/packages are selected |
| 2026-02-05 20:55:21 | <EvanR> | wait that needs to be an acme package |
| 2026-02-05 20:56:11 | <EvanR> | get the phase of the moon as a bespoke sum type, or a float |
| 2026-02-05 20:56:34 | <tomsmeding> | and do that in Setup.hs, and change dependencies based on it? |
| 2026-02-05 20:56:39 | <EvanR> | yeah |
| 2026-02-05 20:56:57 | <EvanR> | you keep coming up with the best ideas! |
| 2026-02-05 20:57:06 | <tomsmeding> | well this was your idea :p |
| 2026-02-05 20:57:44 | → | wickedjargon joins (~user@2605:8d80:5430:4910:f62b:7e78:f176:a13) |
| 2026-02-05 20:58:01 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 21:00:00 | <tomsmeding> | (this idea of a "freeze file" is also called a "lock file" in different ecosystems; see also: package-lock.json, Cargo.lock, perhaps go.sum but I'm not sure I recall correctly there) |
| 2026-02-05 21:00:49 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 260 seconds) |
| 2026-02-05 21:02:36 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 2026-02-05 21:02:46 | <mauke> | (or a snapshot file in carton) |
| 2026-02-05 21:03:02 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-02-05 21:06:16 | jmcantrell_ | is now known as jmcantrell |
| 2026-02-05 21:09:55 | <EvanR> | apparently go has a minimal version selection algorithm instead of a freeze file, and I'm not sure this is enough to deal with some of your use cases |
| 2026-02-05 21:10:14 | <tomsmeding> | my use cases? |
| 2026-02-05 21:10:15 | <EvanR> | pkg-config giving different results for stuff not written in go |
| 2026-02-05 21:10:22 | <EvanR> | influencing the result |
| 2026-02-05 21:10:24 | <tomsmeding> | ah |
| 2026-02-05 21:10:30 | <tomsmeding> | luckily I don't write go :) |
| 2026-02-05 21:10:34 | <EvanR> | \o/ |
| 2026-02-05 21:11:59 | <EvanR> | though this random article about the theory seems interesting for its own sake https://research.swtch.com/vgo-mvs |
| 2026-02-05 21:12:23 | <EvanR> | "The problem minimal version selection solves is NL-complete |
| 2026-02-05 21:12:24 | <EvanR> | " |
| 2026-02-05 21:13:38 | <tomsmeding> | if he's talking about version resolution, yes, that's constraint solving on a language expressive enough to easily encode SAT |
| 2026-02-05 21:13:46 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 21:15:05 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 2026-02-05 21:16:33 | <tomsmeding> | which is why cabal sometimes takes a while doing it :p |
| 2026-02-05 21:19:06 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-02-05 21:20:04 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds) |
| 2026-02-05 21:22:03 | × | ringo_ quits (~ringo@157.230.117.128) (Ping timeout: 244 seconds) |
| 2026-02-05 21:23:55 | → | pavonia joins (~user@user/siracusa) |
| 2026-02-05 21:25:14 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 2026-02-05 21:29:02 | → | ringo_ joins (~ringo@157.230.117.128) |
| 2026-02-05 21:29:33 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 21:34:36 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-05 21:39:47 | → | divlamir_ joins (~divlamir@user/divlamir) |
| 2026-02-05 21:40:18 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Quit: peterbecich) |
| 2026-02-05 21:40:36 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 2026-02-05 21:42:15 | → | _JusSx_ joins (~jussx@78.210.223.162) |
| 2026-02-05 21:42:40 | × | divlamir quits (~divlamir@user/divlamir) (Ping timeout: 246 seconds) |
| 2026-02-05 21:45:03 | × | divlamir_ quits (~divlamir@user/divlamir) (Ping timeout: 252 seconds) |
| 2026-02-05 21:45:19 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds) |
| 2026-02-05 21:45:21 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 21:49:40 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 21:50:14 | → | divlamir joins (~divlamir@user/divlamir) |
| 2026-02-05 21:51:08 | <jreicher> | mesaoptimizer: The main difference between lsp-mode and eglot is that eglot tries to integrate with existing frontends in Emacs and does not have any of its own. That makes it look and feel like "standard Emacs". Consequently it has also become part of core, but it is worth upgrading both it and flymake to more recent versions. |
| 2026-02-05 21:56:23 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2026-02-05 21:56:55 | × | Googulator quits (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-02-05 21:57:06 | → | Googulator joins (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) |
| 2026-02-05 21:57:56 | × | michalz quits (~michalz@185.246.207.200) (Remote host closed the connection) |
| 2026-02-05 22:00:51 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 22:03:14 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 260 seconds) |
| 2026-02-05 22:04:08 | × | qqq quits (~qqq@185.54.21.178) (Quit: Lost terminal) |
| 2026-02-05 22:07:19 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 22:17:05 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-05 22:18:53 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 22:23:37 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 22:30:46 | → | vgtw joins (~vgtw@user/vgtw) |
| 2026-02-05 22:31:16 | → | DetourNetworkUK joins (~DetourNet@user/DetourNetworkUK) |
| 2026-02-05 22:34:40 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 22:39:29 | → | tromp joins (~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37) |
| 2026-02-05 22:39:39 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-05 22:43:25 | × | oskarw quits (~user@user/oskarw) (Remote host closed the connection) |
| 2026-02-05 22:44:29 | × | yin quits (~zero@user/zero) (Remote host closed the connection) |
| 2026-02-05 22:47:01 | → | yin joins (~zero@user/zero) |
| 2026-02-05 22:50:25 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 22:52:25 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 2026-02-05 22:52:38 | → | mange joins (~mange@user/mange) |
| 2026-02-05 22:54:55 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 23:05:50 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 23:07:01 | × | remedan quits (~remedan@78-80-95-79.customers.tmcz.cz) (Ping timeout: 246 seconds) |
| 2026-02-05 23:10:10 | → | remedan joins (~remedan@78-80-95-79.customers.tmcz.cz) |
| 2026-02-05 23:10:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 23:14:45 | × | hsw quits (~hsw@106.104.102.45) (Read error: Connection reset by peer) |
| 2026-02-05 23:15:04 | → | hsw joins (~hsw@106.104.102.45) |
| 2026-02-05 23:16:56 | × | tromp quits (~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-02-05 23:21:36 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-05 23:26:37 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-02-05 23:26:48 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-05 23:29:33 | × | Square3 quits (~Square4@user/square) (Ping timeout: 252 seconds) |
All times are in UTC.