00:00:00 --- log: started forth/18.12.23 01:11:49 Just passing by. You guys probably know this feeling too well, but I keep occasionally dabbling in other programming languages, and then come running and crying back to Forth every single time. It's the only one that I find to be enjoyable, fun, and actually useful for productive tasks all at once. Sure, nobody else outside of this sort of community ever wants to actually help me with anything, but I'm still more productive with Forth 01:11:50 than with any other language. It's really nice seeing other people hang around and know that I'm probably not the only one who thinks this way. 01:22:07 Keshl: what other languages are you dabbling in? 01:39:11 siraben: My first was C, which was fun because "Oh my gosh I finally made a thing!", but has since lost most of it's magic when I found out how much more control Forth gives me. After that, I tried C++. but had minor coniptions when I found out it's more like a "Programming suggestion" than a "Programming language". I later threw it out a window when I found out that everyone uses Boost, but Boost makes everything super big and super slow. 01:39:13 I tried a few others, but forget which. Eventually I tried Assembly, since "make an operating system, even if it's just a helloworld" is on my bucket list. Emboldened by this, I tried esoteric languages, like Piet(SP?), brainfsck, and other related shenagians, but I tried to make serious projects and things got unfun. Python came up next, but when I found out that whitespace actually has meaning, everything fell apart. 01:39:45 Keshl: Have you tried a Lisp? 01:39:53 Scheme is amazing 01:40:06 Yeah C++ isn't a nice language from what I've heard and seen 01:40:10 These are terms that I've heard before, but I don't remember if I tried them. Moment, lemme find example code.. 01:40:37 Keshl: I think you've seen my operating system then 01:40:56 Then again it's not really assembly, more like assembly with a liberal sprinkling of Scheme macros 01:40:58 I haven't tried either. 01:41:23 It also depends on what resources you're using 01:41:37 Part of my draw to Forth is, at one point in my life, due to various *things* that happened, I had to become lead programmer for a MUCK or not have a lovelife. 01:41:45 Turns out I loved Forth more than my partner, though. XD 01:42:26 Forth is really good for low level things, but then again I have some reservations about using it other than for fun 01:42:30 Namely the lack of any safety 01:43:25 I love its metaprogramming capabilities, that's really unique and "lispy". 01:44:57 What is "metaprogramming"? 01:45:04 Words that define other words 01:45:25 How is that different from defining a function with another function? 01:45:33 You change the language itself 01:45:43 You can implement IF, ELSE, THEN, WHILE, REPEAT in Forth 01:46:07 Okay, this might be where I'm lost.. In C, is "if" a word? 01:46:20 No, it's given a special meaning by the compiler. 01:46:33 It's a control structure 01:46:49 Okay, I'm gunna have to figure out what the difference between Function and Word is, then.. 01:46:53 You can't define new control structures in C (at least as easily as in Lisp or Forth) 01:47:00 Word is a Forth term for its "functions" 01:47:12 It doesn't mean the same as other languages 01:48:07 Maybe I'm just having brainfarts. It's like 4:47 AM here, but I can't sleep so I'm just trying to make idle chatter. <.<' 01:48:38 If you like Forth you might like Scheme, but I'm biased. 01:50:05 Why do you like it so much? Is it related to being able to re-define everything? 01:50:50 It's very expressive, you can change the language to suit your needs (via macros), also because it's a functional programming language 01:51:04 Very fast to refactor code, since everything is an expression 01:51:49 And it is the language used by one of the best computer science textbooks, SICP 01:52:17 There's plenty of people who implement their own Scheme, just like how people implement their own Forth 01:53:57 Okay, building on that. -- Why do you like that ability so much? 01:54:55 Because a language that is malleable lets you write things as if they were already built in. 01:55:17 That's an interesting point. 01:55:22 Better than waiting for a committee to accept a proposal 01:55:33 Okay, that's a /really/ good point. <.<' 01:55:56 Of course it should do so in a /controlled/ manner. 01:56:59 e.g. Scheme has specific ways to define new macros, Forth lets you do anything between : and ; which means you have to be extremely careful. 01:57:09 Thinking back, with programming, once I actually figured out how to /do/ things and write productive software that I actually use, I started trying to do more complicated stuff but every language except Forth kinda forced "their way" on me. 01:57:51 It felt like each language has their specific use-cases. Not "strengths and weaknesses", but specific use-cases. Forth, whenever I needed to do something "weird", just let me do it and never held me back. 01:59:18 Hm. I see. Whatever works for you, I suppose. I've heard the same thing said for languages like Common Lisp 01:59:29 Python's probably the biggest offender as far as the design of the language goes. Seriously, who do they think they are, telling me how to use my whitespace? D: -- C++ is the biggest community offender. While I can write it fairly freehand, everyone else *screams* at me if I don't put their preferred number of spaces to indent things, and stuff like that. 01:59:32 One thing I'd like to work on in Forth is doing more mathematical-type things 02:00:07 Glad to see You again Keshl. 02:00:08 Oh yeah, I don't like Python's insistence on whitespace, among other problems like weird implicit type casts 02:00:25 I totally forgot about those. Ugh. 02:00:42 e.g. why should "hello" + " foo" even work? 02:00:50 DKordic:: How do you remember me? oωo; 02:01:06 Makes it hard to reson about programs like def add(x, y): return x + y 02:01:09 reason 02:01:29 siraben: Well, it'd reuturn "hellofoo" I imagine, since those are strings and -- Wait, that's -- o_o' 02:02:31 Okay, I get what Python was going for, but yeah, "hello" "foo" strcat reads easier. 02:02:47 By a strange nick :3 . 02:03:09 --- quit: ashirase (Ping timeout: 240 seconds) 02:03:19 Keshl: I've recently heard about Kitten https://github.com/evincarofautumn/kitten 02:03:35 That reminds me: I've tried LOLCATS, too.. XD 02:03:37 Concatenative, like Forth, but statically typed. 02:04:05 Are you kitten me? 02:04:09 Sorry. I had to. 02:04:20 haha 02:04:23 DKordic: Fancy. Thank you. o.=.o. 02:04:57 [[1, 2], [3, 4]] concat evaluates to [1, 2, 3, 4], for instance 02:05:02 siraben: Kitten seems interesting to me.. 02:05:08 Haven't played around much with it 02:05:15 Yeah, having types gives you a lot of safety 02:05:35 "What is your name? " ask -> name; 02:05:53 * Keshl takes like six tries to read it since he's so used to that sort of thing not existing. 02:06:50 ...Do you have to read this in both directions at once? 02:07:20 Crud. You do. 02:07:30 It's optional to name stuff 02:07:52 Hi Forthwrights 02:07:54 If I don't use variables, at all, ever, does the bidirectional stuff go away? 02:08:11 Part of the fun for me is doing weird stack manulipation anyway. <.<' 02:08:29 rdrop-exit: Ohai! 02:08:47 Hi Keshl :) 02:09:25 My wife's out Xmas shopping, thought I'd check in on the Forth world 02:09:48 I feel like that's an in-joke. Is that an in-joke? "Forth-world"? 02:10:02 If it is, I need to hang out here more. 02:10:47 I find some of the discussions here more intersting than clf 02:11:48 I'm just happy there /is/ discussion. 02:13:20 There will always be some hardcore Forthwrights out there, although most Forth discussion nowadays is very slanted to unforthy things 02:14:50 See, I'm having one of those nights where I can't sleep, but I'm too tired to actually do anything useful, but I don't want to just mindlessely stare at YouTube or something. I've been hopping through chat programs and different channels, but until #forth, everywhere I've been has either been dead quiet, or full of, er.. "Not very smart" people. With Forth, I figure there's a certain base level of intelligence required since most people 02:14:52 have to learn a new way of thinking to even read the language, which means people are probably open-minded by nature and actually have sane discussions. 02:15:06 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:15:18 So far, this seems to be holding true. 02:16:29 Cool 02:16:48 brb need espresso 02:18:17 back 02:18:34 That was fast. Are you sure you need the espresso? 02:18:53 Always 02:19:13 That was just the time to make it, haven't drunk it yet 02:20:18 Even then, that felt fast. 02:21:03 My kids bought me a nice espresso maker a few years ago, I've gotten a lot of practive with it 02:21:11 * practice 02:21:54 It's only 3 steps away from my keyboard 02:22:12 Interesting. XD 02:22:46 ...When did they start building wifi into coffee makers?! 02:24:11 No fancy electronics, mines an old fashioned one with the pressure gauge 02:24:27 I read an article about somebody hacking a coffee maker to DoS a network from the inside. I thought it was a joke, but no. o_o' 02:25:40 https://www.amazon.com/Breville-BES870XL-Barista-Express-Espresso/dp/B00CH9QWOU/ref=lp_2586360011_1_11?srs=2586360011&ie=UTF8&qid=1545560701&sr=8-11 02:25:51 Wow, long URL 02:28:32 That looks *decidedly* fancy. 02:29:39 It's a very practical one, not anywhere as good as a Pavoni, but they cost a fortune and are a lot of work to use propoerly. 02:30:49 Breville's Australian IIRC 02:32:17 --- join: xek (~xek@apn-31-0-23-82.dynamic.gprs.plus.pl) joined #forth 02:34:58 Unfortunately my favorite espresso beans are not available locally, but a couple of other decent ones are 02:36:40 --- quit: xek (Ping timeout: 250 seconds) 02:36:51 I don't know much about coffee. I'm allegric to caffine (actually, really am), but that still looks fancy. 02:37:03 And I can understand only liking specific beans. <.< 02:38:39 Ouch, I feel for you 02:44:19 --- join: xek (~xek@37.109.33.180) joined #forth 03:55:04 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:47:51 Good afternoon forth heads 05:48:08 I missed a lot of chatter, good to see some energy in #Forth 05:56:34 How could IMMEDIATE ruining my DO LOOP? 05:58:46 Can you not have loop indices I or J in IMMEDIATE words? 05:59:26 It appears since the word is IMMEDIATE I actually have to use J instead of I, weird but makes sense 05:59:48 --- join: xek_ (~xek@apn-31-0-23-83.dynamic.gprs.plus.pl) joined #forth 06:02:41 --- quit: xek (Ping timeout: 272 seconds) 06:06:57 WilhelmVonWeiner: I don't think so. "I" could fetch return address produced by the call to such IMMEDIATE Word. 06:07:19 It is implementation defined. 06:08:01 I hate DO LOOP. I'll just use RDROP RECURSE 06:43:39 --- quit: Zarutian (Read error: Connection reset by peer) 06:44:01 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 06:48:50 --- quit: rdrop-exit (Quit: Lost terminal) 07:01:45 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 07:17:30 Merry Christmas #Forth http://0x0.st/sdpS.f 07:18:29 My Forth style is awful. No consistency about where arguments are coming from or going to 07:27:32 man I pushed the wrong version, that call to /usr/bin/env won't work, just gforth it 07:54:38 Heh, Forth file extensions. 07:54:59 I've seen .4th, .fth, .f, .ft and many others. 07:56:21 WilhelmVonWeiner: Also try "#! /usr/bin/env 'gforth $%'" 07:56:43 #! is seen as comment in gforth, so you can actually ./ it. 07:59:03 `#! /usr/bin/env gforth` works. Thank john 07:59:34 .f, .fs, .4th, .fth, .ft, .forth etc 08:00:25 Also #! /usr/bin/gforth 08:01:08 What if someone's installed it under /usr/local/bin? 08:01:51 Yeah, env makes sense in those cases. 08:02:27 ergo I use env for all cases. Not up to me to know where you've installed something, and env is posix 08:16:52 I should add support for #! 08:20:16 and add support for INCLUDE 08:20:20 INCLUDED 08:20:22 REQUIRE 08:20:35 and REQUIRED searching multiple search paths 08:47:50 --- join: tbemann (~androirc@mobile-166-175-185-23.mycingular.net) joined #forth 08:49:50 too bad I don't have my laptop with me or else I'd implement search paths now 08:56:34 Hmm, string handling in forth... 08:58:11 support for #! is easy 08:58:31 just make it a word that parses to EOL and throws away the result 08:58:43 #! /your/forth works with the space there 08:59:55 yeah I implemented #! just like I implemented \ 08:59:58 Basically make #! an alias for \ 09:00:01 Yeah :þ 09:00:24 oh yeah, i don't use or implement \ so i forget it exists 09:01:41 I use \ for my block license comments at the top of files 09:06:47 Hmm, containerizing forth programs... 09:10:54 define containerising 09:11:08 "Serverless" Forth would be cool. 09:11:25 Making it so it can only access certain files and has limited permissions. 09:11:49 you could firejail it 09:14:09 I've been playing around with the idea of a "type stack" to add safety to Forth. 09:15:40 WilhelmVonWeiner: "Serverless" in which way? 09:19:53 the current buzzordy way 09:19:56 like AWS Lambda 09:27:59 I don't have \ at all, but I don't need it (literate sources with files, shadow blocks when using blocks). 09:34:34 --- quit: djinni (Ping timeout: 252 seconds) 09:35:40 --- join: corecode (~2@0x2c.org) joined #forth 09:35:42 hi! 09:36:29 Hello 09:38:27 i'm trying to implement a forth kernel, but i'm stuck in a mental recursion 09:38:43 because ideally the kernel would be implemented in forth 09:39:47 any instructions how to get unstuck? 09:39:47 Look up StoneKnifeForth 09:40:02 That's a Forth meta-compiler example 09:41:34 corecode: implement things in asm, bootstrap from there? 09:42:10 You need primitives at some point 09:44:44 WilhelmVonWeiner: good resource, interesting readme 09:45:58 Forth really is much more "meta" than Lisp even though the latter has that reputation 09:46:14 Oh definitely 09:46:19 Lisp is overrated. 09:47:38 WilhelmVonWeiner: although that forth omits lot of stuff normally allowed in forth 09:47:53 Such as a repl, return stack access 09:48:25 " It is not expected to be useful; instead, its purpose is to show how simple a compiler can be." 09:49:08 I thought maybe the project would give corecode a new perspective on how to implement whatever they may be implementing 09:50:00 yea it helps 09:50:46 so he has a python-based interpreter that can compile the compiler 09:51:24 o.O how meta 09:51:43 Git 'er done 09:51:54 i think in the end i probably should output assembler so that relocations will work when i integrate the forth kernel in my main application 10:08:24 --- quit: xek_ (Ping timeout: 272 seconds) 10:12:12 --- join: alexshendi (~yaaic@37.5.244.71) joined #forth 10:45:14 --- quit: dave0 (Quit: dave's not here) 10:51:07 --- join: djinni (~djinni@68.ip-149-56-14.net) joined #forth 11:57:58 --- quit: alexshendi (Ping timeout: 246 seconds) 12:22:04 --- join: kumul (~kumool@adsl-64-237-233-235.prtc.net) joined #forth 12:29:05 I like spending time with my family but I so want to be home so I can spend more time hacking on attoforth 12:30:04 I need to move out so I can come up with excuses not to be at family gatherings. 12:33:03 I moved back in because it's cheaper and because when I'm doing things with my daughter we always do things with my parents anyways 12:34:57 I just should have brought my laptop with when we all went to my sister's, so I could code while my sister plays with her cousins 12:36:47 because I really want to implement search paths 12:38:01 what are you on at the moment? 12:38:46 I'm using an Android phone ATM 12:40:27 I could in theory work on the code using Github's editor, but it'd be a major PITA 12:41:18 never leave house without laptop 12:41:36 I bought a UMPC and that's just always in my bag 12:41:44 even if my laptop is in there. 12:41:52 lol exactly 12:42:01 UMPC? 12:42:22 Ultra micro portable computer? Ultra mini? Uber malformed? One of those 12:42:54 Fujitsu U1010, an x86 laptop in a miniature form factor 12:44:47 whereas my laptop is a monster 12:46:42 I am not sure what I'd do with two laptops though 12:47:19 my toher laptop is a chromebook 12:48:06 whereas my laptop is a high-end laptop 12:49:22 do anything interesting with all ya horsepower? 12:54:49 what does & in attoforth? 12:55:53 POSTPONE 12:58:08 in some Forths like mine & is an alias for POSTPONE because it makes code that does lots of deferred compiling shorter 12:58:41 yea i'm not sure i understand POSTPONE 13:02:51 it is an immediate word that when executed against a non-immediate word compiles code to compile the referenced word and when executed against an immediate word compiles code to execute the referenced word as if it were not immediate 13:04:26 the first case is equivalent to COMPILE and the second case is equivalent to [COMPILE] 13:05:40 corecode: here's an example that helped me understand it 13:06:06 [CHAR] compiles the next word in the input stream while compiling 13:07:14 To aliase [CHAR] to C' (for shorter code?) you might naievely write `: C' [CHAR] ;` which won't work, because [CHAR] will compile `;` 13:07:22 as a literal character 13:08:07 so you might try `: C' [CHAR] ; IMMEDIATE`, to make C' run as an immediate word - same issue, as [CHAR] is immediate 13:08:55 so you postpone [CHAR], `: C' POSTPONE [CHAR] ; IMMEDIATE`, so it isn't executed as immate but it's execution is postponed 13:09:14 s/immate/immediate 13:10:37 `: ENDIF POSTPONE THEN ; IMMEDIATE` is an example at http://forth-standard.org/standard/core/POSTPONE 13:12:52 or indeed : & POSTPONE POSTPONE ; IMMEDIATE 13:24:43 I do have to say I have been making a lot of use of & in constructing "smart" words with attoforth 13:28:25 what are smart words? 13:29:10 Whose execution depends on (compilation) "STATE". 13:29:41 ah ok 13:30:37 i'm trying to wrap my head around implementing the forth kernel in forth (which would be cute) (plus code words in assembler) 13:30:48 but how do i do that with cross compilation 13:31:02 it feels like i'm trying to write a quine 13:33:05 I went further with smart words and made it so that words declared with SMART have different compilation and EXECUTE semantics 13:34:10 --- quit: pierpal (Ping timeout: 245 seconds) 13:34:52 this is non-standard, BTW 13:35:45 hm, maybe i can whip together a forth meta-compiler in python that outputs assembler 13:36:27 that you could 13:36:34 something like dropping a symbol in HERE 13:37:05 that should then be able to produce output that is relocatable 13:37:58 i want to avoid implementing a lot of primitives in assembler just because i'm lacking a working compiler 13:38:04 I'm actually writing a Forth-style control language for Python at the moment 13:38:10 also i want most core words in flash instead of ram 13:38:20 I want to make games with Pygame but I don't want to write Python 13:38:27 you could also write one in relatively standard Forth, so your metacompiler can be self-hosting 13:40:06 yea, my brain breaks 13:40:30 like write a metacompiler that can be executed via gforth 13:40:56 how do i keep the word lists separate? 13:44:08 define separate wordlists 13:45:02 --- quit: kumul (Quit: Leaving) 13:45:09 and keep distinct wordlist orders for the metacompiler and the target 13:46:43 i think i'm not forthy enough yet to be able to do that 13:46:47 I would really suggest not writing your metacompiler in Python so you can self-host 13:49:06 why is self-hosting a goal? 13:49:38 wordlists are not nearly as hard as they sound - in attoforth, which uses Forth 2012 wordlists, there are really just three words you need to be concerned with 13:50:06 WORDLIST, which returns a new wordlist 13:50:44 SET-ORDER, which sets the current wordlist order 13:51:32 and SET-CURRENT, which sets the current compilation wordlist 13:51:50 why self-host? 13:52:14 yea why self-host 13:52:42 so your own implementation can generate new images on its own 13:53:22 i understand the abstract appeal 13:53:45 but specifically here i want to link basically a libforth into an embedded binary 13:54:48 so for linking i need to create relocatable code, which is significantly different from compiling + running code on the embedded platform 13:55:01 probably i'm wrong, but that's my current thinking 13:58:17 other reasons include that you can compile words within the metacompiler environment taking advantage of its Forth environment if you write your metacompiler in Forth 14:00:22 you can compile words both within the metacompiler and as target code simultaneously if you use a metacompiler written in Forth 14:01:25 clearly this has not yet congealed enough for me 14:01:39 maybe i should write a forth first completely in assembler 14:01:47 and then see what i can extract to high level 14:02:33 have you written a Forth before? 14:02:47 no 14:04:13 I'd try just writing a Forth first 14:04:42 corecode: https://colorforth.github.io/POL.htm 14:04:57 i read the moving forth series 14:05:02 Chuck's own guide to writing a Forth 14:05:33 Before his ideas were as concrete as they became 14:06:38 my Forth, e.g., is in C 14:08:04 my next Forth will be in assemble but I will write my own assembler in Forth and host it on my current Forth 14:12:17 I plan on making the two Forths as intercompatible as possible, so the first Forth can mostly be used for new platforms (ARM) 14:23:44 My C is in Forth 14:24:27 a C compiler in Forth would be interesting if obscene and perverse 15:08:26 I'm not sure why one would want to write a C in Forth 15:12:28 it could give you a c compiler that can be bootstrapped from asm 15:34:43 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 15:38:58 --- quit: pierpal (Ping timeout: 244 seconds) 15:39:46 nice, i can do : 15:39:53 and literals 15:41:33 Yay 15:44:30 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 16:06:11 --- quit: dys (Ping timeout: 250 seconds) 16:10:35 uh.huh. 16:20:31 --- quit: moony (Killed (Sigyn (BANG!))) 16:20:50 --- join: moony (moony@hellomouse/dev/moony) joined #forth 16:24:23 --- quit: john_cephalopoda (Ping timeout: 250 seconds) 16:26:20 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 16:42:27 --- join: dys (~dys@p200300C9D710690002265EFFFEE968D2.dip0.t-ipconnect.de) joined #forth 17:00:04 --- join: dave0 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 17:01:04 hi 17:01:13 lo 17:01:48 hi PoppaVic 17:02:35 good evening dave0 17:02:55 hi crc 17:02:57 --- quit: dys (Ping timeout: 250 seconds) 17:03:33 whats new? 17:04:03 back 17:04:36 dunno, i just woke up :-) 17:04:44 C4[_]~ C8[_]~ C3[_]~ C2[_]~ 17:04:52 hey guys 17:05:55 Hi 17:09:05 on my way back from Chicago - once my daughter is in bed I can code more 17:09:07 hi tbemann, john_cephalopoda 17:39:46 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 17:44:12 just put her in bef. how big could she be??? 17:44:33 --- quit: pierpal (Ping timeout: 268 seconds) 17:52:40 bigger than a baseball 17:53:04 ..it's prolly not the SIZE it's the volume 18:27:23 --- join: AndroUser2 (~androirc@static-50-105-235-98.snpr.wi.frontiernet.net) joined #forth 18:31:09 --- quit: tbemann (Ping timeout: 240 seconds) 18:39:06 --- quit: AndroUser2 (Ping timeout: 250 seconds) 18:50:39 how loud could she be??? 18:52:12 seriously.. never, ever ask that question 18:52:39 Howeverm you can always leave them in a parking lot. 19:07:58 --- join: tbemann (~androirc@2600:380:6a6a:7043:1815:e3b9:a30d:83b2) joined #forth 19:24:11 --- join: proteusguy (~proteus-g@cm-58-10-155-165.revip7.asianet.co.th) joined #forth 19:24:11 --- mode: ChanServ set +v proteusguy 19:30:44 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 19:32:31 hey guys 19:47:06 --- join: learning_ (~learning@4.35.154.131) joined #forth 19:48:40 --- quit: learning_ (Remote host closed the connection) 20:14:29 --- quit: tbemann (Ping timeout: 250 seconds) 20:16:46 --- join: rdrop-exit (~markwilli@112.201.164.82) joined #forth 20:18:30 --- quit: dave0 (Quit: dave's not here) 20:18:44 back 20:19:46 Hi Tabemann 20:20:05 I'm taking a short break from the holiday rush 20:22:44 I'm about to implement search paths, so that INCLUDE/REQUIRE can search in multiple places 20:23:11 Cool 20:23:29 I don't have any of that, just blocks 20:23:48 my main question is should search paths be task-local 20:24:54 because I've already made a lot of stuff task-local - tasks in attoforth are essentially like processes, which just happen to share a memory space 20:25:31 Not until you actually need them to be that way 20:26:08 That's what metacompilation is for 20:27:53 and attoforth is definitely not metacompiled - the core is straight ANSI C using POSIX libc calls, even though most of it itself is written in Forth and compiled using a builtin compiler in the core 20:28:58 okay, time to put my daughter to bed 20:31:58 --- quit: proteusguy (Remote host closed the connection) 20:33:28 I guess then it's whatever your stand-in for metacompilation is for 20:40:41 Metacompilation is the key to avoiding the kitchen sink syndrome 20:41:28 back 20:43:14 what I've been doing is writing the core primitives in C, writing the parts that are core elements either needed to build up the interpreter to the point it can load source files or which otherwise form core functionality in Forth compiled directly into the attoforth executable, and non-core functionality (such as the line editor) is written in separate Forth files 20:46:17 the core is limited in what it can do; it is not really a functional Forth implemntation 20:57:04 Whatever works best for you, as long as it provides the same facilities as metacompilation you'll be able to adapt your Forth as needed instead of putting in the kitchen sink. 20:57:58 That was my point with your search path design decision, use the simplest approach that will meet your current needs. 20:58:31 If your needs get more sophisticated later on, you can simply metacompile a new version. 20:59:16 you mean write my forth in another program that generates an executable (through an assembler or like)? 21:00:38 right now I am aiming at internal consistency, and as I have already chosen that tasks are as independent of one another as possible, my subsequent design decisions should be consistent with this principle 21:00:43 No, load your metacompiler as an extension to your current Forth, and use it to metacompile a new version of your Forth. That's the usual approach. 21:01:36 That's the second type of extensibility of Forth. 21:02:13 You use your Forth to produce a new version of itself. 21:02:44 That's waht metacompilation is. 21:03:00 (in Forth parlance). 21:03:28 A third type of extensibility is also possible at the Forth processor level. 21:03:41 bbiab 21:15:36 --- join: learning_ (~learning@4.35.154.131) joined #forth 21:29:46 --- join: dave0 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 21:30:05 re 21:30:25 --- quit: APic (Ping timeout: 245 seconds) 21:37:04 --- join: APic (apic@apic.name) joined #forth 21:44:14 --- quit: learning_ (Remote host closed the connection) 21:45:16 --- join: proteusguy (~proteus-g@mx-ll-183.89.214-50.dynamic.3bb.co.th) joined #forth 21:45:16 --- mode: ChanServ set +v proteusguy 21:53:04 --- quit: pierpal (Quit: Poof) 21:53:23 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 21:59:23 --- quit: dddddd (Remote host closed the connection) 22:21:41 --- quit: pierpal (Quit: Poof) 22:21:59 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 23:46:31 --- quit: rdrop-exit (Quit: Lost terminal) 23:59:59 --- log: ended forth/18.12.23