2025/09/24

Newest at the top

2025-09-24 21:40:29 +0200 <tomsmeding> how do you implement somethine like a CLP using a transpiler?
2025-09-24 21:40:09 +0200 <[exa]> (sounds biased!)
2025-09-24 21:39:56 +0200 <[exa]> after the effort I made a crucial observation that metalanguages are a complete BS and people should instead write more tiny transpilers and preprocessors
2025-09-24 21:39:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
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 +0200weary-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 +0200Googulator84(~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 +0200Googulator20(~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 +0200olivial(~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 +0200tt12310978324354(~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 +0200trickard__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 +0200tt12310978324354(~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 +0200target_i(~target_i@user/target-i/x-6023099) target_i
2025-09-24 21:30:49 +0200Googulator37(~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 +0200Googulator84(~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