00:00:00 --- log: started forth/07.11.24 00:01:19 --- quit: math_lover (Read error: 110 (Connection timed out)) 00:09:19 --- join: math_lover (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 00:16:56 --- quit: math_guy88 (Read error: 110 (Connection timed out)) 00:17:43 --- join: math_guy88 (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 00:30:44 --- quit: math_lover (Read error: 110 (Connection timed out)) 00:43:39 --- quit: forther (Read error: 110 (Connection timed out)) 00:53:17 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 00:54:13 --- join: math_lover (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 00:54:43 --- join: ygrek (i=user@gateway/tor/x-abfb41ea77926b1c) joined #forth 00:58:05 --- quit: proteusguy (Read error: 110 (Connection timed out)) 00:58:55 --- join: proteusguy (n=proteusg@ppp-124.120.224.180.revip2.asianet.co.th) joined #forth 01:03:56 --- quit: math_guy88 (Read error: 110 (Connection timed out)) 01:04:29 --- join: math_guy88 (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 01:12:57 --- quit: math_lover (Read error: 110 (Connection timed out)) 01:21:34 --- join: math_lover (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 01:32:01 --- quit: math_guy88 (Read error: 110 (Connection timed out)) 01:34:07 --- join: math_guy88 (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 01:41:15 --- quit: forther (Read error: 110 (Connection timed out)) 01:42:21 --- quit: math_lover (Read error: 110 (Connection timed out)) 01:54:44 --- join: math_lover (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 02:03:04 --- quit: math_guy88 (Read error: 110 (Connection timed out)) 02:03:29 --- join: doublec (n=doublec@203-97-173-6.cable.telstraclear.net) joined #forth 02:03:42 --- join: math_guy88 (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 02:19:04 --- quit: math_lover (Read error: 110 (Connection timed out)) 02:28:42 --- join: math_lover (n=blimy@cpe-76-167-152-135.socal.res.rr.com) joined #forth 02:43:28 --- quit: math_guy88 (Read error: 110 (Connection timed out)) 03:03:20 --- quit: math_lover (Connection timed out) 03:20:11 --- quit: doublec () 03:24:57 --- quit: Off_Namuh (Remote closed the connection) 04:17:12 --- join: ecraven (i=nex@eutyche.swe.uni-linz.ac.at) joined #forth 04:17:44 --- join: Off_Namuh (i=GPS@gateway/tor/x-23f67bd040e88deb) joined #forth 05:33:20 --- quit: Off_Namuh (Remote closed the connection) 05:48:53 --- quit: charles54 (Read error: 110 (Connection timed out)) 05:52:41 --- join: Off_Namuh (i=GPS@gateway/tor/x-7a394217d345cbed) joined #forth 07:22:59 --- join: Deform (n=joe@c-68-61-240-49.hsd1.mi.comcast.net) joined #forth 07:23:40 --- quit: Deformative (Nick collision from services.) 07:23:57 --- nick: Deform -> Deformative 07:53:47 --- join: nighty^ (n=nighty@sushi.rural-networks.com) joined #forth 08:39:11 --- quit: gnomon (Read error: 110 (Connection timed out)) 08:41:49 --- join: Deform (n=joe@c-68-61-240-49.hsd1.mi.comcast.net) joined #forth 08:42:40 --- quit: Deformative (Read error: 104 (Connection reset by peer)) 08:43:02 --- nick: Deform -> Deformative 09:03:56 --- quit: ygrek (Remote closed the connection) 09:04:03 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 09:05:36 --- join: ygrek (i=user@gateway/tor/x-d90a2f6be948c664) joined #forth 09:33:14 --- quit: ygrek (Remote closed the connection) 09:35:14 --- join: ygrek (i=user@gateway/tor/x-ad6bb7b63c2003f2) joined #forth 10:18:33 --- quit: forther (Read error: 110 (Connection timed out)) 10:27:10 good afternoon 10:41:33 afternoon 11:02:06 Hi crc. 11:10:42 --- join: Quartus__ (n=Quartus_@209.167.5.1) joined #forth 11:10:56 --- quit: Off_Namuh (Remote closed the connection) 11:12:06 --- quit: nighty- (Read error: 113 (No route to host)) 11:12:56 --- join: nighty- (n=nighty-@66-163-28-100.ip.tor.radiant.net) joined #forth 11:16:20 --- quit: Al2O3 ("Eggplant & SenseTalk: Driving Success Through Automation") 11:29:13 --- join: Al2O3 (n=Al2O3@184.sub-70-219-177.myvzw.com) joined #forth 11:45:06 --- join: Off_Namuh (i=GPS@gateway/tor/x-08f514380f429d07) joined #forth 11:50:15 --- quit: Off_Namuh (Remote closed the connection) 12:37:52 --- quit: Quartus__ (Read error: 104 (Connection reset by peer)) 13:54:19 --- nick: Baughn -> Kate 13:55:37 --- nick: Kate -> Baughn 14:00:30 --- quit: ygrek (Remote closed the connection) 14:14:15 --- join: Quartus____ (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 14:16:23 --- quit: Quartus (Read error: 110 (Connection timed out)) 14:17:27 [17:16] what part of "shit is always interpreted at any level to another level" is confusing? 14:29:08 Uh, all of it? 14:29:28 Heh. 14:29:49 [17:24] there IS NO GODDAMNED "ACMHINE CODE" 15:10:00 --- join: crest__ (n=crest@p5B104DBF.dip.t-dialin.net) joined #forth 15:13:26 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 15:13:26 --- mode: ChanServ set +o Quartus 15:17:52 --- quit: crest_ (Read error: 110 (Connection timed out)) 15:24:04 --- quit: Quartus____ (Read error: 110 (Connection timed out)) 16:04:32 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 16:06:05 --- join: Dark_knight13 (i=Tiago@10001326477.0000061086.acesso.oni.pt) joined #forth 16:06:27 --- part: Dark_knight13 left #forth 16:21:22 --- join: Off_Namuh (i=GPS@gateway/tor/x-fcfb169fb7c8a9bc) joined #forth 16:22:18 --- join: slava (n=slava@CPE0007e97df149-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 16:22:18 --- mode: ChanServ set +o slava 16:22:34 Hey slava. 16:22:41 yo. 16:22:52 --- quit: forther ("Leaving") 16:38:11 What's new? 18:12:37 are you going to rise up to my challenge on c.l.f? :) 18:39:06 Haven't seen it yet. 18:40:34 http://groups.google.com/group/comp.lang.forth/msg/c4586dcf534f23c5 18:40:42 i want to see some 'real world' forth code which deals with strings and memory. 18:41:13 I may well, but not tonight. 18:41:35 Is it some bit of Factor you wish to hold up against the Forth? 18:42:02 essentially, yes. i want to see how people do these things without data types and gc 18:42:16 ah 18:42:35 So not for your edification, but to reveal to the audience how neat it can be done in Factor? 18:42:46 no. 18:43:00 i want people to reveal to me how it could be done in forth 18:43:11 Ok. 18:56:58 --- quit: Al2O3 ("Eggplant & SenseTalk: Driving Success Through Automation") 19:01:57 --- join: Al2O3 (n=Al2O3@223.sub-70-219-169.myvzw.com) joined #forth 19:05:16 --- join: LOOP-HOG (n=jasondam@c-76-105-172-75.hsd1.or.comcast.net) joined #forth 19:10:56 --- quit: LOOP-HOG () 19:21:27 --- quit: Quartus () 19:21:41 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 19:21:41 --- mode: ChanServ set +o Quartus 19:34:57 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 19:37:28 --- quit: forther (Client Quit) 20:21:29 --- quit: nighty^ (Remote closed the connection) 20:52:34 --- join: neceve (n=ncv@unaffiliated/neceve) joined #forth 21:13:45 slava: hey, there's some "real world" forth code that deals with strings and memory at http://pobox.com/~kragen/tmp/invertedindex.fs.html 21:13:55 trouble is, I wrote it, and I don't really know Forth 21:17:42 --- join: edrx (i=edrx@189.25.27.215) joined #forth 21:18:28 it's "real world" in the sense that it could theoretically be used to solve a real problem, and maybe I'll get to actually doing that later this week. 21:24:48 I'm looking for comments on style --- Quartus suggested that I would probably learn more by writing some application code in Forth, and then having it criticized, than by reading old Forth interpreters 21:25:03 So any criticism is welcome! 21:27:10 \ skip-non-word and skip-word would be simpler if they used EXECUTE, 21:27:10 \ but they're the inner loop of the whole program. Is there a better 21:27:10 \ way to refactor them? 21:27:17 why can't you use execute in the inner loop? 21:27:55 I speculate without evidence that it will slow the whole program down measurably. 21:28:16 don't ever speculate w.r.t. performance, without measurement 21:28:21 In a system like bigForth. 21:28:40 The main indications that I'm doing something wrong are that it takes me a painfully long time to get each new word working, because I keep having stack effect bugs and memory bugs. 21:28:46 Yes, I know that's a bad thing to do :) 21:29:39 which brings me to my next question: is there an ANS Forth with a profiler? 21:29:50 not sure 21:30:38 not having a profiler makes performance measurements about an order of magnitude more difficult 21:34:02 yup 21:40:57 --- part: edrx left #forth 21:43:32 yeah, it's about a 12% penalty with bigForth 21:43:43 on my machine 21:46:54 it's not surprising that my speculation about performance was correct; that code runs about an order of magnitude more times than anything else. 21:47:29 and I spent about a week of my spare time optimizing a C version of this program a couple of years ago, so it wasn't entirely uninformed speculation 21:47:49 does bigForth have a disassembler to see what it has compiled a word into? 21:50:04 i see that it comes with disass.fb, which seems to be a disassembler, but it's not obvious to me how to use it 21:51:23 i guess bigforth doesn't do any advanced optimizations 21:51:29 with a bit of analysis, 'execute' could have zero overhead 21:52:24 hmm, I can do ' skip-word dis 21:52:44 zero overhead? even the Self dissertations don't claim that : 21:53:06 not in the general case, but in many cases such as yours 21:53:07 where you have 21:53:14 : foo ( ... xt -- ) ... execute ... ; 21:53:18 : bar ' xyz foo ; 21:53:24 : baz ' abc foo ; 21:53:35 oh, by customizing and inlining foo 21:53:36 sure 21:53:37 it could inline foo inside bar and baz, then replace the execute with a direct call 21:53:39 yes 21:55:15 i could clearly write : make-skipper postpone begin ['] 2dup compile, ['] = compile, postpone if ['] exit compile ... 21:55:18 and so on 21:55:30 yup 21:55:38 but that doesn't seem like it would lead to the clearest code 21:55:46 so i was wondering if there was a better way 21:56:12 factor has this optimization but overall its slower than bigforth anyway 21:56:54 bigforth isn't doing even the very basic optimizations of the emitted machine code according to DIS 21:57:01 10021FAF: jmp $10021F80 E9CCFFFFFF 21:57:42 note that the jump offset there is negative --- i.e. into code it has already emitted --- so it can know what the jump offset is at the time that it assembles the jump 21:57:58 and yet it uses the 5-byte form instead of the 2-byte form 21:58:13 does that make a big difference on modern chips? 21:59:16 it depends on how much of your main memory bandwidth is spent on fetching instructions 21:59:29 so hopefully not 22:00:37 it does do a fair bit of inlining 22:01:54 2dup = exit 0= 1- are all being inlined here. although i guess inlining exit is kind of like "inlining" if. 22:02:40 does it perform register allocation? 22:02:49 but it's not inlining C@+, even though it's defined as "dup 1+ swap c@" 22:02:53 or does 'inlining' just entail verbatim copying? 22:03:13 i'm trying to figure that out 22:03:15 --- join: Quartus____ (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 22:03:39 the disassembly of C@+ is kind of alarming 22:03:58 why? 22:05:24 it compiles to this: xchg ESP, ESI; push EAX; inc EAX; pop EDX; push EAX; mov EAX, EDX; movzx EAX,BYTE PTR [EAX]; xchg ESP, ESI; ret 22:05:32 nine instructions 22:06:54 so its not doing register allocation 22:07:00 doesn't look like it 22:07:05 the xchg's sort of make sense, although they would be eliminated along with the ret if C@+ were being inlined 22:08:54 i guess that's only slightly alarming 22:09:14 a smarter compiler might compile it to movzx EDX, BYTE PTR [EAX]; inc EAX; push EAX; mov EAX, EDX, plus the three boilerplate instructions 22:10:27 i'm guessing that EAX is top-of-stack, ESI normally points to the return stack, and ESP normally points to the data stack 22:12:02 but presumably only the movzx and the inc would be needed in the usual case of C@+ being inlined 22:13:48 i'm pretty ignorant about compilers, which is why it took me a while to figure this out ;) 22:15:51 anyway, given all that, the fact that gcc only beats it by about a factor of 2-4 is pretty impressive :) 22:18:12 --- quit: Quartus (Read error: 110 (Connection timed out)) 23:00:25 --- quit: crest__ (Remote closed the connection) 23:03:20 --- join: Al2O3_ (n=Al2O3@251.sub-70-215-39.myvzw.com) joined #forth 23:13:06 --- join: saon (n=saon@c-66-177-56-33.hsd1.fl.comcast.net) joined #forth 23:28:19 --- quit: Al2O3 (Read error: 110 (Connection timed out)) 23:29:58 --- join: ygrek (i=user@gateway/tor/x-7193e427d8a2ab33) joined #forth 23:59:59 --- log: ended forth/07.11.24