00:00:00 --- log: started forth/19.01.08 00:15:28 --- quit: Keshl (Read error: Connection reset by peer) 00:16:05 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 00:18:58 --- quit: jedb (Remote host closed the connection) 00:19:19 --- join: jedb (jedb@gateway/vpn/mullvad/x-yaspdfadzujyppkw) joined #forth 00:24:35 --- join: xek (~xek@apn-31-0-23-83.dynamic.gprs.plus.pl) joined #forth 00:37:51 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 01:51:58 clear 01:52:11 ...wrong window - whoops 01:52:16 * Zarutian charges the defiblator again 02:02:18 - Doctor, patient runs!; - Charge defiblator! We'll catch him. 02:02:55 --- quit: ashirase (Ping timeout: 245 seconds) 02:15:45 siraben: how have you defined DO? 02:18:02 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:47:49 WilhelmVonWeiner: yes 02:53:24 how have you defined yes? 03:00:31 --- join: proteusguy (~proteus-g@cm-58-10-154-246.revip7.asianet.co.th) joined #forth 03:00:31 --- mode: ChanServ set +v proteusguy 03:22:57 --- quit: proteusguy (Ping timeout: 250 seconds) 03:28:21 --- quit: Zarutian (Read error: Connection reset by peer) 03:28:27 --- join: Zarutian_2 (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 03:28:39 --- nick: Zarutian_2 -> Zarutian 03:36:18 --- quit: `presiden (Quit: WeeChat 2.4-dev) 03:47:22 WilhelmVonWeiner: it's implemented 03:51:44 I think you misread my question 04:06:26 siraben: why is it hard? 04:18:49 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 04:27:00 It's probably a weird bug I'm missing, hm 04:28:30 i need an infrastructure to write tests 04:28:48 right now i can run forth, but i can't get the results out 04:36:01 so should POSTPONE some-immediate insert the whole thread of the immediate in the current location 04:36:08 or should it insert a call 04:36:39 the difference is what is on the return stack while the thread of the immediate is executing 04:44:01 corecode: I use a test suite 04:48:26 --- quit: Zarutian (Ping timeout: 246 seconds) 04:49:29 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 04:54:10 any suggestions on the POSTPONE behavior? 04:56:58 siraben: https://github.com/corecode/forth/blob/master/x86.fs#L339 ?DO 05:31:40 --- quit: pierpal (Quit: Poof) 05:31:59 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 05:33:28 --- join: rdrop-exit (~markwilli@112.201.166.158) joined #forth 06:49:02 --- join: Kumool (~Khwerz@adsl-64-237-235-188.prtc.net) joined #forth 06:54:10 --- quit: Kumool (Ping timeout: 245 seconds) 06:55:14 corecode: later. 07:01:39 later what 07:01:51 insert call? 07:03:12 siraben: Check out "compressed pattern matching" -- searching compressed data without decompression 07:04:10 antidictionary compression is particularly amenable to compressed pattern matching 07:08:23 corecode: cant we just postpone this discussion? 07:08:54 pointfree: why and where do you find these bizzarely interesting topics? 07:11:02 --- quit: rdrop-exit (Quit: Lost terminal) 07:11:07 Zarutian: the reference to or the content of the discussion? 07:11:16 --- join: Kumool (~Khwerz@adsl-64-237-235-188.prtc.net) joined #forth 07:11:38 corecode: sorry, I was just pulling your leg. 07:13:02 corecode: What POSTPONE does in most Forths I have seen is take the next word in the input stream, look it up in the dictionary and COMPILEing that xt into the current word being defined. 07:13:31 yea 07:13:43 that;s what i have 07:14:35 Zarutian: I came across compressed pattern matching back in high school while working on a scheme for similarity enhanced transfer + named-data networking https://www.cs.cmu.edu/~dga/papers/nsdi2007-set/ https://en.wikipedia.org/wiki/Named_data_networking 07:14:57 this is basically to circumvent running the looked up word at that time where it is being used in a composition of a new word definition even when the word is an IMMEDIATE word 07:17:24 yea 07:18:07 PoppaVic: What I don't like about the standard loop constructs is the use of the I J K registers. They make it tricky to factor the body of a loop. I just use the dictionary pointer as the loop index. 07:18:07 All the dictionary words such as HERE ALLOT C, , and anything using them work and it can all be easily factored. 07:18:15 well if it isn't an immediate, you don't compile in the XT, but you compile in the equivalent of ['] word COMPILE, , i.e. compile in code that will compile in the XT 07:19:30 right, forgot an level of meta here 07:19:33 (: 07:22:07 pointfree: re that paper you just linked to. Pretty interesting. But so far I had looked at named data networking to be a bit of a superset of how freenet works. 07:23:50 pointfree: for instance I had sketched out an extremely simple TFTP like udp based protocol using merkel tree cryptographic hashes of 1 KibiByte chunks 07:27:01 --- quit: tabemann (Ping timeout: 252 seconds) 07:27:21 Zarutian: with ndn, routing is done by matching prefixes of actual data (not location), even at the link layer sometimes. 07:28:15 (it's not an overlay) 07:29:10 pointfree: basically, udp packets directed to a wellknown port and wellknown multicast address. If the first byte in the payload is 0x00 then the next 1024 bytes is a data chunk. If the first byte is 0x01 then the sender is soliciating for the data chunk matching the sha256 hash (next 64 bytes) 07:30:28 pointfree: had not decided what to do with the rest of the possible values of the first byte other than reserving 0xFF for future expansions for when and if the rest of the possible values had been used up for something else. 07:34:13 pointfree: main starting motivation for it was finding an utility for the ginormous memory many routers have other than bloating packet buffers 07:35:49 pointfree: another use was for diskless systems or other such to use the LAN as fast (possibly encrypted) swap. 07:39:34 * Zarutian continues to read that paper 07:43:07 --- quit: pierpal (Read error: Connection reset by peer) 07:43:25 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 07:47:31 --- quit: pierpal (Read error: Connection reset by peer) 08:00:36 Heh, work on my matrix lib goes well :D 08:06:35 * Zarutian fiddles: 0x7B CONSTANT openCurly 0x7D CONSTANT closeCurly 0x5C CONSTANT backslash 08:09:36 https://bpaste.net/show/87d9c63afa66 08:09:50 I can already do matrix addition, now working on matrix multiplication. 08:50:49 yey now i can parse negative numbers 08:52:16 corecode: like your bank balance? (<- traditional jib regarding parsing negative numbers) 08:54:36 nah, i'm in IT, my balance is positive 08:56:02 (still) 10:16:04 --- join: dys (~dys@tmo-102-55.customers.d1-online.com) joined #forth 10:25:13 --- join: proteusguy (~proteus-g@cm-58-10-154-246.revip7.asianet.co.th) joined #forth 10:25:13 --- mode: ChanServ set +v proteusguy 10:28:21 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 10:33:51 --- quit: X-Scale (Ping timeout: 244 seconds) 10:35:24 pointfree: yes, I like to use HERE when possible. 10:35:31 --- quit: gravicappa (Ping timeout: 246 seconds) 10:56:35 pointfree: I tend to think that the loop-vars should really exist on their own stack - just to get them the hell out of the way. 10:59:57 https://www.reddit.com/r/Forth/comments/6loglg/loops_that_can_be_factored_use_the_dictionary/ 11:01:38 PoppaVic: I don't use any loop variable words at all. 11:11:23 * pointfree would write a few things differently since writing that reddit post. 11:13:23 john_cephalopoda: your matrix multiplication only works on matrices of equal size? 11:17:46 so what would be a good command set for a forth cpu, for small code 11:18:07 my feeling is that 16 bit stack cells would be useful 11:18:23 or even 32 bit 11:18:37 but then maybe 8 bit tokens? 11:18:44 corecode: look up the F18A, SeaForth, Sh-Boom, Nga, Ngaro, RTX2000, and zero-operand CPUs in general 11:19:26 yea i read about the willow garage one 11:19:35 thanks for the pointers 11:21:36 This was the SeaForth instruction set https://m.eet.com/media/1066227/intellasysfigure2.gif 11:23:56 corecode: F21, too 11:24:04 that's well documented on Ultratechnology 11:25:07 interesting 11:31:24 WilhelmVonWeiner: Nope, it works for all matrices that got the right size. 11:35:42 WilhelmVonWeiner: The number of columns of the second matrix must be equal to the number of rows of the first matrix. That's a requirement that rises from the definition of matrix multiplication . 11:36:11 I know how matrices work, I must've misread a comment 11:53:16 WilhelmVonWeiner: I got a function for checking if matrices are of equal sizes, which is used in the addition function. 11:55:45 WilhelmVonWeiner: thanks for your input 11:56:00 so seaForth and F18A have a very similar code set 11:59:34 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 12:00:45 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 12:02:50 --- quit: MrMobius (Ping timeout: 268 seconds) 12:02:50 --- nick: [1]MrMobius -> MrMobius 12:19:42 --- quit: pierpal (Read error: Connection reset by peer) 12:22:41 --- join: X-Scale (~ARM@83.223.243.180) joined #forth 12:23:02 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 12:26:17 --- quit: pierpal (Read error: Connection reset by peer) 12:28:36 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 12:31:28 --- quit: pierpal (Read error: Connection reset by peer) 12:31:44 --- join: pierpal (~pierpal@95.239.223.85) joined #forth 12:38:08 --- quit: pierpal (Read error: Connection reset by peer) 12:55:01 --- quit: mtsd (Quit: WeeChat 1.6) 13:02:46 --- quit: xek (Remote host closed the connection) 13:03:11 --- join: xek (~xek@apn-31-0-23-83.dynamic.gprs.plus.pl) joined #forth 13:13:25 Yay! 13:13:28 Matrix multiplication works! 13:14:10 https://thecutecuttlefish.org/tmp/matrix.fth 13:40:12 nice :) 13:50:59 wasn't planning to do anything myself, but the parser logic was bugging me - had to test my theory and it's panning out - nested do/loop working as expected, plenty of room for trivial optimisation (but reasonably fast as is) 13:52:16 and none of this "Interpreting a compile-only word" stuff :) 13:53:25 also thinking - i don't think i'll ever need a return stack... have a different approach for that one 13:55:00 the_cuckoo: what do you do? 13:56:19 well, i'm not implementing forth - it's a c++ api which implements a non-standard stack language, so i have the whole of c++ to play with 13:56:34 * PoppaVic hurls 13:56:38 :D 13:56:53 evil (orange?) man! 13:57:13 tee hee 13:57:57 the_cuckoo: many operations seem to be easier with two stacks 13:59:28 yes - but they're also easier still with many :) - in essence for the do/loop stuff, i have a specific 'variable' (associated to the stack object) which holds a stack of loop state (which is currently a pair - index and leave state) 14:00:14 other stuff can have their own variables which hold their own state (stacked or not depending on context) 14:02:51 but still playing with the idea - i could easily have a 'return stack' which you can dump arbitrary objects on, but think that'll be harder to manage - but still playing with it - may change direction yet 14:02:52 stacks are simpler than variables, I wonder about the speed comparison though 14:03:16 I'm not well learned how how memory and registers and variables are handled 14:04:34 ah - this ain't going to be a speed demon - at the moment, without much optimisation going on, i'm like 10x slower than python - fairly sure i can compare with python though 14:05:52 generally, it's more about 'domain specific languages' than it is about being a really generic language in itself 14:07:56 10x slower than python is still like 100x faster than bash :p 14:08:38 if a solution is fast in one language it's probably fast enough in any language 14:10:16 sure - when i call a c++ function, it'll run as fast it would under normal circumances - and that's kinda the point - the c++ code does the heavy lifting - the stack language just provides the ability to invoke them with some branching and looping 14:11:00 repl style rather than going through the normal edit/compile sequence iyswim 14:12:00 so how do you do the gateway? 14:12:04 I wasn't talking about your program in particular, just as a general concept. 14:12:25 do you generate stubs for all your functions/methods? 14:12:44 and how do you deal with complex data 14:13:19 complex data can go on the stack - the stack is made up of boost::any objects which can wrap pretty much any c++ object 14:13:48 so, basically, the 'binding' stuff is just fetching from the stack, casting for use, pushing results back 14:14:05 currently just using lambdas 14:14:51 https://gitlab.com/lilo_booter/rpany/blob/master/vocabs/foo.cpp <- v. basic class 14:15:18 and similar, but consumes some args: https://gitlab.com/lilo_booter/rpany/blob/master/vocabs/rectangle.cpp 14:19:06 dunno if it makes a lot of sense to do it this way, but the code is really very mechanical to write - and as it's a header only library (with a couple of non standard headers coming from boost), it's trivial to integrate into any system 14:24:53 http://sametwice.com/herkforth_words 14:25:11 crc has mentioned these before (0; is an instruction in Nga) but they're so good. 14:25:41 I wish `if;` was written in CODE, or at least I wish I knew how to define it so 14:26:30 if is always ugly :( 14:27:10 hmm 14:27:12 most of the time I abstract any if statement into it's own word. 14:27:23 that way I can rdrop out and keep a sane control flow 14:27:49 : IF COMPILE BRZ HERE ; IMMEDIATE 14:28:47 BRZ? 14:28:52 branch if zero 14:29:19 : BRZ R> DUP @ SWAP 1+ ROT ?: >R EXIT 14:29:44 : ?: SKZ SWAP DROP ; 14:29:50 s/EXIT/;/ 14:30:22 where SKZ is SKIP if zero (skips the next word-xt) 14:32:45 SKZ is much easier to implement in VMs and microcode, just increment the PC again if the TOS is zero 14:59:34 --- join: grosged (~grosged@bop62-1-88-178-198-84.fbx.proxad.net) joined #forth 15:00:04 --- quit: grosged (Client Quit) 15:03:33 1+? not 1 CELLS +? 15:07:07 --- quit: dys (Ping timeout: 250 seconds) 15:08:42 corecode: CELL+ is just aliased to 1+ in the forth I have as I have cell based addressing and not byte addressing 15:12:57 gonna' make it more painful to support/port w/o CELLS in there, in any case 15:16:35 WilhelmVonWeiner: for retro, if; can be defined to inline the machine code: :if; compiling? [ 'lixozr.. i #-1 d 'dr...... i ] if ; immediate 15:18:08 Wtf am I doing? 15:18:27 I spent basically all day creating a matrix library and now I can render points in 3d. 15:18:39 crc: would those not need to be in as{ }as? 15:19:10 not here, since I want this to assemble the instructions and data into the definition using if; 15:19:56 https://thecutecuttlefish.org/tmp/matrix.fth <-- The matrix library 15:20:01 https://thecutecuttlefish.org/tmp/sixel.fth <-- The sixels library 15:20:05 PoppaVic: well : CELL+ 1 CELLS + ; would work 15:20:23 https://thecutecuttlefish.org/tmp/spatial.fth <-- A small demo, drawing points into a 3d scene. 15:20:38 The points on the left are perspectively transformed. 15:20:55 crc: I will have to try and write some useful Nga assembler. 15:21:29 john_cephalopoda: you duplicate so much code 15:21:58 two best refactoring methods in Forth: Moving things from runtime to compile time, and compile time to design time 15:23:18 The duplicates in spatial.fth are deliberate. 15:25:52 It's only there to give a short demo. Nothing in there is designed. 16:07:02 --- quit: john_cephalopoda (Ping timeout: 252 seconds) 16:09:00 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 16:45:59 --- join: dave0 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 16:46:20 hi 16:52:51 --- join: rdrop-exit (~markwilli@112.201.166.158) joined #forth 17:03:34 Greetings Forthwrights 17:04:06 hi rdrop-exit 17:04:15 Hi Dave0 17:12:50 --- quit: proteus-guy (Ping timeout: 250 seconds) 17:17:06 --- join: proteus-guy (~proteusgu@2403:6200:88a6:329f:55c1:9c9e:ed64:b2a8) joined #forth 17:17:55 --- quit: X-Scale (Ping timeout: 245 seconds) 17:22:20 --- quit: Kumool (Quit: EXIT) 17:28:09 --- join: X-Scale (~ARM@83.223.243.32) joined #forth 17:31:09 --- join: `presiden (~presiden@unaffiliated/matematikaadit) joined #forth 17:34:38 --- join: tabemann (~tabemann@h193.235.138.40.static.ip.windstream.net) joined #forth 17:52:01 --- quit: xek (Remote host closed the connection) 18:12:23 --- join: xek (~xek@apn-31-0-23-83.dynamic.gprs.plus.pl) joined #forth 18:12:51 --- quit: xek (Remote host closed the connection) 18:13:42 --- join: xek (~xek@apn-31-0-23-83.dynamic.gprs.plus.pl) joined #forth 18:14:51 --- quit: tabemann (Ping timeout: 272 seconds) 18:35:42 --- join: tabemann (~tabemann@2602:30a:c0d3:1890:7d04:1e92:6395:7db) joined #forth 19:12:39 --- join: Kumool (~Khwerz@adsl-64-237-235-188.prtc.net) joined #forth 19:35:17 --- quit: proteusguy (Remote host closed the connection) 19:49:32 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 19:52:40 --- quit: MrMobius (Ping timeout: 250 seconds) 19:52:41 --- nick: [1]MrMobius -> MrMobius 20:06:31 --- join: gravicappa (~gravicapp@h109-187-38-226.dyn.bashtel.ru) joined #forth 20:44:14 --- quit: dddddd (Ping timeout: 250 seconds) 20:53:05 quiet is #forth tonight 20:53:10 --- join: Keshl_ (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 20:53:20 --- join: dave69 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 20:53:31 hey 20:53:34 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 20:53:39 oh. Hi, Yoda.. Yo-yo-yo-yoda... 20:55:04 --- quit: Kumool (Quit: EXIT) 20:56:01 --- join: X-Scale` (~ARM@83.223.243.32) joined #forth 20:57:27 finally got hashforth working 21:02:31 --- quit: MrMobius (*.net *.split) 21:02:31 --- quit: X-Scale (*.net *.split) 21:02:31 --- quit: dave0 (*.net *.split) 21:02:31 --- quit: Keshl (*.net *.split) 21:02:31 --- quit: gabc (*.net *.split) 21:02:32 --- nick: [1]MrMobius -> MrMobius 21:02:33 --- nick: X-Scale` -> X-Scale 21:04:29 --- join: gabc (~gabc@165.227.34.49) joined #forth 21:05:43 --- nick: dave69 -> dave0 21:14:40 --- quit: dave0 (Quit: dave's not here) 21:22:44 --- join: dys (~dys@tmo-108-204.customers.d1-online.com) joined #forth 21:45:51 tabemann: the repository is missing the Makefile 21:46:34 added 21:46:56 at this point it doesn't crash when lightly touched 21:47:44 it can't do a whole lot - in the end all it can do is read from and write to the terminal - but as written it could accept a simple cooperative multitasker 21:49:16 opinion question - should I add support for heap allocation, considering that this is a proof-of-concept for something that may not have a heap, as in on really small systems 21:50:00 also, with a small bit of modification I could add support for FORGET or MARKER 21:52:11 I'll try building it on my systems (OpenBSD & FreeBSD) later today 21:52:39 there's an included image so you don't need to download and build attoforth just to use it 21:53:07 I don't use heap allocation at all (assuming you mean allocate and free or similar) 21:53:14 yeah 22:04:50 Doesn't build on OpenBSD with that Makefile. https://forthworks.com/share/6cbee8543df57e408376e707e86ce122 with BSD make, https://forthworks.com/share/1c5a017a563c4385d9353a9a7226786e with GNU make 22:05:46 Getting late here (1am), so I won't be able to look further for a few hours 22:30:48 back 22:31:13 I made some fixes to the code (I forgot to add a file to the git repository) 22:34:19 --- quit: dys (Ping timeout: 250 seconds) 23:57:08 --- join: dave0 (~dave0@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 23:57:20 re 23:59:59 --- log: ended forth/19.01.08