00:00:00 --- log: started forth/18.12.17 00:04:41 --- quit: dys (Ping timeout: 246 seconds) 00:37:51 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 00:48:45 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 01:14:22 --- quit: mtsd (Ping timeout: 244 seconds) 01:22:41 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 01:38:10 --- quit: dave0 (Quit: dave's not here) 01:45:50 --- quit: pierpal (Ping timeout: 245 seconds) 01:56:41 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 02:02:41 --- quit: ashirase (Ping timeout: 250 seconds) 02:09:28 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:16:47 --- join: xek (~xek@apn-31-0-23-81.dynamic.gprs.plus.pl) joined #forth 02:31:41 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 02:51:33 --- quit: dddddd (Remote host closed the connection) 03:33:42 --- quit: mtsd (Quit: WeeChat 1.6) 03:50:50 --- quit: gravicappa (Ping timeout: 245 seconds) 03:54:02 --- join: gravicappa (~gravicapp@94.228.252.233) joined #forth 04:15:03 tabemann: I also intend to eventually support full RGB. 04:15:14 The current status is just a PoC. 04:52:44 --- quit: Zarutian (Read error: Connection reset by peer) 04:52:59 --- quit: gravicappa (Ping timeout: 268 seconds) 04:53:11 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 05:00:11 --- join: gravicappa (~gravicapp@94.228.252.233) joined #forth 05:20:37 --- quit: proteusguy (Remote host closed the connection) 05:36:42 --- quit: gravicappa (Ping timeout: 250 seconds) 06:42:18 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 06:58:13 john_cephalopoda, apparently sixels are palette based for most terminals, supporting up to 255 colors, from what I have heard 06:58:23 --- quit: rprimus (Ping timeout: 246 seconds) 06:58:32 --- join: rprimus (~micro@unaffiliated/micro) joined #forth 07:15:26 --- quit: tabemann (Ping timeout: 264 seconds) 07:34:56 --- quit: nighty- (Quit: Disappears in a puff of smoke) 07:53:04 --- quit: pierpal (Read error: Connection reset by peer) 07:53:22 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 08:20:34 --- quit: pierpal (Read error: Connection reset by peer) 08:20:53 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 08:28:17 --- quit: pierpal (Read error: Connection reset by peer) 08:39:52 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 08:44:40 --- join: proteusguy (~proteus-g@cm-58-10-209-244.revip7.asianet.co.th) joined #forth 08:44:40 --- mode: ChanServ set +v proteusguy 09:02:18 --- join: mark4 (~mark4@148.80.255.161) joined #forth 09:02:55 so i have a word called ?: that allows me to optimize if foo else bar then down to ?: foo bar. what would i call a similar word that allowed me to optimize a if foo then ? 09:03:07 i.e. instead of "if foo then" i just say XXX foo 09:03:28 and foo is only executed if there is a true val at the top of stack when XXX is run... what would i call XXX ? 09:04:03 i could then have not if foo then optimized down to -XXX foo or something 09:04:59 i dont want to use IF in the name because the if demands a then which i want to get rid of both in the object code and in the sources 09:04:59 mark4: well in the latter case it is bascally a conditional skip, no? 09:05:04 yes 09:05:15 so skipIfTrue and skipIfFalse come to mind 09:05:17 ?: is a conditional skip sort of 09:05:34 skip and -skip ? 09:05:40 hmmm 09:05:52 naah, ?: is a trinary operator, often called pick 09:05:52 sing skip already a forth word? 09:06:06 except PICK is also a predefined forth word :) 09:06:23 and i "invented" ?: before i even knew about c's trinary lol 09:06:25 I know, so I have use ?: meself 09:06:44 i claim "invented" but not "i did it first" 09:06:56 can call it skip 09:06:59 well, it is something that falls out if one thinks a bit when programming and software engineering. 09:07:27 hop? 09:07:44 skim? 09:07:51 mark4: well the name should reflect what it does. Just skip implies non-conditional skip 09:08:08 step? 09:08:14 as in step over 09:08:25 just "skip?" might work like "dup?" 09:08:56 except skip is a word like scan and i dont want to add confusion factor 09:09:10 i.e. ans fanboys are already confused enough over "compile and [compile]" lol 09:09:34 hmm... "omitt?" perhaps? 09:09:36 OH NO! they have similar sounding names but TOTALLY different operations! im sooooo confuzed! 09:10:05 step? or leap? 09:10:21 leap? might be more apropos 09:10:23 bypass? 09:10:34 deflect? 09:10:43 dodge? lol 09:10:50 im using thesaurus.com here 09:11:01 jump? 09:11:41 Jonesforth has all kinds of bugs with signed numbers 09:11:41 dodge? might do it, it is strange enough to warrant someone reading your code to find its definition but still get the gist of what it does 09:11:50 jonesfoprth is garbage 09:12:14 pointfree: probably from its C base, no? 09:12:24 im annoyed that everyone knows about jonesforth and nobody knows x4/isforth which i honestly believe he copied 90% of his code from 09:13:18 pointfree: let me guess, these bugs are all arithmetic over- and under-flow bugs 09:15:29 i think i like "leap" best 09:15:30 Zarutian: I just fixed a bug where the "/" word didn't work with signed numbers because the asm code was missing the CDQ instruction for sign extend. 09:15:32 so far 09:15:51 * Zarutian has been rewatching some of the Mill Computing videos lately. 09:16:27 mark4: dont for get the ? at the end of it to signify its conditionalness. 09:17:20 pointfree: CDQ? I am sorry, I took a good look at x86 ISA and decided not to bother learning it, so what does the CDQ instruction do? 09:18:05 oh yea 09:18:06 Zarutian: https://stackoverflow.com/questions/36464879/when-and-why-do-we-sign-extend-and-use-cdq-with-mul-div 09:18:22 tho i think jump is probably better 09:18:25 jump? 09:18:39 but really SKIP is the best word lol except its taken 09:18:48 skp? 09:19:01 yea i think skp? 09:19:05 x4/isforth? 09:19:18 mark4: ?: foo nop 09:19:54 PoppaVic: i do that 09:19:56 a nlot 09:20:08 noop maybe 09:20:26 but that's a waste of cycles - when you can write a variant of ?: 09:20:35 correct 09:20:53 and as this is an Android NDK forth cycles == battery 09:21:45 well, on phones, space is just as tight. 09:22:26 the library is 26868 in size 09:22:34 which is miniscule 09:22:48 hehehehehehe 09:22:59 i have seen lib files a few meg in size 09:24:39 never understood why it is okay to put up with this kind of code bloat 09:24:44 Java 09:24:55 I blame Java and the culture it spawned 09:25:06 i blame c++ more 09:25:18 * Zarutian is with mark4 there 09:26:41 * pointfree is forcing himself to work off of jonesforth instead of gforth on the desktop and gradually sculpt it into something he likes. 09:26:49 Stroustrup is like the anti-moore 09:27:17 pointfree: check out x4 on github/mark4th 09:27:51 there is also t4 which is a thumb2 version that runs on rpi 09:28:46 x4 is a whole environment isn't it 09:29:05 I quite like Lina forth myself 09:29:11 cant build it on openbsd though 09:29:25 WilhelmVonWeiner: i used to have a bsd version of x4 09:29:40 the biggest difference is in the way bsd does system calll parameter passing 09:29:47 i.e. register v. stack 09:29:54 mark4: I am tempted to switch over to x4 as a foundation. The code looks much cleaner. 09:30:03 it IS much cleaner 09:30:11 by orders of orders of orders of magnitude 09:30:31 and there are a hell of alot more examples of how to program forth in general in all those sources 09:30:33 pointfree: do you have any critical speed requirements? 09:30:45 x4 is EXTREMELY fast 09:31:04 it is totally unoptimized and yet can compete and in most cases WIN against the equiv C code 09:31:43 pointfree: and another advantage to x4 is... you wont find the jonesforth author in here to help :P 09:31:51 well, I was just going to suggest writing a small forth vm emulator and run on top of that. 09:32:28 If I were developing my own Forth I'd use crc's Retro and it's VM, Nga, as a base 09:32:36 pointfree: CDQ stands for Convert Doubleword to Quadword, while extending the sign bit. 09:32:48 actually retro is TCN's originally :P 09:33:02 but its current incantation is all crc for sure 09:33:14 wich tcn was still around 09:34:06 can x4 call C 09:34:14 I just want to write sdl code in Forth goddamn it 09:34:27 there is no mechanism for it to do so currently 09:35:01 however, my android NDK does link to C stuff 09:35:08 Zarutian: At the moment I am mostly focused on code clarity and hopefully bridging that to performance with http://christophe.lavarenne.free.fr/ff/ffcodegen.html style optimizations and possibly lazy eval. 09:35:13 a FFI would not be that difficult to implement 09:35:26 mark4: your NDK compiles Forth source to APK? 09:36:27 at run time 09:36:36 interesting 09:36:45 it used to be working perfectly but google ripped the rug out from under me and i had to do an almost complete rewrite lol 09:36:51 what's your github so I can grok all ya source 09:37:11 i have not got it working again yet but the changes are much better once i fix them 09:37:16 well the NDK version is not relased 09:37:27 github.com/mark4th 09:37:31 yeah but I can't find x4 by googling it 09:37:43 x4 and t4 are under github.com/mark4th 09:37:47 unless BMW are the publishers of your forth 09:37:55 mark4: how did google pull your rug? 09:38:15 they disallowed text relocations in libraries 09:38:29 and they disallowed +r+w+x text sections too 09:40:17 so their thinking regarding that is probably similiar in nature that spawned ASLR and has caused me no end of grief (on some systems the NO_ASLR bit in elf binaries is just ignored) 09:41:33 correct, its security related 09:41:55 can not have relocations in .text so EVERYTHING is now expressed as an offset from the start of .text lol 09:42:04 or .data 09:42:22 and actually it forced me to use the GNU assemblers sub sections 09:42:34 surely you are allowed to relocate .data sections? 09:42:47 all code is assembled to .text 0 (the default .text sub section) and all headers are assembled to .text 1 09:43:03 does not makes sense to have absolute addresses into .data when you cant have them in .text 09:43:12 so i made all .data references relative too 09:44:14 well, in these kind of cases I would just have one page of .text where there is a megamorphic switch implementing Forth primtives dispatch. 09:45:28 and how would you differentiate between stuff compiled into the user buffer and kernel space 09:45:56 for example variable in-kernel-space and variable in-user-space 09:46:15 ALL code and data defined by the user are allocated within the USER buffer 09:46:31 --- join: dys (~dys@tmo-115-65.customers.d1-online.com) joined #forth 09:46:41 all code in kernel space is in .text both coded and colon definitions. all data (body of variables etc) in kernel space are in .data 09:47:11 so @ has to know which space the offset is referring to 09:47:12 mark4: prefix in the first x bits of the address 09:47:15 --- quit: ncv (Remote host closed the connection) 09:47:30 i prefix the user space addresses. i use the sign bit 09:47:52 0x80000000 is the start of user space and 0x00000000 is the start of kernel space 09:48:01 drat im letting secrets out! 09:48:03 lol 09:48:21 but now every word that fetches something has to be "space" aware 09:48:36 that made thigns much more complificated 09:49:16 coded defs in kernel space only but colon defs in kernel OR user. variables in kernel or user, vocabularies in kernel or user.... 09:52:54 mark4: When you have more than one thread you need that anyway. 09:53:03 pointfree: let me know if you get the same signed bugs in x4 09:53:13 Variables can be defined as words that fetch from kernel memory. 09:53:40 i dont have a different version of "dovariable" for kernel and user space 09:54:19 the body of the variable is actually a POINTER to the data store for the variable. that pointer is an offset withyin one or other buffer 09:54:27 0x0000xxxx for kernel spave 09:54:33 0x8000xxxx for user space 09:54:40 so far im not even close to going over 64k lol 09:54:55 'mental note to self: must learn to type 09:55:41 john right now the ONLY multi threaded part of this NDK forth is between the forth kernel and java both of whom need access to TIB. 09:55:53 one thread injects data into tib and the other interprets it 09:56:01 there is a lock on tib of couse 09:56:56 the JNI_Onload function starts the quit thread 09:57:05 and JNI_OnUnload kills and joins that thread 09:57:35 i do not intend to make anything inside the forth multi threaded in a posix threads kind of way 09:58:14 if i decide i need multi threading inside the kernel itself that will be accomplished using forth methods. i .e. ill still have only one posix thread for the quit loop but inside that i can have multiple forth tasks 09:58:21 if i ever need them 10:22:27 --- quit: pierpal (Quit: Poof) 10:22:45 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 10:22:49 green threads? 10:30:18 --- quit: dys (Ping timeout: 268 seconds) 10:37:16 WilhelmVonWeiner: no, they are red 10:37:52 blue 10:39:59 --- join: dys (~dys@tmo-080-76.customers.d1-online.com) joined #forth 10:47:24 --- quit: dddddd (Ping timeout: 250 seconds) 12:08:35 --- quit: Keshl (Quit: Konversation terminated!) 12:21:46 * Zarutian sussed out the 'protocol' used by twitch tasbot channel for the paint-by-numbers canvas accessible via twitch-chat 12:21:59 * Zarutian refers to https://github.com/TASToys/Paint-By-Numbers/blob/master/index.html 12:30:35 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 12:33:51 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 12:56:46 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 13:18:41 --- quit: pierpal (Ping timeout: 250 seconds) 13:43:42 --- quit: mtsd (Quit: WeeChat 1.6) 13:45:10 --- quit: xek (Ping timeout: 268 seconds) 13:46:17 --- join: alexshendi (~yaaic@2a02:8070:218b:bd00:add1:2a1:e85d:2aa4) joined #forth 14:12:58 --- quit: mark4 (Ping timeout: 246 seconds) 14:43:22 --- join: Insert_Coin (~insertCoi@h081217214054.dyn.cm.kabsi.at) joined #forth 14:59:53 --- join: dave0 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 15:00:05 hi 15:06:57 is there any broad plans in NetBSD to take drivers out of the kernel and into user-land ? 15:15:46 whoops! 15:16:01 wrong channel and it took 10 minutes to notice heh 15:18:52 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 15:25:13 --- quit: pierpal (Ping timeout: 250 seconds) 15:31:02 OK, well... stroganoff is in the crockpot - saved about 1/3 the beast for "anything else".. Chicken turned out well, floor is almost back in place.. Next time I get up. I'll finish the dishes and get a nice piece of cheesecake. 15:31:16 oops - wrong channel ;-P 15:32:35 * Zarutian has found a use for Quantum-Entaglement. An unforgeable key and lock. The key and lock share entangled pairs. When the key is meant to open the lock both the key and lock measure a pair. The key sends the lock the result of its measurement. The lock then XORs that and its measurement. Repeat for as many measurements you like. The result of the XORs are all ones if the key is the true one. 15:33:55 dinner talk is on-topic :-) 15:34:17 Zarutian: now, if we can use it to blast politicians into the Phantom Zone. 15:34:55 dave0: dinner is always on topic - but I meant it for my own channel ;-) 15:35:07 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 15:54:19 --- join: mark4 (~mark4@12.41.103.244) joined #forth 16:31:05 --- quit: john_cephalopoda (Ping timeout: 250 seconds) 16:32:50 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 16:48:11 --- join: nighty- (~nighty@b157153.ppp.asahi-net.or.jp) joined #forth 16:56:31 --- quit: dave0 (Quit: dave's not here) 17:18:37 --- join: rdrop-exit (~markwilli@112.201.164.82) joined #forth 17:35:04 --- join: tabemann (~tabemann@h193.235.138.40.static.ip.windstream.net) joined #forth 17:35:31 hey guys 17:35:39 --- quit: mark4 (Ping timeout: 250 seconds) 17:35:54 Hi tabemann 17:36:10 I'm having trouble with sixels under xterm 17:36:25 I'm trying to draw a gradient as a single horizontal line 17:36:44 but it rather is all the color that is supposed to be at the end of the line 17:40:21 --- join: mark4 (~mark4@12.41.103.244) joined #forth 17:40:37 i actually unsarcastically love that this has become the sixel channel 17:40:46 i need to get in on this action 17:41:40 ? 17:43:18 * PoppaVic rotfls 17:44:23 oh I figured it out! 17:44:30 xterm only supports 16 colors 17:56:52 so much for truecolor 17:57:01 the best we can do is dithering 17:58:15 --- quit: Insert_Coin (Quit: Leaving) 18:01:19 okay there are some terminal emulators that support 256 colors 18:01:28 not truecolor, but better than 16 colors] 18:03:13 --- join: Insert_Coin (~insertCoi@h081217214054.dyn.cm.kabsi.at) joined #forth 18:03:27 okay, time to head home 18:06:23 --- part: Insert_Coin left #forth 18:07:49 --- quit: tabemann (Ping timeout: 246 seconds) 18:17:25 --- join: Insert_Coin (~insertCoi@h081217214054.dyn.cm.kabsi.at) joined #forth 18:18:56 --- part: Insert_Coin left #forth 18:22:41 --- join: Insert_Coin (~insertCoi@h081217214054.dyn.cm.kabsi.at) joined #forth 18:26:28 --- quit: Insert_Coin (Client Quit) 18:33:39 --- join: tabemann (~tabemann@2602:30a:c0d3:1890:a433:523c:27b8:b5c8) joined #forth 18:34:45 john_cephalopoda, I have bad news 18:35:50 xterm only supports 16 colors with sixels 18:42:56 --- quit: ashirase (Ping timeout: 246 seconds) 18:44:52 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 19:04:26 --- quit: libertas (Ping timeout: 250 seconds) 19:06:25 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 19:26:46 --- join: smokeink (~smokeink@118.131.144.142) joined #forth 19:26:59 /join #mezzano 19:27:27 I typed an extra space by mistake 19:51:42 --- quit: rdrop-exit (Quit: Lost terminal) 19:59:56 --- quit: smokeink (Ping timeout: 246 seconds) 20:03:10 --- quit: libertas (Ping timeout: 272 seconds) 20:04:33 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 20:06:33 --- join: smokeink (~smokeink@118.131.144.142) joined #forth 20:10:40 --- quit: smokeink (Ping timeout: 246 seconds) 20:11:14 --- join: smokeink (~smokeink@118.131.144.142) joined #forth 20:13:10 --- join: learning (~learning@4.35.154.131) joined #forth 20:14:24 --- quit: learning (Remote host closed the connection) 20:18:20 --- join: learning (~learning@4.35.154.131) joined #forth 20:20:56 --- quit: Keshl (Read error: Connection reset by peer) 20:22:56 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 20:25:52 tabemann: xterm supports 256 colors 20:26:20 --- quit: libertas (Ping timeout: 250 seconds) 20:26:38 I tested it today, and I saw online that xterm by default only supports 16 colors - it requires recompilation to support 256 colors 20:27:43 ...You probably just need to ./configure it with the --enable-256-color option if you haven't already (my distro does this by default) 20:34:02 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 20:36:32 hey forthers 20:38:20 --- quit: libertas (Ping timeout: 245 seconds) 20:40:19 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 20:43:00 if i want to alias s" is : s ['] s" execute ; the right way to do it 20:43:20 it works fine but wasn't sure if i was doing something unnecessary or hacky 20:43:56 congrats! that's spectacularly grotesque 20:44:01 XD 20:44:35 You do realize an "alias" is essentially the same word, right? 20:44:49 MUST. HAVE. TOTAL. CONTROL. *BEEP* *BOOP* 20:45:07 by alias i just mean i want to use the same definition for a different word 20:45:25 I'd go with : s POSTPONE s" ; 20:45:42 well : s POSTPONE s" ; IMMEDIATE 20:46:06 escept s" isn't immediate 20:46:13 can you explain what POSTPONE and IMMEDIATE are doing? i've read about them in the manual but i just dont get it 20:46:45 PoppaVic: um yes it is - s" has to be immediate so it can control parsing at compile time 20:46:45 IMMEDIATE twiddles a header bit - the word is executed while compiling OR interp[reting 20:47:04 see s" 20:47:05 noname : 20:47:05 34 parse save-mem ; 20:47:37 tabemann: so, blame gforth ;-) 20:47:45 but if it weren't immediate, how would : foobar s" foo" type ; work 20:47:46 --- quit: smokeink (Ping timeout: 246 seconds) 20:47:55 poorly, of course 20:48:25 if it weren't immediate, the compiler would attempt to compile foo" 20:48:27 tabemann: your code gets me an address alignment exception 20:49:16 that means your data space pointer must have been unaligned before you executed the code 20:49:40 ill restart meh forth 20:50:09 --- join: smokeink (~smokeink@118.131.144.142) joined #forth 20:50:15 wait a second 20:50:58 d 20:50:59 6.1.2165 20:50:59 S" 20:50:59 s-quote 20:50:59 CORE 20:50:59 Interpretation: 20:51:01 Interpretation semantics for this word are undefined. 20:51:03 Compilation: 20:51:05 ( "ccc" -- ) 20:51:07 Parse ccc delimited by " (double-quote). Append the run-time semantics given below to the current definition. 20:51:10 Run-time: 20:51:12 ( -- c-addr u ) 20:51:14 Return c-addr and u describing a string consisting of the characters ccc. A program shall not alter the returned string. 20:51:17 S" is a compile-time word 20:51:21 hehehe 20:51:48 unless you've exended your forth to support interpretation-mode S", but that's not part of the core Forth 2012 standard 20:51:59 (which I have done) 20:52:29 but that bit there pretty unambiguously states that S" parses a string at compile time and splits out an address and length at runtime 20:52:40 naturally, for this to be possible, it has to be immediate 20:53:47 for whatever reason this definition doesn't do what i expect : s POSTPONE s" ; IMMEDIATE 20:53:59 im typing it in all lowercase but that doesnt matter right 20:54:08 using gforth 20:54:13 lowercase, uppercase, most forths are case-insensitive 20:54:34 gforth by default is, even though you can tell it to make individual wordlists case-sensitive 20:54:46 --- quit: libertas (Ping timeout: 246 seconds) 20:55:11 --- quit: alexshendi (Read error: No route to host) 20:55:56 https://paste.ofcode.org/N5yubGVj3DMbk4Df6JCdjb 20:56:23 oh that's why 20:56:26 i was calling myself a scrub btw cause i was hoping it would work and id felel like an idiot 20:56:36 gforth doesn't allow interpretation-mode usage of s" 20:56:44 lol 20:56:46 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 20:56:46 put the s in a word and then try it 20:57:04 like : foobar s this should work now" type ; 20:57:12 oh so your def will only work in a word definiton 20:57:17 yes 20:57:24 right on 20:57:51 can you explain to me what an immediate word is? 20:58:14 SYNONYM 20:58:20 an immediate word is a word that is executed as soon as it is parsed, regardless of whether the system is in interpretation mode or compilation mode 20:58:59 i dont really understand the need to have seperate rules for interpretation and compilation 20:59:05 so, with gforth: : s postpone s" ; compile-only immediate ok 20:59:05 s foo" 20:59:06 :2: Interpreting a compile-only word 20:59:07 but i guess that will come with practice 20:59:19 at least the error makes sense 21:01:37 there's so much i need to learn, but thanks to lisp, i can already see how much potential there is with forth 21:01:45 i like that i actually have access to the entire forth system 21:02:18 CL is so fucking big that 1 person can't ever really understand the whole thing top to bottom 21:02:58 with forth you can realistically write your own forth 21:03:13 I have written my own forth, as have many other people here 21:03:26 and i think im exactly the kind of person that will do that when i get to the level that i can 21:03:35 just because there will be things i want to change 21:04:32 I tried writing my own scheme but gave up just because it was too complex with hygienic macros and shit, and scheme is supposed to be a simple language (R7RS really isn't simple) 21:04:51 yeah, ive gone through The Little Schemer 21:05:03 and i agree that lisp is not actually a simple system in execution 21:05:06 only in concept 21:05:18 I don't mean a little proof-of-concept scheme, I mean a full practicallly usable scheme 21:05:33 right. i totally know what you mean. 21:05:41 a little proof-of-concept scheme is easy, a full practically usable scheme is much harder than it sounds 21:05:51 something robust that isn't going to break and that you can actually do stuff with 21:06:58 --- quit: pierpal (Quit: Poof) 21:07:15 but in my case I've managed to create a forth that is actually usable, and has nice features like preemptive multitasking, a nice line editor with autocomplete, lambdas (yes, a forth with lambdas!), and so on 21:07:17 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 21:07:35 the thing about forth is that the core of the language can be very simple 21:07:40 from what ive googled, lambdas aren't a big deal to implement 21:07:43 and you can incrementally build on that 21:07:48 i just havent gotten around to it yet 21:08:03 rather than having to build-in all your complexity up front 21:08:24 making my own forth repl is really high on my priority list 21:08:47 i prefer to have complete control over my dev environment 21:09:15 im doing the same thing for JS 21:09:48 programming in a repl is just so much better than CODE IT ALL -> COMPILE IT ALL -> RUN IT ALL 21:09:49 I come from the Haskell world, where GHC is essentially a great big black box, and it is so nice in comparison having a language environent where I understand every last bit of it because I have built it all myself 21:10:27 even just yesterday pointfree showing me how to get rid of gforth's welcome message, made me realize that the whole thing really is right there 21:10:42 and if I don't like something, I can change it 21:10:48 it's not in some obscure file that i have to track down 21:11:04 the definition is right there, and alli gotta do is change it like i would change any other definition 21:11:36 not treating built in code as special makes coding so much easier 21:13:05 my forth doesn't include an assembler, largely because I don't know any assembly language well and because my forth isn't a native code forth, but many forths include assemblers with which the user can create their own primitives from scratch 21:17:02 im really not sure if im up for learning how to write a web server from scratch. never done it before. always used a LAMP stack. but im gonna try anyway 21:17:13 just hard when programmers are the worst teachers on the planet 21:17:46 although ive been programming for so long, it's honestly time i finally learned how servers actually work 21:18:20 probably the hardest part will be talking to a database backend 21:18:57 for that you're best off just including a FFI as part of your a database and writing your database API interface code in C or C++, and talking to it through your FFI 21:18:59 im going through this tutorial: https://bernd-paysan.de/httpd-en.html 21:19:05 but he doesn't actually explain anything 21:19:36 s/of your a database/of your forth 21:19:37 use SQL or whatever through C FFI? 21:19:43 yeah 21:19:49 roger 21:20:22 because the database will probably need to be accessed with a library, and there will probably be a library available in either C or C++ 21:22:23 lol i might have to do a tutorial in another language before i do the forth tutorial because im pretty sure this tutorial assumes i already know how to make a webserver in another language 21:22:39 or just study 1991 until im smart 21:25:23 1991 is < 500 lines so i'll give that a shot 21:25:30 prolly a lot about forth i still need to learn anyway 21:26:31 alright i got a question 21:26:34 --- quit: smokeink (Ping timeout: 250 seconds) 21:26:45 i'm trying to find the documentation for s+ 21:26:48 https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Word-Index.html 21:26:58 i don't see it listed. but i know it's defined cause i tried using see s+ 21:27:46 --- quit: learning (Remote host closed the connection) 21:28:46 what's s+ ? 21:29:41 I wouldn't know about gforth, I haven't used gforth in ages 21:29:46 --- join: learning (~learning@4.35.154.131) joined #forth 21:29:54 I wouldn't know about gforth, I haven't used gforth in ages 21:29:57 what's s+ ? 21:30:05 that's what i want to know LOL 21:30:24 im reading through the code for 1991 (a web framework) right now 21:30:52 maybe you can tell from the docstring/comment 21:30:53 https://github.com/urlysses/1991/blob/1991/1991.fs 21:31:01 : +s ( addr1 u1 addr2 u2 -- addr3 u3 ) \ like s+ but prepend rather than append. 21:31:28 maybe it's for concatenating strings 21:31:30 gonna try it 21:32:24 yep 21:32:27 it's string concatentation 21:33:17 it's alright you're my rubber duck 21:33:23 sometimes a rubber duck is all a programmer needs 21:34:39 ugh i hate functions that process left to right on the stack instead of right to left (FIRST IN FIRST OUT PEOPLE) 21:36:06 --- quit: dddddd (Remote host closed the connection) 21:39:40 --- join: smokeink (~smokeink@42-200-118-145.static.imsbiz.com) joined #forth 21:40:32 if i get an address alignment exception, can i be pretty confident that it's because i dont have the right parameters for the word im executing 21:41:42 about to bail in a few. thanks for your help tonight guys and for putting up with my ramblings and scrubbery 21:42:36 --- quit: learning (Remote host closed the connection) 22:22:28 --- quit: libertas (Ping timeout: 250 seconds) 22:24:22 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 22:42:14 --- quit: proteusguy (Remote host closed the connection) 22:59:44 --- quit: dys (Ping timeout: 250 seconds) 23:13:48 --- quit: libertas (Ping timeout: 272 seconds) 23:15:24 --- join: libertas (~libertas@a95-93-229-182.cpe.netcabo.pt) joined #forth 23:48:45 --- join: dave0 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 23:49:31 re 23:58:11 rho 23:59:59 --- log: ended forth/18.12.17