00:00:00 --- log: started forth/18.06.18 00:14:35 dddddd: cases where it doesn't make sense to keep passing the value on the stack all the way down to the "leaf" definitions. I/O is a good example - having to pass a file descriptor every time you want to use KEY or EMIT would be really annoying, so it's made implicit instead. 00:16:33 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 00:16:59 two issues come to mind: exceptions and other threads, though I suppose threads could be resolved in theory using user variables 00:32:41 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 00:42:08 reepca, thanks for the answer! Ports are for I/O indeed. 01:37:44 alright i read through the DOES> stuff again... i reckon 2-3 more read throughs and it should stick in my brain 01:39:19 i need a break 01:39:50 gotta let it soak in 01:46:33 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 02:43:15 --- quit: ncv (Remote host closed the connection) 02:43:32 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 02:46:33 --- join: ncv_ (~neceve@unaffiliated/neceve) joined #forth 02:49:26 --- quit: ncv (Ping timeout: 256 seconds) 02:55:37 --- quit: nighty- (Quit: Disappears in a puff of smoke) 03:09:00 going shopping bbl 03:09:05 --- quit: dave9 (Quit: one love) 03:32:13 --- quit: dys (Ping timeout: 240 seconds) 03:33:18 --- join: dys (~dys@tmo-102-249.customers.d1-online.com) joined #forth 04:50:38 --- join: ncv__ (~neceve@unaffiliated/neceve) joined #forth 04:53:16 --- quit: ncv_ (Ping timeout: 268 seconds) 05:28:22 --- quit: mtsd (Quit: Leaving) 06:21:17 --- quit: impomatic (Ping timeout: 260 seconds) 06:41:23 What's cookin' this morning? 06:42:20 I had to come back to work 06:42:23 it's the worst thing ever 06:43:14 I empathize - I just got to my desk. 06:43:34 Were you previously on vacation or something? 06:43:45 no just a long weekend 06:43:47 I've got this week and next week, and then a week off. 06:43:47 I took friday off 06:57:19 --- quit: dys (Ping timeout: 240 seconds) 06:58:22 --- quit: pierpal (Quit: Poof) 06:58:39 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 07:05:11 --- quit: pierpal (Ping timeout: 248 seconds) 07:09:20 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 07:14:03 --- quit: pierpal (Ping timeout: 260 seconds) 07:18:48 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 07:21:33 --- quit: karswell (Ping timeout: 256 seconds) 07:23:35 #forth who was the guy working on the forth targetting ethereum vm 07:23:40 or was going to 07:23:41 :v 07:37:59 --- join: dys (~dys@tmo-102-249.customers.d1-online.com) joined #forth 07:52:50 --- quit: pierpal (Quit: Poof) 07:53:06 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 08:24:43 --- quit: Zarutian (Read error: Connection reset by peer) 08:25:10 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 08:59:15 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 09:10:22 --- quit: pierpal (Quit: Poof) 09:11:07 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 10:39:05 --- quit: pierpal (Quit: Poof) 10:39:23 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 10:41:00 Hallo 10:41:06 That was I, why'd you ask 10:44:33 --- quit: karswell (Remote host closed the connection) 10:44:49 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 10:53:44 --- quit: pierpal (Quit: Poof) 10:53:59 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 11:23:37 --- quit: karswell_ (Ping timeout: 268 seconds) 12:04:49 --- quit: pierpal (Quit: Poof) 12:05:09 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 12:13:19 --- quit: pierpal (Quit: Poof) 12:13:36 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 12:46:32 this sucks 12:48:43 --- quit: ncv__ (Ping timeout: 268 seconds) 12:50:31 zy]x[yz: What's "this" 12:52:28 I have too many parameters to track, and I know the "forth" answer is "you need to reduce more so that you have less parameters to track" 12:52:46 but I can't get past that if I do that, then it's going to suffer a huge efficiency penalty 12:52:53 well 12:53:05 "huge" 12:53:15 WilhelmVonWeiner: "this" is C++ :P 12:53:17 I know I'm optimizing prematurely 12:53:36 I'd use a much more offensive word if I were describing c++ 12:53:36 write it on paper 12:53:47 you write better solutions because it's annoying to write code with a pen 12:56:16 interesting 12:57:44 I think that would be more harmful to me though. it's difficult for me to visualize solutions in my head. I prefer being able to generate those visualizations quickly in type so that I can put them side-by-side and compare, etc. 13:00:15 probably would help to step through the algorithm in pictographs or something, though 13:00:27 maybe I need to get out the sock puppets 13:02:13 Write lines of code on jenga pieces 13:02:19 pull out the useless ones 13:02:27 and the pieces left standing are your algorithm 13:14:42 zy]x[yz: I'm the opposite - I ponder in my head for a long time before writing or drawing anything. Software, but also digital circuits. Problem with that is that people think I'm not working. :-) 13:18:34 So I had intended to separate my stuff into three areas: header region, cfa/pfa pointer region, and definition/data region. 13:19:04 Putting definitions and data in their own space was aimed primarily at supporting multiple entry points, instead of requiring that each definition start immediately following its cfa. 13:19:32 Splitting out the headers was mostly aimed at being able to produce "headerless" apps if I ever wanted to. 13:20:29 But then later I decided on that disk-resident symbol table, and today I decided that that shrinks the headers enough that I no longer see the value in separating headers from cfa/pfa pointers. It was just an additional layer of abstraction that didn't really buy me anything. 13:20:42 So I added headers in with the cfa/pfa pointers. 13:21:13 I don't have a symbol table yet, so I'm temporarily storing count byte and first three characters of the name in the four-byte field where the symbol table index will eventually go. 13:21:23 WilhelmVonWeiner, well did you start it? haha 13:21:39 not at all 13:21:47 ah ok, no problem 13:21:47 I have referral coursework i'm doing 13:22:02 but if/when I start it i'll be posting about it here 13:22:11 I guess there is no huge difference between using lisp anyway 13:22:12 and if someone else does I'll try to contribute 13:22:24 (+ 1 2 ) vs (1 2 +) 13:23:34 I think the similarities are surface level 13:23:54 yeah 13:24:02 if I use evm at asm level it's a bit better 13:24:28 (asm 1 2 3 4 + + +) 13:24:29 WilhelmVonWeiner: I think that too. 13:24:59 I have a feeling Lisp and Forth are pretty different at the "guts" level. 13:25:09 vs (+ (+ (+ 3 4) 2) 1) 13:25:17 I would rather use LLL over Solidity but LLL isn't as well documented 13:25:36 The docs have gotten signifcantly better since ~October 13:25:44 Because yeah, I do use LLL over Solidity 13:26:07 KipIngram: It doesn't need to be a feeling, implementing a lisp is much harder than a forth 13:26:11 (asm 1 2 + 3 + 4 +) 13:26:18 cool 13:26:21 :-) I've never implemented a Lisp. 13:26:36 you dont even need to implement forth for evm really 13:26:39 Nor have I but I've read a large chunk of SICP 13:26:57 lf94: That's what I was thinking, EVM asm is already stack based innit 13:27:04 yea 13:27:14 But a standard forth "interface" *would* be nice 13:27:26 I figure Lisp must have *something* going for it, because its supporters can be pretty fanatic. I've never gotten into it enough to grasp that for myself, though. 13:27:38 lisp is just nice because it operates on lists 13:27:44 and macros 13:27:49 I kind of agree, I don't think you'd have much of an interactive Forth on evm though, it would have to be compiled 13:27:52 and simple data structures 13:27:58 yes compiled 13:28:32 I've been getting into forth because it's a better reflection of low level programming 13:28:32 LISP is what an academic would come up with, FORTH is what someone getting shit done would come up with 13:28:52 eh, I think that is a silly statement :P 13:28:59 both have strengths/weakness 13:29:26 What's the best way to go about making a forth 13:29:32 err, forth compiler 13:29:38 jonesforth 13:29:48 in your lang of choice? or using some grammar thing? 13:29:56 jonesforth, in asm 13:32:13 is this a compiler or interpreter 13:32:14 if LLL really is up-to-date I think making an evm Forth would just be a masturbatory exercise 13:32:25 this is pretty awesome 13:32:48 WilhelmVonWeiner, well, IMO it wouldnt be 13:32:53 Because Forth's strength is stack 13:33:08 So there are forth idioms that will be much more powerful than lisp 13:33:16 Like my example above 13:33:29 (+ (+ (+ 3 4) 2) 1) is total ugliness 13:33:34 as soon as I typed that I changed my mind, because of how easy it is to compile a Forth program 13:33:37 (asm 1 2 + 3 + 4 +) 13:33:42 look at how nice 13:34:08 and it more closely matches what is actually happening! 13:34:22 I mean the forth way to do that could also be 1 2 3 4 + + + 13:34:26 I'd just write 10 13:34:28 Yes I wrote that too 13:34:47 But even then - no brackets, and more closely matches what is actually happening. 13:35:08 then we write some super cool forth macro to do lists 13:35:18 1 2 3 4 5 6 +! 13:35:43 talking about it makes me wish I had the knowledge to do this today lol 13:35:52 I know the evm op codes ok 13:35:59 just not how to properly write a forth 13:36:16 --- quit: pierpal (Quit: Poof) 13:36:30 https://learnxinyminutes.com/docs/forth/ 13:36:32 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 13:36:33 I'll implement this forth 13:36:39 in rust 13:36:44 to compile to evm op codes 14:09:09 Whoa. Just found out about something called "partial register stall" that may make my decision to use 32-bit pointers in this Forth a bad one worth re-thinking. 14:09:40 But I'm not clear yet on whether this is a problem in the hardware or in compilier optimization - studying. 14:10:09 Looks like it's hardware. 14:10:14 This seems a good reference: 14:10:16 http://www.agner.org/optimize/microarchitecture.pdf 14:11:24 KipIngram: on x86? 14:11:32 Yes. 14:11:51 Apparently when you write/load a partial register and then read the full register, there is a delay. 14:12:21 And I'm doing exactly that in my NEXT, when I pickup a 32-bit pointer and then use the whole 64-bit register to turn the offset into an address. 14:12:26 yebb that is because x86 is simulated nowdays basically 14:12:54 Yes, it looks like that partial write doesn't ACTUALLY write hardware bits at all. 14:13:06 It just sets some temporary resource that's allocated somewhere. 14:13:29 How sucky. 14:14:05 Well, I dont' think I'm worried enough about size to swallow this; I'll probably switch to full 64-bit all the way. 14:14:28 it is, one of many reasons why I decided to migrate from it. It is basically just legacy architecture now. 14:14:40 What are you using these days? 14:14:56 ARMv7 14:15:33 for instance, for my webbrowsing and irc machine I am using an RPI2 14:16:21 I ran into this when I implemented jump, because I happened to test it with a negative jump. 14:17:04 Jump uses a 32-bit load to pick up the cell currently addressed by IP, and then did a 64-bit add to the ip. 14:17:23 That didn't work with offset -8 and add, but it did work with offset 8 and subtract. 14:17:41 That's because of they zero-extend 32-bit register loads instead of sign extend. 14:17:59 And apparently the reason they do THAT is to avoid a situation where this partial register stall comes into play. 14:18:27 KipIngram: are you implementing an Indirected Threaded Code or Directly Threaded Code or even Subroutine Threaded Code? 14:18:39 So that led me into reading about the partial register stall, and it looks like it would impair my performance pretty severely. 14:19:45 Indirect threaded. 14:19:58 It's just the first thing I learned, and I've stuck with it. 14:20:43 The most recent Forth that I've gotten to the "pretty much complete" stage is more or less a FIG architecture. 14:23:03 KipIngram: then you can perhaps tell me what the difference between 'system' and 'user' variables. 14:23:17 KipIngram: or didnt FIG Forth have that? 14:24:13 I'm not sure I fully recall what FIG's "system" variables were. User variables differ from regular variables in that they are treated as offsets in a block, so that you can have such a block for each user and they'll be distinct. 14:24:27 I seem to recall reading mention of system variables in Forth Fundamentals, but don't recall the details. 14:24:37 In a little while I'll go fetch the book and refresh my memory. 14:24:52 Right now I'm trying to convert this thing to full 64 bit. 14:26:04 I saw in eForth the user variable and system variables were put in the same block in eForth. Just wondering how FIG Forth was multi user 14:26:59 the multiuser aspect was never something I was terribly concerned about. :-( 14:27:24 Though this new one I'm working on is meant to be "multi-process." 14:27:40 I'm calling "true' variables "system variables" and per-process variables "variables." 14:28:00 The per process one get handled with code that generates the address of an offset in the process block. 14:28:40 I am mainly curious as I heard some CBBSes used FIG Forth as its base so the 'sysop' could use the machine while a caller was browsing the boards and such. 14:30:56 Yes. Well, I'm sure about the "user variable" part - all of the user variables go in a block, and the definition stores an offset into that block. The "douser" routine adds the offset and the currently selected user block's base address. 14:38:59 Ah - it looks like there is a way around this. 14:39:44 There is an instruction called movsx that doesn't trigger the stall because it's a full-register instruction. 14:40:05 instead of mov r8d, [r13] I do movsx r8, dword [r13]. 14:48:33 --- quit: Zarutian (Read error: Connection reset by peer) 14:49:06 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 14:53:24 --- join: dave9 (~dave@207.213.dsl.syd.iprimus.net.au) joined #forth 14:58:25 hi 15:28:38 Howdy Dave. 15:29:13 hi KipIngram 15:37:15 --- quit: dys (Ping timeout: 255 seconds) 15:42:22 --- quit: pierpal (Quit: Poof) 15:42:42 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 15:54:48 How do you guys keep track of stack in gforth 15:54:54 feels like madness 15:55:03 So far: just press . on its own line 15:55:16 .s 15:55:23 dumps the stack 15:55:34 (without modifying it) 15:55:38 oh! 15:55:44 sweetness :) 15:55:47 lf94: type "words" 15:56:00 that's a lot of words! 15:56:28 most of them become self-explanatory after using it for a bit 15:56:57 and you'll need 80% of them not more than once 15:57:16 xchng-ax 15:57:16 lol 15:57:20 Yeah...never will need this 15:57:31 i can smell the x86 there :> 15:57:37 sometimes "see " helps 15:57:45 but gforth has a glossary online too 15:58:02 if it has a bunch of <1928349123> looking stuff in "see", try "locate " 16:02:43 --- quit: dddddd (Remote host closed the connection) 17:03:35 --- quit: pierpal (Ping timeout: 248 seconds) 17:40:36 +KipIngram> So I had intended to separate my stuff into three areas: header region, ... 17:40:52 so I guess the header region being the region where you ponder in your head? 17:51:11 :-) 17:51:23 Guess it's a dual-definition phrase. 17:56:10 --- join: nighty- (~nighty@kyotolabs.asahinet.com) joined #forth 18:07:37 --- join: pierpa (57100917@gateway/web/freenode/ip.87.16.9.23) joined #forth 18:34:05 --- quit: dave9 (Quit: one love) 18:50:42 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 18:59:41 --- quit: ashirase (Ping timeout: 256 seconds) 19:00:43 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 19:01:41 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 19:45:55 --- quit: ashirase (Quit: ZNC - http://znc.in) 20:07:09 --- quit: pierpa (Quit: Page closed) 20:28:55 --- quit: ThirtyOne32nds (Ping timeout: 264 seconds) 20:48:23 --- quit: pierpal (Quit: Poof) 20:48:42 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 21:11:09 --- quit: pierpal (Ping timeout: 256 seconds) 22:36:23 --- join: ThirtyOne32nds (~rtmanpage@97.sub-174-204-0.myvzw.com) joined #forth 22:46:23 --- quit: ThirtyOne32nds (Ping timeout: 260 seconds) 23:24:06 --- quit: Labu (Quit: WeeChat 2.0.1) 23:59:59 --- log: ended forth/18.06.18