00:00:00 --- log: started forth/19.08.01 00:00:23 --- quit: dys (Ping timeout: 245 seconds) 00:06:16 --- join: dys (~dys@2003:5b:203b:100:a64c:c8ff:fef4:13a6) joined #forth 00:14:00 --- quit: ryke (Ping timeout: 244 seconds) 02:38:44 --- quit: proteusguy (Ping timeout: 245 seconds) 04:37:52 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:21:05 --- quit: lisbeths (Ping timeout: 276 seconds) 06:57:22 --- join: lisbeths (~user@2601:601:8300:1fff:4d0e:fc67:9fdf:d6d9) joined #forth 07:13:32 --- quit: lisbeths (Ping timeout: 276 seconds) 07:43:26 --- quit: tabemann (Ping timeout: 276 seconds) 08:54:26 --- quit: dave0 (Quit: dave's not here) 08:55:23 --- join: wildtrees (~wildtrees@unaffiliated/wildtrees) joined #forth 09:00:46 --- quit: wildtrees (Remote host closed the connection) 09:01:26 --- join: wildtrees (~wildtrees@unaffiliated/wildtrees) joined #forth 09:15:55 --- quit: wildtrees (Remote host closed the connection) 09:17:31 --- join: wildtrees (~wildtrees@unaffiliated/wildtrees) joined #forth 09:19:32 --- quit: wildtrees (Client Quit) 09:34:37 --- quit: dys (Ping timeout: 264 seconds) 10:35:40 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 10:57:53 --- join: dys (~dys@tmo-118-171.customers.d1-online.com) joined #forth 11:23:11 --- join: proteusguy (~proteusgu@49.230.50.152) joined #forth 11:23:11 --- mode: ChanServ set +v proteusguy 11:34:42 https://www.fourmilab.ch/atlast/ 11:35:01 this popped up on HN ... kind of a fun throwback 13:10:25 --- quit: gravicappa (Ping timeout: 245 seconds) 13:30:14 --- join: tme5 (~phoenix@185.214.220.197) joined #forth 13:30:42 hi all, any frequent users of gforth: what does the "unstructured" error mean? 13:32:21 forth.fth:257: unstructured : iliteral [i'] (literal) icompile, i, >>>;<<< 13:33:51 it's a truly abysmal error message 13:40:11 i suspect it is for unbalanced compile-time words like control flow words, but i haven't used any in that definition 13:51:08 where are these words from? I don't see them in my source tree for gforth 13:51:23 those are my own words, sorry, should have clarified 13:51:53 but I've solved it. one of the subwords of the immediate word [i'] was incorrectly leaving things on the data stack 13:52:23 ok, that would make sense 13:52:46 as that was during a compilation, gforth ; then threw an error because the stack was unbalanced between start and end of definition 14:20:23 really, a forth metacompiler is not an ideal first program to write in forth... :D 14:26:36 excuse me? i thought that was the hello world of the forth community 14:26:42 except that you never finish it 14:34:11 perhaps you are right 14:36:06 it's made me realise that programming language design is a deeply fascinating subject 14:37:05 --- quit: dys (Ping timeout: 246 seconds) 14:52:44 I am planning to write an nga VM in RETRO, so I can recurse infinitely. 15:02:00 --- quit: ryke (Ping timeout: 248 seconds) 15:04:00 There is already 15:15:14 john_cephalopoda: http://forth.works/examples/retro-extend.forth.html has one, and there is a variation of this in autopsy (http://forth.works/examples/Autopsy.forth.html) as well 15:15:49 * crc would welcome more though, and notes that his implementations are *very* slow 15:30:24 --- join: mstevens_ (sid285816@gateway/web/irccloud.com/x-zvhzzarvcmhbdxnl) joined #forth 15:37:40 --- quit: mstevens (*.net *.split) 15:37:43 --- nick: mstevens_ -> mstevens 15:51:31 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 16:01:18 --- quit: tme5 (Remote host closed the connection) 16:04:08 --- quit: ryke (Ping timeout: 245 seconds) 16:12:23 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 16:21:46 --- join: rdrop-exit (~markwilli@112.201.174.189) joined #forth 16:25:12 --- quit: ryke (Ping timeout: 248 seconds) 16:41:14 --- quit: cantstanya (Remote host closed the connection) 16:43:43 --- join: cantstanya (~chatting@gateway/tor-sasl/cantstanya) joined #forth 16:44:05 --- quit: john_cephalopoda (Ping timeout: 250 seconds) 16:57:42 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:13:25 --- quit: kori (Ping timeout: 252 seconds) 17:49:56 --- join: bogen85 (~dwight@99.30.241.51) joined #forth 17:52:19 --- quit: bogen85 (Client Quit) 18:10:24 --- quit: proteusguy (Ping timeout: 245 seconds) 18:21:30 It seems like stack languages are something every burgeoning language designer flirts with: https://min-lang.org/ 18:24:59 --- join: dave0 (~dave0@069.d.003.ncl.iprimus.net.au) joined #forth 18:42:00 https://forth-standard.org/standard/core/QUIT 18:42:17 I'm confused by the use of postpone [ in the implementation 18:43:20 I would think that it should be: [ ' [ compile, ] .. or am I crazy? 18:44:00 Yet another functional concatenative homoiconic language with combinators, dequoting, and sigils. Just what the world needs. 18:45:23 [ is immediate 18:46:50 yah, that's why they're calling postpone on it 18:47:37 Yes, so that its action is postponed to when quit is executed 18:47:39 --- join: kori (~kori@2804:14c:85a3:81b8::1000) joined #forth 18:47:39 --- quit: kori (Changing host) 18:47:39 --- join: kori (~kori@arrowheads/kori) joined #forth 18:47:48 rdrop-exit: where is it postponed to? 18:48:23 No where, when 18:48:45 in the forths I've implemented, I've compiled [ into the definition of quit 18:49:11 That's what POSTPONE [ does 18:50:03 Normally an immediate word executes immediately when compiling 18:50:06 I thought postpone [ would compile [ into the word being defined when quit was called. 18:50:39 e.g. : postpone immediate ['] lit , ' , ['] , , ; 18:50:53 (in this forth, immediate is an immediate word, so it can be put anywhere in the definition) 18:51:30 The purpose of POSTPONE is to postpone what would normally happen during compilation 18:51:46 yah, I think we're saying the same hting 18:52:24 An immediate word is normally executed at compile-time 18:52:35 yah, I'm not confused about that 18:53:10 ok, I think I just answered my own question 18:53:19 rdrop-exit: thanks 18:54:41 hmmm ok 18:55:01 np 18:58:26 Just curious, why would you want IMMEDIATE itself to be an immediate word? 18:58:52 it's a hack to work around the fact that this forth compiles new words directly to flash using a RAM buffer 18:59:46 this is some custom stuff for a specific usecase 19:00:37 thanks 19:01:39 rdrop-exit: I realized what I was missing from the standard is this wording "Append the compilation semantics of name to the current definition." .. I didn't understand that it means that postpone will have a different impact if the word postponed is immediate or not 19:01:54 so the version of postpone in this system doesn't follow the standard 19:05:14 Earlier Forths had two different words instead of POSTPONE one was usually used for normal words, the other was usually used for immediate words. 19:05:31 yah, I think that's why I wasn't understanding it properly 19:09:57 The Forth-83 standard is easier to read and grok, but it assumes ITC. 19:11:07 http://forth.sourceforge.net/standard/fst83/ 19:12:19 http://forth.sourceforge.net/standard/fst83/FORTH-83.PRN 19:17:17 --- quit: dddddd (Remote host closed the connection) 19:32:46 --- join: lisbeths (~user@2601:601:8300:1fff:592:4d91:3d49:252a) joined #forth 19:37:37 --- join: proteusguy (~proteusgu@203.117.110.10) joined #forth 19:37:37 --- mode: ChanServ set +v proteusguy 19:37:54 rdrop-exit: thanks 19:38:06 My pleasure 19:42:55 --- quit: proteusguy (Ping timeout: 245 seconds) 19:45:57 rdrop-exit: I've been toying with the idea of just ditching immediates all together, and going with a compile wordlist 19:46:13 since this forth doesn't need to be standard,. and it might end up making some situations with meta-compilation easier 19:48:48 cmForth did that IIRC 19:50:11 I also use a non-standard mechanism, but I still differentiate between immediate and non-immediate at compile time 19:50:28 ah, do you still have a flag in the dictionary? 19:51:18 I have 3 flags, interpretation, compilation, and precedence (precedence is the traditional name of the immediate bit) 19:51:28 ok 19:52:44 Are you using the term meta-compiler in the traditional Forth sense? 19:52:51 I think so 19:53:08 i.e. the Forth compiles a new version of itself 19:53:11 yah 19:53:21 ok 19:53:22 this setup can compile itself from RAM into flash, while the system is running 19:53:28 and then swap into flash 19:53:56 Not every time though 19:54:09 no, it only does that when there's a major software change 19:54:14 ok 19:54:52 it's designed for a product that is scriptable in the field, that needs to be able to run arbitrary configurations from a GUI 19:55:17 ok 19:57:39 If you want to go the dual-wordlist route, one for compilation and one for interpretation, try to dig up cmForth for inspiration 19:59:26 https://github.com/ForthHub/cmFORTH 19:59:32 bingo 20:06:39 thanks 20:47:41 --- quit: dave0 (Quit: dave's not here) 21:03:22 --- join: gravicappa (~gravicapp@h109-187-22-42.dyn.bashtel.ru) joined #forth 21:12:51 --- join: dys (~dys@tmo-100-173.customers.d1-online.com) joined #forth 21:18:24 --- join: proteusguy (~proteusgu@203.117.110.10) joined #forth 21:18:24 --- mode: ChanServ set +v proteusguy 21:56:30 --- quit: proteusguy (Read error: Connection reset by peer) 22:01:14 --- quit: chunkypuffs (Remote host closed the connection) 22:06:06 rdrop-exit, mecrisp-stellaris for Cortex-M (small micros) has vocabularies as a optional Word 22:06:52 rdrop-exit, and I believe amforth and eforth also have vocabularies 22:15:52 tp, I don't doubt it. What alex4nder was discussing, if I understood correctlty, is doing all compilation behaviors via a dedicated compilation only vocabulary. 22:17:21 rdrop-exit, acutally i was responding to your post on reddit re "forth words collision problem" 22:17:24 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 22:18:56 rdrop-exit, I'm not at the level (yet) to be able to understand a lot of what alex4nder and you are discussing 22:19:09 Yes, most Forths have vocabularies or something similar. 22:20:03 --- join: chunkypuffs (~chunkypuf@static.203.112.216.95.clients.your-server.de) joined #forth 22:20:57 personally I found them extraneous for my use as I tend to use descriptive Word names unique to the application anyway 22:21:20 plus I only write small applications 22:22:27 Understandable, they're not strictly necessary. 22:22:30 one thing the redit OP asked was "how do you use other libraries ?" and I thought 'what other libraries' lol 22:23:41 I look at code for *similar* solutions but in small embedded, everything is different from one app to another, hardware config is different etc 22:24:34 It's one of the 3 tell-tale signs of a Forth newbie. 22:25:08 yeah 22:25:22 and very common from C users 22:26:02 morning forthniter 22:26:09 Hi presiden 22:26:20 hello 22:27:04 Next comes random-access over the stack 22:27:57 yikes 22:28:33 Next comes over-abstraction 22:30:43 It's deja-vu all over again :) 22:31:43 rdrop-exit, so true, coming to a Forth near you since 1970 ! 22:33:30 In the late 80s and early 90s it was all about how object-oriented extensions 22:34:31 were de rigueur 22:45:45 I still like the three-line module system. 22:47:36 I wrote a 3 or 4 line module system a while back, it had MODULE END-MODULE and EXPORT IIRC 22:47:56 That's all it takes, yes. 22:47:58 I eventually discarded it 22:48:35 I'm not saying I'd USE it. (The stuff I do in Forth when I have my chances is so small modules are overkill.) 22:48:47 I just admire the fact that you can write one in literally three lines of code. :D 22:49:46 I admire the single-instruction coroutine YIELD 22:50:45 Chuck calls it EX 22:51:02 IIRC 22:52:26 I also use conditional variants ?YIELD and 0YIELD 22:54:33 I wanna explore a self compiling forth compiler, 22:54:46 where the compiler itself is written in forth 22:54:55 and can compiles it's own source code 22:55:03 Cool 22:55:04 using the binary compiled from that same source 22:55:16 and without any need of external tools/libs (linker/libc). 22:55:24 That's the idea 22:56:05 maybe only target x64 linux for now 22:56:58 any reommended projects/reference/docs to read? 22:59:01 Look through old Forth Dimensions issues, and conference proceedings FORML, SIGFORTH, and such 22:59:32 You need a bootstrap bridge for your very first iteration 23:02:07 It's not really that different from bootstrapping any other language 23:02:56 --- quit: jedb (Read error: Connection reset by peer) 23:03:33 --- join: dave0 (~dave0@069.d.003.ncl.iprimus.net.au) joined #forth 23:05:00 --- join: jedb (~jedb@103.254.153.113) joined #forth 23:06:56 The main differences have to do with Forth being an interactive rather than batch system. 23:07:34 (assuming you want it to meta-compile itself live) 23:09:02 bbiab 23:10:49 alex4nder, I just remembered Pygmy Forth is based on cmForth, you could take a look at that too 23:10:54 bbiab 23:22:17 --- quit: dys (Ping timeout: 244 seconds) 23:35:20 --- quit: ryke (Read error: Connection reset by peer) 23:35:38 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 23:59:59 --- log: ended forth/19.08.01