Newest at the top
2025-09-24 21:39:06 +0200 | <[exa]> | I was playing with the idea of metalanguages in prolog there, like the stuff they have for CLP |
2025-09-24 21:38:39 +0200 | <tomsmeding> | sounds very fast |
2025-09-24 21:38:25 +0200 | <tomsmeding> | :D |
2025-09-24 21:38:15 +0200 | <[exa]> | so this is a slightly refactored VAM in.... haskell lists. |
2025-09-24 21:38:02 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2025-09-24 21:37:53 +0200 | <[exa]> | there's a vienna abstract machine, which is kinda like warren abstract machine but has 2 instruction pointers, which allows it to allocate less |
2025-09-24 21:37:53 +0200 | <tomsmeding> | I was bored enough to click around a bit in prlg and then give up |
2025-09-24 21:37:32 +0200 | <[exa]> | anyway if you are SUPER BORED |
2025-09-24 21:36:48 +0200 | <[exa]> | it should be on the new one as well |
2025-09-24 21:36:45 +0200 | <tomsmeding> | p r l g https://gitea.blesmrt.net/exa/prlg/commit/3bfa127cbccbc77bb1b993153d6a6a2db2ec3ee4 |
2025-09-24 21:36:44 +0200 | <[exa]> | ah that's the old one |
2025-09-24 21:36:35 +0200 | <tomsmeding> | why different forge |
2025-09-24 21:36:21 +0200 | <[exa]> | if bored https://gitea.blesmrt.net/exa/prlg/ |
2025-09-24 21:36:17 +0200 | Googulator84 | (~Googulato@2a01-036d-0106-0744-4151-2ee3-78cb-4ad2.pool6.digikabel.hu) (Quit: Client closed) |
2025-09-24 21:36:16 +0200 | <tomsmeding> | sounds like a very good motivation |
2025-09-24 21:35:58 +0200 | <[exa]> | ah yeah I made a stupid small prolog before so I wanted to check if this would work |
2025-09-24 21:35:51 +0200 | Googulator20 | (~Googulato@2a01-036d-0106-0744-4151-2ee3-78cb-4ad2.pool6.digikabel.hu) |
2025-09-24 21:35:42 +0200 | <[exa]> | no idea |
2025-09-24 21:35:38 +0200 | <[exa]> | lol |
2025-09-24 21:35:32 +0200 | <[exa]> | it contains a single unboxed number, evacuate just copies both to the new location (pushq this time), and scavenge doesn't do anything because it doesn't point |
2025-09-24 21:35:31 +0200 | olivial | (~benjaminl@user/benjaminl) benjaminl |
2025-09-24 21:35:29 +0200 | <tomsmeding> | any particular reason why you built this? :p |
2025-09-24 21:34:55 +0200 | <tomsmeding> | right, infotables |
2025-09-24 21:34:31 +0200 | <tomsmeding> | thunks contain a type tag and each thunk type has a corresponding GC callback ("evacuate") that does the cleanup |
2025-09-24 21:34:10 +0200 | <tomsmeding> | oh I see |
2025-09-24 21:33:46 +0200 | <[exa]> | e.g. this is the object type definition for integers: https://git.e-x-a.org/exa/uskel/src/branch/master/include/data.s#L32-L48 |
2025-09-24 21:33:22 +0200 | tt12310978324354 | (~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) tt1231 |
2025-09-24 21:33:12 +0200 | <[exa]> | I think haskell had at some point a few "types" of thunks based on combination of boxedness of stuff stored in them, e.g. there was 2-param thunk for UU, then BB, UB, BU |
2025-09-24 21:33:09 +0200 | trickard__ | trickard |
2025-09-24 21:32:30 +0200 | <[exa]> | nothing, it doesn't know it. You need to make sure the thunk you have there is aware how to clean itself |
2025-09-24 21:32:30 +0200 | <tomsmeding> | s/`call`/`cell`/ what a dumb typo |
2025-09-24 21:32:05 +0200 | tt12310978324354 | (~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) (Quit: The Lounge - https://thelounge.chat) |
2025-09-24 21:31:54 +0200 | <tomsmeding> | but what will the GC do with a thunk that contains things that are not themselves thunks |
2025-09-24 21:31:32 +0200 | <[exa]> | as in, you can perfectly do a thunk that contains `fibs, $2, $0, $1` |
2025-09-24 21:31:29 +0200 | <tomsmeding> | `call` reserves a single word of space with the parameter as value? |
2025-09-24 21:31:06 +0200 | <tomsmeding> | that's fair |
2025-09-24 21:31:01 +0200 | <tomsmeding> | :p |
2025-09-24 21:30:54 +0200 | target_i | (~target_i@user/target-i/x-6023099) target_i |
2025-09-24 21:30:49 +0200 | Googulator37 | (~Googulato@2a01-036d-0106-0744-4151-2ee3-78cb-4ad2.pool6.digikabel.hu) (Quit: Client closed) |
2025-09-24 21:30:48 +0200 | <[exa]> | well no one says you need to box your stuff |
2025-09-24 21:30:39 +0200 | Googulator84 | (~Googulato@2a01-036d-0106-0744-4151-2ee3-78cb-4ad2.pool6.digikabel.hu) |
2025-09-24 21:30:35 +0200 | <[exa]> | these are the allocator globals: https://git.e-x-a.org/exa/uskel/src/branch/master/include/gc.s#L5 |
2025-09-24 21:29:53 +0200 | <tomsmeding> | as fast as it can be if everything ever is boxed, right? |
2025-09-24 21:29:48 +0200 | <[exa]> | well lemme point to code a bit |
2025-09-24 21:29:21 +0200 | <[exa]> | like if someone added an extra gc layer on top of this, it's actually going to be fast |
2025-09-24 21:29:18 +0200 | <tomsmeding> | I find it funny that hand-written assembly code tends to use registers so differently from generated code |
2025-09-24 21:28:59 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-09-24 21:28:59 +0200 | <tomsmeding> | right |
2025-09-24 21:28:54 +0200 | <[exa]> | "nursery size" --- there's only nursery |
2025-09-24 21:28:43 +0200 | <[exa]> | the whole gc is registers-only, it only has a tiny global blob where it stores some extra info |