Home liberachat/#haskell: Logs Calendar

Logs on 2026-03-26 (liberachat/#haskell)

00:00:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
00:08:23 lbseale joins (~quassel@user/ep1ctetus)
00:10:57 × lbseale quits (~quassel@user/ep1ctetus) (Client Quit)
00:11:42 lbseale joins (~quassel@user/ep1ctetus)
00:11:43 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:16:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
00:27:07 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:31:30 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
00:32:49 st_aldini joins (~Betterbir@2605:a601:a07c:7426:ecad:2043:34c4:9f7a)
00:35:10 × pabs3 quits (~pabs3@user/pabs3) (Ping timeout: 276 seconds)
00:37:57 pabs3 joins (~pabs3@user/pabs3)
00:42:30 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:47:14 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
00:55:44 × acidjnk_new quits (~acidjnk@p200300d6e700e548e04f79b7362eb2f4.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
00:57:53 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:04:20 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
01:05:43 × xff0x quits (~xff0x@ai084147.d.east.v6connect.net) (Ping timeout: 264 seconds)
01:15:40 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:20:03 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
01:31:03 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:35:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
01:39:44 × arandombit quits (~arandombi@user/arandombit) (Remote host closed the connection)
01:44:05 socksbuny4 joins (~socks@oberon.raccoon.fun)
01:44:12 × socksbuny quits (~socks@oberon.raccoon.fun) (Read error: Connection reset by peer)
01:44:12 socksbuny4 is now known as socksbuny
01:46:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:50:44 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
01:52:54 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
01:57:51 × st_aldini quits (~Betterbir@2605:a601:a07c:7426:ecad:2043:34c4:9f7a) (Remote host closed the connection)
01:58:46 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
02:01:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:05:17 xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
02:06:00 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 255 seconds)
02:06:27 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
02:12:15 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
02:17:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:21:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
02:27:40 × zlqrvx quits (~zlqrvx@user/zlqrvx) (Ping timeout: 245 seconds)
02:32:35 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:39:21 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
02:40:14 mistivia joins (~mistivia@user/mistivia)
02:44:20 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
02:50:38 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:56:59 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
03:07:07 × mesaoptimizer quits (~user@user/PapuaHardyNet) (Remote host closed the connection)
03:07:29 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:11:54 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
03:12:25 × machinedgod quits (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 244 seconds)
03:22:49 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:23:50 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 256 seconds)
03:27:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
03:33:31 × jmcantrell_ quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.8.1)
03:38:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:42:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
03:48:00 × craunts795335385 quits (~craunts@152.32.99.2) (Quit: The Lounge - https://thelounge.chat)
03:51:09 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 245 seconds)
03:51:10 weary-traveler joins (~user@user/user363627)
03:51:42 chromoblob joins (~chromoblo@user/chromob1ot1c)
03:53:21 × Googulator quits (~Googulato@2a01-036d-0106-2888-7906-f38b-8800-979e.pool6.digikabel.hu) (Quit: Client closed)
03:53:34 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:53:38 Googulator joins (~Googulato@2a01-036d-0106-2888-7906-f38b-8800-979e.pool6.digikabel.hu)
03:56:22 craunts795335385 joins (~craunts@152.32.99.2)
03:56:55 × tromp quits (~textual@2001:1c00:340e:2700:8c4a:e90d:5184:c89) (Ping timeout: 272 seconds)
03:57:32 × craunts795335385 quits (~craunts@152.32.99.2) (Client Quit)
03:58:31 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
03:58:31 craunts795335385 joins (~craunts@152.32.99.2)
04:00:52 × craunts795335385 quits (~craunts@152.32.99.2) (Client Quit)
04:01:56 craunts795335385 joins (~craunts@152.32.99.2)
04:02:40 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 245 seconds)
04:08:56 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:10:30 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
04:13:29 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
04:16:22 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
04:17:52 weary-traveler joins (~user@user/user363627)
04:24:19 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:26:30 czan joins (~czan@user/mange)
04:30:53 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
04:31:23 arandombit joins (~arandombi@user/arandombit)
04:37:52 Square2 joins (~Square@user/square)
04:42:22 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:46:54 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
04:53:21 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:56:37 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 268 seconds)
04:57:45 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
05:08:43 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:11:01 takuan joins (~takuan@d8D86B9E9.access.telenet.be)
05:13:12 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
05:19:40 hakutaku joins (~textual@user/hakutaku)
05:23:47 Googulator22 joins (~Googulato@2a01-036d-0106-0364-757c-7b1f-aded-4ae9.pool6.digikabel.hu)
05:24:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:27:17 × Googulator quits (~Googulato@2a01-036d-0106-2888-7906-f38b-8800-979e.pool6.digikabel.hu) (Ping timeout: 245 seconds)
05:28:41 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
05:30:22 × hakutaku quits (~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:31:39 hakutaku joins (~textual@user/hakutaku)
05:35:37 × czan quits (~czan@user/mange) (Quit: Quittin' time)
05:36:22 michalz joins (~michalz@185.246.207.215)
05:39:28 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:39:41 puke joins (~puke@user/puke)
05:44:34 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
05:45:57 mesaoptimizer joins (~user@user/PapuaHardyNet)
05:54:27 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:55:33 peterbecich joins (~Thunderbi@71.84.33.135)
05:58:42 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
06:02:22 × haritz quits (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
06:09:44 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:11:34 × Alex_delenda_est quits (~al_test@85.174.183.240) (Ping timeout: 256 seconds)
06:11:50 × AlexNoo quits (~AlexNoo@85.174.183.240) (Ping timeout: 245 seconds)
06:12:08 × AlexZenon quits (~alzenon@85.174.183.240) (Ping timeout: 256 seconds)
06:16:39 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
06:27:46 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:30:14 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds)
06:32:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
06:43:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:48:14 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
06:52:56 × puke quits (~puke@user/puke) (Remote host closed the connection)
06:53:21 puke joins (~puke@user/puke)
06:55:23 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:55:59 × puke quits (~puke@user/puke) (Remote host closed the connection)
06:56:24 puke joins (~puke@user/puke)
07:00:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
07:04:24 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:05:56 × puke quits (~puke@user/puke) (Remote host closed the connection)
07:06:28 puke joins (~puke@user/puke)
07:06:33 × hc quits (~hc@mail.hce.li) (Remote host closed the connection)
07:07:28 hc joins (~hc@mail.hce.li)
07:10:46 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:13:55 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 245 seconds)
07:15:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
07:16:03 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
07:18:53 Square joins (~Square4@user/square)
07:21:32 × Square2 quits (~Square@user/square) (Ping timeout: 267 seconds)
07:26:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:30:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
07:32:51 × jreicher quits (~joelr@user/jreicher) (Quit: brb)
07:38:36 CiaoSen joins (~Jura@p549cb690.dip0.t-ipconnect.de)
07:41:30 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:44:15 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
07:45:02 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
07:45:45 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
07:47:12 Enrico63 joins (~Enrico63@93-35-52-29.ip53.fastwebnet.it)
07:47:17 × puke quits (~puke@user/puke) (Quit: puke)
07:48:28 michalz_ joins (~michalz@185.246.207.201)
07:49:21 × michalz quits (~michalz@185.246.207.215) (Ping timeout: 244 seconds)
07:56:23 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:03:28 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
08:06:39 × mistivia quits (~mistivia@user/mistivia) (Remote host closed the connection)
08:07:01 mistivia joins (~mistivia@user/mistivia)
08:14:18 jreicher joins (~joelr@user/jreicher)
08:14:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:19:10 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
08:22:18 <[exa]> is there any docs on how much concurrency happens in scotty by default? (e.g., if I have something that computes a http response for say 100ms, can I expect scotty to be able to run a few of the computations in parallel?)
08:23:17 × ft quits (~ft@p508db341.dip0.t-ipconnect.de) (Quit: leaving)
08:23:54 <Axman6> I would assume that every request is handled in its own thread
08:24:26 <Axman6> I assume it's built on warp, and it can handle pretty large numbers of requests in parallel
08:26:08 <[exa]> yeah I'm kinda trying to find where this is configured, looks like in warp
08:27:39 <[exa]> ok warp has a default forkoff in the settings, great
08:27:56 <[exa]> now how do I put a limit on that, to prevent the memory from exploding and such :D
08:28:39 <Axman6> just handle it in your app, use a semaphore at the beginning of your request handlers
08:31:21 <[exa]> yeah looks like that's gonna be the way
08:31:35 <[exa]> this is a bit scary tho https://github.com/yesodweb/wai/issues/825
08:36:12 <tomsmeding> oof
08:37:05 <tomsmeding> [exa]: the fact that that bug is there is not too surprising, with haskell throwing IO exceptions left and right without listing what can be thrown anywhere, but the fact that it's not fixed and the response is just "increase your FD limit" is concerning
08:37:27 <tomsmeding> sounds like there'll be other syscalls that can fail that wai doesn't catch
08:37:32 <tomsmeding> wai/warp
08:38:03 <[exa]> yeah that's not how you production. :D
08:38:55 <[exa]> like, ofc, running out of the fd limit basically means the game's over, but I'd hope there'd be at least some mechanism to avoid opening too much stuff
08:39:23 <tomsmeding> the fact that they report half the connections dropped with nginx is also funny -- nginx is probably running into the same 1024 limit, but it has 2 connections per request (upstream and downstream) so half the request are dropped
08:39:51 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
08:40:20 <tomsmeding> proper handling would, I guess, be waiting until you have a few FDs left and start responding 500s; alternatively, use them all and just don't accept() until you can again
08:41:27 <[exa]> ok I guess I can do custom accept, throw it in with a `setAccept`, and put the semaphore into that one
08:42:38 acidjnk_new joins (~acidjnk@p200300d6e700e54898249a3b850b64ab.dip0.t-ipconnect.de)
08:42:58 <[exa]> or `settingsFork` more likely because that looks like a proper bracket
08:43:07 <[exa]> k goooooooooood we shall production then.
08:43:44 <tomsmeding> lol
08:43:44 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
08:44:38 <tomsmeding> oh being able to override accept(2) with setAccept is cute
08:45:33 <tomsmeding> [exa]: why would you do settingsFork instead of settingsAccept?
08:46:34 <[exa]> the settingsAccept is literally just the syscall
08:46:46 <[exa]> :: socket -> IO (socket, something)
08:47:00 <[exa]> hard to unbump the semaphore there
08:47:23 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
08:47:27 L29Ah joins (~L29Ah@wikipedia/L29Ah)
08:47:49 [exa] sees the "unbump" he has written, and heads for a safety coffee
08:51:31 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
08:51:56 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
08:52:10 <tomsmeding> oh the unbump
08:52:14 tomsmeding understands
08:53:33 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
08:54:18 L29Ah joins (~L29Ah@wikipedia/L29Ah)
08:57:41 merijn joins (~merijn@77.242.116.146)
08:59:57 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
09:08:18 [exa] feels sudden urge to invent bump & unbump bracket notation for concurrent synchronization semantics
09:09:14 <[exa]> oh look, bump & de-bump aka dump, b and d with double vertical line, like |b and d|. Benefit: both look like coffee mugs
09:09:36 <[exa]> (ok nvm let's do work.)
09:13:33 × emmanuelux quits (~em@user/emmanuelux) (Quit: bye)
09:27:56 ourson joins (~ourson@79.136.213.83)
09:28:06 ourson parts (~ourson@79.136.213.83) ("" (xchat 2.4.5 или старше))
09:29:37 × Enrico63 quits (~Enrico63@93-35-52-29.ip53.fastwebnet.it) (Quit: Client closed)
09:29:43 bggd__ joins (~bgg@2a01:e0a:fd5:f510:aea0:e1c8:9dee:f851)
09:33:40 × jreicher quits (~joelr@user/jreicher) (Quit: brb)
09:34:38 jreicher joins (~joelr@user/jreicher)
09:34:44 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 268 seconds)
09:37:17 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
09:40:38 × jreicher quits (~joelr@user/jreicher) (Quit: brb)
09:41:33 jreicher joins (~joelr@user/jreicher)
09:43:09 Enrico63 joins (~Enrico63@93-35-52-29.ip53.fastwebnet.it)
09:51:01 <tomsmeding> [exa]: rrparenthesis and llparenthesis here? https://detexify.kirelabs.org/symbols.html :p
09:51:49 chele joins (~chele@user/chele)
09:53:07 × myxos quits (~myxos@174-18-44-59.tcso.qwest.net) (Ping timeout: 264 seconds)
09:56:27 myxos joins (~myxos@67-1-178-42.tcso.qwest.net)
10:07:11 × natechan quits (~natechan@c-98-45-159-200.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
10:09:54 natechan joins (~natechan@c-98-45-159-200.hsd1.ca.comcast.net)
10:17:37 × Enrico63 quits (~Enrico63@93-35-52-29.ip53.fastwebnet.it) (Quit: Client closed)
10:18:49 × CiaoSen quits (~Jura@p549cb690.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
10:19:50 × jreicher quits (~joelr@user/jreicher) (Quit: brb)
10:28:09 acidjnk_new3 joins (~acidjnk@p200300d6e700e592b17a5f40f0fadffe.dip0.t-ipconnect.de)
10:29:48 danza joins (~danza@user/danza)
10:31:52 × acidjnk_new quits (~acidjnk@p200300d6e700e54898249a3b850b64ab.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
10:32:42 × xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 255 seconds)
10:44:03 CiaoSen joins (~Jura@p549cb690.dip0.t-ipconnect.de)
10:47:16 Googulator78 joins (~Googulato@2a01-036d-0106-0364-757c-7b1f-aded-4ae9.pool6.digikabel.hu)
10:49:37 jreicher joins (~joelr@user/jreicher)
10:50:37 × Googulator22 quits (~Googulato@2a01-036d-0106-0364-757c-7b1f-aded-4ae9.pool6.digikabel.hu) (Ping timeout: 245 seconds)
11:06:32 × confusedalex quits (~confuseda@user/confusedalex) (Remote host closed the connection)
11:07:07 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Remote host closed the connection)
11:07:31 chromoblob joins (~chromoblo@user/chromob1ot1c)
11:11:50 Freakie joins (~Freakie@185.45.22.133)
11:13:37 AlexNoo joins (~AlexNoo@178.34.150.190)
11:14:26 × divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer)
11:14:35 divlamir joins (~divlamir@user/divlamir)
11:15:54 AlexZenon joins (~alzenon@178.34.150.190)
11:15:54 <[exa]> tomsmeding: naaaaaah \left\mug \right\mug
11:17:47 Alex_delenda_est joins (~al_test@178.34.150.190)
11:18:04 __monty__ joins (~toonn@user/toonn)
11:23:39 <mesaoptimizer> [exa]: I am unable to reproduce the issue you linked. If I use `cabal build` and compile it, every call to `localhost:3003` results in the following error: "GHC.Event.Thread.getSystemTimerManager: the TimerManager requires linking against the threaded runtime". If I run it via `cabal repl` and evaluate `main`, the REPL process doesn't crash when I overwhelm it, and in fact, it simply continues to
11:23:41 <mesaoptimizer> work (send 200s) after a while
11:29:10 xff0x joins (~xff0x@2405:6580:b080:900:634f:4ad0:7953:dee2)
11:29:48 omnifunctor joins (~omnifunct@user/semifunctor)
11:32:01 × danza quits (~danza@user/danza) (Remote host closed the connection)
11:32:40 × hakutaku quits (~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:33:24 hakutaku joins (~textual@user/hakutaku)
11:34:11 <[exa]> mesaoptimizer: oh nice, lucky you then I guess
11:34:17 <[exa]> what's your fd limit?
11:37:05 <mesaoptimizer> `ulimit -Sn` on a new terminal returns `256`
11:38:26 <mesaoptimizer> [exa]: I wouldn't consider myself lucky if the compiled version never works though
11:38:56 <mesaoptimizer> (sure, I could go all in on Haskell REPL-only)
11:39:51 <[exa]> interesting
11:39:55 <[exa]> maybe some stuff changed in there
11:39:59 <[exa]> I'll have to check
11:45:12 haritz joins (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
11:45:12 × haritz quits (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
11:45:12 haritz joins (~hrtz@user/haritz)
11:46:52 × Freakie quits (~Freakie@185.45.22.133) (Ping timeout: 245 seconds)
11:48:28 fp1 joins (~Thunderbi@2001:708:20:1406::10c5)
11:58:30 confusedalex joins (~confuseda@user/confusedalex)
12:00:08 <mesaoptimizer> "Matthew Pickering announced that he will be leaving the company and moving to a non-Haskell role at the end of March." https://www.well-typed.com/blog/2026/03/haskell-ecosystem-report-q1-2026/
12:04:38 × comonad quits (~comonad@p200300d02717df00adc247ef70bd7367.dip0.t-ipconnect.de) (Quit: WeeChat 4.7.0-dev)
12:32:46 × somemathguy quits (~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1)
12:33:00 <merijn> mesaoptimizer: I mean, that error seems rather self-explanatory?
12:33:15 <merijn> i.e. "you gotta link with the threaded runtime"
12:33:22 <merijn> and tbh, you should probably be doing that anyway
12:37:20 <mesaoptimizer> merijn: thanks but I have no idea what to do. I did my google searches and didn't figure out what would fix it. I don't ask LLMs for help in general.
12:37:55 <merijn> mesaoptimizer: ghc literally has a flag which runtime to use, you just add that to the ghc-options for your executable :)
12:38:38 <merijn> -threaded is the one you want
12:39:07 <merijn> i.e. "ghc -threaded MyApp.hs" or "ghc-options: -thread" in the cabal file for your executable
12:39:59 <merijn> mesaoptimizer: The runtime system comes in two (well, a lot more, but let's keep it simple) the single-threaded one (which is the default, at least on older GHCs there was some talk about making the threaded one default) and the threaded runtime system which lets you spawn multiple capabilities running haskell code in parallel
12:40:40 <merijn> mesaoptimizer: As the error you got says, the TimerManager (which your code is transitively using) is only present in the threaded one, so if your application is build with the non-threaded one it just errors
12:41:22 <merijn> Correction: "ghc-options: -threaded" (obv)
12:41:44 <merijn> mesaoptimizer: ghci is (presumably) using the threaded RTS, which is why it works from the repl
12:42:23 <mesaoptimizer> merijn: well that is disturbing but it worked. I also had to wipe `dist-newstyle/` before cabal built it such that it didn't error, strangely
12:43:18 <mesaoptimizer> merijn: thanks! I guess I inferred that `ghci-options: -threaded` didn't do the trick when I encountered it in my Google search, because of the `dist-newstyle/` thing
12:43:41 × xff0x quits (~xff0x@2405:6580:b080:900:634f:4ad0:7953:dee2) (Ping timeout: 252 seconds)
12:43:55 <mesaoptimizer> ('Haskell. We move the footguns out of the language, and into the tooling.')
12:44:34 somemathguy joins (~somemathg@user/somemathguy)
12:45:39 <merijn> mesaoptimizer: https://github.com/ghc-proposals/ghc-proposals/pull/240
12:45:48 <merijn> There's a proposal accepted in 2023 to change the default
12:45:55 <merijn> But I'm not sure if/when that was shipped in GHC
12:46:13 <mesaoptimizer> oh, I don't mind if the default is non-threaded, at least it failed loudly
12:46:46 <mesaoptimizer> the thing I disliked was that I had to have faith that you were correct, and that `-threaded` really solved it, so the issue was elsewhere, and then try stuff like `rm -rf dist-*` and then do a `cabal build`
12:47:16 <merijn> That is weird
12:47:28 <merijn> changing ghc-options should invalidate the build artifacts
12:47:55 <merijn> If it doesn't, that's a bug in cabal-install
12:48:37 <int-e> No, it would be a bug in GHC because GHC does the dependency resolution and recompilation check.
12:50:57 <mesaoptimizer> It can be an issue on my end too, so here's a console log fwiw: https://paste.sh/jbbxX3g7#z8HGi5dZcVA4bk4McZrk7ZW9
12:53:49 arandombit joins (~arandombi@2a02:2455:8656:7100:aca1:7d8e:a853:6b5d)
12:53:49 × arandombit quits (~arandombi@2a02:2455:8656:7100:aca1:7d8e:a853:6b5d) (Changing host)
12:53:49 arandombit joins (~arandombi@user/arandombit)
13:01:39 × mistivia quits (~mistivia@user/mistivia) (Remote host closed the connection)
13:01:54 mistivia joins (~mistivia@user/mistivia)
13:04:12 <merijn> int-e: cabal decides whether to call GHC at all
13:04:33 <int-e> merijn: You can see that it's building the executable.
13:05:15 <merijn> I can't, because I don't see any output :p
13:05:33 Enrico63 joins (~Enrico63@109.55.235.77)
13:05:46 <merijn> oh, fun, in that paste it's the tests failing :p
13:05:48 <int-e> "Building executable 'test-wai' for test-wai-0.1.0.0..."
13:06:04 <merijn> or is test-wai the project name
13:06:19 <merijn> That paste is from after my comment, though :p
13:06:25 <int-e> Anyway, I think I know why. It's this: https://gitlab.haskell.org/ghc/ghc/-/blob/ghc-9.6/compiler/GHC/Linker/ExtraObj.hs#L234-236 (read the comment; Darwin is not an ELF target)
13:06:45 <int-e> It would work fine under Linux ;)
13:06:57 xff0x joins (~xff0x@2405:6580:b080:900:634f:4ad0:7953:dee2)
13:07:44 <int-e> "not an ELF target" -- that's essentially what `platformSupportsSavingLinkOpts` checks, with one exception that's irrelevant)
13:11:40 <int-e> Warning: The package list for 'hackage.haskell.org' is 64 days old.
13:11:40 <int-e> Run 'cabal update' to get the latest list of available packages.
13:11:43 <int-e> gah
13:12:51 <mesaoptimizer> merijn: that is the name of the directory. I created a new cabal project to test [exa]'s issue: https://github.com/yesodweb/wai/issues/825
13:13:05 <int-e> Here's a test of this under Linux: https://paste.debian.net/hidden/bc4ce81e ...note 1) line 27, where GHC links the executable because the flags changed, and 2) that when I didn't change the .cabal file, cabal-install said "Up to date" and didn't mention building the executable.
13:13:41 <mesaoptimizer> (on that note, I haven't stress-tested the compiled version, I will do that now)
13:14:21 machinedgod joins (~machinedg@d172-219-48-230.abhsia.telus.net)
13:16:24 <mesaoptimizer> [exa]: even the compiled version doesn't crash or exit after hitting `Network.Socket.accept: resource exhausted (Too many open files)` multiple times. It continues to work and return 200s as expected (after a while)
13:18:13 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
13:18:18 <mesaoptimizer> int-e: interesting, so the issue is that it cannot do linking on existing executables on Darwin and FreeBSD?
13:18:28 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
13:19:50 <int-e> mesaoptimizer: the issue is that GHC doesn't know how to record and later read the compilation flags in an executable on non-ELF system, plus the recompilation check is optimistic (assume flags haven't changed) instead of conservative.
13:21:01 <int-e> FreeBSD should work since it uses ELF
13:23:02 <mesaoptimizer> oh, the solaris thing is irrelevant here
13:23:17 <mesaoptimizer> since it checks instead for `osElfTarget os`
13:23:26 <mesaoptimizer> on line https://gitlab.haskell.org/ghc/ghc/-/blob/ghc-9.6/compiler/GHC/Linker/ExtraObj.hs#L215
13:24:04 <mesaoptimizer> so how do I make GHC recompilation 'conservative'?
13:24:38 <mesaoptimizer> https://downloads.haskell.org/~ghc/9.4.5/docs/users_guide/separate_compilation.html#the-recompilation-checker I see, `-fforce-recomp`
13:25:23 <int-e> how often are you really going to change the link flags? just delete the build directory
13:25:47 <int-e> cabal-install could work around this if it wanted to
13:26:04 <int-e> (it knows where the executable is and could delete it when flags change)
13:26:12 <mesaoptimizer> isn't that the same thing as using `-fforce-recomp` in your .cabal file?
13:26:29 <int-e> you really don't want that on permanently, I think
13:26:51 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 255 seconds)
13:26:51 <int-e> it'll recompile the whole package every single time
13:27:36 <int-e> and the problem is specific to linking executables when link flags change
13:27:56 <int-e> outside of that the recompilation check should be accurate
13:28:16 <int-e> now if there was an -fforce-relink... that would be more tempting
13:28:26 <mesaoptimizer> I see. How would `cabal-install` work around this?
13:28:58 <mesaoptimizer> and if I do a `cabal build` twice in succession with `-fforce-recomp` on, it doesn't build a second time
13:29:24 <int-e> cabal-install tracks when the .cabal file changes
13:29:56 <int-e> mesaoptimizer: right, because cabal-install tracks that particular case: if none of the project source files (including the .cabal file) changed, it'll not run GHC at all.
13:30:27 <int-e> But if anything changes, it'll tell GHC to rebuild the whole thing and rely on GHC to be clever about reusing existing artifacts
13:30:46 <int-e> and -fforce-recomp will tell GHC to be stupid
13:31:00 <mesaoptimizer> I see
13:34:21 <merijn> int-e: FreeBSD does not use ELF
13:34:32 <merijn> There's a linux compat layer that *can* use ELF
13:34:47 <merijn> but it's not the default unless there've been some major overhauls since I last checked
13:34:55 Buliarou1 joins (~gypsydang@46.232.210.139)
13:35:37 <merijn> In practice you're not changing linker flags often enough for it to really matter, tbh
13:35:58 <mesaoptimizer> I'd like it to not fail silent regardless
13:36:20 <mesaoptimizer> how do you make cabal-install delete the executable and rebuild if the linker flags were changed, anyway?
13:38:11 <int-e> merijn: Well that's another GHC bug then: https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/ghc-platform/src/GHC/Platform/ArchOS.hs#L163-180
13:38:36 <int-e> merijn: that, or the function name is misleading ;)
13:41:53 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
13:42:01 <int-e> (The code in compiler/GHC/SysTools/Elf.hs does look very much like it'll only work on ELF)
13:42:01 × myme quits (~myme@2a01:799:d5e:5f00:bb34:b3ad:fa86:ff90) (Ping timeout: 268 seconds)
13:42:05 <mesaoptimizer> "Since the ELF tools available offered a solution to the shared library problem and were generally seen as “the way forward” anyway, the migration cost was accepted as necessary and the transition made. FreeBSD's shared library mechanism is based more closely on Sun's SunOS™ style shared library mechanism and, as such, is very easy to use."
13:42:07 <int-e> s/on/with/?
13:42:07 <mesaoptimizer> https://docs-archive.freebsd.org/doc/7.3-RELEASE/usr/share/doc/handbook/binary-formats.html
13:42:10 <mesaoptimizer> FreeBSD uses ELF
13:42:27 myme joins (~myme@2a01:799:d5e:5f00:4bf0:4daf:c921:3337)
13:42:43 <mesaoptimizer> I'm not going to ssh into a freebsd machine just to compile and run a haskell program lol
13:43:10 × Googulator78 quits (~Googulato@2a01-036d-0106-0364-757c-7b1f-aded-4ae9.pool6.digikabel.hu) (Quit: Client closed)
13:43:23 <int-e> ...oh right, merijn could be wrong. I'm usually mean, why didn't I consider that option. (scnr)
13:43:40 Googulator78 joins (~Googulato@2a01-036d-0106-0364-757c-7b1f-aded-4ae9.pool6.digikabel.hu)
13:45:05 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
13:45:05 × noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer)
13:45:08 tremon joins (~tremon@83.80.159.219)
13:47:29 <mesaoptimizer> "For example, on OSX, not passing -threaded results in pthreads being used:" https://github.com/ghc-proposals/ghc-proposals/pull/240 I could just use `-threaded` everywhere then
13:47:34 × bggd__ quits (~bgg@2a01:e0a:fd5:f510:aea0:e1c8:9dee:f851) (Ping timeout: 268 seconds)
13:50:44 × takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 245 seconds)
13:51:19 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 264 seconds)
13:52:31 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
13:53:24 × xff0x quits (~xff0x@2405:6580:b080:900:634f:4ad0:7953:dee2) (Ping timeout: 256 seconds)
13:55:46 takuan joins (~takuan@d8D86B9E9.access.telenet.be)
13:56:59 CloneOfNone_ joins (~CloneOfNo@user/CloneOfNone)
13:57:49 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Ping timeout: 268 seconds)
14:00:58 xff0x joins (~xff0x@2405:6580:b080:900:634f:4ad0:7953:dee2)
14:01:17 <mesaoptimizer> no, you are right, it is better to do a `cabal clean && cabal build` instead, if you change the *.cabal file
14:01:37 noctux joins (~noctux@user/noctux)
14:07:09 × mistivia quits (~mistivia@user/mistivia) (Remote host closed the connection)
14:07:25 mistivia joins (~mistivia@user/mistivia)
14:09:43 × mistivia quits (~mistivia@user/mistivia) (Remote host closed the connection)
14:09:57 mistivia joins (~mistivia@user/mistivia)
14:14:59 × mistivia quits (~mistivia@user/mistivia) (Ping timeout: 252 seconds)
14:15:04 mistiv1a joins (~mistivia@user/mistivia)
14:18:27 thresh_ joins (~thresh_@107-219-206-205.lightspeed.cicril.sbcglobal.net)
14:18:45 × thresh_ quits (~thresh_@107-219-206-205.lightspeed.cicril.sbcglobal.net) (Client Quit)
14:19:32 <mesaoptimizer> https://gitlab.haskell.org/ghc/ghc/-/issues/16126 still open
14:20:57 <mesaoptimizer> (doesn't seem that hard to do by myself tbh)
14:21:58 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
14:23:16 st_aldini joins (~Betterbir@2605:a601:a07c:7426:a9c5:df0c:3e0f:b451)
14:29:48 × jreicher quits (~joelr@user/jreicher) (Ping timeout: 255 seconds)
14:32:47 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 272 seconds)
14:34:20 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
14:39:42 <Athas> Did mkStdGen change recently?
14:39:53 <Athas> Well, "recently". At some point?
14:42:04 xdej_ is now known as xdej
14:44:41 bggd_ joins (~bgg@2a01:e0a:fd5:f510:d391:e26c:d535:2a19)
14:50:37 <int-e> Changed how? The interface is the same; the underlying generator is different.
14:50:58 <int-e> comparing random 1.3.1 and 1.0.0.0
14:51:42 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
14:52:55 <int-e> I guess StdGen is a bit larger now too, but it's opaque so shouldn't really matter.
14:53:38 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 248 seconds)
14:53:50 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
14:54:28 chromoblob joins (~chromoblo@user/chromob1ot1c)
14:54:53 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
14:55:33 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Killed (NickServ (GHOST command used by Guest2636!~user@user/chromob1ot1c)))
14:58:22 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
15:00:13 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
15:01:25 × CiaoSen quits (~Jura@p549cb690.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
15:02:09 × mistiv1a quits (~mistivia@user/mistivia) (Remote host closed the connection)
15:02:24 mistiv1a joins (~mistivia@user/mistivia)
15:02:30 <Athas> int-e: yeah, I had some code that changed behaviour between (I assume) random versions, even through they used the same seed, so it is probably that.
15:02:50 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 252 seconds)
15:06:33 <int-e> Athas: I haven't checked, but potentially there could be a difference between 32 bit and 64 bit platforms too.
15:08:49 <Athas> That is not the reason here.
15:10:20 Freakie joins (~Freakie@185.45.22.133)
15:13:04 <mesaoptimizer> https://davidchristiansen.dk/pubs/dependent-haskell-experience-report.pdf interesting
15:15:29 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
15:21:27 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 246 seconds)
15:23:49 <tomsmeding> mesaoptimizer: I was surprised reading that "most Haskell environments provide no mechanism for looking up the documentation for a name in its scope", but that was explained by them subsequently talking about GHC 8.0-8.6
15:23:51 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
15:24:17 <tomsmeding> the year (2019) is relevant context here
15:25:10 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
15:25:40 <mesaoptimizer> I see
15:25:59 <mesaoptimizer> that reminds me, HLS still doesn't allow arbitrary goto-definition.
15:26:28 <tomsmeding> not into dependencies, no
15:30:36 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 255 seconds)
15:30:55 <mesaoptimizer> For context, rust-analyzer can, and common-lisp (SLIME in Emacs)0000 can. (common-lisp has amazing tooling.)
15:31:34 <mesaoptimizer> on that note, I have yet to try https://well-typed.github.io/haskell-debugger/
15:31:37 <mesaoptimizer> let's see
15:33:14 traxex joins (traxex@user/traxex)
15:33:26 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
15:39:38 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
15:43:39 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 244 seconds)
15:44:22 × Freakie quits (~Freakie@185.45.22.133) (Ping timeout: 245 seconds)
15:46:09 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
15:53:07 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 264 seconds)
15:53:13 × fp1 quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 248 seconds)
15:54:58 × califax quits (~califax@user/califx) (Quit: ZNC 1.10.1 - https://znc.in)
15:55:14 califax joins (~califax@user/califx)
16:06:45 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
16:10:51 × bggd_ quits (~bgg@2a01:e0a:fd5:f510:d391:e26c:d535:2a19) (Remote host closed the connection)
16:18:30 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:19:27 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
16:22:47 × Enrico63 quits (~Enrico63@109.55.235.77) (Quit: Client closed)
16:23:42 × raincomplex quits (~rain@user/raincomplex) (Ping timeout: 255 seconds)
16:23:58 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 268 seconds)
16:30:37 raincomplex joins (~rain@user/raincomplex)
16:35:31 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
16:35:51 × mistiv1a quits (~mistivia@user/mistivia) (Remote host closed the connection)
16:36:14 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:37:29 Freakie joins (~Freakie@185.45.22.133)
16:42:05 euphores joins (~SASL_euph@user/euphores)
16:43:56 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 268 seconds)
16:54:36 × img quits (~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in)
16:55:51 img joins (~img@user/img)
16:56:10 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
16:59:20 s3 joins (~s3@user/bn)
17:06:27 × Freakie quits (~Freakie@185.45.22.133) (Ping timeout: 245 seconds)
17:11:15 <monochrom> IMO goto-definition for third-party libraries you happen to use as a blackbox is overrated. Then again IMO those libraries should have been properly documented so that you should never have to worry about their internal messy code.
17:14:38 <monochrom> Athas: Starting with 1.2 random started using splitmix for generator, so yeah the generator changed.
17:22:32 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds)
17:25:41 <mesaoptimizer> monochrom: feels like Stockholm syndrome. Agda allows you to do goto-definition for arbitrary `agda-stdlib` functions and types, and it is an absolute delight and pleasure. (I guess one exception is mixfix operators)
17:27:01 <monochrom> Well then consider "use the source Luke" the other Stockholm syndrome plus gatekeeping as a bonus.
17:27:22 <mesaoptimizer> that's actually fair
17:27:30 <monochrom> Like, why should I ever need goto-defintion for Data.List.sort for example?
17:27:38 <mesaoptimizer> hmm
17:27:47 <monochrom> For Prelude.id, sure, it's trivial enough.
17:28:13 <mesaoptimizer> how do you look at the docs for, say, Data.List.sort if you find you've used `sort` somewhere in your code?
17:28:41 <monochrom> Currently I load up docs in my web browser.
17:28:59 <int-e> monochrom: maybe you like finding out that it's 82 lines of code :)
17:29:06 <mesaoptimizer> monochrom: I wouldn't consider it gatekeeping btw, I think a part of it is that `agda-stdlib` is quite easy to read. I barely know agda, and can't stand the prose in PLFA.
17:29:42 <tomsmeding> mesaoptimizer: I suspect that you need the source much more often if you are doing proving in agda :p
17:29:42 <int-e> (including empty lines and the sparse comments)
17:29:45 <monochrom> goto-doc would be great, but it's only me, as you can see.
17:29:51 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Read error: Connection reset by peer)
17:30:03 <tomsmeding> monochrom: HLS can show you the haddocks in-editor, at least
17:30:06 <monochrom> (the community decided that they have neither supply nor demand)
17:30:32 <int-e> `sort` isn't a great example... you probably know how to use list. looking at some auxiliary parser from Parsec may teach you more about how to assemble parser combinators
17:31:15 <dminuoso> 17:11:15 monochrom │ IMO goto-definition for third-party libraries you happen to use as a blackbox is overrated.
17:31:26 <dminuoso> Bold thing to say in #haskell
17:31:32 <monochrom> The doc can be a copy of the 1-line code, when the best explanation is that 1-line code.
17:31:39 <tomsmeding> also, what about the third-party libraries I don't use as a black-box
17:31:42 <int-e> tbf it was labelled as an opinion
17:32:00 <tomsmeding> (how do you even decide whether you're using a library as a black box)
17:32:01 Googulator78 is now known as Googulator
17:32:18 <monochrom> Answer: Always true. :)
17:32:20 <dminuoso> In my experience, hoogle+haddock+view source is the only way you can sensibly develop Haskell code.
17:32:27 <dminuoso> Or some builtin goto-definition
17:32:28 <tomsmeding> monochrom: not if the library is imperfectly documented :p
17:32:34 <monochrom> Or rather, I already said "third-party" so it's a blackbox.
17:32:36 <tomsmeding> which is most of them
17:32:45 <dminuoso> tomsmeding: You mean like 95% of hackage?
17:32:48 <tomsmeding> yes
17:32:52 <tomsmeding> if not more
17:32:58 <dminuoso> The rest 5% just doesn't build.
17:33:01 <tomsmeding> lol
17:33:05 <tomsmeding> very good point
17:33:39 <mauke> what if the documentation is an unhinged rant that just stops halfway through the module?
17:33:40 <dminuoso> goto-definition in the haskell world is really annoying to get right for so many reasons. :(
17:33:59 <tomsmeding> HLS manages just fine in-project
17:34:12 <tomsmeding> to the extent determinable statically, of course
17:34:34 <dminuoso> Well in-project is a relatively easy task that is solvable with ctags/hasktags already
17:34:52 <tomsmeding> or do you mean locating the source code on-disk?
17:35:02 <dminuoso> Yeah that.
17:35:07 <dminuoso> Across dependencies.
17:35:19 <tomsmeding> while true, I feel like that's incidental?
17:35:34 <tomsmeding> the info is all there, it's just a bit scattered
17:36:48 <dminuoso> Does GHC preserve enough information? Dont you need cabal build info for that?
17:36:57 <tomsmeding> actually, cabal already has all the info because it has to be able to build them in the first place
17:37:04 <tomsmeding> well HLS uses Cabal
17:37:17 <tomsmeding> i.e. cabal is available
17:37:28 <dminuoso> It cant be cabal alone, you need GHC for resolving names
17:37:36 <tomsmeding> which HLS also already does
17:37:52 <dminuoso> Im just saying that cabal doesnt have all the info
17:37:57 <tomsmeding> I'm not saying this is not an annoying engineering effort, but it's not like it's impossible, or even infeasible with the current architecture
17:38:09 <tomsmeding> HLS does, and it's HLS that would provide the goto-definition functionality
17:38:16 <dminuoso> The presence of CPP alone makes this a mystery to do right. :-)
17:38:19 <tomsmeding> (or HLS could have it, in any case)
17:38:45 <geekosaur> there's an open issue for it, the real problem is everything has to be rebuilt by hie-bios with additional .hi file information iirc, and there are questions as to cache management and such
17:38:45 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
17:38:47 <dminuoso> And Im sure TH+cross compilation turn it into an impossibility to do correctly in 100%
17:39:36 <tomsmeding> oh hm, you're right -- a .hi file won't have location information for all exported names I guess
17:39:41 <tomsmeding> isn't that what .hie files are for?
17:42:23 <tomsmeding> re imperfectly documented haskell packages: this may be one of the few examples of properly documented code https://hackage.haskell.org/package/data-aviary-0.4.0/docs/Data-Aviary-Birds.html
17:43:14 <dminuoso> GHC is an interesting example. I find its implementation and design very well documented. But its haddock is practically empty.
17:43:31 <geekosaur> that's exatcly whi hie-bios has to rebuild, to get the fat hi information
17:43:45 <dminuoso> tomsmeding: Haha!
17:43:50 <dminuoso> I love that package.
17:44:04 <monochrom> data-aviary is too easy because the types are so general that you can just add parametricity to see what they do.
17:44:13 <tomsmeding> that was the point :)
17:45:16 <tomsmeding> where it's perhaps relevant to note that when I preached this gospel to a beginning haskeller, they looked at me like I was mad and demanded why it is really too much effort to add an example to clarify some highly polymorphic type
17:45:31 <monochrom> "besselFirstKind :: RealFrac a => a -> a" would be when you have to at least link to wikipedia for what "Bessel functions" mean. Because sin, cos, tan have that type too.
17:45:58 tomsmeding thought for a second "what bird is a 'bessel'?"
17:46:17 <monochrom> heh
17:46:47 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
17:53:22 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 248 seconds)
17:54:53 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
18:08:52 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
18:11:48 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
18:12:04 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
18:19:20 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 245 seconds)
18:20:34 Square2 joins (~Square@user/square)
18:23:08 × Square quits (~Square4@user/square) (Ping timeout: 256 seconds)
18:23:31 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
18:30:19 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 264 seconds)
18:38:17 arandombit joins (~arandombi@2a02:2455:8656:7100:aca1:7d8e:a853:6b5d)
18:38:17 × arandombit quits (~arandombi@2a02:2455:8656:7100:aca1:7d8e:a853:6b5d) (Changing host)
18:38:17 arandombit joins (~arandombi@user/arandombit)
18:40:32 <mesaoptimizer> https://github.com/DataHaskell/sabela lovely
18:42:50 × arandombit quits (~arandombi@user/arandombit) (Remote host closed the connection)
18:47:40 divlamir_ joins (~divlamir@user/divlamir)
18:48:17 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
18:50:24 × divlamir quits (~divlamir@user/divlamir) (Ping timeout: 265 seconds)
18:50:25 divlamir_ is now known as divlamir
18:55:51 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 244 seconds)
19:02:34 × polykernel quits (~polykerne@user/polykernel) (Remote host closed the connection)
19:02:53 polykernel joins (~polykerne@user/polykernel)
19:06:28 Tuplanolla joins (~Tuplanoll@88-114-89-88.elisa-laajakaista.fi)
19:08:39 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
19:15:35 × divlamir quits (~divlamir@user/divlamir) (Ping timeout: 245 seconds)
19:15:38 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 268 seconds)
19:15:38 × tomsmeding quits (~tomsmedin@user/tomsmeding) (Quit: ZNC 1.10.1 - https://znc.in)
19:16:03 divlamir joins (~divlamir@user/divlamir)
19:16:28 tomsmeding joins (~tomsmedin@user/tomsmeding)
19:30:43 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
19:37:15 × Square2 quits (~Square@user/square) (Ping timeout: 245 seconds)
19:41:38 Sgeo joins (~Sgeo@user/sgeo)
19:41:54 × poscat quits (~poscat@user/poscat) (Ping timeout: 256 seconds)
19:42:03 divlamir_ joins (~divlamir@user/divlamir)
19:42:04 poscat joins (~poscat@user/poscat)
19:43:57 × divlamir quits (~divlamir@user/divlamir) (Ping timeout: 255 seconds)
19:43:57 divlamir_ is now known as divlamir
19:44:37 × ouilemur quits (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.8.2)
19:46:15 comonad joins (~comonad@p200300d02717df00adc247ef70bd7367.dip0.t-ipconnect.de)
19:48:03 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
19:52:41 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
19:56:40 ouilemur joins (~jgmerritt@user/ouilemur)
20:03:34 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
20:05:08 × pabs3 quits (~pabs3@user/pabs3) (Ping timeout: 256 seconds)
20:08:43 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 264 seconds)
20:12:23 <gentauro> anybody know the link to `GHCi` on GitLab? :)
20:13:10 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
20:13:29 <gentauro> oh, got it https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/base/src/GHC/GHCi.hs
20:13:53 × michalz_ quits (~michalz@185.246.207.201) (Remote host closed the connection)
20:15:45 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
20:19:26 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
20:20:47 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 265 seconds)
20:22:31 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
20:22:46 pabs3 joins (~pabs3@user/pabs3)
20:35:20 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:35:49 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
20:35:59 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
20:41:25 pavonia joins (~user@user/siracusa)
20:50:30 jmcantrell_ joins (~weechat@user/jmcantrell)
20:56:03 peterbecich joins (~Thunderbi@71.84.33.135)
20:59:15 × redshuffle quits (~quassel@45.43.70.75) (Remote host closed the connection)
20:59:23 redshuffle joins (~quassel@45.43.70.75)
21:02:42 × raym quits (~ray@user/raym) (Ping timeout: 246 seconds)
21:09:49 raym joins (~ray@user/raym)
21:15:45 jreicher joins (~joelr@user/jreicher)
21:15:57 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
21:16:35 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
21:19:09 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds)
21:31:02 × tusko quits (~uwu@user/tusko) (Ping timeout: 265 seconds)
21:36:19 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 264 seconds)
21:37:42 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
21:39:19 × jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 264 seconds)
21:42:44 tusko joins (~uwu@user/tusko)
21:44:18 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 248 seconds)
21:51:26 jmcantrell_ joins (~weechat@user/jmcantrell)
21:52:08 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
21:52:33 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:57:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
21:58:33 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 248 seconds)
22:03:28 vetkat8 joins (~vetkat@user/vetkat)
22:04:35 target_i joins (~target_i@user/target-i/x-6023099)
22:06:11 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
22:06:19 × vetkat quits (~vetkat@user/vetkat) (Ping timeout: 264 seconds)
22:06:19 vetkat8 is now known as vetkat
22:08:07 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:09:19 × jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 264 seconds)
22:09:49 × AlexNoo quits (~AlexNoo@178.34.150.190) (Read error: Connection reset by peer)
22:11:52 × confusedalex quits (~confuseda@user/confusedalex) (Read error: Connection reset by peer)
22:12:19 × gawen_ quits (~gawen@user/gawen) (Quit: cya)
22:12:20 × nitrix quits (~nitrix@user/meow/nitrix) (Remote host closed the connection)
22:14:07 × Buliarou1 quits (~gypsydang@46.232.210.139) (Ping timeout: 264 seconds)
22:14:07 × craunts795335385 quits (~craunts@152.32.99.2) (Ping timeout: 264 seconds)
22:14:07 × Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 264 seconds)
22:14:07 × shachaf quits (~shachaf@user/shachaf) (Ping timeout: 264 seconds)
22:14:07 × zb quits (jobnbg@bot.kapsi.fi) (Ping timeout: 264 seconds)
22:14:07 × juri_ quits (~juri@217-114-215-140.pool.ovpn.com) (Ping timeout: 264 seconds)
22:14:07 × p3n quits (~p3n@217.198.124.246) (Ping timeout: 264 seconds)
22:14:43 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 264 seconds)
22:14:43 × m1dnight quits (~m1dnight@d8D861A17.access.telenet.be) (Ping timeout: 264 seconds)
22:14:43 × tomku|two quits (~tomku@user/tomku) (Ping timeout: 264 seconds)
22:15:57 tomku joins (~tomku@24.240.63.237)
22:17:11 AlexNoo_ joins (~AlexNoo@178.34.150.190)
22:17:11 confusedalex_ joins (~confuseda@user/confusedalex)
22:17:11 p3n_ joins (~p3n@217.198.124.246)
22:17:11 gawen joins (~gawen@user/gawen)
22:17:11 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
22:17:11 vetkat3 joins (~vetkat@user/vetkat)
22:17:11 nitrix_ joins (~nitrix@user/meow/nitrix)
22:17:12 × vetkat quits (~vetkat@user/vetkat) (Ping timeout: 245 seconds)
22:17:12 vetkat3 is now known as vetkat
22:17:12 shachaf_ joins (~shachaf@li227-219.members.linode.com)
22:17:12 juri__ joins (~juri@217-114-215-140.pool.ovpn.com)
22:17:12 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 245 seconds)
22:17:12 z-b joins (jobnbg@bot.kapsi.fi)
22:17:12 m1dnight_ joins (~m1dnight@d8D861A17.access.telenet.be)
22:17:22 × tomku quits (~tomku@24.240.63.237) (Changing host)
22:17:22 tomku joins (~tomku@user/tomku)
22:17:22 confusedalex_ is now known as confusedalex
22:17:38 Ranhir joins (~Ranhir@157.97.53.139)
22:19:37 Buliarou1 joins (~gypsydang@46.232.210.139)
22:20:52 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
22:22:16 × takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 256 seconds)
22:22:26 nitrix_ is now known as nitrix
22:23:30 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:24:50 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
22:27:13 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
22:28:31 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
22:31:15 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 246 seconds)
22:31:39 × noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer)
22:31:53 noctux joins (~noctux@user/noctux)
22:38:53 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:38:53 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
22:43:31 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
22:45:03 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
22:48:00 × werneta_ quits (~werneta@71.83.160.242) (Ping timeout: 255 seconds)
22:48:21 × werneta quits (~werneta@71.83.160.242) (Ping timeout: 244 seconds)
22:54:15 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:54:54 werneta joins (~werneta@71.83.160.242)
22:55:10 werneta_ joins (~werneta@71.83.160.242)
22:57:59 DetourNe- joins (~DetourNet@user/DetourNetworkUK)
22:58:18 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
23:00:20 DetourNe- is now known as DetourNetworkUK
23:01:16 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
23:01:20 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
23:03:56 peterbecich joins (~Thunderbi@71.84.33.135)
23:06:17 × werneta quits (~werneta@71.83.160.242) (Ping timeout: 248 seconds)
23:06:55 × werneta_ quits (~werneta@71.83.160.242) (Ping timeout: 264 seconds)
23:07:41 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Ping timeout: 272 seconds)
23:08:13 werneta joins (~werneta@71.83.160.242)
23:08:36 werneta_ joins (~werneta@71.83.160.242)
23:09:09 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 255 seconds)
23:09:59 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
23:10:48 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:12:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:17:22 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
23:17:22 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 268 seconds)
23:22:39 × werneta quits (~werneta@71.83.160.242) (Ping timeout: 255 seconds)
23:23:39 juri__ is now known as juri_
23:23:43 × werneta_ quits (~werneta@71.83.160.242) (Ping timeout: 264 seconds)
23:27:40 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:27:51 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 268 seconds)
23:29:28 czan joins (~czan@user/mange)
23:29:34 werneta joins (~werneta@71.83.160.242)
23:29:53 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
23:30:01 werneta_ joins (~werneta@71.83.160.242)
23:31:36 peterbecich joins (~Thunderbi@71.84.33.135)
23:32:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
23:37:01 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 265 seconds)
23:37:44 × Tuplanolla quits (~Tuplanoll@88-114-89-88.elisa-laajakaista.fi) (Quit: Leaving.)
23:38:28 × werneta_ quits (~werneta@71.83.160.242) (Ping timeout: 244 seconds)
23:38:28 × werneta quits (~werneta@71.83.160.242) (Ping timeout: 265 seconds)
23:39:32 emmanuelux joins (~em@user/emmanuelux)
23:40:02 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 248 seconds)
23:43:03 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:44:56 werneta joins (~werneta@71.83.160.242)
23:45:21 werneta_ joins (~werneta@71.83.160.242)
23:46:29 jmcantrell_ joins (~weechat@user/jmcantrell)
23:47:46 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
23:48:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
23:52:18 × GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Read error: Connection reset by peer)
23:52:54 GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano)
23:55:30 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 255 seconds)
23:58:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:59:10 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
23:59:49 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)

All times are in UTC on 2026-03-26.