Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,799,431 events total
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.