00:00:00 --- log: started forth/09.04.11 00:17:55 --- join: kib2 (n=kib2@bd137-1-82-228-159-28.fbx.proxad.net) joined #forth 01:01:54 --- quit: GeDaMo ("Leaving.") 01:52:16 --- quit: nighty^ ("Disappears in a puff of smoke") 01:55:40 --- join: nighty^ (n=nighty@x122091.ppp.asahi-net.or.jp) joined #forth 03:00:41 --- quit: JasonWoof (Read error: 113 (No route to host)) 03:13:00 --- join: ygrek (i=user@gateway/tor/x-deb626596f422f66) joined #forth 04:00:11 --- quit: proteusguy (Remote closed the connection) 04:00:47 --- join: proteusguy (n=proteusg@61.7.144.97) joined #forth 04:34:06 --- quit: dkcl (Remote closed the connection) 08:14:52 --- join: GeDaMo (n=gedamo@dyn-62-56-54-186.dslaccess.co.uk) joined #forth 10:32:45 --- join: tathi (n=josh@dsl-216-227-91-166.fairpoint.net) joined #forth 10:37:18 --- quit: GeDaMo ("Leaving.") 11:16:09 --- quit: ygrek (Remote closed the connection) 12:06:48 --- join: ygrek (i=user@gateway/tor/x-9c051087dd84c4bd) joined #forth 12:15:22 --- quit: ygrek (Remote closed the connection) 12:29:15 --- join: GeDaMo (n=gedamo@dyn-62-56-54-186.dslaccess.co.uk) joined #forth 12:43:39 --- join: pippin (n=pippin@bilk.XCF.Berkeley.EDU) joined #forth 12:48:15 is there a regular/normal way to deal with forking the vm / concurrent execution? 12:49:50 I dunno. Most forth systems just do cooperative multitasking AFAIK. 12:50:15 does gforth suport pthreads? 12:50:49 ok, that might be why my searching hasn't uncovered anything (combined with the overloading of the term threaded when it comes to forth) 12:51:26 slava: grepping through the source for 'pthread' turns up nothing, for whatever that's worth... 12:52:21 forth is sufficiently simple that most of the difficulties with shared state concurrency won't turn up 12:52:26 there are no global caches, no GC, etc 12:52:32 you'd just copy your user vars per thread and that's it 12:52:47 so gforth with pthreads would be cool 12:52:47 that is rougly what I do 12:52:53 you have a threaded forth? 12:53:36 cells 0-100 are per thread local memory and 100+-> is global, I build up my wordset with the initial first vm, then I fork off sub-vms that have separate user-areas 12:54:39 is there a per-thread dictionary? 12:54:49 I'd probably just wrap the dictionary in a big lock if I was doing this 12:54:54 so that only one thread can compile at a time 12:55:04 and a thread can't call , or allot unless it has the lock 12:56:24 I will not need that for my purposes,. but I have tried rigging it up so that HERE and LATEST are stored in the local vm, and to write there after the fork, essentially treating the global part of the dictionary as ROM 12:56:41 oh, so you fork instaed of using pthreads? 12:57:11 not really .. 12:57:47 I stochasticaly iterate multiple forth cores that live in the same vm 13:00:54 it is working fine though, each of the colored dots are a forth vm http://pippin.gimp.org/tmp/void-agents.png they share all of the words they are using though (some of the words have their temporary data in "thread-local" storage) 13:01:27 pippin: R> dup >R is usually written as R@ 13:20:34 yep, I've noticed and it is now added to my dictionary bootstrap, though that sample has not been updated yet. 13:35:11 --- join: nibble (n=nibble@net-93-150-24-140.t2.dsl.vodafone.it) joined #forth 13:56:47 --- join: ENKI-][ (n=weechat@c-71-234-190-248.hsd1.ct.comcast.net) joined #forth 14:04:50 --- join: dkcl (n=danderse@unaffiliated/dkcl) joined #forth 14:22:36 --- join: impomatic (n=John@nat67.mia.three.co.uk) joined #forth 14:22:57 Hi, back from holiday and starting work on my interpreter again! 14:25:54 slava: I updated the http://pippin.gimp.org/tmp/void-agents.png screenshot to show how I use it with variables initialized in the parent vm and used in the spawned off child instances 14:25:56 what does your interpreter interpret? 14:27:10 complete Forth, inner and outer interpreters. 14:27:12 the non uniform progress of the ip's in the vms can be seen since the diagonal "front" of moving rectangles is not straight. 14:27:23 I've still got a long way to go! 14:27:44 impomatic: what differentiates your forth from others? 14:30:48 Nothing I'm aware of, but for me it's an interesting project. 14:30:57 --- join: Quadrescence (n=quad@unaffiliated/quadrescence) joined #forth 14:31:03 * pippin didn't know he had started writing a forth until after he was ~50% done 14:31:11 --- part: Quadrescence left #forth 14:32:07 I'm writing the first version in 8086 asm. I'll planning to implement most words in asm rather than Forth. 14:32:32 Then I'll transfer it to some AVR assembly. 14:33:46 once I had discovered a forth was what I was writing, I found for instance jones forth to be an instructive resource 14:34:34 Jones Forth has been useful 14:35:59 I'll probably fully document my Forth and build a website 14:36:59 forth must be the language with the largest amount of implementations 14:37:26 yeah 14:37:29 more implementations than users :) 14:37:49 at least my forth has a few odd things going for it 14:38:09 impomatic: there's still room of a well-documented forth with some nice libraries, cross-platform support, good performance and threads 14:38:11 pippin: what odd things? 14:40:38 Is Exploring Forth any good? I've just found a copy on Ebay 14:41:16 --- quit: GeDaMo ("Leaving.") 14:41:30 impomatic: it treats all numbers as floating point, is an odd virtual multi-core execution, as well as having multiple different interprets for differenttypes of words. 14:41:47 all numbers FP? that's like javascript 14:41:48 arrgghh 14:42:33 pippin: does / return an integer? 14:42:55 impomatic: nope 14:43:35 slava: I tried fixed point, but the genetic programming balked at it, and I want that system to easily converge on fit words ;) 14:44:37 well, integer math is useful sometimes 14:45:13 the bitwise operations cast to ints in the c code 14:48:34 There's still stuff in Forth I don't understand, like pictured numeric output. I'll get to it eventually. 15:11:14 I also don't understand how words like WITHIN can work on signed and unsigned numbers :-( 15:12:44 I think WITHIN Is only for signed 15:14:04 WITHIN ( n1|u1 n2|u2 n3|u3 -- flag ) 15:14:17 look at the numbers as a circle, not a line 15:14:27 overflow wraps 15:14:47 then, within take a "low" and a "high" mark 15:15:03 those marks divide the circle in two halves 15:15:12 a within tells you what half you are on 15:15:15 That makes sense, thanks :-) 15:15:55 the usual implementation subtracts the "low" value from your "x", and then checks if that is below high-low 15:16:25 in the circle view of things, it just rotates the circle so that 0 coincides with "low" 15:16:58 That sounds fairly easy :-) 15:17:07 it is 15:25:10 Am I right to the within returns true if the test value is the same as the lower value, but returns false if the test value is the same as the higher value? 15:26:26 --- quit: dkcl (Remote closed the connection) 15:26:45 --- join: dkcl (n=danderse@unaffiliated/dkcl) joined #forth 15:33:58 yup 15:34:22 hi tathi 15:34:58 I think it only takes 4 assembly instructions then, but I'll have to test it 15:35:25 hi slava 15:36:40 : within over - >r - u< ; 15:40:06 Is that >r correct? 15:40:37 ack! 15:41:05 : within over - >r - r> u< ; 15:41:19 I should have cut-and-pasted instead of typing. 15:41:48 Ah, thanks. I was trying to figure out if it was supposed to be ROT or something 15:42:46 that's still longer than in assembly though, 6 words + docol and exit 15:44:39 Oh, sure, it makes sense to do it in assembly 15:44:54 Unless you have a good optimizing compiler, I guess. :) 15:47:35 --- join: Al2O3 (n=Al2O3@c-98-245-177-23.hsd1.co.comcast.net) joined #forth 15:48:58 here is the code factor generates: http://paste.factorcode.org/paste?id=571 15:52:10 I'm guessing that's x86-64? 15:52:20 yup 16:07:30 --- quit: Al2O3 (Remote closed the connection) 16:09:02 --- quit: nibble ("Quitting!") 16:22:40 --- quit: dkcl (Remote closed the connection) 16:41:50 --- join: dkcl (n=danderse@unaffiliated/dkcl) joined #forth 17:01:35 imnsho it's not worth the effort to write such things in machine code 17:01:58 spend some time on an inliner instead, or such -- much greater effect 17:04:44 Ah, the kinds of people who write forth systems in assembly language generally think writing `within` in asm is fun. :) 17:15:41 heh, sure 17:16:23 but it's more than a bit futile, no? i mean, how often have you _used_ within? :-P 17:28:41 --- join: saml (n=saml@pool-68-237-217-233.ny325.east.verizon.net) joined #forth 17:28:52 --- quit: kib2 ("When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net") 17:29:39 heh. I've used it a few times. 17:30:00 It seems to be handy any time you need range checking... 17:31:34 Hmm 17:33:13 ok, only 8 times, apparently. :) 17:41:46 --- join: snowrichard (n=snowrich@12.169.182.169) joined #forth 17:43:03 --- quit: snowrichard (Client Quit) 18:26:55 --- quit: tathi ("leaving") 18:38:39 --- join: snowrichard (n=snowrich@12.169.182.169) joined #forth 19:08:47 --- quit: snowrichard (Nick collision from services.) 19:09:03 --- join: snowrichard_ (n=snowrich@12.169.182.169) joined #forth 19:11:50 --- nick: snowrichard_ -> snowrichard 19:12:27 --- quit: snowrichard (Client Quit) 19:14:07 --- quit: dkcl (Remote closed the connection) 19:17:06 --- join: uiu__ (n=ian@schihei.net) joined #forth 19:20:09 --- join: warpzero (n=warpzero@twink.obsoleet.org) joined #forth