Logs: liberachat/#haskell
| 2025-11-23 20:43:23 | <[exa]> | thanks all :) |
| 2025-11-23 20:43:41 | <int-e> | https://gitlab.haskell.org/ghc/ghc/-/blob/master/rts/include/rts/storage/ClosureTypes.h -- only 66 types of heap objects to go through and understand ;-) |
| 2025-11-23 20:43:54 | <geekosaur> | 🙂 |
| 2025-11-23 20:44:07 | <monochrom> | Probably not in older STG papers. You have to look for one of those "eval-apply vs push-something" papers. Or better, scrape the GHC wiki. |
| 2025-11-23 20:44:15 | <[exa]> | yeah that's why I was wondering if the original STG intuition still holds :D |
| 2025-11-23 20:44:49 | <monochrom> | One can argue: "intuition" holds, implementation techniques changed. |
| 2025-11-23 20:45:13 | EvanR | stands in the corner with a mere SECD machine |
| 2025-11-23 20:45:49 | <[exa]> | wait are these tags?!! <- nerd screaming voice |
| 2025-11-23 20:46:27 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 20:47:14 | <EvanR> | what is a tag again |
| 2025-11-23 20:47:15 | <int-e> | yes but the heap objects aren't tagged with these directly; the actual tag is a pointer that can be used to find an info table, and one of the info table fields is its closure type. |
| 2025-11-23 20:47:22 | <EvanR> | in this context |
| 2025-11-23 20:47:36 | <int-e> | EvanR: you're it |
| 2025-11-23 20:47:45 | <EvanR> | is it like tagged union |
| 2025-11-23 20:48:25 | × | gratefulgrapefru quits (~greatfulg@user/gratefulgrapefru) (Quit: Client closed) |
| 2025-11-23 20:49:42 | <[exa]> | oh so this is an indirect tag |
| 2025-11-23 20:50:51 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-11-23 20:51:04 | <[exa]> | ah true makes sense, it doesn't cost anything to throw them int to the impl tables and we get inspectable heap |
| 2025-11-23 20:51:20 | <[exa]> | *into |
| 2025-11-23 20:51:25 | <[exa]> | cool |
| 2025-11-23 20:53:13 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-11-23 20:56:50 | → | humasect_ joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-11-23 20:57:36 | <int-e> | The most prominent use of these closure types is for guiding garbage collection, because that'll often largely with pointers to a heap object and no further information, and then has to enumerate children and/or copy the object. |
| 2025-11-23 20:58:00 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 252 seconds) |
| 2025-11-23 20:58:29 | <int-e> | s/often largely/largely deal/ (editing gone wrong) |
| 2025-11-23 20:58:32 | <[exa]> | that's what the evacuate/scavenge "methods" were for, no? |
| 2025-11-23 20:58:39 | <int-e> | yeah |
| 2025-11-23 20:58:43 | <[exa]> | or no wait that got slashed later, right? |
| 2025-11-23 20:59:44 | <int-e> | evcuate+scavenge are still the main workers for the copying GC |
| 2025-11-23 21:00:39 | <[exa]> | I thought these completely define the pointers handling |
| 2025-11-23 21:01:04 | <[exa]> | as in, no other info should be needed, hopefully |
| 2025-11-23 21:01:18 | <int-e> | I think I don't know what your "that" was. |
| 2025-11-23 21:01:51 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 21:02:08 | × | euphores quits (~SASL_euph@user/euphores) (Ping timeout: 240 seconds) |
| 2025-11-23 21:02:10 | <int-e> | [exa]: Well stuff like "FUN" looks at more data in the info table to figure out which heap object fields are pointers and which are nonpointers. So it's not *just* the type. |
| 2025-11-23 21:02:42 | <int-e> | Stuff like FUN_0_1 exists for small arities to avoid this extra lookup. |
| 2025-11-23 21:03:00 | <[exa]> | oh so it's a shortcut essentially. OK |
| 2025-11-23 21:03:01 | <int-e> | hmm |
| 2025-11-23 21:03:07 | <int-e> | I should use CONSTR_ for this |
| 2025-11-23 21:03:18 | × | humasect_ quits (~humasect@dyn-192-249-132-90.nexicom.net) (Read error: Connection reset by peer) |
| 2025-11-23 21:03:35 | <[exa]> | I recall some paper that did like 16 variants of these for all combinations of packed&unpacked things |
| 2025-11-23 21:03:43 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-11-23 21:03:52 | <int-e> | (FUN* objects are unapplied; the distinction is made to support function applications in the mutator, not for the benefit of GC) |
| 2025-11-23 21:06:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-11-23 21:07:49 | × | Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 264 seconds) |
| 2025-11-23 21:08:11 | <[exa]> | oh these are for small functions, like PAP but nicely static without the extra metadata? |
| 2025-11-23 21:08:16 | <[exa]> | if I got it right |
| 2025-11-23 21:09:35 | × | infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection) |
| 2025-11-23 21:11:12 | → | infinity0 joins (~infinity0@pwned.gg) |
| 2025-11-23 21:11:28 | <int-e> | Well, not really because a PAP always has at least one argument applied. |
| 2025-11-23 21:12:38 | <[exa]> | ah yes otherwise it's FUN. |
| 2025-11-23 21:12:40 | <[exa]> | ok |
| 2025-11-23 21:12:47 | <[exa]> | *phew* |
| 2025-11-23 21:13:09 | <int-e> | While a FUN is basically just a pointer to a piece of code that can be jumped into once all the arguments are supplied and put on the stack |
| 2025-11-23 21:16:16 | → | Nachtgespenst joins (~user@user/siracusa) |
| 2025-11-23 21:17:14 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 21:17:33 | → | Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
| 2025-11-23 21:19:51 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.7.0) |
| 2025-11-23 21:23:41 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-11-23 21:32:05 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 21:36:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-11-23 21:36:38 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 2025-11-23 21:42:01 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 264 seconds) |
| 2025-11-23 21:44:06 | × | trickard_ quits (~trickard@cpe-87-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-11-23 21:44:19 | → | trickard_ joins (~trickard@cpe-87-98-47-163.wireline.com.au) |
| 2025-11-23 21:45:46 | → | Googulator50 joins (~Googulato@2a01-036d-0106-01f1-f56c-45b8-e3c8-fdbd.pool6.digikabel.hu) |
| 2025-11-23 21:45:46 | × | Googulator85 quits (~Googulato@2a01-036d-0106-01f1-f56c-45b8-e3c8-fdbd.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-11-23 21:47:28 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 21:49:56 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 2025-11-23 21:50:06 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
| 2025-11-23 21:51:41 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-11-23 21:52:44 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-11-23 21:54:58 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-11-23 22:00:53 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 2025-11-23 22:02:50 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 22:03:43 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 240 seconds) |
| 2025-11-23 22:05:32 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 2025-11-23 22:06:20 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 2025-11-23 22:07:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2025-11-23 22:09:42 | × | j1n37- quits (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 2025-11-23 22:12:43 | → | j1n37 joins (~j1n37@user/j1n37) |
| 2025-11-23 22:16:34 | × | peterbecich quits (~Thunderbi@172.222.148.214) (Quit: peterbecich) |
| 2025-11-23 22:18:13 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 22:21:17 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection) |
| 2025-11-23 22:22:53 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-11-23 22:26:25 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 264 seconds) |
| 2025-11-23 22:28:21 | <tomsmeding> | [exa]: I didn't read all this but are you accelerating again |
| 2025-11-23 22:28:54 | <tomsmeding> | because yes, seq'ing the function you get from `runN acc` does compilation |
| 2025-11-23 22:33:04 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 22:37:42 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-11-23 22:38:16 | × | annamalai quits (~annamalai@117.249.230.146) (Ping timeout: 256 seconds) |
| 2025-11-23 22:38:49 | × | divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 2025-11-23 22:38:59 | → | divlamir joins (~divlamir@user/divlamir) |
| 2025-11-23 22:44:34 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 2025-11-23 22:46:38 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2025-11-23 22:48:03 | × | ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...) |
| 2025-11-23 22:48:28 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-23 22:50:35 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 2025-11-23 22:54:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-11-23 22:56:41 | × | Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 244 seconds) |
All times are in UTC.