00:00:00 --- log: started retro/17.07.17 09:25:12 --- join: FreeFull (~freefull@defocus/sausage-lover) joined #retro 09:32:58 --- join: kisspunch (~za3k@smtp.za3k.com) joined #retro 09:33:22 Not a fan of the new white-on-black website 09:39:53 Also thanks for the excellent Retro documentation--I'm using it as base to write a Forth in native code 09:40:38 kisspunch: I'll be having the colors selectable shortly. (Working on some stuff in the server to allow this) 09:41:00 will this require javascript or cookies? won't work for me then 09:41:06 :P 09:41:22 no :) 09:48:00 terrifying. very good then 09:49:48 crc: as long as you're here can you point me at an overview of parable slices? 09:50:00 i'm trying to understand if this is something i can use in 64K 09:51:27 the thing with redirecting the input steam in forth /also/ bugs the hell out of me 09:51:45 https://github.com/crcx/parable/blob/master/source/docs/Parable.md, under Memory Model IIRC 09:53:22 also i'm unclear on the idea of 'quotations' but i'm pretty sure i should just read :) 09:53:39 e.g. what type of scoping they use / macro they correspond to 09:55:20 quotations are just anonymous, nestable functions 09:56:00 There's not a lot of documentation on slices. Basically in Parable memory is allocated as a set of slices; each of which can grow / shrink independently. 09:56:13 Fetches and stores require a slice number and an offset into the slice 09:56:49 Parable has a very conservative garbage collector to identify and reclaim unused/no longer needed slices 09:56:49 how do you manage both offsets and independent growth? 09:56:51 Does Parable have its own virtual machine? 09:57:11 also maybe i shouldn't go into a long conversation about parable in #retro :) 09:57:35 kisspunch: I disagree 09:57:49 I haven't heard about parable until now 09:57:56 crc: sure but the question is about how quotations deal with things like variable/function names and redefinitions 09:58:30 parable is a more experimental language than retro. I tried lots of things with it, and it's influenced my recent work on Retro in various ways 09:58:32 is it just blind bytecode copying, which seems the forth-iest? 09:58:45 it never took off though 09:59:04 kisspunch: there's a single global dictionary, no locals, etc. A lot like forth in that regard 09:59:15 redefinitions just copy the bytecode, yes 09:59:30 does quotation definition compile then or later? 09:59:35 unlike forth, parable does not allow reuse of a name. redefinining it replaces the original definition 09:59:58 kisspunch: in parable, everything is compiled prior to running 10:00:16 yeah so imagine something like: 10:00:21 this kind of edge case :P 10:01:28 anyway sounds pretty straightforward 10:02:13 a recursion example: 10:02:18 [ ] 'fib' : 10:02:18 [ "n-n" dup #1 gt? [ [ #1 - fib ] sip #2 - fib + ] if-true ] 'fib' : 10:03:59 oh, does this mean you can do forward references or is recursion special-cased? 10:04:48 e.g. every function call is a dictionary lookup 10:05:42 you can define a function, then implement it later via redefinition 10:06:13 ohhh, didn't understand the ":" syntax was the end, got it :) 10:07:05 that was in the examples so i probably should have 10:07:15 parable is rigidly rpn; so functions take all arguments from the stack 10:07:38 yeah that's more compelling to me than typed cells (for 64K) 10:07:50 I think I probably don't have enough memory to try out parable 10:08:19 (retro is currently similar, though retro allows for new prefixes, whereas the prefixes in parable are part of the compiler) 10:08:25 typed heaps and garbage collection are excellent features, just playing around with some really old hardware 10:09:08 yeah i'm going to go with traditional forth total-compilation-without-dictionary-lookup 10:09:09 I don't think parable will run in 64k. I *think* the lowest memory space I was successful in was 256k with a somewhat stripped down stdlib, using micropython 10:09:27 well i probably mean something like 'parable re-written in assembler' 10:09:54 parable-in-spirit 10:10:02 I'd love to see that. Writing an embedded-capable version is on my long-term todo list. 10:10:24 so to me, having a very bare-metal language like forth that runs in a emulation-layer VM is sort of missing the point 10:11:19 i think you should target a version of Nga/Ngaro which avoids the overhead of instruction lookup ("emulation") 10:11:24 using standard VM techniques :) 10:11:40 i mean if yer bored 10:12:00 it's more a matter of time than boredom. 10:12:23 I switched to working on an emulated architecture to reduce the time I spent testing each change. 10:12:26 anyway thanks for all the help 10:12:34 yeah makes sense 10:12:47 Retro is pretty polished 10:12:51 even when I was using x86 assembly directly, supporting 10-12 OSes lead to a lot of time testing/hunting down bugs 10:13:11 * crc is interested in writing something similar to retro in arm assembly at some point though 10:13:25 thanks :) 10:14:29 so the advantage of binary translation is then you only have to debug nga, and you can default to a version that works, but is slower 10:14:39 and nga is much simpler and more static 10:15:52 i guess there's still the "get anything to run in an OS at all" which seems like more work 10:16:09 but as far as instruction sets 10:16:39 do you want a copy of retro-on-Z80 when I give up on it much before it's done? 10:16:49 yes 10:17:05 aight, ta 10:17:05 --- part: kisspunch left #retro 12:59:53 --- quit: docl (Read error: Connection reset by peer) 13:04:15 --- join: docl (~docl@159.203.115.16) joined #retro 17:49:30 --- quit: trn (Excess Flood) 17:49:51 --- join: trn (jhj@prone.ws) joined #retro 18:13:03 --- join: kisspunch (~za3k@smtp.za3k.com) joined #retro 18:13:12 --- part: kisspunch left #retro 21:15:35 --- join: kisspunch (~za3k@smtp.za3k.com) joined #retro 21:15:45 --- part: kisspunch left #retro 23:05:51 --- quit: FreeFull () 23:59:59 --- log: ended retro/17.07.17