00:00:00 --- log: started forth/18.06.11 00:01:46 --- quit: nighty- (Quit: Disappears in a puff of smoke) 00:03:34 --- join: nighty- (~nighty@kyotolabs.asahinet.com) joined #forth 00:04:03 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 00:14:25 --- quit: karswell (Remote host closed the connection) 00:15:53 --- join: karswell (~user@185.161.200.10) joined #forth 00:54:57 --- join: ncv__ (~neceve@unaffiliated/neceve) joined #forth 01:02:02 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 01:11:31 --- quit: mtsd (Read error: Connection reset by peer) 01:11:50 --- join: epony (~nym@77-85-143-102.ip.btc-net.bg) joined #forth 01:13:03 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 01:27:53 --- quit: mtsd (Read error: Connection reset by peer) 01:29:44 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 01:45:58 --- quit: mtsd (Remote host closed the connection) 01:46:44 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 02:21:54 --- quit: mtsd (Read error: Connection reset by peer) 02:23:45 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 02:32:51 --- quit: nighty- (Quit: Disappears in a puff of smoke) 02:34:55 --- quit: dys (Ping timeout: 264 seconds) 02:53:03 --- quit: mtsd (Read error: Connection reset by peer) 02:54:41 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 03:09:57 --- quit: mtsd (Read error: Connection reset by peer) 03:12:02 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 03:13:55 --- join: ncv_ (~neceve@79.114.7.58) joined #forth 03:13:55 --- quit: ncv_ (Changing host) 03:13:55 --- join: ncv_ (~neceve@unaffiliated/neceve) joined #forth 03:16:12 --- quit: ncv__ (Ping timeout: 240 seconds) 03:27:02 --- quit: mtsd (Read error: Connection reset by peer) 03:29:03 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 03:43:59 --- quit: mtsd (Read error: Connection reset by peer) 03:45:41 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 03:55:33 --- join: dys (~dys@tmo-097-187.customers.d1-online.com) joined #forth 04:01:40 --- quit: jedb (Read error: Connection reset by peer) 04:14:41 --- quit: mtsd (Remote host closed the connection) 04:15:20 --- join: jedb (~jedb@199.66.90.113) joined #forth 04:16:14 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 04:31:18 --- quit: mtsd (Read error: Connection reset by peer) 04:33:32 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 04:48:26 --- quit: mtsd (Read error: Connection reset by peer) 04:50:10 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 05:05:25 --- quit: mtsd (Read error: Connection reset by peer) 05:06:29 --- join: TCZ (~Johnny@ip-91.189.219.193.skyware.pl) joined #forth 05:07:11 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 05:18:19 --- quit: pierpal (Ping timeout: 260 seconds) 05:22:22 --- quit: mtsd (Read error: Connection reset by peer) 05:24:32 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 05:27:08 I changed my thinking about threads and processes. Well, about threads at least. I'd been thinking in terms of each process having a ring of threads. 05:27:33 processes are easier to get right IMO 05:28:04 But I decided instead to give each process a single, foreground thread, and then have a "thread pool" which will likely just be one thread per core. 05:28:22 Those background threads will take work from a work queue, so will be able to work on behalf of any process. 05:28:51 That way I won't be creating and destroying threads all the time - they'll just be there and will be persistent, but what they're working on will change from moment to moment. 05:29:18 I do a lot of work at the office with IBM's SVC storage management software, and that's similar to how they do it. 05:29:38 They call the thread pool threads "fibers," and the work queues "fiber queues." 05:30:26 They give each fiber its own queue, which avoids having to have the locks you need for a single work queue. 05:30:49 But that does mean application software has to make decisions about which on eto issue work to. 05:32:10 I just think my likely applicattions don't really require support for some arbitrarily large number of threads - my real goal is to keep my available hardware busy, and a thread per core will do that. 05:33:46 This architecture simplifies the design a lot too - instead of the thread management having to be integrated at the very lowest level, the thread pool becomes a fairly separate thing that I can design later. 05:34:25 Meanwhile I already had one thread block "built in" to my process blocks; those will just be the per-process foreground threads. 05:35:03 But they no longer need any link fields, since there will just be one of them in each process. 05:39:17 --- quit: mtsd (Read error: Connection reset by peer) 05:41:33 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 05:57:27 --- quit: mtsd (Remote host closed the connection) 05:58:13 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 05:58:47 --- quit: mtsd (Client Quit) 06:29:34 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 06:46:40 --- quit: TCZ (Quit: Leaving) 07:00:11 --- quit: dys (Ping timeout: 276 seconds) 07:30:37 --- quit: ncv_ (Remote host closed the connection) 07:31:42 --- join: ncv (~neceve@94.1.87.211) joined #forth 07:31:43 --- quit: ncv (Changing host) 07:31:43 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 07:38:06 --- quit: pierpal (Quit: Poof) 07:38:22 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 08:13:11 --- quit: pierpal (Quit: Poof) 08:13:32 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 08:33:57 --- join: dys (~dys@tmo-097-187.customers.d1-online.com) joined #forth 08:49:43 --- quit: ncv (Read error: Connection reset by peer) 08:49:58 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 08:55:22 --- quit: ncv (Ping timeout: 256 seconds) 08:57:26 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:00:03 --- quit: ncv (Remote host closed the connection) 09:00:29 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:05:07 --- quit: ncv (Ping timeout: 256 seconds) 09:11:03 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:15:00 --- join: ncv_ (~neceve@unaffiliated/neceve) joined #forth 09:17:47 --- quit: ncv (Ping timeout: 265 seconds) 09:20:07 --- quit: ncv_ (Remote host closed the connection) 09:20:29 --- join: ncv_ (~neceve@unaffiliated/neceve) joined #forth 09:34:09 --- quit: ncv_ (Ping timeout: 256 seconds) 09:40:46 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:1ec6:932f:1b02:d27e) joined #forth 09:40:47 --- quit: ncv (Changing host) 09:40:47 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:41:42 --- quit: ncv (Remote host closed the connection) 09:42:06 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:1ec6:932f:1b02:d27e) joined #forth 09:42:06 --- quit: ncv (Changing host) 09:42:06 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:46:17 --- quit: ncv (Remote host closed the connection) 09:46:36 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:54:17 --- quit: ncv (Remote host closed the connection) 09:54:34 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:c792:a3e8:397d:b37) joined #forth 09:54:34 --- quit: ncv (Changing host) 09:54:34 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:56:18 --- quit: karswell (Read error: Connection reset by peer) 09:58:14 --- join: ncv_ (~neceve@90.192.3.231) joined #forth 09:58:14 --- quit: ncv_ (Changing host) 09:58:14 --- join: ncv_ (~neceve@unaffiliated/neceve) joined #forth 09:59:18 --- quit: ncv (Ping timeout: 245 seconds) 10:08:00 --- join: karswell (~user@185.161.200.10) joined #forth 10:20:00 --- join: Labu (~Labu@labu.pck.nerim.net) joined #forth 10:33:12 --- quit: karswell (Ping timeout: 256 seconds) 10:43:04 --- quit: ncv_ (Remote host closed the connection) 10:44:41 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 10:45:52 --- quit: ncv (Remote host closed the connection) 10:46:11 --- join: karswell (~user@185.161.200.10) joined #forth 10:46:17 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:c1c7:50c:8461:8572) joined #forth 10:46:17 --- quit: ncv (Changing host) 10:46:17 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 10:47:28 --- quit: ncv (Remote host closed the connection) 10:47:47 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 10:57:17 Hi 10:58:07 hello 10:58:25 hello zy]x[yz ! 10:58:37 hi Labu ! 11:02:57 --- join: karswell_ (~user@185.161.200.10) joined #forth 11:04:27 I'm so happy we had this wonderful conversation 11:04:56 --- quit: karswell (Ping timeout: 256 seconds) 11:08:01 thx I have a question to make this conversation more interesting 11:09:08 I am on the edge of my seat 11:10:49 my stack is 00000 00003 the next op is 0<> but it fails with this error "Table failure" 11:11:38 that's very sad 11:12:48 yes 11:13:03 good luck! 11:13:38 what means "I am on the edge of my seat" ? 11:14:59 it's an expression in english, like I'm leaning forward in suspense 11:16:34 weird... It would be understood as "I am about to leave" 11:19:51 what is the forth implementation you use zy]x[yz ? 11:20:08 I've been building my own 11:20:18 and doing nothing productive 11:21:20 yes I remember now. And you have never use Forth before ? 11:21:33 nope 11:22:38 you wrote you implementation in assembler ? 11:22:44 yes 11:23:14 what is you architecture (ARM, Intel) ? 11:23:52 x86-64 11:24:45 --- join: ncv_ (~neceve@90.192.3.231) joined #forth 11:24:45 --- quit: ncv_ (Changing host) 11:24:45 --- join: ncv_ (~neceve@unaffiliated/neceve) joined #forth 11:24:51 Why Forth ? 11:25:20 just something to play with in my spare time 11:25:37 hard game 11:26:25 I wanted to build my own compiler. I don't see it being very realistic for me to build a c compiler or something, but forth is simple enough that it looked like something I could possibly do 11:26:46 and plus it's sort of esoteric, so that brings some appeal 11:27:21 --- quit: ncv (Ping timeout: 256 seconds) 11:28:56 is it a compiler or an interpreter or both ? 11:29:50 I guess it's more of an interpeter right now. it doesn't create standalone executables 11:30:33 I don't know if it's possible to compile forth language to an executable 11:30:47 it is 11:31:25 ok 11:32:02 I mean, technically-speaking what I wrote in assembler is that, just hand-crafted 11:32:28 the next step would be to write forth which can generate the same thing 11:33:23 did you use system call for something ? gforth use system call to allocate memory. But Forth is said to be an OS. Don't understand exactly what this mean at now 11:33:35 ok nice 11:33:51 yes, several system calls 11:34:56 read, write, open, close, mmap, exit 11:35:51 yes It's hard to do something without if your run your forth on an OS. 11:37:06 well, most platforms where forth is used aren't as complex as an intel PC 11:38:02 I haven't used forth in those environments, but I've written bare-metal c for microcontrollers and small embedded processors. it's a lot easier to get by without an OS there 11:38:58 yes what kind of microcontrollers ? 11:39:14 mostly 8051 and avr 11:39:53 I haven't done that stuff very heavily since college, unfortunately. 11:40:30 we do motorola at school 11:40:36 long time ago... 11:47:52 --- quit: Keshl (Quit: Konversation terminated!) 11:52:43 I found my problem this is this instruction leave which leaves instead of going of the loop. this is not the instruction I expect 11:57:08 cool 11:58:11 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 12:02:43 --- quit: pierpal (Quit: Poof) 12:03:03 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 13:16:27 you know what I was just thinking: 13:16:42 what if you just had like three or four general-purpose stacks 13:16:55 they'd sort of be the analog to registers 13:17:03 There's a four-stack Forth out there I think. 13:17:33 and you just have words to interact with them similar to the return stack? >1 1> or >a a>, etc? 13:17:34 I've thought about that too from time to time - I wondered about what might develop if you took the A and B address regs in some of Moore's chips and made stacks out of them. 13:18:04 Right. Those Forths have >a, a> etc. already. 13:18:09 Just for loading and fetching. 13:18:19 But there surely could be a stack beneath them. 13:18:24 I did something kind of like his address register in mine, but it's the top of the return stack 13:18:39 that is, I have some words which take an address from the top of return stack and then increment it 13:18:42 One of the compact code advantages Forth has, though, is that operands are implicity - they're on the stack always and there are no options. 13:18:53 If you have several stacks you have to add that selection back in. 13:18:56 so you can, for example, >r @+ @+ @+ rdrop 13:19:40 well, the reason I started thinking of multiple stacks is because I keep finding myself in situations where I need to stash like two things on the return stack, but I can't access them randomly later 13:19:46 Yes. I once thought of having A and B be the top to items on the return stack. 13:20:12 But that sort of disrupts the usefulness of A and B - as soon as you call a word then the top element's not your address anymore. 13:20:20 top "two" 13:20:37 yeah, unfortunately words that use it have to be code words or do a lot of shuffling 13:33:12 --- nick: ovf_ -> ovf 13:34:55 --- quit: ncv_ (Ping timeout: 268 seconds) 13:39:39 which is why it might be nice to just have general-purpose stacks 13:40:17 but I see what you mean about it defeating the implicit argument passing model 13:40:50 so it would ideally be used as sparingly as possible, which then makes me wonder if it's worth it at all 14:37:19 --- quit: dys (Ping timeout: 264 seconds) 14:49:48 --- join: TCZ (~Johnny@ip-91.189.219.193.skyware.pl) joined #forth 15:24:52 --- quit: pierpal (Quit: Poof) 15:25:12 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 15:51:57 --- quit: TCZ (Quit: Leaving) 15:55:48 : | depth 1- -roll ; ( Use this for breadth first eval in mecrisp. I guess I'll think about | as the equivalent of parenthesis in infix algebra for now. ) 15:55:58 10 6 1 2 2 3 3 * | * | - - | + ( 5 13) 15:56:02 \ 10 6 1 - - 2 2 * 3 3 * + ( 5 13) 17:03:33 --- join: ThirtyOne32nds (~rtmanpage@217.sub-174-204-36.myvzw.com) joined #forth 17:17:11 --- join: TCZ (~Johnny@ip-91.189.219.193.skyware.pl) joined #forth 17:30:50 --- quit: Zarutian (Read error: Connection reset by peer) 17:31:20 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 17:57:18 --- quit: dddddd (Remote host closed the connection) 18:17:39 --- quit: TCZ (Quit: Leaving) 18:46:36 I don't get it 19:42:45 --- quit: karswell_ (Read error: Connection reset by peer) 19:44:42 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 21:25:28 --- join: backer (~backer@accordion.employees.org) joined #forth 21:50:02 --- quit: pierpal (Quit: Poof) 21:50:19 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 22:08:27 --- join: dys (~dys@tmo-105-92.customers.d1-online.com) joined #forth 23:39:28 --- quit: karswell_ (Remote host closed the connection) 23:40:54 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 23:59:59 --- log: ended forth/18.06.11