00:00:00 --- log: started forth/11.01.08 00:36:55 --- join: qFox (~C00K13S@5356B263.cm-6-7c.dynamic.ziggo.nl) joined #forth 00:54:51 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 01:18:41 --- quit: ygrek (Ping timeout: 240 seconds) 01:33:52 --- join: Fox78 (~fox@123.121.64.156) joined #forth 02:05:14 --- quit: roarde (Quit: Leaving.) 02:20:43 before: 87.46s real 85.27s user 0.11s system 02:20:53 after: 80.97s real 74.74s user 0.17s system 02:21:06 Another 15% win?? 02:33:58 --- join: fantazo (~fantazo@178-191-165-27.adsl.highway.telekom.at) joined #forth 02:59:59 --- join: nsswb (~nsswb@87.212.234.21) joined #forth 03:00:36 --- quit: nsswb (Client Quit) 03:13:33 :) 03:13:51 apforth? 03:15:33 yeah 03:15:57 your release? 03:16:10 No, that will be in future release. 03:16:28 BTW, this is good demonstration that old-time forthers have absolutely no clue in optimization. 03:16:47 :) 03:17:03 sound cool 03:17:19 When you push block-level variable down one level, you get this: 03:17:20 96.00s real 70.89s user 0.11s system 03:17:39 0_0 03:17:51 You get another 5% of performance by simple transformation from 03:18:10 --- join: nsswb (~nsswb@87.212.234.21) joined #forth 03:18:15 smth(){char* ptr; ... switch(){ ptr... ptr ... ptr ...} 03:18:17 to 03:18:27 hmmm 03:18:37 smth(){... switch(){ ... {char*ptr ...} ... {char*ptr ...} ... {char*ptr ...} ...} 03:19:32 Becase those "bind and dominate" languages give you some 03:19:32 understanding how to perform valid optimisations using locality. 03:21:25 by Aleksej Saushev ~~ cool! 03:22:45 ASauPForth 03:22:51 At this point I work on this "pet project" for about 5 days and got 2x performance improvement on my coverage tests. 03:23:07 This is more compilation improvement rather than raw performance. 03:23:25 The rest will come later. 03:23:40 hmmm 03:26:37 Most of this was achieved by removing levels of indirection. 03:26:43 Just like CM advocates. 03:27:11 Not only CM, they advocate it too, but as it comes, they don't follow their advocacy at all. 03:28:06 This proves that all this 80s and 90s Forth technology is just a puff. 03:30:33 --- quit: nsswb (Ping timeout: 240 seconds) 03:46:35 --- quit: fantazo (Ping timeout: 255 seconds) 04:15:49 --- join: fantazo (~fantazo@178-191-172-212.adsl.highway.telekom.at) joined #forth 05:31:49 --- quit: qFox (Ping timeout: 255 seconds) 05:51:17 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 06:04:11 --- join: nsswb (~nsswb@h155068.upc-h.chello.nl) joined #forth 06:27:30 --- quit: Fox78 (Remote host closed the connection) 06:33:57 --- quit: nsswb (Quit: Leaving) 06:44:55 --- quit: mathrick (Ping timeout: 250 seconds) 06:46:40 --- quit: MayDaniel (Read error: Connection reset by peer) 06:55:05 --- quit: fantazo (Remote host closed the connection) 07:28:59 --- join: qFox (~C00K13S@5356B263.cm-6-7c.dynamic.ziggo.nl) joined #forth 07:31:33 --- join: mathrick (~mathrick@83.1.168.198) joined #forth 07:32:10 --- join: Judofyr (~judofyr@c103C5AC1.dhcp.bluecom.no) joined #forth 07:58:59 --- join: MayDaniel (~MayDaniel@91.84.41.221) joined #forth 07:59:00 --- quit: MayDaniel (Changing host) 07:59:00 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 08:08:55 --- join: nsswb (~nsswb@ip-80-113-5-247.ip.prioritytelecom.net) joined #forth 08:09:08 --- part: nsswb left #forth 08:21:06 --- quit: Judofyr (Remote host closed the connection) 08:22:56 --- join: Judofyr (~judofyr@c103C5AC1.dhcp.bluecom.no) joined #forth 08:24:57 ASau: https://gist.github.com/770492 is the build log from OS X 10.5 08:26:22 after the error; I get a 'pforth' binary, which works, but no dictionary file 08:28:10 https://gist.github.com/770958 is the build log from my linux box; I get no binaries built on this yet 08:32:28 The error must be earlier. 08:32:36 make clean all 08:33:41 Have you got pdficdat.h file? 08:34:40 Ah, you haven't. 08:34:51 Then the error is earlier. 08:36:09 crc: How come that your make(1) doesn't generate dependencies? 08:37:25 Aha! 08:37:28 That's bug in gmake. 08:38:54 crc: add this dependency to makefile: 08:38:55 pf_save.eo: $(EMBDICT) 08:40:39 (what a suckage!) 08:42:49 still doesn't build: https://gist.github.com/770974 08:43:13 donsn't build too 08:43:58 Bah! 08:44:06 linux sucks. 08:45:04 http://paste.pocoo.org/raw/317178/ 08:46:50 emerge --info |wgetpaste -r # http://paste.pocoo.org/raw/317182/ 08:46:52 Do you have getprogname(3) function in your linux? 08:47:11 crc@questor:~/code/apforth-0.1$ man 3 getprogname 08:47:12 No manual entry for getprogname in section 3 08:47:40 me too 08:47:58 gentoo 08:48:06 ubuntu for me 08:48:32 #if defined(linux)\nstatic const char* getprogname(void){return "apforth";}\n#endif 08:48:48 or whatever symbol is defined there. 08:49:06 "cpp -dM /dev/null" might help. 08:57:25 crc, gogonkt: http://forth.pastebin.com/n3XTCyn0 08:57:40 hmmm 08:57:47 so 80s... 09:00:13 any wrong curl 'http://forth.pastebin.com/raw.php?i=n3XTCyn0'|patch -p 09:00:21 any wrong? 09:00:37 ?? 09:00:47 pf_main.c:(.text+0x7): undefined reference to `getprogname' 09:01:16 Well... Could you handle this problem yourself? 09:01:32 If patch applies, getprogname is defined. 09:02:05 hmmm, got it 09:03:07 Could you tell how cpp defines your system? 09:03:10 (I can't call it "operating", because it isn't.) 09:03:22 Is it "linux" or "__linux__"? 09:04:23 pastebin raw mod insert something :( 09:21:39 patch --dry-run -p0 -i ../n3XTCyn0.txt # http://paste.pocoo.org/show/317192/ :( 09:22:32 No idea. 09:22:45 apply manually, 5 lines doesn't worth it. 09:23:49 pf_main.c:(.text+0x7): undefined reference to `getprogname' 09:24:06 still doesn't pass 09:24:06 WTF??? 09:24:27 Apply patch manually in full. 09:24:46 doing it 09:24:51 It's only a handful of lines. 09:26:13 I have no idea why your patch(1) doesn't work. 09:26:41 how did you diff it? 09:26:52 "cvs diff" as usual. 09:28:46 Now I understand why we treat linuxes almost the same way as solaris. 09:29:18 $ cvs diff -u8p FILENAME ? #https://developer.mozilla.org/en/creating_a_patch#Creating_a_diff_of_a_single_file 09:29:28 cvs diff -uN 09:29:46 My flags live in .cvsrc for ages. 09:30:12 sorry, I not familly with patch :( 09:31:18 ASau: after manually applying the patch and modifying the makefile, it builds successfully; thanks 09:31:47 crc: How come that you have to apply it manually?? 09:33:41 patching file pf_main.c 09:33:41 Hunk #1 FAILED at 44. 09:33:41 Hunk #2 FAILED at 101. 09:33:41 2 out of 2 hunks FAILED -- saving rejects to file pf_main.c.rej 09:33:59 me2 @@ 09:34:15 applying manually was trivial enough 09:34:26 Weird. 09:36:16 * ASau sighs. 09:37:03 I really don't understand how it happens so that I move complex patches with "(cvs) diff | patch", 09:37:17 and you can't apply trivial changes there. 09:38:26 still don't build after manually applying the patch 09:38:45 see the change to makefile above. 09:39:02 it comes that gmake is buggy like a hell. 09:39:19 that's patch output 09:39:50 I knew that it has problems with spaces and commands that 09:39:50 don't belong to any target, but I didn't know that it doesn't 09:39:50 follow dependencies. 09:40:29 Honestly, instead of inventing obscure syntax to solve 09:40:29 non-problems, they should invest their time in fixing real problems. 09:40:53 :) 09:41:41 Install bmake, it is trivial and you get full-capable BSD make. 09:43:08 I got build errors with freebsd-make on the linux box as well 09:43:53 git me a makefile patch pls. 09:44:03 bmake isn't freebsd make. 09:44:20 NetBSD's portable make 09:44:41 I don't know who ported FreeBSD make, but I don't know if it works even on NetBSD. 09:44:51 NetBSD make works ~everywhere, even on QNX. 09:47:14 I have netbsd's bmake on the mac; will try to build it on linux later 09:47:47 no idea 09:59:49 --- join: MayDaniel_ (~MayDaniel@unaffiliated/maydaniel) joined #forth 10:02:32 --- quit: MayDaniel (Ping timeout: 250 seconds) 10:13:19 --- join: nsswb (~nsswb@ip-80-113-5-247.ip.prioritytelecom.net) joined #forth 10:13:35 --- part: nsswb left #forth 10:21:32 --- quit: MayDaniel_ (Read error: Connection reset by peer) 10:38:16 --- join: tathi (~josh@dsl-216-227-95-5.fairpoint.net) joined #forth 11:00:32 --- quit: Judofyr (Ping timeout: 246 seconds) 11:00:44 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 11:08:39 --- join: roarde (~roarde@pdpc/supporter/active/sixforty) joined #forth 11:26:44 --- join: MayDaniel (~MayDaniel@91.84.41.221) joined #forth 11:48:21 At this pace, I'll be at 0.2 or 0.3 by end of month. 11:48:57 ? 11:54:17 roarde: with his fork of pforth 11:58:09 thx, crc. was just finding it in past two days (tz difference) of logs 11:59:52 --- quit: MayDaniel (Read error: Connection reset by peer) 12:12:27 ASau: now that I'm home and using the mac, I can confirm that the build of apforth works just fine under osx using netbsd's make, but not gnu make 12:19:39 crc: I'll add this dependency, but I don't like that. 12:19:59 I understand that raw posix/sus guarantees very little for make, 12:20:10 but this isn't pleasant at all. 12:20:37 BTW, does OSX have getprogname? 12:21:19 yes, in stdlib.h 12:22:29 Part of BSD heritage, it seems. 12:33:53 Yeah, GNU make considers suffix rules obsolete. 12:34:11 And they don't allow dependencies to suffix rules. 12:44:32 (They think that they're so much smarter than everyone else.) 12:47:37 OTOH, why the hell should I support non-free software? 12:47:46 Use bmake! 12:48:14 * crc just checked to make sure retro's makefile works with bmake; no problems :) 12:48:24 It is much easier to use than gmake anyway. 12:51:29 --- quit: ygrek (Ping timeout: 240 seconds) 13:09:42 --- join: nsswb (~nsswb@ip-80-113-5-247.ip.prioritytelecom.net) joined #forth 13:09:57 --- part: nsswb left #forth 13:12:38 --- join: nsswb (~nsswb@ip-80-113-5-247.ip.prioritytelecom.net) joined #forth 13:29:39 --- part: nsswb left #forth 13:41:08 --- join: martin_hex (~mjc@93-97-29-243.zone5.bethere.co.uk) joined #forth 13:41:09 --- quit: martinhex (Disconnected by services) 13:41:10 --- nick: martin_hex -> martinhex 13:56:27 I usually just type 'make' with either one. :-P 13:57:31 So I take it that pattern rules (%.o: %.c) are specific to GNU make? 14:01:15 Yeah, looks like it. 14:15:03 --- mode: ChanServ set +o crc 14:15:19 Huh. I never realized how much weirdness was incurred by making [IF]/[ELSE]/[THEN] individual words instead of a proper preprocessor. 14:15:59 For instance, `0 [IF] [ELSE] [ELSE] [THEN]` is legal standard Forth, but `1 [IF] [ELSE] [ELSE] [THEN]` isn't. 14:22:48 --- quit: qFox (Read error: Connection reset by peer) 14:31:45 This involves mind bending. 14:32:07 Elaborate, please. 14:34:07 But I agree that [if]-[else]-[then] is evil. 14:35:54 I never implemented [if]-[else]-[then] 14:39:27 Heh. 0 [IF] parses and discards until it encounters [ELSE] or [THEN]. So in the first case, you're left with '[ELSE] [THEN]'. 14:39:48 [ELSE] parses and discards up to and including [THEN]. 14:40:49 For the second case: 1 [IF] is a no-op. So then [ELSE] sees "[ELSE] [THEN]", which isn't "a nested occurrence of [IF]..[ELSE]..[THEN]", so you (theoretically) have an error. :) 14:41:34 Hm. 14:41:36 Most existing implementations seem to use the same parsing word to underly all of them, so arbitrary sequences of [ELSE] [ELSE] [ELSE] ... [THEN] work fine -- the interpreter sees the contents of every other section. 14:42:07 Anyway. It's not like anyone actually writes such code. 14:42:13 Ha! 14:42:17 I do. 14:42:28 Oh, OK. 14:42:36 And that's why I have problems with Forth compilers. 14:42:36 But anyway. I thought it was an interesting loophole. 14:43:13 I know that [if] and co is [censored] broken at conceptual level. 14:43:29 But I don't see any other immediate solution to that problem. 14:43:33 I think if you want to close it, you have to have [IF] parse all the way until the matching [THEN], and be somehow "before" the interpreter so that it can pass through only the text that the interpreter should actually see. 14:43:37 Yeah. 14:44:06 The alternative is dynamic memory spaces for code. 14:44:59 I have thought about that, but it doesn't cover all cases either. You want to be able to use undefined words in code which is skipped by [IF] .. [THEN]. 14:45:02 At least I thought that far when I thought about it at all last time. 14:46:13 In any case, [if]s bring escape problem like any other textual preprocessors. 14:46:23 Yeah, that too. :) 14:46:35 Aha! 14:46:59 It seems that I'm not alone who is stuck with this problem :D 14:47:05 ? 14:47:17 At least I'm not alone who met it. 14:47:50 No, just among Forthers. ;) 14:51:31 I kind of like what C does, allowing #else and #endif only on a line by themselves. That avoids the worst of the problems, I think. 14:51:45 ? 14:52:48 At least I don't recall having escaping problems with C very often. 14:53:58 Ah, that. 14:55:04 That's because # is invalid in C outside strings, character literals, and comments. 14:55:27 Hmm. Yeah, OK. 14:55:46 Forth is much more complex language than C. 14:55:50 True that. 14:56:36 Hey, I know! Conditional compilation could use whitespace-as-syntax like Python! :D 14:56:50 :D 15:01:15 I wonder why the impossibility of tokeniser doesn't hint 15:01:15 Forth "lovers" that Forth is much more complex than their 15:01:15 exemplary "bind-and-dominate" language. 15:06:45 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 15:21:04 --- join: scott0070 (~scott@207.98.152.197) joined #forth 15:45:24 --- quit: roarde (Quit: Leaving.) 17:37:46 --- quit: MayDaniel (Read error: Connection reset by peer) 17:46:48 --- quit: probonono (Ping timeout: 240 seconds) 18:22:09 --- quit: martinhex (Ping timeout: 250 seconds) 18:51:24 --- join: martinhex (~mjc@93-97-29-243.zone5.bethere.co.uk) joined #forth 19:38:11 --- quit: scott0070 (Quit: Leaving) 21:34:41 --- quit: tathi (Ping timeout: 240 seconds) 22:38:51 --- join: probonono (~User@ppp103-111.static.internode.on.net) joined #forth 22:39:01 --- quit: probonono (Changing host) 22:39:01 --- join: probonono (~User@unaffiliated/probonono) joined #forth 23:38:05 --- join: nighty__ (~nighty@x122091.ppp.asahi-net.or.jp) joined #forth 23:59:59 --- log: ended forth/11.01.08