Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,801,188 events total
2025-12-18 18:59:27 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2025-12-18 18:59:27 ljdarj1 is now known as ljdarj
2025-12-18 19:02:37 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 19:04:15 × tromp quits (~textual@2001:1c00:3487:1b00:388e:400a:f906:df4a) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-12-18 19:07:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-12-18 19:14:50 acidjnk joins (~acidjnk@p200300d6e7171981f0c6dc9689540cc0.dip0.t-ipconnect.de)
2025-12-18 19:18:24 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 19:19:06 talismanick joins (~user@2601:644:8502:d340::cd3d)
2025-12-18 19:20:21 Tuplanolla joins (~Tuplanoll@88-114-88-95.elisa-laajakaista.fi)
2025-12-18 19:20:55 weary-traveler joins (~user@user/user363627)
2025-12-18 19:22:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-12-18 19:26:50 × shaeto quits (~Shaeto@94.25.234.244) (Quit: WeeChat 4.1.1)
2025-12-18 19:27:37 shaeto joins (~Shaeto@94.25.234.244)
2025-12-18 19:28:19 × shaeto quits (~Shaeto@94.25.234.244) (Client Quit)
2025-12-18 19:28:52 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 244 seconds)
2025-12-18 19:29:51 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
2025-12-18 19:32:20 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
2025-12-18 19:32:56 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2025-12-18 19:33:40 Lord_of_Life_ is now known as Lord_of_Life
2025-12-18 19:34:11 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 19:39:08 pavonia joins (~user@user/siracusa)
2025-12-18 19:39:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-12-18 19:49:55 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 19:51:21 lockna joins (~obr@2001:4bb8:103:9f41:2b3f:110b:6da3:4d72)
2025-12-18 19:51:55 × lockna quits (~obr@2001:4bb8:103:9f41:2b3f:110b:6da3:4d72) (Remote host closed the connection)
2025-12-18 19:52:10 lockna joins (~obr@2001:4bb8:103:9f41:2b3f:110b:6da3:4d72)
2025-12-18 19:52:12 l0ckna joins (~obr@2001:4bb8:103:9f41:2b3f:110b:6da3:4d72)
2025-12-18 19:52:45 × lockna quits (~obr@2001:4bb8:103:9f41:2b3f:110b:6da3:4d72) (Remote host closed the connection)
2025-12-18 19:55:13 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-12-18 20:03:39 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 20:08:39 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-12-18 20:12:58 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2025-12-18 20:14:10 <haskellbridge> <Liamzee> is the real reason people don't want to use Haskell as an orchestrator that Haskell concurrency + FFI is cursed?
2025-12-18 20:15:39 <monochrom> Is Haskell concurrency + FFI cursed?
2025-12-18 20:15:51 <haskellbridge> <Liamzee> I mean you can always blame C etc for it
2025-12-18 20:16:03 <haskellbridge> <Liamzee> From experienced production devs: is it cursed?
2025-12-18 20:16:33 <haskellbridge> <Liamzee> I've been trying to build a wrapper around the tinyfiledialogs library, and it turns out that traverse_ forkIO, on Macos, at least, will cause the script runner to jam buffers
2025-12-18 20:16:47 <monochrom> I am not interested in blaming C, or blaming anything, at least for now.
2025-12-18 20:17:36 <monochrom> Have you heard of forkOS?
2025-12-18 20:17:36 <haskellbridge> <Liamzee> So, now I'm thinking no-inline unsafePerformIO global locks. ???
2025-12-18 20:17:42 <haskellbridge> <Liamzee> yes, I've used it.
2025-12-18 20:18:17 <haskellbridge> <Liamzee> Still, if I'm trying to build a library wrapper, I can't control whether the end user is using forkIO or forkOS
2025-12-18 20:18:23 qqe joins (~qqq@185.54.20.98)
2025-12-18 20:19:17 <monochrom> You can assume that the end user has made the correct choice between forkIO and forkOS.
2025-12-18 20:19:27 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 20:19:28 <int-e> C libraries don't control from which threads they're called either
2025-12-18 20:20:41 Googulator75 joins (~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu)
2025-12-18 20:21:06 <monochrom> If you want tight control on which thread does what, the technique of "worker thread pool" has been well known for decades.
2025-12-18 20:21:38 × Googulator72 quits (~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed)
2025-12-18 20:21:47 × omidmash quits (~omidmash@user/omidmash) (Quit: Ping timeout (120 seconds))
2025-12-18 20:21:53 <monochrom> And is particularly sweet in Haskell because Haskell has a much better API for sending messages to worker threads and/or pools.
2025-12-18 20:22:00 omidmash joins (~omidmash@user/omidmash)
2025-12-18 20:22:35 <monochrom> (How better? You can send a f**king IO action as a message too. It doesn't even need to be data!)
2025-12-18 20:22:55 <monochrom> (It's what gtk2hs does.)
2025-12-18 20:23:31 <int-e> And fwiw, as FFIs go Haskell's is actually pretty nice, especially considering how old it is.
2025-12-18 20:24:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-12-18 20:24:08 <int-e> Other languages had you write dozens of lines of marshalling code by hand for the most trivial functions.
2025-12-18 20:26:53 <haskellbridge> <Liamzee> Honestly, I just had AI tell me that FFI + Haskell green threads / concurrency model is seriously difficult, especially if the wrapped library has global state
2025-12-18 20:27:03 <haskellbridge> <Liamzee> I mean, I can leave it unsafe, but I guess I put a premium on child safety
2025-12-18 20:27:15 <monochrom> "AI"
2025-12-18 20:27:18 <haskellbridge> <Liamzee> I'm asking here beceause AI hallucinates and is a bullshit machine, so I'd rather ask real humans
2025-12-18 20:27:34 <monochrom> Public LLMs are only as good as Internet trash.
2025-12-18 20:28:45 <monochrom> Hutton already explained why Haskell anything is seriously difficult.
2025-12-18 20:29:02 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
2025-12-18 20:29:27 <monochrom> Programming is seriously difficult. Haskell is just being honest about it. Other languages try to sugar-coat it.
2025-12-18 20:31:11 <haskellbridge> <Liamzee> I mean the explanation is that other languages with their concurrency / FFI model is intended to be childsafe, i.e, it deliberately brain damages the concurrency + FFI model to avoid the overhead of childsafe-ing on the library designer side, but locks every user into the childsafe model, even when it's unnecessary
2025-12-18 20:31:15 <monochrom> But Haskell solutions have been well-known for decades for concurrently FFI-ing to C libs with global states and/or thread-local states.
2025-12-18 20:32:28 <haskellbridge> <Liamzee> the objective remark seems to be: Haskell concurrency + FFI is not childsafe (defined as, being brain-dead robust). It's the responsibility of the library builder to make it such. Or would you contest that?
2025-12-18 20:34:51 wootehfoot joins (~wootehfoo@user/wootehfoot)
2025-12-18 20:35:13 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 20:35:40 <monochrom> Which languages are childsafe?
2025-12-18 20:36:01 <int-e> brainfuck
2025-12-18 20:36:46 × l0ckna quits (~obr@2001:4bb8:103:9f41:2b3f:110b:6da3:4d72) (Quit: Leaving)
2025-12-18 20:36:57 <haskellbridge> <Liamzee> The AI comment was: "every language with worse concurrency", i.e, Py is an example because of how hard concurrency is, and Go is apparently another example.
2025-12-18 20:38:22 <sprout> Liamzee: that wasn't what the AI stated. and FFI-ing into something that isn't threadsafe of course is going to give you problems, no matter the language
2025-12-18 20:38:23 <monochrom> As a first-order approximation: Mutex is not childsafe unless used under Haskell's bracket idiom or Python's recent "with" idiom or C++'s RAII idiom. That immediately cuts down the candidates to just 4: Haskell, Python, C++, maybe Rust.
2025-12-18 20:39:08 <monochrom> However, none of those 4 force you to use those safe idioms. That further cuts down the candidates to 0.
2025-12-18 20:40:13 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-12-18 20:41:03 ljdarj1 joins (~Thunderbi@user/ljdarj)
2025-12-18 20:41:03 <haskellbridge> <Liamzee> Does Py etc use blocking FFI?
2025-12-18 20:41:11 <haskellbridge> <Liamzee> Go?
2025-12-18 20:43:13 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 264 seconds)
2025-12-18 20:43:13 ljdarj1 is now known as ljdarj
2025-12-18 20:43:20 <sprout> Liamzee: your AI gave you a statement of fact that is true for any language
2025-12-18 20:43:44 <sprout> whether it's exceptionally difficult for Haskell is debatable
2025-12-18 20:46:11 × michalz quits (~michalz@185.246.207.193) (Remote host closed the connection)
2025-12-18 20:47:53 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
2025-12-18 20:48:52 lambda_gibbon joins (~lambda_gi@208.83.175.39)
2025-12-18 20:50:43 × Googulator75 quits (~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed)
2025-12-18 20:50:51 Googulator73 joins (~Googulato@2a01-036d-0106-48e4-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu)
2025-12-18 20:51:00 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 20:54:01 × lambda_gibbon quits (~lambda_gi@208.83.175.39) (Ping timeout: 244 seconds)
2025-12-18 20:55:46 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-12-18 21:04:40 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 21:11:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-12-18 21:14:49 × dolio quits (~dolio@130.44.140.168) (Quit: ZNC 1.10.1 - https://znc.in)
2025-12-18 21:16:48 Pozyomka joins (~pyon@user/pyon)
2025-12-18 21:22:13 dolio joins (~dolio@130.44.140.168)
2025-12-18 21:22:43 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2025-12-18 21:27:42 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)

All times are in UTC.