00:00:06 Asztal: LOL 00:00:18 fizzie: Come on, there’s a better empty box in there. 00:00:56 That's the BALLOT BOX, you're certainly supposed to use it if you're also using BALLOT BOX WITH CHECK. 00:01:10 Hmm. 00:01:15 It’s sized differently here. 00:01:35 -!- olsner has quit (Read error: 60 (Operation timed out)). 00:01:40 i guess it failed the check, then 00:01:50 -!- swistakm has joined. 00:03:02 Maybe they've been lazy and reused an empty box glyph. There are certainly enough of those. 00:03:34 hm that sounds like an idea for an esolang 00:03:43 slightly whitespacish 00:04:07 Unicode abuse? You can make esolang that's truly horrible to write with that... 00:04:26 it was not the writing i was thinking of... 00:04:54 combining diacritics as control structures? 00:05:06 no, just empty boxes :D 00:05:48 â̈̈̋! 00:05:58 And if one is practicularly sadistic, use some astral characters that do have proper drawings. Pretty much no font gets those right. 00:06:31 ¨ is map, since . . looks like two elements. 00:06:42 ´ is fold, since it looks kind of like a bend. 00:06:48 of course another idea might be to have a single complicated sign that can be written several ways with combining characters 00:06:58 and to have the language distinguish those 00:07:10 Ilari: is astral a pun on "plane"? 00:07:22 oerjan: sort of 00:07:30 oerjan: "Astral characters", means characters from planes 1-16. 00:07:32 astral plane is all non-basic multilingual plane haracters 00:07:39 "astral plane" was almost certainly intentional 00:08:51 APL functional symbol quad is a ⎕, and APL functional symbol squish quad is just a ⌷, and the ballot box was of course ☐, and Nko letter sa is ߛ and you can put a combining enclosing square around a space like ⃞ and there is plain old white square □ and white medium square ◻ and… 00:09:01 Sorry, got tired of looking for those. 00:09:24 fizzie: nko letter sa doesn't show up here 00:09:27 so get 2 more and we have a BF dialect 00:09:53 I'm not surprised; it made the text field in gucharmap get right-to-left direction, too. 00:10:39 wait 00:10:40 it shows up 00:10:44 it just has something inside 00:11:08 Oh. Well, my font isn't very good either. There was another square-like arabic character I wasn't so sure about. 00:12:51 One interpretter I did did pretty sadistic unicode abuse by putting the basic operators into TAG range. "Data 0" operator was U+E0030, "Data 1" operator U+E0031, "Input" operator U+E0069 and "Output" operator U+E006F... 00:13:10 Well, musical symbol drum clef-2, 𝄦 is a square here, although it messes up whitespace. As is musical symbol cluster notehead white, 𝅚. Those have the ‷advantage‴ of being non-BMP characters. 00:13:28 "TAG"? 00:13:57 Musical symbol square notehead white, 𝅆, is also a type of square, although horribly tiny and quite far down. 00:14:15 Those are not squares here. 00:14:24 + ⎕ - ⌷ < ☐ >  ⃞ , □ . ◻ 00:14:26 We need two more 00:14:47 The square notehead should at least be a square, though. Oh well. 00:15:23 I think my not-found char is a box with a relevant symbol inside 00:16:05 There is in Miscellaneous Mathematical Symbols-B block a "squared square", but it's not in my font. It would look like ⧈ though. Here it just renders as a box with "29C8" in it. 00:16:16 Ilari: ah, TAG is _not_ an acronym, you evil scum :D 00:16:17 oerjan: U+E00xx contains copies of 95 basic ASCII characters as "TAG" versions. Meant for language tags. 00:16:43 Ilari: wu 00:16:44 t 00:17:01 So U+E0030 is TAG DIGIT ZERO. 00:17:19 ehird: I think I didn't yet say white small square ▫ and white rectangle ▭. 00:17:23 And U+E0041 is TAG LATIN CAPITAL LETTER A 00:17:46 + ⎕ - ⌷ < ☐ > ▫ , □ . ◻ Replaced the troublesome compiler. still 2 t o go 00:18:29 Why not white rectangle? Or doesn't that show up either? 00:18:38 Ilari: so is there a YOU ARE IT character to end a sequence of those? :D 00:19:34 Well, there's also LANGUAGE TAG (U+E0001) and CANCEL TAG (U+E007F). 00:20:19 but nothing at the end? 00:20:30 how buring 00:21:25 I have a bad feeling I'm running out of completely featureless boxes. There are things that are almost boxes (like square lozenge ⌑, white trapezium ⏢, the old flatness ⏥, the rather hash-like viewdata square ⌗) and all kinds of squares with little bits of ink in them, but I haven't seen real squares in a while. 00:21:45 Unless you count the drop-shadowed squares? ❏❐❑❒ 00:22:09 "e ⌗)" 00:22:13 that's an octothorpe 00:22:16 :P 00:22:29 No, it's a viewdata square. Hey, there's "square" in the name. 00:22:29 fizzie: What codepoints do those musical box-looking characters have? 00:22:59 Ilari: Around U+1D100 and above. 00:23:29 1D126 for drum clef-2, 1D15A for cluster notehead white, and 1D146 for square notehead white. 00:26:15 Hangul mieum is also quite squareish, ㅁ, but there's a bit of line sticking out. Same goes for katakana letter ro, ロ. Kangxi radical enclosure ⼞... did I already mention white large square and white very small square? They are ⬞ and ⬜. 00:26:46 yay 00:26:59 + ⎕ - ⌷ < ☐ > ▫ , □ . ◻ [ ⬞ ] ⬜ 00:27:02 hey, those are BLACK 00:27:04 when zoomed in 00:27:06 for me 00:27:08 hm maybe not 00:27:25 You never said why the white rectangle ▭ was not to your tastes. 00:27:30 But whatever. :p 00:27:36 too rectangly 00:27:42 too distinguishable from the others 00:28:33 Oh, okay. There's white vertical rectangle, ▯, too. That's quite close to that apl squish quad. 00:29:00 Feel free to mix-n-match. The very small square is here quite distinguishable too, since it's so, well, small. 00:29:08 □⬞◻□⬜ 00:29:12 ↑ cat 00:29:51 Heh, it's not black, it’s a square with white/black diagonal crosses and a border saying, on top and bottom: UNDEFINED, and on the sides: left 0000 and right FFFF 00:30:07 Took a looooooot of zooming to see that. 00:31:04 I think I'll do some sleeping, but have a boxy night. 00:31:37 ☺ 00:32:38 I looked through sample characters for U+1D1xx. Only U+1D126 and and U+1D146 are rectangles. 00:50:12 -!- neldoret1 has joined. 00:51:01 -!- neldoreth has quit ("Reconnecting"). 02:24:10 -!- GregorR has quit ("Leaving"). 03:19:32 -!- GregorR has joined. 03:34:24 -!- Sgeo has joined. 03:37:09 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 03:40:30 -!- Sgeo has joined. 04:04:50 -!- GreaseMonkey has joined. 05:02:38 -!- oerjan has quit ("leaving"). 06:13:24 -!- Sgeo has quit ("Leaving"). 06:48:41 -!- Slereah has joined. 06:54:55 Claim: Every possible meaning can be expressed as the limit of an infinite sequence of phrases in English. 06:55:36 Stupid claim: Every possible infinite sequence of phrases in English has a limit that is a meaning. 07:06:46 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 07:54:27 how do you do foo ? bar : baz; without any branches? 07:56:40 In some specific cases, conditional instructions might help. Though if you just have a cmov, you'd almost have to evaluate both bar and baz since you don't know which value will be used as the result. 07:56:54 In which case it's not really a ?:. 07:57:13 or even foo ? 1 : 0; 07:58:02 Well, that you can do with a "mov resultreg, 0; test foo; cmov resultreg, 1" style of thing. 07:59:00 Obviously with more sensible instructions. I'm sure AnMaster will soon comment with the most optimal way of zeroing a register; all I know is the canonical xor thing. 07:59:50 gcc compiles foo ? bar : baz; with a jump, but foo ? 1 : 0 without 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:43 If bar and/or baz have side effects, I don't see how you could do it without a branch, since you really need to avoid evaluating the "wrong" thing, and that's almost by definition a branch there. 08:01:04 Maybe if you had condition codes for more than just move instructions, though. 08:01:21 well, yeah 08:03:18 fizzie, xor is the best way on x86 certainly 08:03:35 well iirc sub %reg,%reg may also work on some x86 models 08:03:40 the same way I mean 08:04:35 xor %reg,%reg is what I would recommend anyway, most modern x86 CPUs treat it specially when it comes to register dependency stuff in out of order execution 08:04:55 so it knows that xor on itself doesn't depend on the current value of the register 08:05:55 I guess for foo?1:0 you'd actually want something like "xor %eax, %eax; ...; SET?? %al" to avoid having to put the number 1 somewhere for cmov. 08:09:13 You might want to use 'mov reg, 0' if you want to preserve flags 08:10:00 ({ typeof(bar) blah[2]; blah[0] = bar; blah[1] = baz; blah[foo?1:0]; }) 08:10:38 or in lieu of obfuscated C, bar*foo+baz*!foo... 08:10:59 ooh, that should be bar*!foo+baz*!!foo 08:11:12 lifthrasiir: huh? 08:11:35 i'm just kidding FYI 08:12:49 oh you can do it like this 08:12:58 though i have used such expression once... 08:13:10 Unca Linus says cmov is bad for you, though: http://ondioline.org/mail/cmov-a-bad-idea-on-out-of-order-cpus 08:13:26 x = x & 0xFFFF | (x >> 16) 08:13:28 Of course P4 is not very modern nowadays. 08:13:37 x = x & 0xFF | (x >> 8) 08:13:47 x = x & 0xF | (x >> 4) 08:14:00 and so on 08:14:20 Yes, although most would write that !!foo and not foo?1:0. 08:14:44 wtf is !!foo 08:14:55 It's pretty much the same thing. 08:15:00 that's cheating 08:15:11 Forces foo to be 0 or 1, depending on the truthfulness. 08:15:21 !!foo is cast(bool)foo 08:15:39 Makes me wonder how it's compiled, actually. 08:16:13 Depends on whether the compiler optimizes it by default or not. With any -O I suspect it's equivalent to a cast. 08:16:45 with -O3 it's the same as foo?1:0 08:16:46 "xor %eax, %eax; test %edi, %edi; setne %al; retq" is what GCC here made out of int main(int argc, char *argv[]) { return !!argc; } 08:17:08 Without optimizations? 08:17:11 that's odd, i got something different 08:17:14 With -O3. 08:17:29 Does it do a double-not without? 08:17:41 Or maybe a sete followed by a not 08:18:01 With -O0 it's.. "cmpl $0x0,-4(%rbp); setne %al; movzbl %al,%eax;", discounting some stack-handling. 08:18:42 Hmm, it prefers xor followed by set to set followed by movzx. 08:20:38 That was for x86-64, of course, which gets parameters in registers and all that fluff. "-O3 -m32" generates "xor %eax,%eax; cmpl $0x0,(%ecx); setne %al;" with some messy stack stuff. 08:20:54 I'm sure I could get some other sequences with suitable -march= flags. 08:21:01 () is dereferencing in AT&T parlance? 08:21:30 I think so, yes. There's a lea ...,%ecx somewhere up there. 08:21:41 Alternatively, just use -masm=intel ;-) 08:22:15 Actually I'm using gcc -c + objdump -d, which is the silly way. :p 08:22:31 So it's something like "-M intel". 08:22:44 -Mintel would have been my guess, yes. 08:23:17 * bsmntbombdood does not know any assembly 08:28:35 Some architectures have condition codes for almost all instructions. ARM most prominently, there's a four-bit field for condition code for all instructions, although I seem to recall that there were quite a lot of "special" instructions using some illegal condition code (0b1111, I think) that did rarely useful things. 08:33:49 yeah 08:34:06 but arms don't have branch prediction 08:48:15 -!- tombom has joined. 10:01:20 -!- GreaseMonkey has quit ("X-Chat -> http://xchat.org <- At least when I quit I don't look like a lamer"). 12:10:45 -!- ais523 has joined. 12:11:20 just to annoy all the autoconf-haters out there, I'm working on porting C-INTERCAL to K&R C 12:27:07 -!- neldoret1 has quit (Read error: 113 (No route to host)). 12:32:35 -!- MizardX- has joined. 12:37:10 -!- MizardX has quit (Read error: 104 (Connection reset by peer)). 12:37:29 -!- MizardX- has changed nick to MizardX. 12:38:04 ais523, hi 12:38:09 I'm just about to make a cfunge release 12:38:16 atm the server hosting bzr is down 12:38:20 datacenter issues 12:38:38 someone was digging in the street outside and managed to dig off the cable it seems. 12:38:46 ah, ok 12:38:47 so the bzr bit will be a bit out of date atm 12:39:01 ais523, btw is it vectorize or vectorise in UK English? 12:39:19 err... oh dear, you've hit the -ise vs. -ize debate 12:39:28 ais523, UK English... 12:39:30 the correct answer is that nobody can remember, so using either will work 12:39:41 for the really correct answer, I suppose you could look it up 12:39:42 ais523, I thought z was US and s UK? 12:39:48 it's not that simple nowadays 12:39:52 I see 12:39:54 because the two languages got muddled 12:41:49 en-GB-oed for the win: -ize it is. 12:42:17 I used s and commited and tagged now 12:42:18 so too late 12:42:28 now to upload to sf.net 12:43:03 The rationale is that it comes from Greek 'izare' (modulo the Latin alphabet) and is also pronounced like a z 12:43:33 I.e. it's wrong in every possible way ;-) 12:43:37 -ise, that is 12:43:57 -!- Hiato has joined. 13:00:28 err 13:00:30 "Submit my news to the Slashdot.org Firehose" 13:00:32 what does that mean 13:00:42 when submitting a news for the project on sf.net 13:00:45 ais523, any idea? 13:00:55 AnMaster: the firehose is the list of things that happen on slashdot 13:01:01 so stories, submissions, comments, etc 13:01:09 so should I select it or not? 13:01:18 if your news ends up in the firehose, then the editors might decide to put it on slashdot's front page 13:01:20 so you may as well 13:01:28 it is a rather dry release announcement... 13:01:30 there's no chance it'll happen, of course, but it would be incredibly funny if it did 13:01:42 "Today (2009-03-31) cfunge 0.4.0 was released. This release add support for some more fingerprints (DATE and NCRS), speed up execution quite a bit, and fixes several bugs. Cfunge now needs cmake 2.6 to build (previously cmake 2.4 also worked). See ChangeLog for more details." 13:02:13 ais523, http://slashdot.org/firehose.pl?op=view&id=3967171 13:02:14 heh 13:02:23 * ais523 mods it up 13:02:25 just because I can 13:02:27 oh? 13:02:32 you are a mod on there? 13:02:40 or whatever 13:02:42 *shrug* 13:03:13 also the submitting user looks odd 13:03:23 wait sf.net and slashdot have same owner right? 13:03:29 yes 13:03:29 wait,* 13:03:34 ais523, so can I use same login? 13:03:42 also, anyone who's been on slashdot for long enough (about 6 months) is a mod some of the time 13:03:45 it's determined at random 13:03:55 ais523, oh? 13:03:55 but you can mod the firehose even if you aren't a mod for the main page at that particular moment 13:04:02 how odd 13:04:07 random mods 13:04:10 that sounds like a bad idea 13:04:17 well, it certainly creates a lot of debate 13:04:27 There's also the whole meta-moderation stuff. 13:04:42 Every now and then you get to rate some ratings. 13:05:05 ais523, full changelog at https://sourceforge.net/project/shownotes.php?release_id=672353&group_id=221310 incase you didn't see it before 13:05:10 Or can you metamoderate whenever? Anyway. 13:05:17 you can metamod whenever 13:05:26 "How often can I M2? Several times per day (we adjust this slightly sometimes, to keep M1 and M2 in balance)." 13:05:29 Heh. 13:05:29 meta-meta-mod would be funny 13:05:30 just the link for doing it comes up at random 13:05:37 M1 and M2? 13:05:42 M1 = moderation 13:05:46 M2 = metamoderation 13:05:47 where you moderate moderations 13:05:56 if a person's moderations get modded down too often, they can't moderate 13:06:02 heh 13:06:10 you should be able to mod metamods too 13:06:21 and so on 13:06:25 infinite moderation recursion 13:06:34 "How does M2 affect the moderator's karma? This is a fairly complicated thing. Depending on some randomness, the moderator's karma and a couple of other factors, a particular instance of meta-moderation may or may not change a moderator's karma score." 13:06:37 Very complicated. 13:06:40 likewise, you can't moderate unless your comments have been M1-moderated up more often than down 13:06:58 that's what mostly determines karma, which is basically a sum of all moderations that have happened to you 13:07:26 heh 13:07:51 ais523, so ick is going to release tomorrow? 13:08:08 I'll probably release a beta 13:08:11 right 13:08:15 I'm too busy to get things finalised 13:08:21 ais523, did you figure out the profiler thingy? 13:08:23 but having extra community input would be helpful 13:08:25 and yes 13:08:27 it was an utterly ridiculous bug 13:08:32 details? 13:08:47 what happened was that I forgot to include config.h in one of the files that used the profiler information 13:08:49 but remembered in the other 13:09:00 now, I was using #ifdef and similar to work out the sizes of various things 13:09:02 ais523, afraid that due to the datacenter issue my hosting of your darcs repo is also down btw 13:09:08 same server 13:09:08 ah, ok 13:09:13 so's my email, for unrelated reasons 13:09:17 yeah 13:09:35 ais523, why #ifdef and not sizeof()? 13:09:49 AnMaster: because it depended on the accuracy of the timer functions 13:09:54 hm? 13:09:56 if I had something that measured in nanoseconds, I wanted to use long long 13:10:00 ah 13:10:03 if it measured only in microseconds, i used long instead 13:10:18 so what happened was that libyuk.a thought an array was made of long longs 13:10:18 ais523, I would always use long long, wouldn't really hurt in your case 13:10:20 A giant, snow-covered banjo. 13:10:31 and the generated program thought it was made of longs 13:10:38 s/fizzie/fungot/ 13:10:43 also what style was that fizzie ? 13:10:47 ;P 13:11:01 the generated program was the one that allocated storage, so what happened was that several arrays ended up overlapping in the executable 13:11:21 ais523, no overflows you said though? 13:11:25 The spam style; it was directly a spam Subject: header. I thought it appropriately bizarre. I *could* run my spam folder through fungot's analyzer, but it might be a bit too viagra-rich. 13:11:27 ah, that's the interesting thing 13:11:38 it turns out that the mudflap guard value was never written to 13:11:40 fizzie, yeah 13:11:43 ais523, oh? 13:11:44 it wrote past it, but not to the value itself 13:12:03 and the amazingly high value that you saw for the GIVE UP line was mudflap's guard value at the end of the array 13:12:05 ais523, valgrind's exp-prtcheck would have found that 13:12:14 AnMaster: but it was valid memory! 13:12:25 ais523, yes but even so. It tracks every single pointer and what object it is connected to 13:12:38 so even two objects after each other and the pointer passing would be noticed 13:12:39 -!- fungot has joined. 13:12:40 yes it is slow 13:12:47 AnMaster: I was using array indexing, not pointers 13:12:59 can valgrind really tell a[x] from b[x], where a and b are two different static arrays? 13:13:07 the pointer's pointing to the wrong array at the time it's created 13:13:41 ais523, exp-ptrcheck can yes, it stores what static variable is accessed first time for each instruction that, then assumes future execution of the same instruction will accesses the same one 13:13:45 if not it reports an error 13:13:49 oh, ok 13:13:51 this means false positives sometimes 13:14:00 and that would work because the program always starts at the first lien 13:14:02 *line 13:14:04 err what? 13:14:14 ais523, it works on machine code level, so "line" doesn't matter 13:14:14 so it starts by accessing the [0] element of the array 13:14:21 and it would work with [1] too 13:14:24 AnMaster: no, I mean the INTERCAL program starts at the first line 13:14:27 inside right object 13:14:35 which means that array[0] is the first element accessed, which will be in the right object even if the size is wrong 13:15:08 anyway if you passed the other way, and edited the first variable later that would cause an error too, just the "should be" field wouldn't list the right one 13:15:54 ais523, there is more info in http://valgrind.org/docs/manual/pc-manual.html 13:16:13 see "10.3. How Ptrcheck Works: Heap Checks" and "10.4. How Ptrcheck Works: Stack and Global Checks" 13:16:21 also "10.6. Limitations" 13:16:31 anyway, using long long by default would be mad 13:16:40 I'm trying to port C-INTERCAL to a compiler that doesn't understand const or volatile 13:16:47 ais523, be aware of that it is a bit buggy in last release even. I reported some bugs that are fixed in valgrind trunk 13:16:59 ais523, configure has checks to define them away 13:17:04 yep 13:17:05 also what compiler is that? 13:17:08 bcc 13:17:11 bcc? 13:17:12 it's a K&R C compiler 13:17:14 pre-C89, even 13:17:20 ais523, then you can throw away all the ANSI C 13:17:26 and why are you porting to BCC 13:17:29 it has an -ansi option that runs the code through unprotoize 13:17:30 and because I can 13:17:40 ais523, what platforms can it compile for? 13:17:47 8086, 80386, and 6509 13:17:54 6509? 13:18:08 googling for bcc: 13:18:09 Blind carbon copy - Wikipedia, the free encyclopedia 13:18:11 not sure, but the 6502 used to be popular, and similar numbers generally = similar ICs when it comes to component numbering 13:18:12 See results for: bbc 13:18:17 ais523, link? 13:18:19 AnMaster: "bruce's C compiler" 13:18:21 ah 13:18:37 *6809 13:18:38 whoops 13:18:41 ais523, can't find official homepage 13:18:50 maybe it doesn't have one? 13:18:51 ais523, and what is 6809? 13:19:00 where did you get it then? 13:19:16 from the repos, obviously 13:19:22 same place I get everything else from 13:19:49 what repos 13:19:53 ... 13:20:00 Debian/Ubuntu 13:20:02 oh ok 13:20:14 What else would have something that old? :-P 13:20:19 true 13:20:36 Gentoo amd64 made gcc 4.3.2 stable yesterday btw 13:20:53 wasn't stable on any other platforms (including x86) last I checked 13:21:08 anyway, bcc will take quite a bit of porting 13:21:08 I've got 4.3.3 apparently 13:21:12 IIRC it even has 16-bit int 13:21:21 32-bit long? 13:21:21 Deewiant, so do I on my arch one 13:21:25 yes, must be 13:21:30 32-bit's the minimum for long 13:21:36 Ah. 13:22:18 well, 32-bit int it seems 13:22:18 ais523, anyway now I'm playing around with some of the nice new features in gcc 4.3 for cfunge. Like cold sections for rarely used functions 13:22:19 that's a relief 13:22:21 and such 13:22:26 ais523, why? 13:22:32 Probably won't be very fast arithmetic with int/longs on a 6809, then. It seems to be not that far off from 6502/6510, except that there seems to be a bit more support for 16-bit numbers. 13:22:40 AnMaster: because I think C-INTERCAL fundamentally assumes that int is 32-bit 13:22:48 it shouldn't, but I think it did before I came to it 13:22:51 ais523, in that aspect cfunge is more portable 13:22:52 :P 13:22:54 You can combine the two 8-bit general-purpose registers (A and B) into a 16-bit register D. Or so they say. 13:23:08 ais523, I never use int or long or such where it matters, only stdint.h ones 13:23:42 ais523, I do assume char is 8 bits, I don't assume char is either signed or unsigned though 13:23:48 you're assuming the existence of stdint.h, how modern! 13:23:58 ais523, that would be trivial to construct yourself 13:24:03 well, yes 13:24:11 but you can't force it on other people's program 13:24:12 an include with some typedefs for your local $CC 13:24:28 C-INTERCAL goes to the extent of passing around compile-time -D #defines just to determine whether stdint.h exists or not 13:24:30 ais523, I suspect configure could construct one for you 13:24:50 AnMaster: it's buggy, it defined both uint16_t and uint32_t to unsigned int 13:24:53 which can't be correct 13:25:08 ais523, also cfunge uses -D on command line for results from configure checks too... Since that is default for cmake unless you set up a config.h or such 13:25:11 hmm... unless bcc doesn't have a short, I should test that 13:25:16 and it seemed to work just fine 13:25:19 no need to change it 13:25:27 a lot easier for out of tree builds too 13:25:39 in fact I got no clue if *in* tree builds work for cfunge any more 13:25:42 sizeof(short)=2, that's helpful 13:25:50 and entirely unsurprising, I've never seen a compiler set it to anything else 13:25:55 ais523, define it as in16_t 13:25:59 int16_5* 13:26:01 gah 13:26:03 int16_t* 13:26:27 also, some systems have 32-bit char 13:26:39 so assuming 8-bit char is probably a bad idea 13:26:42 if you want to be portable 13:26:46 ais523, anyway I have seen C89 apps making their own defines based on configure checks for foo_sint32 and such (where foo is some abbreviation for the project name usually) 13:27:00 ais523, well there is no way I can properly do fingerprints then 13:27:06 why not? 13:27:23 well not easily anyway 13:27:38 struct my8bittype { char x : 8}; 13:27:44 heh 13:27:50 there, you have an 8-bit type 13:27:51 ais523, what about padding for that? 13:28:03 AnMaster: that's in the struct, not in x itself 13:28:12 although admittedly trying to use x will be very slow if char isn't 8 bits long 13:28:13 ais523, I mean, I don't want padding 13:28:29 ais523, anyway I also depend on IEEE floats (or as much as 32-bit float and 64-bit double) 13:28:31 well documented 13:28:36 needed for FPSP and FPDP 13:28:55 what about on a 40-bit system? 13:29:23 ais523, actually I don't depend on 8 bit char, I depend on uint8_t 13:29:32 which I think C99 requires in fact 13:29:43 so it is up to the system how it does that 13:29:48 -!- Hiato has quit ("Leaving."). 13:29:59 oh, it seems bcc is normally used to write bootloaders 13:30:00 POSIX 2008 mentions that they notice that they now require char to be 8 bits btw 13:30:02 as it generates real-mode code 13:30:08 ais523, heh... 13:30:10 AnMaster: that's POSIX, not ISO 13:30:20 ais523, ISO defines int8_t too in C99 13:30:23 so :P 13:30:24 yes 13:30:31 really, though, I'm porting to K&R C 13:30:36 ais523, and cfunge needs POSIX anyway. So I'm quite safe. 13:30:45 I spent last night removing C99isms from the C-INTERCAL coe 13:30:46 what do you think of this btw: 13:30:47 *core 13:30:47 __builtin_ia32_movntps(((float*)(void*)&cfun_static_space) + i*4, 13:30:47 *((const v4sf*)(const void*)&fspace_vector_init)); 13:30:49 (although not from IFFI) 13:30:59 ais523, what about the safe vsnprintf thingy? 13:31:01 AnMaster: I hope you have falbacks 13:31:07 ais523, duh of course 13:31:08 AnMaster: I fixed a bug in it 13:31:14 ais523, it works on SPARC after all 13:31:16 and non-GCC 13:31:19 you were referencing iyylineno, even though it wasn't declared anywhere 13:31:30 ais523, I were? huh 13:31:44 it sounds like some yacc thingy 13:31:46 or maybe lex 13:32:06 well, yylineno is an undocumented feature of bison that C-INTERCAL used to rely on 13:32:10 ais523, I remember cleaning up in the flex/yacc thing 13:32:18 ais523, aha 13:32:22 I felt that relying on undocumented features was a bad idea, especially as it had caused bugs in the past 13:32:28 yeah 13:32:30 so iyylineno does the same thing, but is calculated by hand 13:32:32 uint8_t is optional in C99. "The typedef name uintN_t designates an unsigned integer type with width N. ... These types are optional. However, if an implementation provides integer types with widths of 8, 16, 32 or 64 bits, it shall define the corresponding typedef names." 13:32:35 ais523, I see 13:32:54 fizzie: yep 13:33:02 uint_least8_t is manadatory though, IIRC 13:33:17 fizzie, I depend on both signed and unsigned u?int(8|32|64)_t at least, not sure about the 16 bit case 13:33:51 see, there's no love for 16 bit systems nowadays 13:33:51 Yes, well, u?int_least{8,16,32,64}_t are all mandatory. The fixed-width ones are all very optional. 13:34:14 and really, since I require POSIX.1-2001 with the mmap option anyway int8_t will most probably exist. 13:34:30 wow, the asm generated by bcc is beautiful 13:34:50 standard real-mode x86 stuff, it looks just like the asm I used to work with back on DOS 13:35:07 and it even uses decimal points to mark numbers as decimal, I haven't seen an asm format do that since the PIC 13:35:58 ah, that's what the -3 option does, it makes the code 32-bit 13:36:00 ais523, well I might depend on it. But at least on x86_64 (AMD K8 implementation) the 32-bit and 64-bit variants are usually equally fast in cycle count, 32-bit using less memory bandwidth, cache and "pipeline stuff" though, 8 bits is still quite fast, but 16 bits tends to be slower 13:36:01 btw 13:36:03 no wonder my code wasn't running without it 13:36:08 GCC 4.3 supports fixed point 13:36:13 only on MIPS yet though :/ 13:36:39 ais523, decimal points? 13:36:42 in asm? 13:36:43 err what 13:36:54 well I don't know how floats are encoded in asm 13:37:05 AnMaster: no, they're used for integers 13:37:09 to mark them as decimal 13:37:12 12. = decimal 12 13:37:15 12 = hex 12 13:37:17 ah 13:37:18 *.12 = decimal 12 13:37:18 that decimal 13:37:19 right 13:37:37 and floats in asm work the same way as floats in C, or in anything else really 13:37:41 decimals also means "the bit after the ." (or is that a Swedishism?) 13:37:45 the assembler converts them into hex 13:37:52 AnMaster: no, it means that in English too, but only in the plural 13:37:56 "decimal" = base 10 13:38:00 "decimals" = fractional part of a number 13:38:13 ais523, en decimal (a decimal) is correct for one number after the dot in Swedish 13:38:34 as in 3.14 containing two decimals 13:38:44 ais523, what would you say in English there? 13:38:45 hm 13:39:04 "decimal places" 13:39:07 The noun decimal has 2 senses: 1. decimal fraction, decimal -- (a proper fraction whose denominator is a power of 10) 2. decimal -- (a number in the decimal system); ... adj decimal ... 1. decimal, denary -- (numbered or proceeding by tens; based on ten; "the decimal system") 13:39:08 ais523, btw what do you think of this: 13:39:09 static funge_cell cfun_static_space[FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y] 13:39:09 often abbreviated to d.p. 13:39:10 #ifdef __GNUC__ 13:39:10 __asm__("cfun_static_space") 13:39:10 #endif 13:39:10 FUNGE_ATTR((aligned(16))) 13:39:11 ; 13:39:29 AnMaster: what's the __asm__ for? 13:39:52 Defining a label? 13:39:52 ais523, asm name. Otherwise I get undefined refs when doing movntps %%xmm0,0x10+cfun_static_space(%%rax) and such 13:40:03 well depends on compile time options 13:40:04 ah 13:40:11 it works anyway in -O0 and normal -O3 13:40:16 just not with -combine -fwhole-program 13:40:17 :D 13:40:34 (yeah I'm crazy, we established that by now I think, right?) 13:41:10 it's always fun when you do stuff that means you have to care about your optimizer options 13:41:42 ais523, you should download http://downloads.sourceforge.net/cfunge/cfunge-0.4.0.tar.bz2 and make sure it works with IFFI now 13:41:44 just in case 13:41:53 ais523, yes. 13:42:08 AnMaster: IFFI still isn't integrated into the build system 13:42:26 really, you just need to install the library to the right place 13:43:14 hm 13:43:22 ais523, I remember make install copying it+ 13:43:30 that was an old version 13:43:34 ah 13:43:37 although it should be just a quick fix 13:43:43 ais523, in that case I hope it still works 13:43:45 anyway, I need a modern cfunge to test that part of the build 13:43:51 because when I fixed IFFI I assumed it did 13:43:53 so I'll grab that 13:43:54 anyway see that link then 13:44:01 -!- KingOfKarlsruhe has joined. 13:55:31 ais523, btw until the datacenter issue is fixed (which looks like it can take some time) https://code.launchpad.net/~anmaster/cfunge/speedup is the feature branch I'm working on 13:55:42 * AnMaster waits for jokes about the branch name 13:55:54 I don't even need to make the joke, it's too obvious 13:56:01 do you have stability and security branches too? 13:56:45 AnMaster: launchpad? ugh 13:57:44 ais523, good code hosting though 13:57:46 for bzr 13:58:03 ais523, I always have 98% code coverage before releasing 13:58:22 the remaining 2% is mostly code handling "failed malloc" 13:58:26 what does code coverage mean in that case? 13:58:27 which is non-trivial to test 13:58:44 AnMaster: are you using glibc? 13:58:50 ais523, line coverage as measured by gcov after running mycology and various other test suites 13:59:05 add a malloc hook that prompts the user whether to do the allocation or not 13:59:06 ais523, branch coverage is usually around 97% 13:59:15 ais523, err what? 13:59:27 also I'm using glibc on some systems. FreeBSD libc as well 13:59:29 and so on 13:59:32 AnMaster: by defining functions with certain names, you can affect the behaviour of glibc malloc 13:59:53 ais523, I might use optimised variants for GCC or whatever, but I always have pure C + POSIX fallbacks 14:00:37 ais523, also I don't really malloc a lot, a few hundred mallocs during the execution of mycology iirc. Let me profile with callgrind to check call count. a sec 14:03:46 ok around 500 malloc calls when running mycology, 27 from other parts of glibc itself. T 14:04:12 most is due to having to copy the stacks used for fingerprints ops when doing t 14:04:22 260 is due to fingerprint stacks being copied 14:04:34 hmm... is that inefficient? 14:04:42 do you store fingerprint stack as a linked list, or as an array? 14:04:47 a stack can sensibly be stored as either 14:04:52 ais523, array that I realloc when needed 14:04:53 but array plus realloc is probably faster 14:05:07 ah, you have one for each letter 14:05:13 that's why you need so many malloc calls 14:05:15 ais523, yes I need that 14:05:19 due to the specs 14:05:26 well, you know you have exactly 26 letters 14:05:31 ais523, loading and unloading out of order is allowed 14:05:34 and have to work 14:05:39 mightn't you store the stacks all in the same array, using every 26th element 14:05:45 and keep 26 pointers into the array? 14:05:49 interesting idea 14:05:52 well, indexes 14:06:01 that means less allocing's going on, and you still have the separate stacks 14:06:08 malloc overhead is rather small here though 14:06:11 uses slightly more memory, but it's probably faster as one big allocation's faster than 26 small ones 14:06:20 but worth considering 14:06:48 ais523, pushing env in y is what takes most time though 14:07:08 and yeah it is rather optimised, to make it faster I would need to make stack grow down instead 14:07:15 which means I couldn't use realloc 14:07:21 does the env change over the course of the program? 14:07:28 ais523, it could if I implement EVAR 14:07:31 ah, ok 14:07:33 but yes I considered caching it 14:07:35 I was wondering about memoizing it 14:07:47 $ env | wc -c 14:07:48 5350 14:07:48 because after all, y is often called more than once 14:08:22 ais523, I don't push if I can avoid it. As in I map numbers to the cells that would be returned for those with fixed numbers 14:08:28 like the low ones 14:08:36 makes sense 14:09:28 ais523, and I push on a temp stack (allocated once per program run and then reused) when not pushing everything. I do need to re-push yes since some things can change, but I could probably optimise that more 14:09:36 and well if I don't implement EVAR... 14:10:38 stack_push_string was called 38111 times during an execution? hum... Oh wait.. y duh 14:10:48 it is called a lot in HRTI 14:10:56 to add a time delay to test with 14:11:12 (without HRTI mycology is a lot faster btw) 14:11:41 AnMaster: You think cfunge is too fast? Try running stuff through http://iki.fi/deewiant/files/befunge/programs/slowdown.b98 14:11:53 Deewiant, ? 14:12:04 Deewiant, what is that about? 14:12:06 You seem to be running into some kind of speed limits 14:12:13 That should place them a bit further away 14:12:17 Deewiant, yes bit what is that program good for? 14:12:22 and what does it do 14:12:27 It's good for slowing down Befunge interpreters 14:12:33 is it written as a worst case for cfunge or something? 14:12:42 No, for any interpreter 14:13:01 CCBI chokes on it just fine 14:13:07 Haven't actually tried cfunge 14:13:08 wow the link opened in kate. When I tried to safe it to a file it then said it "unknown error when trying to save to http://iki.fi/deewiant/files/befunge/programs/slowdown.b98" 14:13:10 that's silly 14:13:42 AnMaster: you want save as 14:13:54 ais523, yes but saving to url doesn't even make sense 14:13:56 cfunge chokes as badly as CCBI on Mycology, unsurprisingly 14:13:57 clearly you aren't going to be able to save to someone else's website, Deewiant probably hasn't implemented HTTP PUT 14:14:04 of course it makes sense, just nobody implements it 14:14:06 Deewiant, chokes on mycology? 14:14:10 what do you mean 14:14:12 AnMaster: When run through that 14:14:16 Deewiant, usage? 14:14:17 Try it and watch your CPU burn 14:14:23 AnMaster: Pass it a filename. 14:14:28 Deewiant, what about memory usage btw? 14:14:52 Beats me, probably not much worse than normally 14:15:21 Deewiant, it is fast up until "GOOD: p modifies space" 14:15:21 Deewiant: you're writing to the path of the IP in the loaded file, to slow it down every command? 14:15:23 when it slows down 14:15:32 ais523: Nope 14:15:36 Deewiant, what are you doing then? 14:15:37 AnMaster: Yep, that's wraparound 14:15:48 are you interpreting befunge? 14:16:03 No, that's not a befunge-98 interpreter :-P 14:16:11 Deewiant, how do you slow down then 14:16:12 Well, it is in some way 14:16:13 just wondering 14:16:28 Because a Befunge-98 interpreter written in Befunge-98 is actually quite trivial to write 14:16:29 * AnMaster runs it under calgrind for even slower speed to see what is going on 14:16:51 Deewiant, you write to far out funge space I see 14:16:53 So I guess that actually is a Befunge-98 interpreter, now that I think about it 14:16:59 Deewiant: you're copying each element of the other program to the IP's path in yours, to step through it? 14:17:01 since the main time is spent in hash calculation 14:17:14 ais523: Nope 14:17:51 36.397 % is spent in ght_crc_hash (yes I profiled several hash algorithms, and suprisingly crc ended up with overall fastest result of those I tested) 14:17:52 It's nothing clever really, it's just a bit targeted against the way interpreters tend to implement Funge-Space 14:18:06 Deewiant, how do you do it I asked. 14:18:10 Care to describe? 14:18:16 Deewiant: you're moving the target program in fungespace every now and then? 14:18:22 ais523: Just once. 14:18:28 oh, to negative fungespaec? 14:18:31 *fungespace? 14:18:39 well negative funge space isn't that slow for me 14:18:40 oh wait 14:18:41 I ask y for the cell size and generate a random number in the full range a cell can be, then copy the program there 14:18:46 wrapping would end up like that 14:18:50 Do some cleanup and then jump there 14:18:56 Deewiant, that isn't fair, this build is 64-bit! 14:19:06 Which slows down cfunge a bit because it gets out of its static array 14:19:12 And it slows down everything a crapload because wraparound takes forever. 14:19:18 yes 14:19:27 Deewiant, do you replace it all with spaces in the original area? 14:19:31 AnMaster: Yes. 14:19:34 aha 14:19:36 then I have an idea 14:19:37 :) 14:19:47 Solve mycoedge and you can probably speed that up to 'normal' speeds. 14:19:52 Deewiant: how do you handle g and p? 14:19:59 ais523: Sets the storage offset 14:20:01 Deewiant, I planed to update bounds if needed in y though 14:20:07 AnMaster: That's exactly what I meant. 14:20:16 Deewiant, wrapping bounds wouldn't update except when y was called though 14:20:19 in my idea 14:20:27 but wrapping bounds would be updated on the fly then 14:20:30 Deewiant: storage offset? is that in a fingerprint? 14:20:38 ais523, no 14:20:39 ais523: No, it's in the spec, it's what g and p are relative to. 14:20:44 ais523, it is in code with { 14:20:46 oh, I didn't know about that 14:20:47 core* 14:20:57 I thought { just messed with the stack stack 14:21:05 ais523: When you push a new stack on the stack stack, the location of the instruction following the { becomes the storage offset. 14:21:26 ais523: It pushes the old storage offset on the stack below, and } pops it back so as to reset it. 14:21:33 and with some hacks using u to transfer to the stack below you can change it 14:21:39 to set a different offset on first stack 14:21:41 Hardly a hack IMO. :-P 14:21:57 But yes, u allows transferring stuff between the top two stacks so you can set the storage offset to whatever you want. 14:22:08 Deewiant, that's two extra additions for every g or p access! :( 14:22:08 0{02-u0}$$ I seem to have written once; I'm not sure if that's tested, though. 14:22:32 fizzie, why not a plain n after, it is faster;P 14:22:37 fizzie: 01g11g0{2u0} 14:22:53 Where 01g and 11g are just the new offset 14:23:04 Don't you need -2 in u? Maybe I got the directions mixed, then. 14:23:11 -2 goes the other way 14:23:49 Deewiant, btw my { and } are very fast. Doing fast memcpy() to copy between SOSS and TOSS 14:24:13 with some code to handle the zero filling of course 14:24:31 Breaking the stack abstraction makes the instruction pointer cry :'-( 14:24:36 Deewiant, this didn't affect mycology I remember, but some other app. Maybe it was fungot, maybe it was something else 14:24:36 AnMaster: what's yours? 14:24:45 Deewiant, err it is in the stack code 14:24:54 static to stack.c 14:24:55 duh 14:25:03 that implements both stack and stack-stack 14:25:11 Deewiant, so I don't see what you mean 14:25:29 Yes you did or you wouldn't have rebuked it 14:25:50 Deewiant, I see what you mean if I would have exposed this outside stack code 14:26:02 but I have this in stack.h: 14:26:02 bool stackstack_begin(struct s_instructionPointer * restrict ip, 14:26:03 funge_cell count, 14:26:03 const funge_vector * restrict storageOffset); 14:26:08 bool stackstack_end(struct s_instructionPointer * restrict ip, 14:26:08 funge_cell count); 14:26:10 void stackstack_transfer(funge_cell count, 14:26:10 funge_stack * restrict TOSS, 14:26:10 funge_stack * restrict SOSS); 14:26:16 Deewiant: Oh, right, you're doing it *that* way. Right. You need -2 there if you enter the new values inside {}. Didn't think of just slurping the real old storage offset away with u, and letting the } get rid of all the cruft as a side effect. Nice. 14:26:31 Deewiant, basically I don't break the abstraction there 14:27:01 Well, those aren't exactly functions intrinsic to stacks :-P 14:27:43 Deewiant, I have string push and pop for stacks too, and stack_push_vector, and stack_strlen (helps for STRN) 14:27:57 :'-( 14:28:23 Deewiant, internally many of them doesn't actually treat it as a stack, instead doing stuff like asserting that there is enough pre-allocated space on the stack and then just bulk copying 14:28:32 asserting doesn't mean assert() here 14:28:40 but rather stack_prealloc_space 14:29:09 stack_prealloc_space(stack, len + 1); 14:29:09 { 14:29:09 const size_t top = stack->top + len; 14:29:09 for (ssize_t i = len; i >= 0; i--) 14:29:09 stack->entries[top - (size_t)i] = str[i]; 14:29:10 stack->top += len + 1; 14:29:12 } 14:29:17 the const thing there helps GCC optimise 14:29:18 yeah 14:29:43 I looked at the relevant asm code with and without that const 14:29:45 I'm surprised it can't figure out that it's constant by itself 14:30:07 Deewiant, it couldn't in 4.1.2 at least. Haven't checked since I upgraded the compiler 14:30:58 Deewiant, basically I think the alias analysis had been hit by a thrown potion of confusion or something... 14:31:11 even adding restrict to various places didn't help 14:31:12 Deewiant: what is mycoedge? 14:31:12 my copy of Mycology's very old, I should get a new one really 14:31:23 ais523, not released I think, since CCBI fails it 14:31:29 It's something I worked on for about 15 minutes and haven't bothered to finish 14:31:55 that still doesn't explain what it is 14:31:58 Deewiant, do you have a zero-copy STRN N? 14:31:58 or will be, when it's finished 14:32:02 ;P 14:32:16 The point is to check that y always reports the tightest bounds for Funge-Space 14:32:32 ais523, cfunge also fails it yes. 14:32:48 Everything apart from hsfunge fails it, and that's unavailable anywhere 14:32:57 Deewiant, pyfunge manages it iirc 14:33:04 Deewiant: does y's report shrink if you space out the edges of funge-space? 14:33:06 Oh, right, he said something like that 14:33:12 Deewiant, also I may have an old copy of hsfunge around iirc 14:33:13 not sure 14:33:14 ais523: Not in most interps 14:33:20 should it? 14:33:21 Which was the whole point 14:33:22 It should 14:33:26 $ ls ~/funges/interpreters/hsfunge 14:33:26 Eval.hs Fingerprints.hs FungeSpace.hs FungeVal.hs GetSysInfo.hs IP.hs Main.hs 14:33:27 Deewiant, ^ 14:33:31 couldn't build it 14:33:36 gave some error iirc 14:33:37 Even jitfunge has zero-copy STRN N. 14:33:46 fizzie, iirc ccbi doesn't 14:33:55 Admittedly I don't much have a stack "abstraction" there. 14:33:56 What is 'zero-copy STRN N' 14:34:08 Deewiant: Something that doesn't just do pop + strlen. 14:34:14 Deewiant, as in do the length check on the stack, instead of popping, strlen and pushing back 14:34:28 but zero-copy sounds a lot cooler ;P 14:34:32 Oh, I probably don't do that 14:34:50 I maintain the stack abstraction so that my instruction pointers may smile all day long 14:35:16 Deewiant, you have push_vector though iirc 14:35:19 don't you? 14:35:27 It's a helper function separate from stack 14:35:30 mhm 14:35:30 Not in the same module 14:36:09 Deewiant, also I remember a string pushing one 14:36:18 Also a helper function 14:36:29 anyway since string pushing is done so often you really gain a lot in mycology if you implement that as fast as possible 14:36:38 Nothing in stack.d is aware of befunge except for the pop-zero-on-empty 14:37:04 Deewiant, don't you have a clear function though? 14:37:18 that sets top index to 0 14:37:43 It's just pop(size) 14:37:48 Deewiant, anyway I do abstractions where it is useful. That is against other code outside the stack module. 14:38:08 Deewiant, that sounds like my stack_discard(stack, n) 14:38:14 pop just pops one cell here 14:38:26 GLfunge98 borders, as reported by y, aren't really good either. They probably don't shrink, and they're rounded up to a multiple of 64 anyway, since the funge-space is a curious list of 64x64-sized blocks, with direct pointers to a 16x16 region of those blocks for a bit faster usage. 14:38:37 Deewiant, btw does FPDP define that it will take two cells at all? 14:38:44 Yes it does 14:38:48 hrrm 14:38:56 Or maybe not actually 14:39:10 That might have been one where I had to check what RC/Funge does to figure out how it could possibly work :-P 14:39:12 fizzie, that's weird 14:39:16 isn't glfunge98 buggy in other ways? 14:39:18 fizzie, some kind of octtree? 14:39:25 or quadtree I guess 14:39:27 since it is 2D 14:40:00 It's not really that either. It would be very very slow for those not-in-the-16*64-range coordinates. 14:40:04 And it's buggy in very many ways. 14:40:21 It can't even load Mycology without crashing :-) 14:40:42 Yes, yes, well, I'll concentrate on jitfunge if I ever have time for befunge-implementing any more. :p 14:40:45 Deewiant, not defined I think 14:40:50 B(n -- n)Sin of double precision fp number 14:40:58 that implies it could be one or two 14:41:12 Deewiant, I might change it to be one in 64-bit cfunge 14:41:26 Deewiant, it would make it faster in mycology I think ;P 14:41:33 and it shouldn't break anything either 14:41:42 since I follow the fingerprint spec 14:42:19 Deewiant, right? ;P 14:42:26 And it won't 14:42:35 Deewiant, it wont' work? 14:42:39 wont* 14:42:41 Won't break anything 14:45:06 Heh, slowdown.b98 takes a hello world to around 0.1s in CCBI 14:45:23 Deewiant: seems to be found another bug in mycology... heh. 14:45:32 lifthrasiir: Oh, which one? 14:45:34 That FPDP is almost like Java VM with double and long values; it also uses two slots in the constant table, and special instructions like dup2 -- "Duplicate the top one or two operand stack values" -- which is specified as "..., value2, value1 → ..., value2, value1, value2, value1" when values are "of category 1", and "..., value → ..., value, value" for category 2. 14:45:34 lifthrasiir, details? 14:45:58 fizzie, huh? 14:46:01 heh 14:46:17 Deewiant, how do you know how much to pop in FPDP then? 14:46:21 I remember you mentioning this before 14:46:28 when I talked about FPDP in efunge 14:46:35 Bloody cfunge with its static array, being able to run a slowed-down helloworld in 0.01s 14:46:48 AnMaster: Would I need to know how much to pop anywhere? 14:46:50 which would be internally stored as a tagged tupple 14:46:52 Deewiant, AnMaster: see line 381 (y=380 in funge space), w and < in above & below line should be aligned but they are not 14:47:12 Deewiant, my dynamic funge space is rather fast too, I mean not as fast as the static area, but still quite fast. 14:47:26 lifthrasiir: Right you are 14:47:28 You can always just I$ to discard a floating-point, no matter whether it's two stack cells or one. 14:47:30 Deewiant, fungot routinely uses the dynamic area when running underload for example 14:47:30 AnMaster: tk looks awful everywhere;. good scheme systems provide it ( and the numbers on the fields of the three very distinct concepts. 14:47:58 AnMaster: Sure, but I suspect that that's the main reason for the difference; alternately it's y 14:47:59 ^style 14:47:59 Available: agora alice darwin discworld europarl ff7 fisher ic irc* lovecraft nethack pa speeches ss wp 14:48:19 Deewiant, slowdown would move way outside the static area anyway 14:48:23 I saw that when I profiled 14:48:27 well, i was fixing TOYS fingerprint and touched the bug... :p 14:48:40 AnMaster: Yes, but it needs to fill the original area with spaces 14:48:40 Deewiant, and I'm trying to come up with a fast solution for the mycoedge case atm... 14:48:50 "irc" style is the default one, so the recent Freenode service-break made fungot reset back to that. 14:48:51 fizzie: but that didn't have much prostitution in korea too. :p)), there are 66 addresses but some of those key srfi proposals in the same way as block wrt shadowing of return-from when you have sane values 14:48:57 AnMaster: 9000-cell-loop, pushes thousands of cells on stack to set up a kp 14:49:00 Deewiant, yes that would be rather fast. Is it slow under ccbi or something? 14:49:07 AnMaster: Like said, 0.1s for a hello world 14:49:07 Deewiant, "kp"? 14:49:13 AnMaster: kp 14:50:06 also 9000 cells. means around 35 kilobyte for 4-byte cells 14:50:07 lifthrasiir: TOYS was a bit of a pain to test :-P 14:50:11 or doube that for 8 byte variant 14:50:15 double* 14:50:19 Deewiant, that isn't a lot. 14:50:21 really 14:50:31 AnMaster: I wasn't talking about the stack space used 14:50:39 Deewiant, nor was I 14:50:46 I was talking about writing spaces to memory too 14:50:51 AnMaster: I was rather thinking about how many iterations it takes to run through that 14:50:56 funge space isn't on disk 14:51:01 AnMaster: It's around 200k ticks 14:51:14 200k fetches from a hashmap take a while 14:51:32 Deewiant, if you use the TOYS to memset() it could be very fast since it is implemented as a fast loop that uses "best possible cache locality order for cfunge static space" 14:51:51 Yes, I was going to at first but then realized I don't need it 14:51:52 :P 14:52:00 I try not to depend on a fingerprint if I can help it 14:52:00 Deewiant, well it would be even faster 14:52:07 ............. It's called slowdown.b98 14:52:11 It's not exactly supposed to be fast 14:52:11 >"PXIF"4#^(>n2y8*2-2\R1-:+1+:D#v?>\D#v?>01p:11p 31g+12p 01g21g+02pv 14:52:14 that looks like FIXP? 14:52:20 No, I think it's NULL 14:52:24 ... 14:52:31 Since it's slowdown.b98, why are you even using such a blazing-fast method as a kp loop? :p 14:52:43 fizzie: Is there another way? 14:52:55 That's the only thing that can overwrite itself 14:52:58 Deewiant, manual >v style loop? 14:53:06 AnMaster: Won't work, can't overwrite itself 14:53:10 Deewiant, how do you set the delta then after it overwrote itself? 14:53:18 I don't, the delta is correct 14:53:21 oh 14:53:21 fizzie: presumably to do self-overwriting in a few characters 14:53:24 The kp is at (-2,0) and (-1,0) 14:53:35 So it's heading east into (0,0) afterwards 14:53:56 It could still be a manual loop for clearing most of stuff with spaces, and then a kp for final cleanup. But I guess that won't really make much sense. 14:53:56 Deewiant, anyway how do you make sure delta is correct on entry of program? Lets say it 0,0 in the program is a space 14:54:00 I was going to use TRDS to set the tick count correctly as well to make it a completely transparent process but couldn't find a way 14:54:09 you would need a > manually just outside 14:54:10 Unfortunate, that would have been much cooler 14:54:12 which would break things 14:54:26 AnMaster: >kp before (0,0). 14:54:29 Deewiant, aha 14:54:30 right 14:54:30 Deewiant: hah, that's genius 14:54:45 Deewiant, so how much do you push on stack? 2*9000 cells? 14:54:51 that is close to nothing for cfunge :P 14:55:01 I don't know, let's check 14:55:10 Fortunately I have a debugger for this kind of thing :-P 14:55:17 Deewiant, ah that would slow me down ;P 14:55:27 9612 cells at tick 226223 14:55:29 Deewiant, you know you can disable the tracing code at compile time in cfunge? 14:55:33 right 14:55:40 heh, it turns out that my problem (which caused the mycology bug in part) is writing "for x in xrange(size[1]-1, -1, -1):" as "for x in xrange(size[1], -1, -1):". what the heck. 14:56:07 Deewiant, as for TRDS and tick count, cfunge doesn't even track the tick count 14:56:09 why would it 14:56:11 it would slow it down 14:56:24 Statistics are fun 14:56:28 But yes, if you want speed, then whatever 14:56:34 It makes a difference though 14:56:43 slowdown.b98 can't run mycotrds 14:56:45 Deewiant, I actually did track it at one point when debugging to find out when something broke 14:56:46 was way back 14:56:51 like in the beginning 14:56:57 then I ran ccbi's debugger to same tick count 14:57:14 (worked well before y was called, not as good after) 14:57:16 anyway it is simple 14:57:35 volatile uint64_t tick = 0; And a tick++; in mainloop 14:57:43 then just print tick in gdb 14:57:43 volatile? 14:57:51 Why that 14:57:53 Deewiant, to prevent optimising it out... 14:58:03 it could do that since the value was never read 14:58:05 Oh right, you never use it 14:58:06 :-P 14:58:13 exactly 14:58:17 You really should implement TRDS 14:58:24 I estimate a 50% slowdown on all programs from that 14:58:24 Deewiant, thanks but no 14:58:32 and that is quite possible 14:58:38 Well no, probably not 14:58:55 Deewiant, no because I would have cfunge and cfunge.trds compiled with different defines then 14:58:59 wait... I just got an idea 14:59:03 It's a few branches for every instruction, the predictors in modern CPUs should be able to handle them 14:59:15 Maybe not, in which case it might even be 50% 15:00:00 installing cfunge.98.64 cfunge.98.32 cfunge.98.trace.32 cfunge.98.trace.64 and so on in libexec or something, then make cfunge a small wrapper that just selected which one to use 15:00:06 probably would be slower though 15:00:10 due to exec overhead 15:01:18 Deewiant, about compiling out tracing out or not, there is a noticeable difference on my pentium3 for it, but none on my amd64, I guess it is due to branch prediction getting better 15:01:31 lifthrasiir: New Mycology up 15:01:39 thank you! 15:01:50 Deewiant, what exactly does it change? I mean I saw a line number mentioned. But what test is it in? 15:01:53 I didn't test it but they look aligned now :-P 15:02:25 Deewiant: i feel i should make Funge-98 test suite test suite... XD 15:02:26 AnMaster: If TOYS was broken some w's would end up where they shouldn't 15:02:32 lifthrasiir: :-D 15:02:35 ah 15:02:42 well my TOYS should work correctly 15:02:57 Grown men, playing with their TOYS. 15:03:08 lifthrasiir, I found a fair number of bugs in mycology while developing cfunge too 15:03:10 just FYI 15:03:29 And I found the most of all while developing CCBI ;-P 15:04:27 I'm surprised at how unbuggy MycoTRDS turned out to be 15:04:43 And fortunate ;-P 15:04:44 heh, 15:04:52 lifthrasiir: Planning on doing TRDS? 15:05:09 yes, but not before 0.6.0 15:05:15 Nice :-) 15:05:23 Don't bash your head against the wall too much then 15:05:48 lifthrasiir, I would recommend against it. It means changing the whole app probably 15:06:17 He's just saying that because he's a speed freak 15:06:59 What, you mean he uses controlled substances? 15:07:13 "Like profilers and things like that." 15:07:20 Indeed. 15:07:32 haha 15:07:41 I'm not going to go the TRDS route in jitfunge, I presume. 15:07:48 fizzie, kernel level whole system profilers even. Like oprofile 15:07:49 :P 15:08:01 has anyone tried to implement TRDS using continuations? 15:08:11 and how easy would it be? 15:08:24 I can hardly understand either 15:08:24 ais523, does D support them? Or any other language ever used to write a funge98 in? 15:08:36 Deewiant, either what? 15:08:40 C supports them so why not D :-P 15:08:42 oprofile and continuations? 15:08:45 AnMaster: I don't think any of them do officially 15:08:49 AnMaster: TRDS and continuations 15:08:51 there are known hacks to simulate them in C 15:08:52 ah 15:08:57 Deewiant, what about oprofile then? 15:09:00 do you understand it? 15:09:05 I don't even know what it is 15:09:23 Well, a 'kernel level whole system profiler' 15:09:39 Deewiant, kernel level profiler with low overhead, because it uses data from the performance counter thingies found in many modern CPUs 15:09:52 So what does a 'whole system profiler' do 15:09:59 Profile every program in the system simultaneously? 15:10:05 Deewiant, well it always end up profiling every program and the kernel yes 15:10:17 you just have to select from the collected data the part you want 15:10:53 Right 15:11:26 Deewiant, the tools are fairly good but can be hard to use correctly 15:11:54 like, if you wrote 500 instead of 5000 for collection rate for some counters you may end up needing to use the reset button 15:12:01 :-P 15:12:04 -!- oerjan has joined. 15:12:08 oerjan, hiwc 15:12:08 err 15:12:11 hick 15:12:26 ick? never heard of that webcomic 15:12:33 oerjan, that is sv for en:hiccup 15:12:51 I've heard of ick, don't think it's a webcomic yet though (that would be scary) 15:12:58 ais523, augh 15:13:22 hm 15:14:00 Deewiant, when you decide to handle mycoedge correctly in ccbi, how will you do it? 15:14:17 It's one of those things I'm not going to do in CCBI 1 15:14:26 And I haven't thought about the details much 15:14:31 Deewiant, I would suggest using a FPGA and CAM to accelerate funge space :D 15:14:36 to find out the edges 15:14:41 ;P 15:14:47 AnMaster: Are you running things on the GPU yet? 15:14:54 Deewiant, no, my GPU is too old 15:15:03 also I don't think cfunge would benefit much from it 15:15:09 not that type of processing 15:15:14 Or maybe using MPI so you can have a Beowulf cluster running Mycology? 15:15:24 haha 15:15:25 Deewiant, again I think there will be a lot of overhead 15:15:33 would that be faster or slower than just running it on one computer 15:15:33 ais523: hm now that + today's iwc makes me think of a cheesy cartoony INTERCAL tutorial featuring cthulhu and friends 15:15:43 ais523: cfunge is so fast that it'd be a lot slower 15:15:47 but if I get a dual core I may experiment with OpenMP for stuff like initial filling of funge space 15:15:54 It'd be even slower than CCBI, probably 15:15:59 like divide the loop over several CPUs, each filling it's own part 15:16:00 Deewiant, ^ 15:16:01 Maybe even slower than Pyfunge O_o 15:16:37 AnMaster: what about pushing some of the computation onto the GPU 15:16:59 ais523: That's what I just asked :-P 15:17:05 ais523, as I said above, my GPU is too old to be able to do it. Also that is best for branchless stream processing 15:17:09 but funge is very "branchy" 15:17:17 I mean interpreting it 15:17:30 you could use the GPU to store funge-space 15:17:35 and just use it for blitting, etc 15:17:49 why would I need blitting funge space btw? 15:17:59 some fingerprint I assume, But which? 15:18:44 TOYS has a fungespace copy, doesn't it? 15:18:47 Yes. 15:19:09 ais523, yes but that needs to deal with area outside the static area too 15:19:37 basically the only very parallel part in cfunge is initial space filling of funge space, which with SIMD non-temporal stores is very fast anyway. 15:20:23 hm 15:20:39 so anyone have good suggestions for calculating exact funge space edges for y 15:20:53 I would definitely cache result to begin with 15:21:01 Why do you need to do initial space filling for a static array, can't you just use a private memory mapping? 15:21:04 and invalidate cache on writing a space in an edge cell 15:21:36 Jitfunge could try to recognize pieces of code that people commonly use when they do image processing or DSP or stuff like that with Funge-98, and then attempt to auto-vectorize those with SIMD instructions. After all, Funge-98 is so common in the DSP and multimedia world, it would make sense. 15:21:37 Deewiant, that comes zero filled, I did some experiments as ehird suggested by using everything offset by 32, but that turned out slower overall 15:21:49 Oh wait, right 15:21:51 fizzie, haha 15:21:53 A file isn't square 15:21:55 I forgot :-P 15:21:58 Deewiant, that too 15:23:07 fizzie, GCC 4.3 auto-vectorizes by default at -O3 anyway. In older 4.x you had to use -ftree-vectorize, 3.x didn't support it at all 15:23:24 cfunge has long been optimised to allow as much vectorising as possible by both GCC and ICC 15:23:45 there are probably more places that could be vectorised, but quite a few are already done 15:23:51 for example the TOYS sum of stack one 15:23:59 is transformed into some SSE thingy 15:24:56 operating directly on stack (warning: TOYS and FRTH bypass the stack abstraction currently, there are comments about it, yes I know it isn't clean, I plan to move it into stack.c once I find a working API for the relevant operations that isn't too specific) 15:25:28 hm 15:25:35 about scanning edges... 15:26:04 Funny that the sum and stack ops do all elements, instead of taking a number of elements on top. 15:26:23 what about scanning every row from the upper and lower edges for a non-space, then doing same for the left and right edges 15:26:26 s/stack/product/, s/ops/ops in TOYS/ 15:26:33 when the bounds need to be updated for y 15:27:10 Deewiant, btw bashfunge wouldn't slow down because of your code (if it had implemented the needed 98 stuff at all), it had per-row and per-column ranges 15:27:17 iirc 15:27:29 on the other hand it was 93 + a few things from 98 15:27:34 highly non-conforming 15:27:44 it passed the 93 part, but not the 98 part 15:28:08 The rationale is that it comes from Greek 'izare' (modulo the Latin alphabet) and is also pronounced like a z 15:28:08 fizzie, hm maybe 15:28:27 i think that would be 'izein' or something like that, -are is just latin iiuc 15:28:49 Quite possibly 15:28:58 The key point is the z anyway ;-) 15:29:26 -!- neldoreth has joined. 15:29:29 No the key point is to nitpick. 15:30:36 http://www.myetymology.com/greek/-izein.html 15:30:59 Deewiant, how much RAM do you have? if more than 65536 PB you could maybe make a 32-bit funge-space all static ;P 15:31:01 ~ 15:31:20 Maybe! 15:31:23 (is that even physically possible? I kind of loose the sense of numbers when it comes to large enough numbers...) 15:31:41 wait 15:31:49 it would be more than 64-bit could adress 15:31:56 you would need an 128-bit computer I think 15:32:03 yeah you would 15:32:34 A square with a side of 2^32 elements obviously has an area of 2^64 elements, so... 15:32:35 oerjan, "iiuc"? 15:32:44 if i understand correctly, is my guess 15:32:49 as in "if I ? correctly"? 15:32:53 ah 15:32:55 understand 15:32:55 right 15:33:07 fizzie, yes 15:33:24 fizzie, so physically impossible too I guess? 15:33:54 Well, I don't know about that. Certainly rather unlikely with current technology. 15:34:01 65536 doesn't strike me as beyond the realms of possibility 15:34:10 although it would be a bit tricky with modern hardware, definitely 15:34:12 *65536 PB 15:34:13 ais523, in PB... 15:34:26 the entire Internet comes to about 3 or 4 PB, apparently 15:34:32 that's how big the Wayback Machine's archive is 15:34:37 Wikipedia has a "Petabytes in use" list in the Petabyte article. 15:34:37 it is 2^32*2^32*4 15:34:39 and it fits into one storage container 15:35:00 I can certainly imagine 20000 or so of the things all containing data farms 15:35:04 ais523, waybackmachine is far from complete 15:35:08 AnMaster: well, yes 15:35:23 anyway, I think that 65536 would be /possible/ with today's technology, just expensive 15:35:49 ais523, also I think this set of data is infinite should waybackmachine be complete... it would need to crawl itself and crawl the crawls of itself and so on 15:35:51 ;P 15:36:03 nope, it's blocked by robots.txt, IIRC 15:36:12 ais523, hah right 15:36:12 and things that block wayback via robots.txt aren't wayback-archived 15:36:50 As for y, there's a tradeoff between border-shrinkup speed and speed in general. Unless you're willing to do more per-funge-space-write bookkeeping you probably can't do much better than a straight-forward scanning for non-whitespace. But you could do some sort of tricks like keep separate hashmap/static-array of "number of non-whitespace elements in a 256x256 block" counts, updated on every write, which would speed up border-scanning in the pathological case 15:36:51 s where they shrink very much. 15:37:02 Anyway, has to go work → home now, so away. 15:37:28 you could keep a count of nonspaces in each row and each column 15:37:41 that would make fungespace read and write O(1) 15:37:46 whilst letting you know when to shrink 15:37:57 fizzie, hm 15:38:46 ais523, interesting idea... 15:39:07 ais523, it should translate to a simple inc or dec most of the time, with a slight overhead at loading. 15:39:11 yes 15:39:25 you'll also need some memory to store the count in 15:39:35 although an unsigned fungecelltype would be big enough 15:39:37 well 15:40:18 ais523, I optimise for speed rather than memory usage (though I try to keep memory usage down when possible, because that is usually faster) 15:40:56 ais523, actually it wouldn't work outside static space, I would need two 2^32 arrays 15:41:03 I don't have that much ram 15:41:27 just use the same method as you use for fungespace 15:41:32 and growing the array dynamically each time the bounds grow sounds like it could be bad 15:41:32 hm 15:41:39 static arrays for the middle, a hash elsewhere 15:41:42 ais523, you mean hash outside the static area hm 15:41:43 right 15:41:45 that could work 15:42:40 ais523, I need a different hash library though since the current one is special cased heavily for a specific data type (to speed it up) 15:42:51 well, that probably isn't a problem 15:42:54 well I can use same, but a different copy of it special-cased in another way 15:42:58 :) 15:43:26 ais523, I mean it can't store anything but funge cells, since they are inlined in the records themselves and such. 15:43:38 (yes it was faster) 15:43:47 (I profiled compared to having a pointer to the cell) 15:44:07 also the records are allocated from a memory pool that gives out fixed size blocks 15:44:20 anyway just compile it twice with different parameters heh 15:44:29 or 15:44:30 actually 15:46:29 hm 15:46:36 there is the hsearch stuff in libc too 15:47:08 Haha 'I only use Gentoo with -fbroken-math, -fno-stack, and -finfinite-loops.' 15:47:26 Deewiant, who? 15:47:31 also that is a joke obviously 15:47:42 what would -finfinite-loops do, anyway? 15:47:49 the other two I can sort of guess 15:47:51 It inlines finite loops 15:47:59 heh 15:48:01 I know a lot of sane gentoo users. It is just a urban myth that all would do like that. I know one single gentoo user that used to use risky CFLAGS... 15:48:14 he stopped after a while 15:48:25 I think omit-frame-pointer is risky :-P 15:48:28 Deewiant, -march=k8-sse3 -pipe -O2 -g is what I use 15:48:34 and I don't ever use omit-frame-pointer 15:48:45 It's the default on gentoo though 15:48:48 Deewiant, no 15:48:50 Or was, at least 15:49:20 Deewiant, I used gentoo since 2005, and it hasn't ever been default 15:49:37 actually late 2004 even 15:49:42 Hmm, maybe it was just a recommendation on the wiki for 'safe CFLAGS' or something 15:50:05 Deewiant, yeah, but that wiki is edited by users, and not even an official gentoo project 15:50:16 Yes, I'm aware 15:50:20 it is good often yes, good howtos for many things 15:50:28 Not anymore now that they lost their data 15:50:40 -!- neldoreth has quit (Read error: 104 (Connection reset by peer)). 15:50:47 -!- neldoreth has joined. 15:51:03 Deewiant, archive exists and people are checking that the howtos aren't outdated (a lot were) and adding them back 15:51:09 anyway on gcc 4.3 I would just recommend -O2 -march=native -pipe 15:51:16 -pipe just makes gcc use less temp files 15:51:19 Deewiant: why do you think omit-frame-pointer is risky? it's part of -O3, IIRC 15:51:21 between preprocessor and such 15:51:25 instead using pipes 15:51:27 and the compiler doesn't do it in the situations it doesn't work 15:51:33 it just makes debugging harder 15:51:40 You never know when you want to debug 15:51:50 which usually means around 5%-7% saved on compile time for large apps 15:52:13 ais523, is it part of -O3? That sounds wrong 15:52:49 maybe the omitting leaf frame pointer is default at -O3... 15:53:09 (a separate, more conservative flag) 15:53:16 Evidently it is part of -O3 on x86-64 15:53:18 But not on x86 15:53:19 AnMaster: -pipe will bork gcc /really/ badly on DOS 15:53:37 ais523, ok maybe. But I recommend using it on all sane systems 15:53:43 actually, I think DJGPP works around it, by running the processes one at a time and using temp files 15:53:53 Deewiant, iirc it isn't needed really on x86_64 15:53:54 either that, or it's simply turned off in the DOS version of gcc, that wouldn't surprise me 15:54:06 Deewiant, btw it is _ not - iirc 15:54:26 Linux tux.lan 2.6.27-gentoo-r8-1 #1 Sat Jan 31 04:55:36 CET 2009 x86_64 AMD Sempron(tm) Processor 3300+ AuthenticAMD GNU/Linux 15:54:27 yep 15:54:34 AnMaster: "It" is either AMD64 or Intel 64 these days 15:54:34 I never seen it with a - instead of _ 15:54:47 Deewiant, yes AMD64 or IEMT64 or something 15:54:49 And yet the Wikipedia article is called x86-64 15:54:52 forgot what the intel called it 15:54:56 s/the/ 15:54:59 AnMaster: Intel 64 these days, as I said. 15:55:02 heh 15:55:08 AnMaster: EM64T earlier. 15:55:12 ah 15:55:15 And IA-32e before that. 15:55:20 ... 15:55:23 that's silly 15:55:26 IA-32e 15:55:26 heh 15:55:59 AMD's original designation for this processor architecture, "x86-64", is still sometimes used for this purpose, as is the variant "x86_64". 15:56:08 x86-64 is /more/ correct. 15:56:28 (If you define the ordering relation on correctness correctly.) 15:57:23 Deewiant, Gentoo calls it amd64, gcc and other parts of toolchain calls it x86_64 15:57:38 AMD64 I can understand, x86_64 I can't. 15:57:56 Nor the banal x64. 15:58:05 lrwxrwxrwx 1 root root 59 21 jul 2008 /etc/make.profile -> ../usr/portage/profiles/default/linux/amd64/2008.0/desktop 15:58:26 Deewiant, that is microsoft making a mess 15:58:41 It's other companies as well, might have started with MS though. 15:58:46 microsoft invented "x64" 15:58:51 Deewiant, oh? 15:58:59 AnMaster: At least Sun uses it also. 15:59:02 I guess it looks cooler 15:59:07 and more markety 15:59:43 -!- neldoreth has quit ("leaving"). 16:00:26 -!- neldoreth has joined. 16:01:24 hm 16:01:39 how is a struct that is passed by value passed on 32-bit x86= 16:01:39 ? 16:01:48 on stack right? 16:01:57 And in registers for x86_64 right? 16:01:58 depends on the compiler 16:02:02 Beats me, I don't know the C calling conventions beyond integers 16:02:11 And even those only for x86-64 :-P 16:02:15 IIRC with the right compiler flags, gcc will pass it in a register if it fits, and on the stack otherwise 16:02:29 ais523, lets say GCC with __attribute__((regparm(3))) 16:02:31 :P 16:02:41 12:56 ais523: AnMaster: launchpad? ugh 16:02:41 12:57 AnMaster: ais523, good code hosting though 16:02:43 12:57 AnMaster: for bzr 16:02:45 oh come on 16:02:46 gcc-bf will pass it in registers if the total size of the arguments is 32 bytes or less 16:02:56 you can't redeem launchpad with *bzr*, that's opposite world :-) 16:02:56 ehird, since when do google code hosting have bzr? 16:03:11 AnMaster: look up false dichotomy some time 16:03:16 what ais523 said 16:03:21 11:39 AnMaster: ais523, btw is it vectorize or vectorise in UK English? 16:03:21 11:39 ais523: err... oh dear 16:03:24 my thoughts exactly 16:03:25 ais523, well bzr would be a hard requirement 16:03:27 for me 16:03:39 AnMaster: why not just get a webserver that runs bzr, and push there? 16:03:44 that's the same way you host any other dvcs 16:03:54 ais523, as I said there were data center issues. And that is what I used before 16:03:59 (ais523: objection; i use github :-P) 16:04:01 just temp using this way 16:04:22 ehird: you know I don't agree with github's terms of use 16:04:29 i think they fixed them 16:04:29 maybe 16:04:32 not sure 16:04:37 am I the only person in the world who doesn't use a website due to not agreeing to its terms of service? 16:04:43 but it doesn't change the fact that I do use it 16:04:46 given that only about 5 people are likely to have read them? 16:04:52 so "that's the same way you host any other dvcs" is wrong 16:04:53 apparently there's another bug in them, not just the adblocker thing 16:04:57 ais523: Oh? 16:04:59 Like what? 16:05:03 Are you sure you're not thinking of another site? 16:05:06 I can't remember offhand, let me read them again 16:05:12 it was on proggit a while back, though 16:05:18 ais523: that was about sourceforge 16:05:19 not github 16:05:23 oh, maybe 16:05:25 and that was wrong too, btw 16:05:27 what was the bug there? 16:05:30 it was only referring to non-code content 16:05:40 ais523: "we, sourceforge, have an exclusive license to do what the fuck we want with your stuff" 16:05:45 but it was only referring to non-code content you submit 16:06:07 even so, people might want to store non-code stuff there 16:06:15 and "exclusive"? that rules out pretty much all documentation licences 16:06:32 sf is obsolete anyway 16:06:35 -!- neldoreth has quit ("leaving"). 16:06:42 hmm... github have the facebook bug 16:06:48 -!- neldoreth has joined. 16:06:49 hm? 16:06:52 where they can change the ToS without notice and you have to comply with the new ones 16:07:02 ais523: that's not the "facebook bug" 16:07:05 that's in every website tos ever 16:07:10 well, yes 16:07:17 but it became famous wrt facebook 16:07:17 if you don't want to comply with the new terms, stop using the site 16:07:20 simple enough 16:07:22 not a bug 16:07:24 IMO they should have to give you an advanced warning so you can pull your stuff if you disagree 16:07:33 they can grab the copyright to your uploaded content, though, etc 16:07:36 AnMaster: err... sourceforge do 16:07:41 oh, you mean github? 16:07:45 well, no 16:07:46 ehird, I mean in general 16:07:52 I know sf.net give advance warning yes 16:07:52 -!- BeholdMyGlory has joined. 16:07:54 it's their right to put whatever terms they like 16:07:58 but facebook didn't 16:08:01 They would probably warn 16:08:05 " where they can change the ToS without notice and you have to comply with the new ones" 16:08:07 but requiring a warning is dumb 16:08:08 see the without notice bit 16:08:13 that is what I'm talking about 16:08:18 yes. you're wrong. 16:08:24 (but that's never stopped you) 16:08:28 .. 16:08:33 it seems ais523 agreed with me here 16:08:47 So? 16:08:50 Doesn't stop it being wrong 16:08:57 github also doesn't allow you to use significantly more than average bandwidth for their customers 16:09:00 *users 16:09:07 thinking about it: how many inactive accounts are there on github? 16:09:16 quite possibly /all/ the active ones are using significantly more than average 16:09:28 well you didn't say " yes. you're wrong." to him. You were much ruder to me 16:09:34 as usual 16:09:41 AnMaster: because you're wrong far more often, and you always state it far more idiotically 16:09:53 and, to boot, you irritate me greatly so if you feel offended that's great 16:10:33 even wikidot, which is pretty awful, doesn't have that particular ToS bug: "Registered users will be presented with the changes, and the option of accepting the new Terms, or canceling their account, at their next authenticated visit to the Services. If you are a registered user and you choose to continue to use the Services, you agree to be bound by the new Terms." 16:12:20 likewise, Google's terms of service (for Google Docs at least) state that the new terms are only binding on you if you continue to use the service about being notified of the change 16:12:28 although strangely, if you want to cease to agree to their terms you have to do it in writing 16:13:35 ehird and I are known to disagree a lot, but for some reason I don't annoy him all that much when I disagree with him 16:13:45 ais523: you disagree with me in a less irritating fashion. 16:14:06 yeah I wonder what is wrong with ehird... 16:14:26 AnMaster: maybe something to do with the fact that you're an irritating idiot but I can't /ignore you lest I lose 50% of context in here. 16:14:54 ehird, wait, didn't you mix up "you" and "I" there? 16:15:10 I think you would be less irritating if you didn't make pathetic attempts at insulting humour 16:15:12 actually no, you aren't an idiot, just annoying 16:15:20 AnMaster: "I're an irritating idiot"? your grammar is slipping 16:15:45 ais523, well of course the grammar would need fixup after replacing 16:15:58 like 're to 'm and so on 16:16:30 anyway I wouldn't call ehird an idiot. But annoying and over-reacting yes, as well ass rude and several other things. 16:16:34 But not idiot. 16:16:40 ass rude 16:16:41 xD 16:16:45 ah 16:16:54 a typo that was indeed rather funny 16:16:59 meant "as" of course 16:17:46 why do people here think asses are intrinsically funny anyway? 16:18:11 ais523, well donkeys do sound rather weird. Maybe because of that? 16:18:38 "donkey" is funny, but "monkey" is funnier still 16:18:46 based on the sounds of the words, nothing to do with meaning 16:18:55 ais523, but ass isn't a synonym for "monkey" 16:19:29 well, yes 16:19:33 it also doesn't sound like "donkey" 16:19:37 ais523, btw Swedish use one word for "monkey" and "ape", causing some issues when translating Discworld books 16:19:39 rather funny 16:19:45 ah, brilliant 16:19:50 how do they get around the problem? 16:19:57 monkey and ape same word? How creationist. 16:20:05 ehird, both are "apa" 16:20:46 ais523, using an older form of it, "apekatt", which sounds very out of place. So a very poor solution. 16:21:01 and confusing, until I read the English books 16:21:16 until I realised what the translator was trying to express 16:21:20 err spelling? 16:22:48 ais523, I have seen one case with a translators footnote basically saying "here I had to give up", think it was for Soul Music and the name of one of the main characters 16:22:53 * ehird helps friend install Ubuntu on a new laptop, remotely, via MSN 16:22:55 was in* 16:22:56 This will be *fun* 16:23:03 via MSN 16:23:09 Yes. Via MSN. 16:23:10 "Insert CD, follow instructions, and you're done." 16:23:16 Deewiant: Well, yes, that's what I'm hoping for. 16:23:25 But you never know with the newfangled hardwares these days. 16:23:29 ehird, does the CD have pigin or such? (or whatever the name currently is of that software) 16:23:34 AnMaster: Yes. 16:23:50 AnMaster: It has all the software that it has post-installation 16:24:04 just it's slower before it's installed 16:24:09 because it has to keep reading from the CD 16:24:09 Well duh 16:25:30 ais523, many livecds tend to use ramdisks? 16:25:42 AnMaster: loading all the software into RAM? 16:25:43 well mostly the minimal ones I guess 16:25:47 It runs on low-RAM machines, you know. 16:26:07 ehird, at least the gentoo minimal install cd (around 70-90 MB iso iirc) has such an option 16:26:13 as a boot option that is 16:26:38 along with the other ones like "noacpi" and such 16:26:57 though it was a few years ago I last looked 16:27:00 Actually the story _before_ this installation was more amusing. 16:27:06 oh? 16:27:14 His male parental overlord ... thinks he knows computers. 16:27:25 WiFi routers are bad because people can steal your internet, and they give off cancer-causing radiation. 16:27:38 Ubuntu and non-Norton virus scanners and Firefox are less secure and you should not use them. 16:27:43 etc. 16:27:55 You can infer the rest :-P 16:29:24 well, people can steal your internet if the router isn't set up properly 16:29:30 why is he being allowed to install ubuntu anyway? 16:29:38 norton doesn't even run on it 16:29:45 ais523, btw I begin with writing straight-forward possibly slow code when adding new features to cfunge, then profile and optimise. It makes it a lot easier to do it correct. And hopefully mentioning this reduces jokes about cfunge's speed... 16:30:05 ais523: After a few days: "Well fine you can install it but i'm not happy about it" 16:30:11 "Grumble grumble mumble etc" 16:30:24 ehird, shared or own computer? 16:30:34 AnMaster: he got this laptop a few days ago. 16:30:37 mhm 16:33:29 -!- BeholdMyGlory has quit (Remote closed the connection). 16:33:50 Ikea = awesome. This fact brought to you by ehird. 16:35:39 ehird, why do you think they are awesome? 16:35:46 I don't know. I just like the atmosphere :P 16:36:09 * ais523 tries to visualise a flat-packed IKEA, assembly required 16:36:19 after all, prefabricated buildings aren't exactly unknown 16:36:29 :-D 16:36:33 ais523, you mean an IKEA store itself packaged like an IKEA thing? 16:36:35 heh 16:36:48 I love the bit behind all the actual on-display stuff 16:36:48 ais523, might be rather... large? 16:36:52 Where it's just racks and racks and cardboard boxes 16:36:56 AnMaster: yep, you'd probably need a couple of lorries 16:36:57 It's kind of surreal 16:37:05 ais523: have you seen how huge IKEAs are? 16:37:05 ehird, like any other IKEA store? 16:37:09 they're ginormous! 16:37:10 AnMaster: yes 16:37:17 ais523: you'd need like 100 lorries 16:37:28 ehird: they're mostly full of air, though 16:37:34 True. 16:37:35 I admit that the surface area of the walls would come to quite a bit 16:37:38 Those ceilings are terribly high 16:37:51 AnMaster: "it's called cfunge because it's as slow as watching mushrooms grow"? 16:37:57 ehird, IKEA also sells stuff which isn't flat packaged, like plates and glasses and such 16:38:05 at least here in Sweden 16:38:07 AnMaster: oh, I know that 16:38:20 there's also a little shop at the entrance where they sell stuff from Sweden 16:38:35 they have some nice biscuits I forget the name of 16:38:39 but yeah IKEA usually means impossibly compactly packed with an allen wrench included 16:38:57 there's also a little shop at the entrance where they sell stuff from Sweden <-- never seen that... 16:39:06 I guess it is non-Swedish IKEA only 16:39:19 Well duh. 16:39:22 yeah 16:39:32 ehird, what are those small stores like? 16:39:39 hm 16:39:52 AnMaster: Sort of like... erm... 16:39:56 I dunno. 16:40:01 They're very small 16:40:03 mhm 16:40:14 that would be rather a contrast compared to IKEA itself 16:40:59 Yes. It's like someone snuck it in through the entrance and fitted it on to the walls and everything is so far away from each other since IKEA is so big that nobody in charge has noticed yet. 16:41:07 -!- KingOfKarlsruhe has quit (Remote closed the connection). 16:41:18 hm are IKEA over there more than one floor? Or Just one? Usually just one here in Sweden though I have seen some with more 16:41:34 Just one massive floor. 16:41:38 right 16:41:46 Although considering how high the ceilings are you could fit about 5 more in. 16:41:47 the one in Trondheim is two. 16:42:08 ehird, with a restaurant near the middle of the path you walk before reaching the box area? 16:42:15 assuming they have same layout 16:42:18 as the ones around here 16:42:23 Er. I don't think so. 16:42:45 where you have to walk something like a Hilbert space filling fractals with items on all sides 16:43:04 definitely like that here 16:43:11 ah 16:43:18 The box area is what I mentioned before. 16:43:22 No recollection of a restaurnt. 16:43:50 ehird, yes but there is more than the box area, an area before where you can look at items assembled and such 16:43:50 I imagine not all IKEAs are identical 16:44:01 ais523: it wouldn't surprise me 16:44:01 ais523, true, but they have the same basic idea 16:44:09 I imagine all Apple Stores are identical, for instance 16:44:11 ais523: i've heard nearly all IKEA's _are_ identical 16:44:12 they vary a bit, but not that much 16:45:16 one floor usually sometimes two, slightly different physical dimensions to fit into local geography, add a small "Swedish exotic store" if not located in Sweden (don't know about Norway, I would assume they don't have such stores there either oerjan?) 16:45:20 the ads they had here even said "remember to eat at the cafeteria" 16:45:20 and such 16:45:34 oerjan, that I haven't seen 16:46:02 the one here have a combined restaurant/cafeteria indeed though 16:46:06 has* 16:46:56 Whee, he has managed to burn the CD correctly. 16:47:07 Before that Windows decided to burn the ISO file as the single content of it. 16:47:13 Thanks, Windows. 16:47:28 -!- FireFly has joined. 16:48:33 AnMaster: also, i think you can at least buy swedish food like kjöttbullar there, i didn't notice any specifically swedish store 16:49:04 oerjan, that isn't Swedish. It is Norwegian. Swedes would never add that j 16:49:11 ;P 16:49:12 of course this is Norway, where some people regularly take trips to sweden to buy things that are cheaper there 16:49:20 not? google failed me then 16:49:28 oerjan, köttbullar 16:49:33 oerjan: are fjords nice? 16:49:45 yeah they are a Norwegian speciality! 16:49:48 somehow i googled kjöttbullar and got a hit 16:49:59 also new zealand i hear 16:50:07 AnMaster: i think you should give slartibartfast more credit 16:50:12 oerjan, err? 16:50:21 they have fjords? 16:50:24 AnMaster: yes 16:50:28 mhm 16:50:45 ehird, I never was against giving him credit. 16:50:49 where did you get that idea? 16:50:52 all you need for that are mountains and a previous glacial age, i presume 16:50:54 you said Norweigan specialty 16:51:19 the norwegian specialty would be kjøttkaker 16:51:29 ehird, well slartibartfast placed them in Norway obviously (I didn't know they existed in new zealand too at that point) 16:51:41 (kjøttboller exists too, but kjøttkaker is what was voted our national dish iirc) 16:51:45 but couldn't they be the speciality of both Norway and slartibartfast 16:52:16 oerjan, poor Norwegian vegetarians 16:52:23 indeed 16:52:35 * AnMaster wonders what the Swedish national dish is 16:52:40 norway is definitely not known for its veggie food 16:52:41 do we even have one? 16:52:52 I can also æø 16:53:15 FireFly, äö/æø would mean? 16:53:21 Well 16:53:22 As in 16:53:24 Wow. His video card was supported out of the box. Full resolution. 16:53:30 Luxury. 16:53:32 ehird, what brand and model? 16:53:43 AnMaster: well köttbullar seems to get high on the list 16:53:45 I can also write the characters 16:53:46 I meant 16:53:48 http://wiki.answers.com/Q/What_are_Sweden's_national_foods 16:53:52 anyway since it isn't debian but ubuntu I wouldn't be surprised ehird ;P 16:54:15 AnMaster: http://www.samsung.com/uk/consumer/detail/spec.do?group=itbusiness&type=notebookcomputers&subtype=rseries&model_cd=NP-R610-FS03UK&fullspec=F, which says: 16:54:16 NVIDIA GeForce Go 9200M GS (Dedicated Graphics) 16:54:17 Intel® X4500 (Integrated Graphics) 16:54:22 although I don't know which it is 16:54:37 ah 16:54:45 ehird, have him do lspci? 16:54:48 actually forget that 16:54:53 if he is not computer literate 16:54:55 AnMaster: I think I'd rather not scare him off. :-) 16:55:45 hm wait i see claims norway's national dish is/was fårikål 16:55:55 ehird, anyway nvidia drivers usually work almost out of box once they are compiled and installed. And Intel like Linux and contributed bug fixes to the open source drivers 16:56:01 ("sheep in cabbage") 16:56:02 so I'm not really surprised for either case 16:56:58 ehird, lucky it wasn't ATI/AMD graphics... Though even that is starting to get better slowly after AMD bought ATI 16:57:04 Mm. 16:57:34 more humorously, in modern days it's Pizza Grandiosa (a norwegian shrink-wrap pizza) 16:57:58 ehird, still nvidia-drivers tend to just work, issue is when they stop supporting some old card in new drivers and the last working driver ends up failing with newer kernels. 16:57:59 :/ 16:58:13 * AnMaster wonders how long his own 7600 will be supported 16:58:14 Yeah but even with nvidia I have to let ubuntu asy "oh hai you need these drivers" 16:58:38 ehird, hm ok, If 3D works I guess it is intel then 16:59:08 afk 17:06:06 afk too 17:14:29 Since Ubuntu is freeware it'll make money through advertising so you have to download an adware and spyware scanner 17:14:34 * ehird facepalm 17:16:10 oh brother 17:16:34 yes, open source spyware is very common. -_- 17:16:42 Robdgreat: how else will ubuntu corporation make money duh 17:16:54 certainly not through support 17:16:55 ehird: by being given it all for free by a rich millionaire 17:17:04 ais523: ha ha nerds don't have money! 17:17:15 the funny thing is that that /is/ the real method... 17:17:32 hey, it works 17:29:00 ais523: "rich millionaire"? 17:29:22 well, millionaires aren't necessarily rich nowadays 17:29:24 unfortunately 17:29:28 wait 17:29:34 many of them are just barely scraping by trying to live in London 17:29:42 "so you have to download an adware and spyware scanner" <-- are those freeware ones since you can download them 17:29:47 AnMaster: :-DDDDDDD 17:29:55 this adware scanner is supported by ads! 17:30:07 actually, many freeware programs pretending to be spyware scanners are themselves spyware 17:30:17 yes I know, but I was trying to be funny there 17:30:23 stop ruining the joke ais523 17:32:08 that wasn't ruining the joke 17:32:13 the joke had already happened 17:32:27 also: " AnMaster: :-DDDDDDD" 17:32:34 oops 17:32:37 ehird: is something wrong with you? You actually liked AnMaster's humour 17:32:42 :x 17:33:03 * ais523 kicked ehird from #esoteric (obviously an imposter) 17:33:40 ehird, anyway it should be interesting to watch the reactions if that dad of your friend was told this contradiction (first check he doesn't use shareware ones... just in case) 17:33:51 AnMaster: I think that would be playing with fire 17:34:01 AnMaster: But seriously, this guy likes *Norton*. 17:34:06 That's McAffe, you know? Symantec? 17:34:11 Worst virus scanner ever? 17:34:30 I'm not sure it's the worst altogether, it has some pretty strong competition 17:34:30 It was the best 20 years ago 17:34:32 ehird, err isn't McAffe or whatever separate from the Symantec one? 17:34:36 Well yeah 17:34:39 but hooking into everything in the OS is pretty annoying 17:34:41 And McAfee is different, yes 17:34:41 Same company 17:34:45 and putting toolbars on everything is pointless 17:34:51 anyway, what would a good antivirus be on Windows? I have no clue 17:35:07 also, did you know that Symantec have a downloadable program specifically to uninstall Norton 17:35:13 because the packaged uninstaller doesn't work properly? 17:35:20 heh that was news to me 17:35:22 AnMaster: do you mean one that already exists, or in theory? 17:35:40 AnMaster: Nod32, AVG. 17:35:41 ais523, one existing that you could recommend to computer illiterates 17:35:43 I rather like clamav, even if I only run it because the University wireless rules say you have to have a virus scanner 17:35:44 mhm 17:35:57 ehird, I ran into Panda once, it seemed just as bad as norton 17:35:59 but I don't think there's a Windows one like it 17:36:02 AnMaster: Panda? 17:36:10 ehird, Panda Antivirus yes 17:36:11 Ok. 17:36:17 As far as firewalls go, Comodo is quite good. 17:36:21 ClamAV is supposedly rather crap 17:36:21 ehird: AVG is really self-centered, it pops up lots of useless dialog boxes about how great it is all the time 17:36:30 Deewiant: its interface is good, though 17:36:33 ais523: Yes, well, the actual virus checking is good 17:36:33 ehird, personally I prefer pf, a pitty it doesn't exist for windows 17:36:40 AnMaster: cygwin? 17:36:40 or linux 17:36:44 ah 17:36:45 I don't really care about the interface when it comes to virus checkers :-P 17:36:51 ehird, I doubt you could run pf on anything but *BSD 17:36:52 Deewiant: anyway, does it matter, what would it be looking for anyway? 17:36:57 nod32 is good, anyway 17:36:58 too hooked into the BSD style kernels 17:37:01 it's hand-coded entirely in asm 17:37:03 all of it 17:37:06 which is crazy 17:37:12 and also it's quite expensive shareware 17:37:12 ClamAV looks out for Windows viruses, and logic bombs like infinitely large zip files 17:37:18 but its memory footprint is close to 0 17:37:19 F-Prot wasn't too shabby, back then. 17:37:23 and its virus checking is excellent 17:37:30 hm 17:37:48 F-Prot is what turned into F-Secure, I guess. 17:38:11 what worries me is what would happen if Linux gets popular enough that it will become interesting for virus makers, yes there have been a few for it iirc but not really a lot 17:38:18 [18:36:48] I don't really care about the interface when it comes to virus checkers :-P <-- Well, me neither, within certain bounds 17:38:24 AnMaster: It has an OK security model built in. 17:38:31 "Anti-viruses" are a laughable concept. 17:38:37 ehird, yes true, but even so there have been bad things 17:38:40 Why remove viruses when you can fix them> 17:38:46 For example, I dislike Norman Antivirus' interface 17:38:48 ehird, vmsplice() to mention to last one 17:39:02 ehird, hum? 17:39:15 fizzie: F-Prot still exists. 17:39:23 AnMaster: when you can fix the security issues that let them work 17:39:24 It's just not F-Secure's F-Prot. 17:39:27 Deewiant: Yes, Google said so. How curious. 17:39:51 fizzie: The F-Prot engine was always licensed from Iceland. 17:39:51 "F-Secure is historically related to FRISK Software International, a company based in Iceland, which publishes F-Prot antivirus. The original F-Prot conglomerate of Icelandic, Finnish and American computer antivirus researchers fell apart during the early 1990s and the resulting companies divided the global market." 17:39:53 Sounds messy. 17:40:16 Conglomerate is a fine word, though. 17:40:16 anyone know a fast way to calculate if something is on the edge of a box? I'm looking for bithack style stuff in this case. I mean I know how to do it simple 17:40:22 integer coords 17:41:48 ehird, well you can still make a virus that manages to mess up the files of the user, which most users would probably consider rather bad. 17:41:57 or equally bad even 17:42:02 Heh, the likelyhasbetween(x,m,n) macro in http://www-graphics.stanford.edu/~seander/bithacks.html#HasBetweenInWord is by mooz. 17:42:11 likelyhasbetween? 17:42:26 AnMaster: That's fixable by a capability-based security model. 17:42:34 ais523: "Determine if a word has a byte between m and n", but with a probability of false positives, so it's just useful for a pretest. 17:42:45 AnMaster: Anyway, it'd be trivial to make one of those. Advertise new linux software, make the installer a bunch of nops and rm -rf ~ 17:42:47 fizzie, need more than byte range. 16 bit integer would work though 17:42:51 But viruses generally aim for more. 17:43:16 does anyone use likelyhasbetween, btw? 17:43:22 I can't think of an obvious use-case for it 17:43:25 ehird, well infect the user's shell ~/.bashrc and .xinitrc and so on 17:43:29 and do other tricks 17:43:32 might be possible 17:43:38 ais523: strlen>? 17:43:39 AnMaster: infecting bashrc would be ridiculous 17:43:43 ais523: It was designed for a real need, yes; I vaguely remember the conversation leading to it. 17:43:47 read one word at a time, likelyhasbetween 0 17:43:49 it would be easy to notice, possibly by accident 17:43:51 if it does, then check it further 17:44:00 ehird: I mean, why are you doing the check in the first place 17:44:04 ais523, .xinitrc or some gnome/kde specific autoload stuff hidden somewhere 17:44:06 or such 17:44:08 ais523: ? 17:44:27 oh, "Determine if a word has a zero byte " 17:45:06 actually I'm not looking for if it is in the box fizzie, but *on* the edge. 17:45:08 hm 17:45:21 ais523: Actually, come to think of it, it might've just been a further development of the "determine if a word has zero byte" solution. 17:46:40 the bithacks page reminds me of INTERCAL 17:47:07 I wonder what those would look like translated to the simplest equivalent INTERCAL expressions? Shorter or longer, I wonder? 17:47:26 I ought to get me an editor with which to edit haskell. 17:47:46 don't you have an emacs already? 17:47:52 Yes. 17:49:26 basically I'm looking for a faster way than: 17:49:28 if ((x != fspace.bottomRightCorner.x) 17:49:28 && (x != fspace.topLeftCorner.x) 17:49:28 && (y != fspace.bottomRightCorner.y) 17:49:28 && (y != fspace.topLeftCorner.y)) 17:49:44 (assuming that is correct, I haven't tested that well yet) 17:50:22 replacing && with & may be faster, but the compiler can probably figure out that optimisation for itself 17:50:34 ais523, hah. Yeah I assume it should 17:51:06 are the fspace members volatile? 17:51:13 if not, I really /hope/ it figures it out for itself 17:51:19 ais523, they shouldn't be 17:51:43 static struct fungeSpace fspace; 17:53:25 if the definition of struct fungeSpace contains no volatiles, it should be able to work it out 17:53:33 indeed it doesn't 17:53:39 hmm... I might put & there rather than &&, anyway 17:53:47 then to confuse people further, remove all the parens 17:53:55 ais523, I would confuse myself 17:54:12 Um. That test certainly isn't a complete "is this on the box edge" test, but anything passing that definitely is *not* on the edge. 17:54:18 I can never remember the precedence rules in C... for && and != 17:54:20 and == 17:54:46 fizzie, oh? 17:54:49 fizzie: it's a test for "is inside the box not on the edge", assuming that there's nothing outside the box, which there isn't 17:55:02 AnMaster: && is lower than == 17:55:06 there isn't anything outside indeed 17:55:06 in fact, even & is lower than == 17:55:20 ais523, what about + then? 17:55:24 1 + 3 == 4? 17:55:54 == is lower than all arithmetic 17:55:57 mhm 17:55:59 Most of the precedence makes sense, the bitwise & and | are the strange ones. 17:56:07 yep, but higher than the bitwises and logicals 17:56:08 Is ^ in a different class from & and |? 17:56:15 Deewiant: nope, it's between then IIRC 17:56:17 *them 17:56:31 but relative ordering of ^ to & and | I'm not entirely sure about 17:56:38 Just wondering if 1 ^ 1 == 0 is true or not 17:56:50 AnMaster: it's because && is a comparatively recent invention in the history of C 17:56:54 Hm, actually that's true in either case isn't it 17:56:58 But anyway 17:56:59 for ages, & and | were all that existed 17:57:19 ais523, um? And? 17:57:24 Deewiant: That's the illogical 1 ^ (1 == 0), yes. I just didn't bother mentioning it. 17:57:31 AnMaster: that explains why their precedence is below =='s 17:57:45 because people wanted to write x1 == x2 && y1 == y2, or whatever 17:57:46 fizzie: Right. 17:57:50 back then it was x1 == x2 & y1 == y2 17:57:58 ais523, oh? Couldn't they have put it otherwise since && would have been invalid before, thus not existing in any code 17:57:58 because there wasn't separate bitwise and relational and 17:58:16 well, & was already below == 17:58:27 where are they going to put &&? Putting it above == would be ridiculous 17:58:36 as people hardly ever use == to compare booleans, and doing so is bad practice 17:58:39 well I don't know 17:59:13 ais523, maybe in a compiler test suite? ;P 18:00:09 It's just that if you have "foo & 0xff == 0x23" it's obviously masking the lowest byte of foo and testing whether that's 0x23... except that ha!, it isn't; it is in fact foo & (0xff == 0x23), always false. Maybe something complains in that case, though. 18:00:38 "warning: suggest parentheses around comparison in operand of &" with -Wall, yes. 18:01:18 (gdb) print cfun_static_use_count_row 18:01:18 $1 = {0 , 18446744073709551522, 18446744073709551474, 18446744073709551482, 18446744073709551491, 18446744073709551485, 18446744073709551490, 18:01:18 18446744073709551503, 18446744073709551502, 18446744073709551503, 18446744073709551507, 18446744073709551488, 18446744073709551498, 18446744073709551551, 18:01:22 I don't believe that... 18:01:33 wth was going on there 18:01:35 looks like it's been decremented below 0 18:01:37 and wrapped 18:01:43 oh + and - confused 18:01:45 duh 18:02:19 $3 = {0 , 94, 142, 134, 125, 131, 126, 113, 114, 113, 109, 128, 118, 65, 65, 71, 80, 70, 105, 79, 121, 132, 108, 120, 33, 84, 100, 127, 53, 33, 18:02:19 72, 31, 25, 20, 52, 65, 120, 76, 80, 96, 86, 75, 116, 108, 59, 113, 114, 91, 131, 88, 57, 115, 74, 104, 95, 79, 88, 69, 100, 96, 89, 108, 130, 130, 91, 21, 18:02:19 109, 115, 74, 72, 131, 119, 112, 112, 123, 92, 74, 106, 72, 60, 97, 115 18:02:25 looks more sensible :) 18:04:17 Quite a large program, if there were 18446744073709551522 non-space elements on row 0. 18:05:14 Something like... 10 % larger than Mycology, eh? 18:05:22 it was mycology 18:05:55 the one I got from TRDS in CCBI. How it will look in 10 years 18:06:02 when RCS defined lots of new fingerprints 18:06:12 about 10% of which Deewiant bothered to test 18:06:24 (the rest being crap or too badly defined) 18:06:39 Just haven't had the time/will for somem 18:06:42 s/.$// 18:06:57 somem? sounds like RCS one indeed 18:06:57 Some I did plain choose to ignore, yes 18:07:13 related to memory management for *.so 18:07:29 -!- Slereah_ has joined. 18:08:03 There should be a UNIC fingerprint that would change the semantics so that you could use ↑↓←→ instead of ^v<>. :p 18:08:31 it seems to match btw 18:08:51 fizzie, heh. You couldn't load that from the file 18:08:56 sure you could 18:08:57 why not 18:08:58 it would load into several cells 18:09:04 are you sure? 18:09:08 ehird, check how it is defined in Funge-98 18:09:10 you could pretend they're chars 256 18:09:12 or whatever 18:09:13 *255 18:09:20 that's spec compliant 18:09:37 well I assumed using the same encoding as fizzie just sent 18:10:30 It wasn't so perfectly clear-cut in the spec; it explicitly allows that the funge character set can be big: "Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.)" 18:10:41 "Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.)", ask Deewiant for the reasons why he consider it like I described 18:10:43 he can describe it 18:10:49 I can't be arsed to 18:11:17 fizzie, damn you were 3 seconds faster there 18:11:20 :/ 18:11:32 I've already forgotten the "justification" too. 18:11:33 I have since said that I'd consider UTF translation spec-compliant 18:11:37 Oh. 18:11:43 why did you change 18:11:48 new justification please Deewiant! 18:11:53 I originally did that, then I didn't, then I thought about it more and realized that it's fine. 18:12:04 you told me it wasn't fine before 18:12:14 Yes, I did, but I've also told you that it is fine. 18:12:23 Deewiant: You're quite a waffler. 18:12:24 Deewiant, why is it fine? 18:12:31 waffler? 18:12:33 You /do/ know that I've changed my mind, you've just forgotten. 18:12:39 anyway it isn't like cfunge will handle utf-8 in source files, that requires too much processing! 18:12:40 ;P 18:12:53 Deewiant, details then 18:12:53 AnMaster: "N: One who waffles, from the verb waffle, meaning to never settle on a stance on one (or more) issue(s); A waffler usually goes from one side to the other and back again, usually multiple times, depending on who (s)he is talking to at the time. See also panderer." ← urban dictionary. 18:12:54 Anyway, the reason is essentially that UTF is just an encoding for the underlying values 18:13:14 You could just as well support loading gzip-compressed source without violating the spec. 18:13:16 fizzie, mhm 18:13:52 Deewiant, but EBCDIC would violate I think 18:13:56 Not (directly) related to the edible stuff. 18:14:05 because values in the range 0-127 would have different values 18:14:06 AnMaster: Unless you translate it to ASCII, yes. 18:14:16 and "The Funge character set is 'display-independent.' That is to say, character #417 may look like a squiggle on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like." 18:14:21 And I guess that can't really be done; I'm not sure. 18:15:24 Deewiant, you could translate most of it to unicode I think 18:15:30 not sure if all could be translated 18:15:42 ais523, you know these things 18:15:45 please tell us 18:15:47 I think the problem would be more that you can't support the full Funge instruction set 18:15:59 what's the argument about? 18:16:18 ais523, is ASCII <-> EBCDIC lossy? 18:16:26 in one or both directions? 18:16:31 AnMaster: yes 18:16:31 Yes, it is. 18:16:36 ¬ isn't in ASCII, for one 18:16:37 in both directions then? Right 18:16:41 not all ASCII punctuation's in EBCDIC 18:16:47 what about EBCDIC <-> Unicode? 18:16:47 and EBCDIC has newline, carriage return, /and/ linefeed 18:16:50 well 18:16:51 yeah 18:16:54 what about EBCDIC -> Unicode? 18:16:55 -!- Slereah has quit (Read error: 110 (Connection timed out)). 18:16:56 which is a rather confusing combination 18:16:57 the other is lossy yes 18:17:07 ais523: The more interesting question is can EBCDIC encode Befunge? 18:17:13 +whether 18:17:35 Deewiant, no. It can't, since you need trigraphs or digraphs to write C on EBCDIC. 18:17:44 meaning { and } doesn't exist I think 18:17:47 The character table at http://en.wikipedia.org/wiki/Ebcdic seemed to include all in funge-98 spec. But that might be a varianty. 18:18:11 huh they are there 18:18:14 "CCSID 500, one of the code page variants of EBCDIC" 18:18:16 AnMaster: trigraphs aren't for ebcdic 18:18:19 what encoding need digraphs 18:18:29 AnMaster: encodings outside the ISO-guaranteed range 18:18:29 ais523, what encoding are they for then? 18:18:33 EBCDIC-500 evidently contains Latin-1. 18:18:33 "Unassigned codes are typically filled with international or region-specific characters in the various EBCDIC code page variants." 18:18:43 I see 18:18:44 So it might not be so portable, anyway. 18:19:33 Also only those non-colorful-background characters are "common to all EBCDIC code pages". 18:19:53 Er, I mean the opposite, of course. 18:21:22 But if there's both | and ¦ (the "broken bar"), you could, as an extension, have ¦ act just like |, except with a small probability it'd pass right through it. 18:21:36 :D 18:22:14 fizzie, heh 18:22:15 ehird: http://www.cis.hut.fi/htkallas/box.html 18:22:35 (I wanteded to collect whatever I mentioned yesterday.) 18:22:37 fizzie, complete font fail 18:22:53 even in Dejavu 18:23:06 DejaVu's Unicode support isn't /that/ good. 18:23:27 Deewiant, true. But I don't have Bitstream Cybit or whatever the name was 18:23:51 I seem to be lacking just those two first hangul characters (curiously the U+3141 compatibility-range hangul mieum works), the square with contoured online, and katakana small ro; others work. 18:24:02 The situation was a lot worse at work. 18:24:09 # U+2B1C WHITE LARGE SQUARE: ⬜ 18:24:11 anyone see it? 18:24:14 I don't 18:24:15 I do. 18:24:19 actually I see some of the ones before 18:24:24 It's a large, white square; you're not missing much. 18:24:26 fizzie, take a screenshot then 18:24:30 Well, it's from a supplemental code block. 18:24:33 # U+2B1E WHITE VERY SMALL SQUARE: ⬞ 18:24:33 # U+1D126 MUSICAL SYMBOL DRUM CLEF-2: 𝄦 18:24:33 # U+1D146 MUSICAL SYMBOL SQUARE NOTEHEAD WHITE: 𝅆 18:24:33 # U+1D15A MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE: 𝅚 18:24:36 I don't see any of them either 18:24:42 nor # U+23E2 WHITE TRAPEZIUM: ⏢ 18:24:54 Some are question marks, some are white-bordered rectangles 18:25:00 # U+29E0 SQUARE WITH CONTOURED OUTLINE: ⧠ # U+2F1E KANGXI RADICAL ENCLOSURE: ⼞ # U+31FF KATAKANA LETTER SMALL RO: ㇿ are also missing 18:25:02 Where the question mark is the Unicode replacement character 18:25:09 -!- Mony has joined. 18:25:31 Deewiant, here the missing unicode shows up as [232] 18:25:33 and such 18:25:47 or [01D146] 18:25:55 that blur might be an E 18:25:57 not sure 18:26:05 oh yes 18:26:09 AnMaster: They show up as boxes with the code point number in them in Firefox, but not in my terminal 18:26:10 it is same as the codepoint 18:26:11 duh 18:26:23 Deewiant, they do in my terminal hm 18:26:30 AnMaster: http://zem.fi/~fis/box.png 18:26:33 and in firefox yes 18:26:54 # U+1106 HANGUL CHOSEONG MIEUM: ᄆ 18:26:55 # U+11B7 HANGUL JONGSEONG MIEUM: ᆷ 18:26:59 you are missing them? 18:27:01 I can see them 18:27:07 fizzie: ebest page ever 18:27:10 small rectangles 18:27:15 Yes, as I said. 18:27:24 I've seen the Unicode reference pictures. 18:27:39 fizzie, your rendering is missing # U+29E0 SQUARE WITH CONTOURED OUTLINE: ⧠ too 18:27:42 Hrrm. 18:27:43 Quite many of those can be characterized as "small rectangles". 18:27:43 so am I 18:27:46 so I have no idea 18:27:52 i think my left hand has rsi 18:27:52 ow 18:27:55 U+31FF KATAKANA LETTER SMALL RO: ㇿ too 18:27:59 or carpel tunnel 18:27:59 AnMaster: I know. It's one of those supplemental code pages. 18:28:03 or w/e 18:28:03 ehird, ouch, you need to write less or something 18:28:11 AnMaster: no -- i need to type *better* 18:28:15 AnMaster: That's just a smaller version of the large ro, or the halfwidth ro. 18:28:17 fizzie, what is "supplemental code pages"? 18:28:18 home row and whatnot 18:29:51 AnMaster: The unicode ranges have names; the U+29E0 square with contoured outline comes from "Miscellaneous Mathematical Symbols-B". 18:30:33 AnMaster: I'm missing almost all of them. I do have about half of the Miscellaneous Mathematical Symbols-A block. And all of the actual Mathematical Operators block. 18:31:59 hm 18:32:17 Similarly my "Arrows" set is complete, and "Supplemental Arrows-A" too, and even "Supplemental Arrows-B", but a third of "Miscellaneous Symbols and Arrows" I don't have. The very small white square and large white square are from that block, but I do have those two. 18:33:03 "U+2B35 leftwards two-headed arrow with double vertical stroke" is missing, for example. I can't count the number of times I've tried to use that one, it's so common. 18:33:19 http://http.netscape.com.edgesuite.net/pub/communicator/extras/fonts/windows/Cyberbit.ZIP <-- Bitstream Cyberbit, couldn't find it elsewhere, linked from wikipedia 18:33:41 "Leftwards arrow above reverse almost equal to", too. 18:34:38 Hmmh, I saw a table of various-size NOP instructions in an AMD or Intel manual a few days ago but now I can't find it any more. 18:35:53 Deewiant, well there are some better than others, for one byte xchg %ax,%ax is the canonical one iirc 18:36:05 Yes, I know, but a manual had a table going up to something like 25 18:36:15 Deewiant, point is the CPUs often special code them as NOPs so they can schedule better 18:36:17 How come that one-byte nop is "better" than the nop nop? 18:36:22 AnMaster: I know this! 18:36:29 fizzie, ? 18:36:31 I'm looking for the table, not an explanation of what NOPs are 18:36:40 fizzie: nop is an alias for that 18:36:44 Oh, okay. 18:36:52 They compile to the same code 18:36:59 The NOP instruction is an alias for XCHG rAX,rAX. 18:36:59 Right, right. 18:36:59 Mnemonic Opcode Description 18:36:59 NOP 90 Performs no operation. 18:37:01 there is taht 18:37:08 that* 18:37:16 Yes, I don't need it to be said twice. :p 18:37:30 Programs written for the legacy x86 architecture commonly use opcode 90h (the XCHG EAX, EAX 18:37:30 instruction) as a one-byte NOP. In 64-bit mode, the processor treats opcode 90h specially in order to 18:37:30 preserve this legacy NOP use. Without special handling in 64-bit mode, the instruction would not be a 18:37:30 true no-operation. Therefore, in 64-bit mode the processor treats XCHG EAX, EAX as a true NOP, 18:37:30 regardless of operand size. 18:37:31 heh? 18:37:32 wow 18:37:38 oh yes 18:37:47 it would zero to upper 32 bits in 64 bit mode 18:37:48 hah 18:37:58 that's a crazy exception 18:38:02 xchg zero-extends? 18:38:27 Deewiant, any operation on 32-bit registers in 64-bit modes zero extends the full 64 bit register it is part of 18:38:29 This special handling does not apply to the two-byte ModRM form of the XCHG instruction. Unless a 18:38:29 64-bit operand size is specified using a REX prefix byte, using the two byte form of XCHG to 18:38:30 exchange a register with itself will not result in a no-operation because the default operation size is 32 18:38:30 bits in 64-bit mode. 18:38:30 wow 18:38:32 (again) 18:38:53 AnMaster: What?! 18:38:57 Some of my code might be broken then :-P 18:39:00 Deewiant, what do you mean "what?!" 18:39:04 it is documented 18:39:14 Are you saying that 'mov eax, eip' zeroes the upper bytes of rax 18:39:14 Deewiant, well apart from the xchg exception 18:39:18 Err 18:39:20 Not eip 18:39:21 But anyway 18:39:29 Deewiant, I don't talk Intel syntax 18:39:30 :P 18:39:36 Gah 18:39:50 AnMaster: mov %ebx, %eax zeroes upper 4 bytes of %rax? 18:39:57 Deewiant, yes 18:40:03 Meh, that sucks 18:40:04 that is what I'm saying 18:40:55 Deewiant, AMD docs, part 1 figure 3-4 18:41:13 Deewiant, 16 bit or 8 bit usage doesn't zero extend 18:41:15 but 32-bit does 18:41:22 the former is for compat 18:41:26 the second is a feature 18:41:34 Silly feature 18:42:00 Deewiant, xor %eax,%eax encodes as shorter ;P 18:42:11 Deewiant, anyway, this is interesting. What are you doing? 18:42:33 I thought you knew? I'm writing a DOBELA interpreter 18:42:44 Deewiant, in asm? 18:42:48 Yep 18:42:54 also is DOBELA the "almost-tc" one? 18:42:59 I don't remember 18:43:01 Yep 18:43:10 The one with dots. 18:43:20 going around from sources and such? 18:43:26 oh no, not that one? 18:43:34 bully automaton right? 18:43:45 Deewiant, why in asm. 18:43:51 http://esolangs.org/wiki/DOBELA 18:43:59 Zero-Extension of 32-Bit Results. As Figure 3-3 on page 27 and Figure 3-4 on page 28 show, when 18:44:00 performing 32-bit operations with a GPR destination in 64-bit mode, the processor zero-extends the 18:44:00 32-bit result into the full 64-bit destination. 8-bit and 16-bit operations on GPRs preserve all unwritten 18:44:00 upper bits of the destination GPR. This is consistent with legacy 16-bit and 32-bit semantics for 18:44:00 partial-width results. 18:44:02 To learn it and because I think it's cool to have a program that depends on only the kernel 18:44:04 and 18:44:05 Software should explicitly sign-extend the results of 8-bit, 16-bit, and 32-bit operations to the full 64- 18:44:06 bit width before using the results in 64-bit address calculations. 18:44:27 AnMaster: You don't have to paste paragraphs of stuff from docs after having told me where it is 18:44:34 Deewiant, you hard code x86_64 linux syscall numbers directly?! 18:44:39 I read that three minutes ago 18:44:40 Deewiant, oh ok 18:44:56 AnMaster: Essentially, yes 18:45:02 At the source level, they are named constants 18:45:07 right 18:45:17 And I have a script which parses them from sys/syscalls.h or whatever it's called 18:45:17 Deewiant, doesn't linux use SYSCALL or something 18:45:20 or is it SYSENTER? 18:45:23 I forgot which 18:45:26 It's all syscall 18:45:37 Deewiant, what was SYSENTER for? 18:45:54 I think it was AMD's version of syscall but I don't think anything uses it any more 18:46:05 * ais523 wonders if Enigma is TC using only objects preplaced on the level, no Lua scripting except to create it 18:46:14 Deewiant, so they selected the intel one for use in AMD64? 18:46:17 that sounds silly 18:46:43 Well there's probably a reason why Intel thought sysenter was crap and rolled their own :-P 18:46:44 ais523, does levels have a size limit? 18:46:54 no, but it's constant for any given level 18:47:02 my guess, btw, is it's not TC due to no infinite storage 18:47:04 but only because of that 18:47:12 ais523, go prove it then! 18:47:12 Ah crap, I misremembered 18:47:17 if you had an unlimited source of coins, you could do a Minsky machine using time 18:47:23 Deewiant, oh? 18:47:25 It wasn't a table of nops, it was a listing of ways of multiplying by constants 18:47:36 Section 8.2 in AMD's optimization guide for family 10h 18:47:40 Deewiant, how could you possibly confuse them? 18:47:49 Deewiant, familiy 10h? Who cares 18:47:49 My brain is lossy, unfortunately 18:47:52 I'm on a k8 18:48:18 ais523, can you tell me why http://esolangs.org/wiki/DOBELA loaded without any stylesheets or images? 18:48:20 AnMaster: I refer to the newest docs in general. 18:48:26 as in wikipedia-having issues style 18:48:30 AnMaster: known MediaWiki caching bug 18:48:33 try again and it'll work 18:48:36 heh 18:48:37 weird 18:48:48 Deewiant, might break on older CPUs 18:48:53 AnMaster: I don't give a crap 18:48:57 AnMaster: the wiki is so slow i want to hit it with the saucepan, might that have something to do with it? :/ 18:49:02 Deewiant, do you have a new enough one yourself? 18:49:05 ;P 18:49:07 If I can find an excuse to use SSE4.1 I will 18:49:13 My CPU supports everything up to that, not SSE4.2 though 18:49:28 And not AMD's 3DNow! stuff since it's Intel 18:49:39 Deewiant, I would recommend using 3DNow! :P 18:49:44 all relevant CPUs support it 18:49:48 Was there anything useful in there that wasn't in SSE? 18:50:02 Deewiant, some stuff related to matrix dot product iirc 18:50:09 3DNow! is an irritating name 18:50:10 but I may misremember 18:50:26 ehird, yes, like my sound card: "SoundBlaster Live! 5.1" 18:50:39 ! in a name is irritating 18:50:46 And anyway, I'm smart enough to realize when I'm using an instruction from an extension... I can read the newest docs anyway so that I can get an idea of what modern CPUs are good at 18:51:07 But, anyway, I need a 2-byte NOP. 18:51:27 Anything better than mov eax, eax? 18:51:37 Deewiant, I tend to prefer C with bits of ASM in the most critical parts, and pure C fallbacks while waiting for someone with PowerPC to write an altivec version or such 18:51:49 (and still pure C fallbacks after that) 18:52:29 Deewiant, iirc gas' .align or .p2align inserts the best nops 18:52:35 for the situation 18:52:44 .p2align 4,,7 18:52:48 what did that mean now again 18:52:50 I forgot 18:53:05 Deewiant, that is, if it is in a text section 18:53:09 otherwise it inserts 0 18:53:18 http://sourceware.org/binutils/docs/as/P2align.html 18:53:21 I'm not using GAS 18:53:43 Deewiant, well try it and see what it generates, then use that in your own asm? 18:53:45 should work 18:56:03 Deewiant, nopw %cs:0x0(%rax,%rax,1) is a rather interesting nop 18:56:07 heh 18:56:19 (what the hell does that do?) 18:56:47 Nothing, since it's a nop. :p 18:56:59 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00. That's one long-ass instruction. 18:57:03 fizzie, but what does "nopw" do? 18:57:11 Long ass-instruction. 18:57:13 fizzie, is that was it ends up as? 18:57:23 ehird, stop copying xkcd 18:57:24 ;P 18:57:29 Yes, objdumped a gas-generated nop that seemed to be just that particular one. 18:57:57 Proposed new macro: a_nop_of_some_sort. 18:58:01 Selects randomly at compile-time. 18:58:01 ehird, you should do: My hobby: Making the xkcd hobbies my own. 18:58:05 For When You Just Don't Care (TM) 18:58:12 maybe you should be able to ask for a NOP of a particular length 18:58:22 0 length nop: 18:58:25 Deewiant: This generates "xchg %ax,%ax" as a two-byte nop. 18:58:27 0x000000000040f122 : nopw %cs:0x0(%rax,%rax,1) 18:58:28 0x000000000040f130 : movntps %xmm0,0x632630(%rax) 18:58:31 that seems long enough 18:58:33 -!- oerjan has quit ("Hits wiki with the saucepan and runs for the bus ===\___/"). 18:58:42 nice quit message 18:58:50 Deewiant: It's just the normal nop, but with that 16-bit width prefix. 18:58:56 * ehird hits bus with the wiki and runs for the saucepan 18:59:19 * ais523 hits saucepan with a bus and runs for the wiki 18:59:21 actually, better not 18:59:21 fizzie: And for four? 18:59:32 that would probably dent the saucepan 18:59:46 and we all know oerjan doesn't like his saucepan damaged 18:59:51 Deewiant: Uh... 18:59:54 4: 0f 1f 40 00 nop DWORD PTR [rax+0x0] 19:00:05 (That's with "objdump -M intel -d test.o".) 19:00:17 Woot. 19:00:17 * AnMaster hits the saucepan with his fire poker and runs for the saucepan o=========E 19:00:19 GTK on os x working nice 19:00:21 err 19:00:28 a very short run indeed 19:00:29 AnMaster: WHAT ABOUT THE WIKI AND THE BUS 19:00:33 wow 19:00:34 that's funny 19:00:35 o_O 19:00:38 ehird: I thought you hated GTK 19:00:42 ehird, I'm lazy, running for them would have taken a lot more work 19:00:42 ais523: I do 19:00:43 clearly 19:00:58 dammit 19:01:01 this is buggy 19:01:01 :( 19:01:14 fizzie: Hmmh, that's 3 bytes from fasm 19:01:17 ehird, is it better than GTK under X on OS X though? 19:01:18 y/n? 19:01:28 AnMaster: Way more buggy, but I prefer i. 19:01:29 t 19:01:31 Or wait, is this doing some alignment of its own 19:01:41 Deewiant, generate some in GAS and look for yourself 19:01:44 easiest solution 19:01:48 Maybe I'll try http://www.gtk-osx.org/ 19:01:50 I don't know how to use GAS 19:02:23 / Provide alternate content for browsers that do not support scripting // or for those that have scripting disabled. This content requires the Adobe Flash Player. [[Get Flash]] 19:02:37 2: 66 66 66 66 66 2e 0f nop WORD PTR cs:[rax+rax*1+0x0] 19:02:38 9: 1f 84 00 00 00 00 00 19:02:40 (text seen on www.cadence.com with JavaScript turned off, the site is a mess like that in other ways too) 19:02:52 interesting 19:02:57 Really wonder what that does, since the opcode there is actually "nop" according to objdump-disassembly. 19:03:09 when asked to align to 128 bytes it inserts a lot of 1 byte nops instead 19:03:11 that's strange 19:03:12 Oh, I need a 5-byte nop after all 19:03:57 yearrgh, SystemC (which is actually a C++ library) uses overloaded << for sensitivity lists 19:04:04 that was a bad idea even for iostreams 19:04:33 but ze operator is pretty! ;_; 19:04:41 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00. That's one long-ass instruction. <-- that is nopw %cs:0x0(%rax,%rax,1) yes 19:04:44 or nop WORD PTR cs:[rax+rax+0x0] 19:04:45 Deewiant: 3: 0f 1f 44 00 00 nop DWORD PTR [rax+rax*1+0x0] 19:05:03 what's %rax anyway? 19:05:35 0f 2b 80 70 26 63 00 19:05:37 isn't that nice 19:05:53 I think fasm is optimizing away the +0 19:05:57 thats movntps %xmm0,0x632670(%rax) 19:06:14 http://ref.x86asm.net/coder.html#x0F1F just lists "0f 1f" as a real nop. 19:06:17 Deewiant, I don't even have fasm 19:06:24 I have nasm, yasm and gas 19:06:30 package manager doesn't have fasm 19:06:42 ais523, you know what %eax is? 19:06:46 yes 19:06:49 32-bit ax 19:06:54 ais523, %rax is 64-bit ax 19:06:57 I thought %qax was the 64-bit version 19:07:00 no 19:07:04 I never seen %q 19:07:10 it is %r all the way 19:07:17 well, I learnt x86 on DOS, with a 16-bit system 19:07:45 and %r8..%r15 19:07:48 -!- kar8nga has joined. 19:08:01 x86_64 is still register starved 19:08:02 They should have added r16 as well 19:08:07 Deewiant, why? 19:08:16 rsp is like rip, you can't really use it for much 19:08:24 Deewiant, I would prefer something more like ppc 19:08:29 with lots of registers 19:08:38 gcc-bf has 64 8-bit registers 19:08:50 x86-64 has 8 or 16 128-bit registers though 19:08:57 LLVM has 1024 registers 19:09:05 possibly of your own size selection 19:09:09 that is internally 19:09:55 "PowerPC processors have 32 (32- or 64-bit) GPRs (General Purpose Registers) and various others such as the PC (Program Counter, also called the IAR/Instruction Address Register or NIP/Next Instruction Pointer), LR (link register), CR (condition register), etc. Some PowerPC CPUs also have 32 64-bit FPRs (floating point registers). " 19:09:56 Parrot has any number of registers you like. :p 19:10:05 source: http://www.ibm.com/developerworks/library/l-ppc/ 19:10:07 parrot's an HLVM, though 19:10:17 in fact, no reason a given compilation can't use both parrot /and/ llvm 19:10:26 Deewiant, err x86_64 has 16 of them 19:10:28 x86 may have 8 19:10:39 AnMaster: SSE or SSE2 give the additional 8 19:10:42 but x86_64 in 64-bit mode always have 16 SSE registers 19:10:42 Can't remember which 19:10:48 It doesn't have to 19:10:55 Deewiant, err on x86_64 it has to 19:11:05 You can have an x86-64 processor which doesn't support SSE 19:11:12 Deewiant, check docs? 19:11:35 "The x86-64 extensions from AMD (originally called AMD64) and later duplicated by Intel add a further eight registers XMM8 through XMM15." Of course a quotation from Real Docs would be better. 19:11:39 If you're right then it's all the better 19:11:51 Why are you complaining about registers if you have 16 128-bit ones? :-P 19:11:52 fizzie, I remember reading something like that yes 19:11:59 Deewiant, because they aren't GPR 19:12:03 they are SIMD 19:12:08 I can't do GPR stuff on them 19:12:14 You can put stuff there instead of in memory 19:12:22 And it'll be faaaaaaster 19:12:34 Deewiant, yes but you can't easily do all the types of operations in them 19:12:41 Although I'm not actually sure wrt L1 cache whether it's faster to push/pop or movd/movd 19:12:42 it is very good for stream processing yes 19:12:44 I would prefer SPARC's register windows, at least they're not just boring simple registers that just stand there twiddling their thumbs (do registers have thumbs?) and do nothing. 19:13:07 If push puts something in L1 it might be faster than moving to an XMM register 19:13:11 And likewise for pop 19:13:12 Deewiant, check AMD's optimising guide as well as the intel one 19:13:17 For what 19:13:19 usually prefer the AMD ones 19:13:26 I know that push has a lower latency 19:13:28 Deewiant, I think I remember reading about push/pop vs. mov there 19:13:41 Deewiant, mov was better for scheduler or something 19:13:43 iirc 19:13:43 vs. mov sure, but what about vs. XMM mov 19:13:47 movd and movq and whatnot 19:13:48 ah 19:13:52 right 19:14:16 I'm talking about moving between GPR and secondary storage, where the latter is either the stack or an XMM register 19:14:29 wow, the licence on the SystemC standard is really strange 19:14:36 you can download it for free, but only once 19:14:42 and you can only keep one copy 19:14:50 -!- kar8nga has quit (Read error: 60 (Operation timed out)). 19:14:55 Deewiant, CVTTPS2PI you PFRSQIT1 of a CVTTPS2DQ! 19:14:56 ;P 19:14:59 -!- Mony has quit ("Quit"). 19:15:16 all real MMX and SSE instructions yes 19:15:24 maybe SSE2 or SSE3, unsure 19:15:25 Looks like floating-point stuff 19:15:25 ais523: You can print your own copy of the Java VM specification, but only once. Better not lose the papers! 19:15:33 fizzie: yep, same rule on printing 19:15:36 you can only print your copy once 19:15:40 Deewiant, I just selected some cryptic names from AMD docs 19:15:43 * AnMaster checks what they do 19:15:49 what a really strange rule, I don't see what its purpose is 19:16:22 -!- kar8nga has joined. 19:16:37 "You may print this book once. For the complete copyright notice, see [Copyright]." Then the copyright notice says absolutely nothing about printing. 19:17:07 Deewiant, CVTTPS2PI (Convert Packed Single-Precision Floating-Point to Packed Doubleword Integers, Truncated) you PFRSQIT1 (Packed Floating-Point Reciprocal Square Root Iteration 1) of a CVTTPS2DQ (Convert Packed Single-Precision Floating-Point to Packed Doubleword Integers, Truncated)! 19:17:08 well, in the case of the IEEE SystemC standard, they had a rather scary-looking EULA 19:17:10 lol 19:17:10 before download 19:17:23 AnMaster: Toldya it was floating point 19:17:29 Deewiant, yeah 19:17:33 but crazy instructions 19:18:04 Deewiant, PFRSQIT1 is 3DNow btw 19:18:24 AltiVec has 32 of those 128-bit registers. 19:18:36 fizzie, cool 19:18:48 a lot better than x86_64 as usual 19:18:54 But you can't move from scalar registers to altivec regs, just load/store in a RISCy way. 19:18:55 I really don't see why Apple went Intel 19:18:56 :/ 19:19:05 fizzie, ok that is a downside 19:19:18 Because people don't write asm, compilers do, and x86-64 happens to be more performant than PPC :-P 19:19:44 At least, that's my suspicion. There could be some non-technical reasons as well. 19:19:50 Also it is a "business decision", which... right. 19:19:51 Deewiant, PPC had atomic load-link-store thingies iirc 19:20:11 or has rather 19:20:42 current pyfunge (rev 1cde4290a9e6) got no BAD from mycology... first ever! ;) 19:20:58 yay 19:21:05 any dubious UNDEFs? 19:22:47 heh 19:23:26 ais523: maybe none, i manually checked the output and cannot find any supicious things 19:23:42 suspicious* 19:27:35 lifthrasiir, what about mycouser.b98? 19:27:45 -!- neldoreth has quit ("leaving"). 19:28:06 lifthrasiir, check also echo -e "a9b" | ./pyfunge mycouser.b98 and such 19:28:07 oh and 19:28:13 -!- neldoreth has joined. 19:28:15 echo -e "a9" | ./pyfunge mycouser.b98 19:28:19 to check what happens on EOF 19:28:20 and so on 19:28:29 lifthrasiir, make sure that all works 19:28:38 it can take some time to get it right 19:28:59 lifthrasiir, and - is ignored on input or should be iirc 19:29:07 as in it is treated non-numeric 19:29:12 Deewiant, that is right isn't it? 19:29:22 while testing other code i knew pyfunge sometimes ignore EOF... i'll fix it. 19:29:30 Yeah, sounds about right 19:29:33 btw really? hmm. 19:29:54 "Decimal input reads and discards characters until it encounters decimal digit characters, at which point it reads a decimal number from those digits, up until (but not including) the point at which input characters stop being digits, or the point where the next digit would cause a cell overflow, whichever comes first." 19:29:57 And - is not a digit. 19:30:04 lifthrasiir, all input should share one buffer too 19:30:28 from readme in cfunge: 19:30:29 * Standard input is read one line at a time and buffered internally. Those 19:30:30 instructions reading chars fetch one char from this buffer, leaving the rest 19:30:30 (if any) including any ending newline. Instructions reading an integer will 19:30:30 leave anything after the integer in the buffer with one exception: if the 19:30:30 next char is a newline it will be discarded. 19:30:50 Deewiant, that sounds right to you? 19:30:57 it may be out of date btw 19:30:59 Yeah, sounds about right 19:31:14 lifthrasiir, input from STRN also fetch from same buffer 19:31:27 What's that newline-discarding exception about? 19:31:28 same for BASE too 19:31:34 fizzie, don't remember. 19:31:48 I think I basically checked what ccbi --help or whatever said and did the same 19:32:01 Deewiant: Heh, you're a de-facto standard. 19:32:03 because it was a pain to get it right with the standard 19:32:14 fizzie: I know. :-) 19:32:35 fizzie, that was true for many RCS fingerprints too, I mean I even looked at RCS source sometimes, but CCBI sources were much cleaner 19:32:42 so usually I preferred that 19:32:47 Deewiant: If you'd define 22+ to leave 5 on the stack, half of the world's interpreters would follow. 19:32:55 :-) 19:33:01 Deewiant, now we are only missing the !Befunge author 19:33:15 From what 19:33:17 fizzie, no I would report it as a bug in mycology and/or ccbi 19:33:20 There are other interpreters as well 19:33:42 Deewiant, oh true. I mean him to email you about how he just found mycology 19:33:45 -!- tombom has quit ("Peace and Protection 4.22.2"). 19:34:00 like Mike Riley and now lifthrasiir did 19:34:09 ;) 19:34:10 And Jerome 19:34:16 Deewiant, Jerome was? 19:34:17 ?? 19:34:22 Why doesn't Language::Befunge get any love here? :-P 19:34:24 ah 19:34:26 People always forget about it 19:34:29 Deewiant: I don't 19:34:32 !Befunge is being revived? 19:34:32 Deewiant, because it has a hard to remember name 19:34:33 Awesome! 19:34:36 I wanted that! 19:34:37 ehird, no 19:34:38 well i have only one input buffer from pyfunge.platform, so it should not be a problem... right? 19:34:41 dammit 19:34:43 AnMaster: 'jqbf' then 19:34:45 ehird, I just said that was all that was missing 19:34:49 Deewiant, even harder 19:34:50 ehird: why did you like !Befunge in particular? 19:34:53 ehird: If you want it so much, email him 19:34:55 ais523: RISC OS? 19:34:58 19:33 AnMaster: Deewiant, oh true. I mean him to email you about how he just found mycology 19:35:01 Deewiant, also jerome hasn't been in here has he? 19:35:11 ehird: Read the context 19:35:21 AnMaster: No, I don't think so. Not sure though. 19:35:22 I did 19:35:23 ehird, you have a 1-line scrollback? ~~ 19:35:26 It still doesn't make any sense 19:35:31 Was it meant to be a joke? 19:35:37 ehird, ... it makes perfect sense. 19:35:42 What doesn't make sense? 19:36:01 Deewiant: !Befunge author saw mycology! Really? No! Duh! 19:36:06 Haha: "-- I think AnMaster trusts CCBI a bit more than he should --" 19:36:10 ehird: That's not what he said. 19:36:18 ehird, you misquoted 19:36:24 fizzie: De-facto standard, like you said. :-P 19:36:25 ... no i didn't? 19:36:28 Deewiant, now we are only missing the !Befunge author 19:36:30 There are other interpreters as well 19:36:33 Deewiant, oh true. I mean him to email you about how he just found mycology 19:36:40 ehird, how doesn't that make sense 19:36:49 AnMaster: because you then go on to deny that the !befunge author found mycology 19:36:55 ehird, no 19:36:58 ehird: Where does he affirm that in the above 19:36:59 stop being stupid 19:37:08 Deewiant: Deewiant, oh true. I mean him to email you about how he just found mycology 19:37:13 ehird: He said (1) that !Befunge's author is missing. 19:37:20 ehird: Then (2) I queried him as to what exactly he meant. 19:37:40 ehird: Then (3) he explains what he meant: he meant that he's the only one who hasn't emailed me. 19:37:49 (Yay for overloading 'he') 19:37:54 oh 19:38:00 AnMaster's broken english strikes again 19:38:00 bbl I have other things to do than argue about this. First however I wish to readjust my assertion above about ehird not being an idiot: I'm not sure about that any more 19:38:32 "I mean him to email you about how he just found mycology" -->AnMaster sucks at English filter--> "I meant to email you about how [he emailed me telling me] he had just found mycology" 19:38:41 ehird: Incorrect filter. 19:38:48 Deewiant: garbage in garbage out 19:39:05 ehird: 'I meant him not having emailed you...' 19:39:12 Or something, would be more accurate. 19:39:24 Deewiant: "he¹ meant that he²'s the only one who..." 19:39:25 Or right, now I misread what you said. 19:39:30 fizzie: :-) 19:39:38 /ignore chan:#esoteric type:highlight time:5 19:39:38 oops 19:39:40 Hmm, my keyboard only goes up to ³ 19:39:43 * AnMaster tries again without space 19:39:57 Deewiant: Mine goes up to ¹¹! 19:40:07 fizzie: that's cheating 19:40:08 You turn off highlights? That might explain why you highlight others so much :-P 19:40:11 fizzie: Haha :-D 19:40:17 and I can do ¹²³ 19:40:19 ¹²³¼¢⅝÷«»°¿¬ 19:40:25 ais523: http://en.wikipedia.org/wiki/Up_to_eleven 19:40:30 ¹²³£¥ĦÐÞ“” 19:40:35 —÷ 19:40:39 AnMaster: ¹²³€½¾{[]}¡⅛£¼⅜⅝⅞™±° 19:40:44 (that's with and without shift) 19:40:47 different keyboard layouts 19:40:56 Deewiant: I'm aware of the meme 19:40:57 ¹²³£¥ĦÐÞ“”—÷ with, ¡ºª¢€ħðþ‘’–× without 19:41:08 ais523: Just making sure 19:41:12 1234567890+ !"#¤%&/()=? ¡@£$€¥{[]}\¹²³¼¢⅝÷«»°¿ 19:41:29 ¿~? 19:41:32 This "In popular culture" section may contain too many minor or trivial references. Please remove insignificant entries, and reorganize this content. (March 2009) 19:41:34 hmm... is there any appropriate trefunge program for testing? 19:41:40 normal, shift, altgr, altgr+shift 19:41:42 lifthrasiir: There's that editor 19:41:44 IIRC there's a trefunge editor 19:41:46 written in trefunge 19:41:47 though I forgot space there 19:41:54 I'm not sure how it works 19:41:56 lifthrasiir, there is no test suite afaik 19:42:02 Deewiant: Maybe you should spend some time writing "Trungyfonology" or something. 19:42:12 No, I really shouldn't. :-P 19:42:13 just make a version of Mycology that handles any number of dimensions 19:42:23 that was http://www.imaginaryrobots.net/projects/funge/code/funged.3f, and it needs many yet-unimplemented fingerprints... hmm. 19:42:24 Somewhat impossible. 19:42:26 fizzie, ccbi doesn't support trefunge, nor does cfunge, so I fail to see how it would work 19:42:29 Deewiant: why? 19:42:48 Well actually not impossible, just extremely inconvenient. 19:42:49 fizzie, since Deewiant only test stuff ccbi supports 19:42:55 just use only Unefunge commands that don't need vectors until you've run a y to find out dimension count 19:43:19 lifthrasiir, what specific fingerprints? 19:43:27 ais523: Yeah, and then I'd have to have a zero-pad loop prior to every vector-using instruction. 19:43:39 Which would be somewhat of a pain. 19:43:48 lifthrasiir, also it depends on how rcfunge misimplements fingerprints 19:43:53 so basically: don't do it 19:43:55 AnMaster: Oh, it does? 19:43:58 I didn't know that 19:44:04 Deewiant, yes, and it loads FNGR 19:44:08 AnMaster: FNGR and NCRS. awww. 19:44:14 as far as I can figure out it uses FNGR to workaround 19:44:14 Well, FNGR can be done 19:44:23 lifthrasiir, what is wrong with NCRS? 19:44:30 Since FNGR's new specs just state the way () should behave when it's loaded 19:44:32 lifthrasiir, I implement NCRS in cfunge. 19:44:44 lifthrasiir, FNGR I wouldn't implement 19:44:47 not yet a high priority... ;) 19:44:48 FING sure 19:44:51 AnMaster: I don't think he said anything was wrong, just that it's one he hasn't implemented. 19:45:00 lifthrasiir, yeah NCRS was rather low priority for me too 19:45:04 added it in cfunge 0.4.0 19:45:07 which was released today 19:45:15 AnMaster: Do you have TERM and NCRS now? 19:45:17 Deewiant, hm right 19:45:21 Deewiant, yes... 19:45:36 I might have to take a look at that then, to get TERM running on POSIX 19:45:39 Deewiant, loading order should work fine for TERM anywhere I hope 19:45:50 Deewiant, I had TERM since several releases 19:45:53 eventually i'll implement them (not FNGR though) but my high priority is an usable interpreter now. 19:46:04 Deewiant, btw you can only do NCRS 1I once and 0I once 19:46:08 following specs there 19:46:10 in fact 19:46:38 Deewiant, it says you shouldn't do it more than that 19:46:39 Which specs 19:46:39 Deewiant, NCRS specs 19:46:45 Silliness 19:46:58 while analyzing mycology i felt that many corner cases are still untested, so i'm adding regression tests for now. 19:47:00 Deewiant, not silly. I had segfaults inside ncurses otherwise 19:47:07 Also silly :-P 19:47:24 Deewiant, cfunge safeguards against that with tracking state and reflecting if it is done the wrong way 19:48:14 AnMaster: What about TERM/NCRS interaction... can TERM be used after NCRS has done 0I, for instance? 19:48:40 Deewiant, yes NCRS does a call into TERM and vice verse to inform each other of the state of each 19:48:51 Deewiant, so hopefully all interactions should work correctly 19:48:58 Meh, interdependent fingerprints 19:49:09 Deewiant, well they are, there is no way to avoid it 19:49:18 They're independent in Windows 19:49:53 Deewiant, well my TERM doesn't depend on ANSI escape codes 19:50:07 it will work with any terminal supported in terminfo/termcap 19:50:09 Neither does mine 19:50:13 My TERM doesn't work, period :-P 19:50:17 (Except in Windows) 19:50:29 I don't even have a TERM. :p 19:50:30 Deewiant, what about non-cmd.exe on windows? 19:50:30 Windows is so much easier in this respect 19:50:49 AnMaster: I don't know, depends on if they're implemented correctly. 19:50:49 Deewiant, say, rxvt from msys or windows powershell? 19:51:10 Powershell should definitely work, I'd be very surprised if it didn't. 19:51:14 mhm 19:51:16 I mean, these are Windows system calls 19:51:21 Deewiant, and rxvt from msys? 19:51:27 AnMaster: I don't know, depends on if they're implemented correctly. 19:51:27 AnMaster: I don't know, depends on if they're implemented correctly. 19:51:29 ah 19:51:38 Deewiant, hey stop turning ehird 19:52:07 fizzie, echo $TERM? I think NCRS and TERM fails if that isn't set 19:52:08 You're using the FooConsoleBar functions? 19:52:13 Yep. 19:52:23 fizzie, Ex! Dammit you forgot Ex 19:52:31 They're not Ex, though. :-P 19:52:45 Deewiant, unusual. I'd say suspicious even. 19:52:55 No, very usual. :-P 19:53:00 Oh, more AnMaster Windows-sucks humour. 19:53:07 Hah hah 12 parameters Ex ohhh I'm in stitches. 19:53:10 Do you call AllocConsole there "just-in-case"? If you did (and ignored it failing, since it fails if the process already has a console) then it'd work no matter where, it'd just open a new console window if it was started without. 19:53:25 No, I don't, I expect a console to exist. 19:53:41 I do check the functions' return values though so I guess nothing would happen if there wasn't one. 19:53:45 ehird: it is actually pretty funny, admittedly 19:53:55 Fooled me you could have. 19:53:56 fizzie, you could mark the process as one wanting a console iirc? Or maybe that just means MSVC inserting an AllocConsole() "just-in-case"? 19:54:35 Doesn't the executable itself embed whether it's to run in a console or not? 19:54:42 no 19:54:50 it runs in a console if it tries to open one, IIRC 19:55:08 or actually, it's probably something to do with the params to winmain 19:55:11 -!- kar8nga has quit (Connection timed out). 19:55:12 It seems to me that it's a link-time option whether it should have a console or not 19:55:12 Deewiant, anyway it is likely that if TERM/NCRS interaction mess up that you will get Really Bad Results(TM), as in null dereference or such 19:55:14 there are quite a few there that people forget about 19:55:21 there should be guards for it where needed 19:55:23 Deewiant: presumably that depends on what startup code it links against 19:55:31 Possibly 19:55:37 There is a PE header field that is specific for "console executables", though. 19:55:51 The Subsystem field; it can be WINDOWS_GUI or WINDOWS_CUI; for a GUI app, or for a console app. 19:56:03 when is accessing an invalid memory address safe? 19:56:08 I wouldn't be surprised if the system took care of creating a console if the .exe has WINDOWS_CUI there. 19:56:08 (not a trick question) 19:56:14 What do you mean by invalid? 19:56:37 Deewiant, as in not mapped so you can access it, say NULL or otherwise one that would end up in a segfault normally 19:57:05 It's never safe? 19:57:11 there is one specific case 19:57:22 that you should know considering what you have been doing lately Deewiant 19:57:32 I would have expected you to be aware of this 19:57:55 I don't know that much when it comes to asm-level stuff 19:58:10 PREFETCH... duh 19:58:10 Tch Deewiant how dare you not know. 19:58:13 Tut tut. 19:58:18 Prefetch? 19:58:20 Duhhh. Are you stupid or something? 19:58:25 ehird: Shaddup. :-P 19:58:34 Deewiant: DUHHH. 19:58:44 AnMaster: Explain or refer? 19:59:15 Deewiant, GCC docs for __builtin_prefetch() says it clearly, but I have also seen it in amd manuals 19:59:22 don't remember exactly where 19:59:42 "If a cache hit occurs, or if a memory fault is detected, no bus cycle is initiated and the instruction is treated as a NOP." 19:59:45 AMD 19:59:50 the third pdf 20:00:00 with the General instruction reference 20:00:09 for PREFETCH/PREFETCHW 20:00:14 Right, so what you're saying is that prefetching memory you can't access is a nop 20:00:20 I wouldn't call that accessing the memory 20:00:21 Deewiant, yep 20:00:29 Deewiant, well I'd say it was 20:00:48 All you're doing is saying "hey, prepare this for me so I could mess with it faster" 20:00:55 You're not actually reading or writing 20:01:45 "Data prefetch does not generate faults if addr is invalid, but the address expression itself must be valid. For example, a prefetch of p->next will not fault if p->next is not a valid address, but evaluation will fault if p is not a valid address." 20:01:50 from GCC docs 20:01:54 http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html 20:02:21 Deewiant, It is in fact a memory access, though indirectly 20:02:44 hey I just thought of a new NOP: prefetch (%rip) basically 20:03:00 I wonder if I should try to get back into Perl. 20:03:01 Attempting to access memory that would normally result in a segfault is "safe" also if you're prepared for the segfault. 20:03:11 fizzie, heh 20:03:16 but that isn't same 20:03:40 It's more squibbling over definitions, sure. In this case it's the word "safe"; before, it was the word "access". 20:04:16 -!- olsner has joined. 20:04:21 fizzie, well maybe I was a bit unclear. But what would you have suggested instead that wouldn't have included the word "prefetch" or something as revealing as that 20:04:23 I was going to say that but I decided I'd not 20:04:50 brb 20:05:02 I would probably just not have asked the question, to tell the truth. 20:05:08 :-P 20:05:13 That's a cop-out. 20:05:35 A cop-out is when you go and arrest criminals. 20:06:02 Actually, it isn't! 20:06:53 "Cop out is an idiom meaning to avoid taking responsibility for an action or to avoid fulfilling a duty. -- See also -- Weasel word" 20:07:00 Ooh, it's one of the dreaded weasel words. 20:09:50 Happy Australian Mailman Reminders Day, everyone! 20:10:00 Y'wot? 20:10:14 ehird: explain for Deewiant? 20:10:20 No. 20:10:22 It's a sekrit. 20:10:28 it's not a very good secret 20:10:41 It's a googlewhack 20:10:58 Deewiant: search sans australian 20:11:03 then realise that the Agora lists were first in Australia 20:11:08 and timezones 20:11:13 taking out australian will tell you the full story 20:11:15 Deewiant, googlewhack? 20:11:26 just I announce it a day early, because I'm subscribed to an Australian mailing list 20:11:29 and it's in a different timezone 20:11:55 10:07:13 happy australian mailman reminders day 20:11:56 10:07:25 * AnMaster opens mail client 20:11:58 10:07:33 none yet 20:11:59 10:07:43 i said australian 20:12:01 10:07:47 ah 20:12:02 (from the logs for Jan 31) 20:12:11 it's quite a #esoteric tradition, I think 20:12:22 I expect to get freebsd ones tomorrow evening 20:12:32 apart from that I don't get any 20:12:34 Oh right, GNU Mailman. 20:12:44 I was thinking of snailmailmen. 20:12:55 Deewiant, so was I first time 20:13:02 anywya 20:13:05 anyway* 20:13:13 I have seen mailman with the option turned off 20:13:17 just FYI 20:13:29 Mailman is GNU? 20:13:32 sf.net hosted mailman lists turn it off by default iirc 20:13:35 ais523, think so 20:13:47 that seems unlikely, there isn't a copy of the AGPL attached to every reminder email it sends out 20:13:53 ais523: it is 20:13:54 Deewiant, what is googlewhack though? 20:14:03 ais523: just look at the horrid UI and design decisions 20:14:31 http://www.justfuckinggoogleit.com/?q=googlewhack 20:14:31 Deewiant++ 20:14:34 It's been a long time since I last used that alias 20:14:43 Deewiant: does it need JavaScript turned on? 20:14:51 ais523: why not click and find out 20:14:55 No, it is not stupid like letmegooglethatforyou 20:14:59 because I don't like clicking on random websites 20:15:00 actually I'll just wikipedia it 20:15:01 so what time is it there, not yet March 31? 20:15:04 it works better 20:15:05 err 20:15:07 Deewiant: letmegooglethatforyou is more snarky though. 20:15:11 wikipedia doesn't work well as a verb 20:15:11 :/ 20:15:15 ehird: It confused me the first time I saw it. 20:15:17 * ais523 pastes http://www.justfuckinggoogleit.com/ into Google 20:15:26 ais523, ? 20:15:40 ais523: You're tampering with forces you don't fully comprehend 20:15:44 Choose a domain name - www.justfuckinggoogleit-com.co.cc is available//Full DNS control and domain management - www.co.cc , Free domain names + free DNS, ... 20:15:51 :-D 20:15:54 AnMaster: I'm trying to make ehird's head explode 20:16:16 ehird: It confused me the first time I saw it. <-- yeah you mean: "Enable javascript to use LMGTFY." 20:16:26 ;P 20:16:35 http://lmgtfy.com/ has a Swedish translation here 20:16:36 huh 20:16:51 http://lmgtfy.com/?q=let+me+google+that+for+you 20:17:02 http://209.85.229.132/search?q=cache:5XAtqRmmkW0J:justfuckinggoogleit.com/info.html+http://www.justfuckinggoogleit.com/&hl=en&client=firefox-a&gl=uk&strip=1 20:17:03 &l=1 20:17:05 actually, I have javascript enabled 20:17:06 just 20:17:10 konq fails 20:17:24 Deewiant: ok, now make that recursive 20:17:39 we need to link a term to http://lmgtfy.com/?q=&l=1 20:17:42 to googlebomb it 20:17:42 ehird: Needs javascript 20:17:43 http://209.85.229.132/search?q=cache:5XAtqRmmkW0J:justfuckinggoogleit.com/info.html+http://www.justfuckinggoogleit.com/&hl=en&client=firefox-a&gl=uk&strip=1 20:17:43 &l=1 20:17:44 what? 20:17:47 that looks odd 20:18:22 ehird: It might be possible to specify a javascript: URL there in which case it could be done 20:18:47 how 20:18:48 http://www.alexa.com/data/details/traffic_details/justfuckinggoogleit.com/justfuckinggoogleit.com?h=300&h=400&range=6m&site0=justfuckinggoogleit.com&site1=lmgtfy.com&site2=&site3=&site4=&size=Medium&w=470&w=700&y=r&z=1&z=1 20:19:06 Oh wait, darn 20:19:33 Never mind, can't be done that way 20:20:33 ais523, tell me, how does alexa work? 20:20:42 I mean, how do they know 20:20:56 AnMaster: spyware 20:21:04 although legitimate spyware 20:21:05 ais523, and you link to it?! 20:21:07 as in, you download it from them 20:21:07 wth 20:21:18 ais523, this is so screwed... 20:21:28 of course, it's in the interest of companies to download the alexa toolbar 20:21:37 because the computers there are set to the company's homepage 20:21:40 "Google.com has a traffic rank of: 1" 20:21:40 so it boosts the alexa rank 20:21:40 heh 20:21:57 ais523: spyware is illegitimate by definition 20:21:59 alexa isn't spyware 20:22:04 Live.com has a traffic rank of: 4 20:22:10 google wins of course 20:22:15 ehird: my definition's obviously different to yours 20:22:30 Making a better Internet 20:22:31 Alexa could not exist without the participation of the Alexa Toolbar community. Each member of the community, in addition to getting a useful tool, is giving back. Simply by using the Firefox and IE toolbars each member contributes valuable information about the web, how it is used, what is important and what is not. This information is returned to the community as Related Links, Traffic Rankings and more. 20:22:35 they're upfront about what it does 20:22:37 It's not spyware 20:22:40 it's not SPYing on you 20:24:54 ehird, would you use it though? 20:25:05 and 20:25:09 No. Not personally. 20:25:17 would you like it "spying" on your bank logins? 20:25:27 how can you know it won't look at https 20:25:31 That would be a valid compliant, AnMaster, if it actually did that. 20:25:34 does it do that? 20:25:44 ehird, proof it doesn't? 20:25:54 AnMaster: let's never install any software 20:26:01 it could attach to our browsers and spy on our bank logins 20:26:12 Your hardware could do it too! 20:26:14 booooh! scary ghost! woooh! are you scared yet? Be scared. 20:26:21 EVERYONE IS OUT TO GET YOU. 20:27:20 ehird, yes and? It isn't exactly news 20:27:30 which is why I never do bank stuff over internet personally 20:27:36 ... lol 20:27:44 I go to the bank office 20:28:07 That /is/ smarter, I'm just too lazy myself 20:28:24 I probably would do that if I lived across the street from a bank or something 20:28:40 But it's a 5 min walk away, too far :-P 20:28:47 Deewiant, well four and a half block in my case 20:28:57 A 'block' carries no meaning at all 20:29:05 Speak in terms of distance or time 20:29:10 Deewiant, true, they are very different size 20:29:13 Unless there's a Swedish standard block I'm unaware of 20:29:28 hm, maybe 5 minutes walk I'd guess 20:29:33 I don't know distance 20:29:38 and google earth res is too poor here 20:29:48 I can barley see the town at all in google earth 20:29:52 Me: Walk down short street, walk up the bank, walk to the end of the main street, bank. 20:29:57 5-7m. 20:30:12 5-7 meters from a bank? 20:30:19 Minutes. 20:30:21 ah 20:30:35 Those would be some short streets had that been metres :-P 20:30:46 Deewiant, well yeah 20:31:09 Well, my street is just like 6 houses. 20:31:11 Our local bank office people use MSN for intra-office communication. At least that's what the clerkperson said; I'm secretly hoping it is at the very least an internal Jabber server, and the girl just said "MSN" because any sort of instant messaging == MSN. 20:31:15 20 second walk. 20:31:27 fizzie: MSN-for-workplaces is a Microsoft thing they sell. 20:31:29 It is probably MSN. 20:31:48 Does it use Microsoft's servers for all message-passing, though? 20:31:56 -!- Nawak has joined. 20:32:16 hi Nawak 20:32:23 -!- Nawak has left (?). 20:32:25 fizzie, more like 7 here 20:32:25 fizzie: yar I think so 20:32:28 bye Nawak 20:32:31 WE MISSED YOU 20:32:51 Deewiant, so when will you update mycology status page next? I assume it is safe to ask since CCBI-2 is put on hold right? 20:33:12 When I feel it's worth it 20:33:12 so you won't do the mycoedge stuff 20:33:14 Maybe when Pyfunge has MycoTRDS done 20:33:22 Deewiant: And will you put jitfunge results there if I manage to get a respectable score before that? :) 20:33:23 Deewiant, that could take ages 20:33:25 will mycoedge be part of the main mycology? 20:33:31 ais523: A separate file 20:33:37 Short, though. 20:33:41 fizzie: how does jitfunge mycologize atm? 20:33:49 Deewiant: any particular reason for that? 20:33:57 Deewiant, the mycoedge copy I have had a bug according to the hs author iirc 20:33:58 Hmm. 20:33:58 ais523: Easier to work with 20:34:01 so any fixed version= 20:34:02 ? 20:34:05 I should find some text i need to process to use Perl on. 20:34:06 Ooh. 20:34:08 ais523: So that one 'p' results in a change in the bounds. 20:34:14 Maybe to fix up my log-getting script. 20:34:15 ais523: With Mycology, I'd have to kill a whole row/column. 20:34:34 AnMaster: No, none. Trivial to write tho. 20:34:38 Deewiant: why not just p to negative fungespace 20:34:40 You could even do it yourself ;-) 20:34:44 Yess, WWW-Mechanize... good good 20:34:45 then p to wipe out that negative value? 20:34:58 or same for high positive 20:35:16 Yeah, I guess that'd work too. 20:35:40 Deewiant, then someone would implement buggy initial file bounds 20:35:49 Although then AnMaster could optimize by only changing the bounds when it's outside his static array :-P 20:36:07 Deewiant, I never optimise away correctness 20:36:26 Deewiant, I'm not doing "worse is better" design 20:36:27 AnMaster: but how fast would cfunge run if you did? 20:36:34 ais523, faster probably 20:36:42 They should make a "use sane;" that does: 20:36:42 [[ 20:36:44 use strict; 20:36:46 use warnings; 20:36:46 why not just hard code the output of mycology 20:36:48 use diagnostics; 20:36:49 use autodie; 20:36:51 use utf8; 20:36:54 ]] 20:36:54 autodie isn't san 20:36:55 *sane 20:37:00 ais523: whyever not? 20:37:06 ais523, somewhat like ick's "compile to shellscript" 20:37:07 It makes it use proper exceptions 20:37:09 As It Should Be 20:37:10 Mycology isn't meant to be a 100%-testing suite anyway, much of it is drawing attention to some corner cases and then hoping that people will think about where else in their code such cases might apply. 20:37:15 ehird: Perl doesn't have proper exceptions 20:37:16 just die 20:37:24 Ding! Wrong 20:37:29 I mean, autodie throws /strings/ 20:37:33 that isn't a proper exception 20:37:37 FYI: Included with cfunge is some additional test suites 20:37:39 Hrm. 20:37:41 Python used to throw strings! 20:37:43 Doesn't Moose have something for exceptions 20:37:43 that I found I needed for extra code coverage 20:37:51 ehird: Moose has something for everything 20:37:56 C++ can throw strings, if you're so inclined! 20:37:57 Deewiant, you might want to check them (and any comments in them) for ccbi too 20:38:03 ignore the .f109 ones 20:38:06 ais523: well, autodie is _useful_ 20:38:08 or .b109 rather 20:38:09 ais523: I did get up to "k reflects" (because I haven't implemented that at all), but then I broke something earlier. 20:38:19 ehird: I only do about 2 or 3 things it would trigger on anyway 20:38:22 per program 20:38:27 I guess I can drop `use utf8;` since I don't have any of them moon speak thingies 20:38:38 and use utf8 only means that your script's in UTF8, IIRC 20:38:41 And I guess I can write dying stuff myself 20:38:41 ehird, åäö 20:38:42 ais523: yes 20:38:44 it's like a BOM, just longer and in text 20:38:50 ais523: BOM = windows shit 20:38:55 anyway it should be the default 20:38:59 it's only not because of legacyyyyyyyyyy 20:39:06 use strict; 20:39:06 use warnings; 20:39:08 err they meant BOOM 20:39:08 use diagnostics; 20:39:09 OK, that's better. 20:39:15 Microsoft that is 20:39:15 but 20:39:20 Marketing didn't allow it 20:39:31 because it would make too many realise the truth 20:39:36 about Microsoft and windows 20:39:40 AnMaster: please stop trying to be funny it's awful 20:39:53 ehird, I only did it to irritate you :P 20:40:04 (you done that a lot to me before, time to attack back) 20:40:06 AnMaster: you have srs issues 20:40:25 I just do strict+warnings on top of every script, since I can't read the "use diagnostics;" error messages; they are so verbose, my eyes glazeth over. 20:40:35 ehird, you have said you did such to me before, so that implies you too have serious issues. 20:40:52 AnMaster: yes but I don't do it all the damn time, only when you irritate me 20:40:59 ehird, same 20:41:09 I only do it when you irritate me 20:41:13 -!- pikhq has quit (Read error: 60 (Operation timed out)). 20:41:15 AnMaster: You're as irritable as Wooble. 20:41:22 * ehird breathes ← irritating 20:41:38 ehird, so are you. I mean don't you realise you are being trolled right now? Like you usually do against me. 20:41:44 and then point out you trolled. 20:41:49 happened a few times. 20:42:01 it really is heartwarming see you try and backtrack and try a new strategy. 20:42:04 though I think this is meta-trolling 20:42:44 ehird, ok that was an interesting reply. Sounds like same basic concept as some I tried before on you though. 20:44:30 I didn't even know of use diagnostics; 20:44:40 what does it do? 20:44:41 although interestingly, Moose auto-includes strict and warnings 20:45:21 "This module extends the terse diagnostics normally emitted by both the perl compiler and the perl interpreter, augmenting them with the more explicative and endearing descriptions found in perldiag." 20:45:23 what about elks then? 20:45:26 That is what it does. 20:45:54 perl compiler 20:45:55 what 20:45:57 since when? 20:46:06 AnMaster: lern2understandimplementationdeatailsofperl 20:46:16 I thought perl was interpreted and/or bytecode? 20:46:19 bytecode. 20:46:24 it compiles to bytecode. 20:46:28 fizzie: do you have a solution to the 'cpan is a verbose, questiony whore' problem 20:46:31 aha 20:46:44 ehird, but it doesn't produce bytecode files does it? 20:46:48 no. 20:46:51 That I do not have. 20:46:54 http://search.cpan.org/~chromatic/Modern-Perl-1.03/lib/Modern/Perl.pm <-- this looks nice 20:47:00 actually, the perl5 "compiler" is more just a parser 20:47:06 and the parse tree is interpreted 20:47:25 just the interp and parser call each other a lot, because of things like BEGIN and eval 20:47:25 mhm 20:47:41 ais523, a mess really is it? 20:47:53 yep 20:48:02 they're ripping the mess out and starting again for perl6 20:48:08 which is partly why it's taking so long to implement 20:48:26 AnMaster: Ran through your tests, nothing new there for CCBI (one semi-new which I fixed this morning and haven't released); I disagree that ='s return value being the return value of system() directly is BAD 20:48:26 ais523, DNF or Perl6, which do you think will be done first? 20:48:26 -!- neldoreth has quit (No route to host). 20:48:28 Perl 6 is far more messy. 20:48:38 AnMaster: dnf will be written in perl6 20:48:45 Deewiant, which was that semi-new 20:48:45 & have the new mbv as soundtrack 20:48:51 AnMaster: 0k x 20:48:51 everyone knows that 20:48:59 AnMaster: the most annoying thing about perl6 is that there's clearly progress being made 20:49:06 just it doesn't seem like they'll ever finish 20:49:12 Deewiant, and yes the sysexec one is cfunge specific as mentioned in the file iirc 20:49:27 Deewiant, oh and rc/funge segfaults on some of those tests iirc 20:49:37 AnMaster: Ah, you're right, I didn't check. 20:49:39 Deewiant, so might be worth adding some of that to mycology, just for fun 20:49:40 And heh. 20:50:01 Deewiant, pretty sure it fails to handle division by zero in some fingerprint 20:50:20 lifthrasiir, there? You may want to take a look on the cfunge test cases 20:50:26 I love how RC/Funge uses gets 20:50:30 Deewiant, btw, 0k x? I don't remember that one 20:50:31 It's so quaint 20:50:46 Deewiant, I saw gets() in mosaic too, but that is the only other place 20:50:51 AnMaster: iterate-zero.b98 20:51:02 AnMaster: thank you for information. (i'm not yet slept... hehe.) 20:51:10 ehird, mbv? 20:51:21 some other delayed project I guess 20:51:30 Deewiant, oh that right 20:51:52 Deewiant, well the 109 tests are more extensive for iterate really 20:52:04 AnMaster: mbv=my bloody valentine, shoegazer rock band from the 80s/90s who haven't released an album since 1992 but apparently it's still happening (not, as a cursory glance at their name would seem to imply, an emo band or the like) 20:52:15 Deewiant, together both sets run all the relevant code paths for iterate in cfunge 20:52:23 AnMaster: k@ seems to crash RC/Funge 20:52:30 Deewiant, really? interesting 20:52:40 *** glibc detected *** ./funge: double free or corruption (!prev): 0x0000000000633010 *** 20:52:47 Deewiant: for killing a thread, or for killing the program, or both? 20:52:51 Deewiant, hah 20:52:59 ais523, it should only kill current thread 20:53:04 ais523: A thread, it dies after the first @ and can't iterate any more. 20:53:06 it used to segfault cfunge way way back 20:53:13 found it with fuzz testing 20:53:41 * AnMaster tries to figure out how tests/iterate-zero.b98 works 20:53:46 huh 20:53:47 Deewiant: It is, in fact, double-free. 20:54:01 Deewiant, I can't see 0k x 20:54:05 only 0k v 20:54:06 and such 20:54:19 Deewiant, in tests/iterate-zero.b98 that is 20:54:37 AnMaster: Sorry: ∀x. 0k x 20:54:47 Deewiant, I don't know APL 20:54:51 what would that one mean 20:54:55 LOL 20:54:56 APL 20:55:04 ∀ looks APL-y to me 20:55:09 All that per-IP state, like stack and mini-funges or whatever; it free()s that at @, and k blindly calls Exec() on the @ many many times. 20:55:12 Sorry, that just cracked me up :-D 20:55:18 Deewiant, so it is something else? ok 20:55:26 AnMaster: 'for all x' 20:55:28 ah 20:55:31 Deewiant: You should've said \forall x. Ok x, that's more guessable. 20:55:42 Is it 0k? Heh. 20:55:52 well 20:55:55 This font lacks a sensible 0. 20:55:59 jumpwrap.b98 seems to infinite-loop RC/Funge 20:56:04 x and v are rather different 20:56:11 in how they are implemented in cfunge 20:56:19 so it didn't make a lot of sense to me 20:56:27 As does test-formfeed.b98 20:56:37 Deewiant, jumpwrap.b98 I 20:56:43 I'm not* 100% is correct 20:57:18 Deewiant, and test-formfeed.b98 is because rc/funge thinks it is trefunge even when it is befunge mode 20:57:31 so it increments z in befunge I think 20:57:37 Deewiant, iirc 20:57:46 Heh 20:57:56 hm 20:58:06 AnMaster: What's up with a5+, why not just do f 20:58:13 Deewiant, which test? 20:58:19 jumpwrap.b98 20:58:28 And also, there's no # in that file :-P 20:58:35 Deewiant, I wrote that in 2008-03-12 20:58:37 I don't remember 20:59:04 Deewiant, why would there be #? It tests j 20:59:07 Ah, but you've updated it in 2008-09-20 20:59:15 AnMaster: It has a comment talking about # and spaces 20:59:16 yes I did 20:59:19 * AnMaster diffs 20:59:41 -0f2*-j 'C,@ 20:59:42 - 20:59:42 -This 20:59:42 -tests 20:59:42 +0a5+-j #v'C,a,@ 20:59:43 + >'W,a,@ 20:59:52 that was in 2008-03-19 21:00:07 -0a5+-j #v'C,a,@ 21:00:07 - >'W,a,@ 21:00:07 +0a5+-jvvvvvvvvv 21:00:07 + 123456789 21:00:07 + @,a.<<<<<<<<< 21:00:11 was in 2008-09-20 21:00:12 hm 21:00:24 Deewiant, I think the comment is wrong 21:00:37 the new version makes more sense 21:00:46 I'm quite sure it's wrong :-P 21:00:51 $ ../build/cfunge jumpwrap.b98 21:00:51 1 21:00:52 you get that? 21:01:05 or some other value? 21:01:17 Deewiant, seriously I'm not sure what is right there 21:01:33 IMO 9 21:01:38 Deewiant, huh? 21:01:43 and which does ccbi give? 21:01:47 1 21:01:58 Deewiant, ah I probably adjusted for that then :D 21:02:02 and why 9? 21:02:15 Just like # v doesn't jump over the v, so should 1j v not jump over the v 21:02:39 Deewiant, that isn't how it is done though 21:02:39 That's the same thing; there's about 2^32 - 20 spaces in between 21:02:47 "Cannot unzip, no unzip program available " 21:02:49 wtf cpan 21:03:07 A cell can't contain a high enough value to give to j that would make it jump over any of those v's 21:03:48 Deewiant, hm.. 21:04:21 "WARNING: 'All rights reserved' in copyright may invalidate Open Source license. " 21:04:24 cpan checks for _everything_ 21:04:25 Deewiant, any other tests you wonder about? Be aware some messy k stuff is only tested in the 109 variant 21:04:31 I'm willing to leave this is as an UNDEF because it isn't 100% clear but mycology_opinionated would say BAD for # or j over edge not hitting the edgemost 21:04:31 you may want to check what those files do 21:04:51 to see if it is relevant to test for ccbi 21:04:54 Didn't really look at them in detail, just checked which ones gave BAD :-P 21:05:12 Deewiant, any 109 ones gave good in 98? 21:05:24 Deewiant, btw when I was lazy C means correct and W wrong 21:05:25 usually 21:05:36 Deewiant, in case the stuff is hard to interpret 21:05:39 One of the 109s was an infinite or long loop 21:05:54 So I just skipped them after that ;-P 21:06:10 > 'W,a,@ 21:06:10 >221k * 4w 'C,a,@ 21:06:10 > 'W,a,@ 21:06:12 The kk one 21:06:16 tell me what that one should do 21:06:23 Deewiant, ah how do you handle k over k? 21:06:24 AnMaster: that's nice and pretty 21:06:27 you look on it? 21:06:31 loop* 21:06:35 Ah, I see 21:06:38 AnMaster: That's a bug in your test 21:06:43 The v following doesn't go anywhere 21:06:49 On the first line of iterate-iterate2 21:06:53 ehird: TAEB got caught out on that check, because they'd phrased the name of the GPL slightly incorrectly from CPAN's point of view 21:07:07 AnMaster: And I simply don't handle kk 21:07:12 Deewiant, that is quite possible yes. because that would be a failure path 21:07:15 Deewiant, BUG BUG 21:07:19 Yep :-) 21:07:21 cfunge handles nested k for n levels 21:07:23 correctly 21:07:23 http://search.cpan.org/search?query=unzip&mode=all 21:07:30 There is more than one way to hate profileration of modules. 21:07:31 CCBI is less conforming than cfunge. yay 21:07:32 :D 21:07:34 *proliferation 21:07:38 Deewiant, when do you plan to fix it? 21:07:40 AnMaster: Yes, to -109. 21:07:42 I don't plan to. 21:07:46 I don't support -109. 21:07:51 Deewiant, k over k makes sense in 98 too 21:07:59 Yes, and I think my interpretation makes more sense. :-P 21:08:06 We've been over this before in hours-long discussions. 21:08:17 And long e-mails. 21:08:40 Deewiant: what does 2#;k; do? 21:08:59 432kkv 21:08:59 zz 21:08:59 z>0"DAB">:#,_a,@ 21:08:59 >0"DOOG">:#,_a,@ 21:08:59 " 21:09:00 _a,@ >"DAB YREV">:#, 21:09:02 especially in a multithreaded program? 21:09:02 revised test 21:09:06 Deewiant, what do you think? 21:09:07 AnMaster: Meanie :-P 21:09:23 ais523: Well, it loops infinitely, since there's no @ 21:09:25 ;-) 21:09:27 Deewiant, what? I plan to comit this. And I love seeing a >:#,_ idiom over edge 21:09:36 Deewiant: yes, but how many ticks does it take per iteration? 21:09:40 AnMaster: Meanie in that it's VERY BAD and not BAD 21:10:04 Alright, let's see. 21:10:13 The k finds the 2, running it twice. 21:10:15 Deewiant, well I think k over k should at least do something sensible in 98 too 21:10:20 Deewiant: no, it doesn't 21:10:22 Or wait, what 21:10:22 the k finds the k 21:10:23 It finds itself 21:10:37 AnMaster: I think that's sensible given the specs. 21:10:42 So the k finds itself. 21:10:45 well maybe 21:10:53 oh great 21:10:56 cpan failed 21:10:58 i hate cpan(1) 21:11:01 ehird: welcome to the world of Perl 21:11:02 32kk5 >:#._a, 21:11:05 what about that? 21:11:08 ais523: i like cpan, just not cpan(1) 21:11:11 it's horrifically badly designed 21:11:22 AnMaster: that should push six 5s on the stack, shouldn't it? 21:11:27 ehird: well, agreed about cpan(1) 21:11:33 but how else are you going to use cpan? 21:11:34 ais523, says: v"Correct output is:"a"5 5 5 5 5 5 5 5"< 21:11:47 AnMaster: no it isn't, you missed the trailing space 21:11:49 I think it may differ in 98 and 109 21:11:52 ais523, well duh 21:11:55 ais523: Anyway, it takes one tick since it's k ;-) 21:12:07 But I think it'll thereafter always skip the 2 21:12:08 $ ../build/cfunge iterate-iterate.b109 21:12:08 5 5 5 5 5 5 5 5 5 5 5 5 21:12:08 Correct output is: 21:12:08 5 5 5 5 5 5 5 5 21:12:08 Deewiant: one tick to run an infinite tower of k? 21:12:10 $ ../build/cfunge -s 109 iterate-iterate.b109 21:12:10 5 5 5 5 5 5 5 5 21:12:11 Correct output is: 21:12:14 5 5 5 5 5 5 5 5 21:12:17 as far as I can tell, all interps would just lock up on that code 21:12:17 ais523: It's not infinite the way CCBI does it. 21:12:17 so 21:12:19 why? 21:12:20 not allowing othe threads to run 21:12:24 Deewiant: what, really? 21:12:31 oh, because nested k is broken 21:12:32 ais523: Let me check, I'm quite sure. :-P 21:12:44 ais523, which code did you mean isn't infinite? 21:12:55 AnMaster: 2#;k; is. 21:12:57 hm 21:12:58 For cfunge, probably. 21:12:58 AnMaster: we're talking about 2#;k; 21:13:03 lets see 21:13:10 aiie 21:13:11 in cfunge, I suspect it would send it into a tight infinite loop, or possibly run it out of memory or stack 21:13:13 ais523: Yeah, it's k per tick. 21:13:27 ais523: IP gets stuck on the k with an empty stack. 21:13:28 ais523, wait no, it will end when it realises 0k 21:13:37 it won't try to fetch next instruction in case of 0k 21:13:44 so it will be limited of size of stack 21:13:45 won't it? 21:13:51 AnMaster: what does 0kkv do? 21:14:08 ais523, 98 or 108? 21:14:12 err, either 21:14:14 AnMaster: i think so. 21:14:23 lifthrasiir, think wha? 21:14:24 what* 21:14:36 ais523, wait no, it will end when it realises 0k 21:14:52 I think you have to keep parsing the row of ks, don't you 21:14:59 to figure out precisely what it is that you aren't doing? 21:15:06 (i'm a bit slow when try to answer...) 21:15:07 or is it always legal to optimise that away 21:15:18 0kkvv3.a,@ 21:15:18 > 1.a,@ 21:15:18 >2.a,@ 21:15:21 Hmm, actually it's simpler than I thought, isn't it, I'm not sure what I was thinking before. 21:15:23 outputs 1 in both 98 and 109 21:15:26 in my tests 21:15:27 ais523, ^ 21:15:39 Discovery: Perl is pretty is you hide everything. 21:15:53 sub download_and_extract { 21:15:53 my $url = shift; 21:15:55 my $zip; 21:15:56 $mech->get($url, ':content_file' => 'foo.zip'); 21:15:57 AnMaster: that doesn't surprise me at all 21:15:59 $zip = Archive::Zip->new('foo.zip'); 21:16:00 $zip->extractTree(); 21:16:02 unlink 'foo.zip'; 21:16:04 } 21:16:06 ais523, it makes perfect sense 21:16:07 Of course, I only call this once... 21:16:10 ais523: Why would you have to parse the row of ks? You get 0kk and abort. 21:16:19 ehird: hardcoded temp filenames? 21:16:24 ais523: yes. 21:16:28 ais523: Gotsaproblemwitdat 21:16:29 ? 21:16:35 ais523: Or, show me an easier way in Perl. 21:16:38 ehird: yes, it's a security risk 21:16:39 is there a mktemp module? 21:16:42 almost certainly 21:16:46 File::Temp. 21:16:49 also, srsly now. 21:16:53 this is Perl we're talking about 21:16:53 This downloads #esoteric logs. 21:16:57 is there a X module is true for all X 21:17:10 File::Temp can open you the file without any sort of racy issues. 21:17:12 ehird: well, for throwaway scripts you only use yourself, hardcoding temp file names may be acceptable 21:18:02 build/cfunge -t 9 tests/ais02.b98 & kill $! <-- fills my scrollback 21:18:02 wow 21:18:06 I live the speed 21:18:08 * AnMaster ducks 21:18:12 AnMaster: why are there .b109 files in the tests? sort of "UNDEF in Funge-98 but should be..."? 21:18:16 Global symbol "$mech" requires explicit package name at /Users/ehird/Code/scraps/2009-03/grab-esoteric-logs.pl line 16. 21:18:18 my $mech = WWW::Mechanize->new(agent => '#esoteric scraper'); 21:18:20 w h a t 21:18:30 lifthrasiir, that is due to the new revised standard I'm working on 21:18:37 which fixes a lot of UNDEF yes 21:18:44 lifthrasiir: AnMaster is working on a standard that nobody but him will use. 21:18:44 like details of k 21:18:48 And all it does is specify edge cases everyone already agrees on. 21:18:53 ehird, RCS actually has a half-broken mode for it 21:18:58 Nobody agrees on k. :p 21:19:01 ehird: I disagree with some of -109. 21:19:01 and no 21:19:01 it changes k 21:19:03 ehird: disagree on the "everyone already agrees on" 21:19:05 Deewiant: I was about to say, 21:19:11 and also specifies things that AnMaster just decrees Are True 21:19:17 thus making it even less appealing 21:19:17 no 21:19:22 well, the # over file/line edge thing needs fixing IMO 21:19:32 ais523, I defined it iirc in 109 21:19:35 yes 21:19:38 ais523: I think it's fairly irrelevant in practice, actually. :-P 21:19:38 great, a standard for one single case of ambiguity 21:19:39 woop woop 21:19:44 hmm... have you definied a semantic for # over the edge of fungespace 21:19:50 AnMaster: besides precise semantics, is there any addition? 21:19:55 as in, if you put a # right at the most positive coordinates 21:20:02 does it necessarily jump column 0? 21:20:04 ais523, http://rafb.net/p/8P9UDb22.html 21:20:07 that may interest you 21:20:24 ah, yes 21:20:27 ais523: A # at 2^(cell size in bits)-1 should jump over -2^(cell size in bits) IMO. 21:20:32 the trace from nested k is not clear 21:20:33 you avoid the infinite regress because you can optimise 0k 21:20:47 Deewiant: ah, ok 21:20:50 I think probably it should too 21:20:51 Deewiant, that is news to me 21:20:53 but am not sure why 21:20:54 but a good idea I agree 21:21:10 Deewiant, what about flying delta and that? 21:21:14 Deewiant: but if cell size is unbounded, like bignum? 21:21:15 what would happen then 21:21:16 :D 21:21:19 Hrm, I wonder if perl has funky syntax for checking if a file exists. 21:21:20 AnMaster: What about it? 21:21:21 oh yes 21:21:30 Deewiant, also efunge uses bignum 21:21:34 lifthrasiir: Then # over the edge never skips over anything. 21:21:34 21:19 lifthrasiir: AnMaster: besides precise semantics, is there any addition? no 21:21:35 so that is highly relevant 21:21:38 ehird: You mean more funky than "-e $file"? 21:21:49 fizzie: Funky exactly like that. 21:21:59 AnMaster: What about flying deltas? 21:22:12 Deewiant, I don't know. That is what I'm asking you 21:22:21 lifthrasiir, well there is an idea about using URIs for fingerprints instead, to reduce namespace collision 21:22:26 AnMaster: What don't you know? 21:22:34 lifthrasiir: Funge-109 uses URIs for fingerprint names 21:22:43 I mean, is there something nonobvious somewhere 21:22:49 They work the way you'd expect :-P 21:22:49 personally I think that may be a bad idea, because loading fingerprints uses up enough space as it is 21:22:52 my $last = sort(<*>)[-1]; # hope that works :P 21:22:53 ais523: oh, yes 21:22:57 it makes code infinitely more bloated and ugly 21:23:02 Deewiant, delta 4,10, # at 2^(cell size in bits)-1 is hit 21:23:03 what happens 21:23:05 at the gain of never having collisions that don't happen 21:23:42 ehird: What's funky is that if you have executed any "-X $file", you can then do "-Y _" and "-Z _" and it'll use the stat(2) buffer filled for the first -X test. 21:23:48 AnMaster: Well, moving 1 east from the edge gets you to -2^(cell size in bits). 21:23:49 ehird, also versioned fingerprints 21:23:57 would be buildable on it 21:24:02 AnMaster: Yaaaay more solved problems that never existed that makes code more ugly 21:24:05 in case someone decides to retcon it 21:24:07 perl 108 for the win. 21:24:08 er. 21:24:08 AnMaster: There are no spaces to skip over so it's just as though it weren't on the edge. 21:24:09 befunge. 21:24:12 ehird, it happened several times 21:24:21 with RCS fingerprints 21:24:36 and Deewiant insisting on breaking the spec 21:25:40 Deewiant: On the other hand, the Lahey-space is infinite. The wrapping part of the (98) spec says: "When the IP attempts to travel into the whitespace between the code and the end of known, addressable space --" which to me sort-of implies there is even more space after the addressable space. 21:25:56 AnMaster: how dare he 21:26:05 he's a... a... an INSISTOR 21:26:39 fizzie: only if interpreter uses unbounded integer for coordinate. 21:26:40 Nobody expects the Spanish insistion. 21:27:12 fizzie: Hmm, perhaps. 21:27:14 lifthrasiir: No, really. The coordinate size just affects the "known, addressable space" part. It can still be treated as if there was an infinite amount of spaces outside *that*. 21:27:40 fizzie: if you mean that i agree. 21:28:22 lifthrasiir, one such exists 21:28:26 efunge 21:28:43 AnMaster: and obviously pyfunge. 21:28:52 lifthrasiir, it uses unbounded too? 21:28:54 Deewiant: I would think you'd hit the "a # at 2^N-1 and something at -2^N" problem even less often than a plain old "# at the edge in some reasonable coordinates". 21:28:56 fizzie: It annoys me that there's no maths at all in the description of the 'mathematical model' 21:29:03 it uses python integer so unbounded. 21:29:06 lifthrasiir, then what do you push for size of cells? 21:29:14 fizzie: Yes, definitely, I don't think it's important in practice either :-P 21:29:34 once 4 without careful thinking, currently -1, and not yet sure that what is correct. 21:29:40 lifthrasiir, python (on the C side at least) have two integers 21:29:43 int and long 21:29:47 where long is bignum 21:29:51 fizzie: But yeah, I guess that can be read either way. 21:29:58 iirc they removed the int in python 3 though 21:30:34 There's some sort of automatic promotion to long, though. 21:31:17 yeah, and that automatic promotion cannot be suppressed without using... & 0xffffffff, and so on. 21:31:40 >>> 9223372036854775807 21:31:40 9223372036854775807 21:31:40 >>> 9223372036854775807+1 21:31:40 9223372036854775808L 21:31:53 so that's practically same type 21:32:01 Is there really no good way t o do copying =~ without a tmp var? 21:33:20 You'd want the result of a s/// without mangling the original? 21:34:00 -!- BeholdMyGlory has joined. 21:36:57 Yar./ 21:37:19 Hey fizzie, you got them 2002 esoteric logs? 21:37:27 Could integrate that into my script. 21:37:38 02:12:04 ah, re befunge, just wrote an interpreter with forth. so our unofficial befunge-interpreters-in-obsolete-but-non-esoteric-languages project now has forth, fortran-77, algol-60, plus few less interesting ones. maybe should do cobol next. 21:37:41 — 2003-01-21 21:38:19 ehird, =~ ? hm 21:38:21 I haven't see any sensible idiom for that. Although you can use $_ as your temp var and then you don't have to write the name again; "$_ = $foo; s/.../.../;" and you end up with the mangled string in $_. I don't much like to write $_ out loud, though. 21:38:31 ehird, self not? 21:38:32 huh 21:38:35 wait bitwise not 21:38:37 AnMaster: Match. 21:38:38 brb → 21:38:41 ehird, what language? 21:38:45 Perl. 21:38:47 AnMaster: self bitwise not would be ~= 21:38:47 ← Perl. → 21:38:50 and besides doesn't make sense 21:38:51 I see 21:38:57 =~ is Perl's pattern-match operator 21:39:16 ais523, yeah ~~i and i~~ would make more sense 21:39:23 :D 21:39:35 AnMaster: nope, that would be equivalent to i ~= 1; 21:40:13 ~=i; could make sense, as a shorthand for i = ~i. 21:40:34 Unary prefix ~= sounds a bit perverse. 21:41:30 ais523, but ~ in place then? 21:41:49 yeah 21:41:53 AnMaster: how often does it come up anyway? I mean really? 21:41:53 what fizzie said 21:42:08 fizzie, I want suffix version too! 21:42:42 ais523: Well, especially in the logical "x = !x" form it does happen. So maybe !=x; 21:42:54 postfix too 21:42:56 it would be useful 21:43:46 Flip x but evaluate to the original value? That's just !!=x. :p 21:44:01 Deewiant, efunge get no BAD btw in the branch https://code.launchpad.net/~anmaster/efunge/supervisor-tree 21:44:02 Maybe not exactly, since it would do the boolean-cast too. 21:44:06 might be nice adding to mycology page 21:44:16 Deewiant, it is development yes 21:44:18 but still no bad 21:44:33 rather basic 21:44:35 ~~=x; should work just as well as a postfix x=~; operation. (I flipped the order of =/~ there.) 21:44:46 Certainly it would raise the line noise factor of C. 21:44:53 Maybe not exactly, since it would do the boolean-cast too. <-- indeed 21:45:04 aaah 21:45:05 right 21:45:08 we shouldn't add it 21:45:14 since it would end up like perl then 21:45:30 good think ISO would never do it anway 21:45:34 anyway* 21:46:13 actually shouldn't it be time for a new C version around now? 21:46:19 I mean, C89, C99, C09? 21:46:24 it would follow a pattern 21:46:39 anyone know what the plans are for new C versions? 21:46:48 foo ^=~0; 21:46:59 olsner, what does that do? 21:47:09 lets see 21:47:11 Perl recognizes the following "x="-style operators: **= += -= .= *= /= &= x= &= |= ^= <<= >>= &&= ||= //= 21:47:13 xor on the complement 21:47:24 Yes, it's pretty much ~=foo; 21:47:27 fizzie, not plain x= though? 21:47:33 It is there on the list. 21:47:50 But the first &= should be %=, that was a typo. 21:48:03 fizzie: //= is very new 21:48:35 $foo = "yay"; $foo x= 4; # $foo is now "yayyayyayyay" 21:49:47 AnMaster: that will be C1x, cannot be done in 2009 21:49:56 I don't think I've used // either, although I can see the need. I've probably just written "defined $a ? $a : $b" instead of "$a // $b" though. 21:50:39 i heard that gets is finally removed from C1x, but who knows. 21:50:56 Wikipedia has heard that too, but [citation needed]. 21:50:57 people haven't even finished implementing C99 yet, though! 21:51:03 (The tag is not there, but ought to be.) 21:51:10 fizzie: add it! 21:51:13 {{fact}} 21:52:26 What do people usually write in the edit summary, if they just add a {{fact}}? 21:52:48 +fact? 21:53:00 Heh, that copy-pastable list of funky characters under the textbox is funny. 21:55:26 there eventually be every character in unicode 5.1 in that list. 21:56:25 lifthrasiir, heh ok 21:57:00 ais523, just because people haven't finished implementing the last C++ standard doesn't mean they won't churn out another one 21:57:33 so why wouldn't the same be true for C? 21:57:49 and I don't know why it takes them so long to implement C99 21:57:59 if they really wanted it could certainly be done by now 21:58:00 have you ever tried to implement C99 21:58:09 that nobody wants to is the point, more or less 21:58:11 ais523, no, nor C90 21:58:13 it means it's failing as a standard 21:58:15 C89* 21:58:22 heh, two names for the same thing 21:58:27 ais523, people have implemented the nice bits from it 21:58:31 only difference between C89 and C90 is the section numbers 21:58:37 ais523, it was actually an off by one key error 21:58:44 not a joke about the different names 21:58:44 ha 22:00:39 * AnMaster wonders if the expression && makes sense 22:00:42 as in 22:00:56 foo ** bar == &&quux; 22:00:57 ? 22:01:11 Of course not 22:01:19 yeah where would the middle pointer be 22:01:20 anyway 22:01:25 would it make sense with a space? 22:01:29 probably not either 22:01:39 AnMaster: unary &&? 22:01:41 foo ** bar == &(&quux); 22:01:42 AnMaster: foo ** bar == foo * (*bar) 22:01:47 that is how it should parse 22:01:48 IMO 22:01:56 also, you can't take the address of an address 22:02:01 that's like writing &6; 22:02:04 ais523, without a middle variable yes 22:02:09 GCC computed-goto extension has stolen unary && already. :p 22:02:14 in gcc, unary && is the address-of-label operator 22:02:16 fizzie, heh 22:02:27 ais523, why doesn't normal & work for that? 22:02:35 labels have a different namespace to variables 22:02:37 anyone stolen unary || then? :p 22:02:40 hm 22:02:43 so you need to say which you're taking the address of 22:02:51 oh right 22:02:53 hm 22:03:00 why & btw? 22:03:02 or * 22:03:07 for reference/dereference 22:03:15 it doesn't really make much sense 22:04:36 foo*bar is multiplication, foo**bar then? what is that? multiplying a dereferenced pointer I would assume, but that is certainly confusing. There is only one valid way to interpret it but still 22:04:42 that is another issue 22:04:52 but still, why & for reference and * for dereference 22:04:56 anyone knows? 22:05:25 that traces back to BCPL.. maybe. 22:05:48 in BCPL, BPL or whatever before C, once '*c' is used instead of '\c' 22:06:23 why would \ make sense there? 22:06:26 i mean '*n' and '\n', hmm 22:06:30 -!- pikhq has joined. 22:06:34 heh 22:08:28 comp.compilers: "To answer why C has such bad syntax for pointers, you should look at BCPL. It had two indirection operators, !ptr and ptr!offset. The former turned into C's *ptr and the latter split into ptr[offset] and ptr->offset." 22:08:34 That's not really an explanation, though. 22:12:12 That was in the context of people proposing a postfix * instead of prefix * for dereferencing; so "a[i]*" and not "*a[i]", where you have to bounce back-and-forth to decode it. 22:13:31 -!- neldoreth has joined. 22:24:34 fizzie, heh 22:24:49 I like *(*foo->bar)->quux 22:24:53 and such 22:25:19 FireFly, that is a lot of bouncing indeed 22:25:24 err 22:25:25 fizzie, ^ 22:25:26 Indeed it is 22:25:28 :( 22:25:47 FireFly, what do you expect with that nick? 22:26:06 ^style 22:26:06 Available: agora alice darwin discworld europarl ff7 fisher ic irc* lovecraft nethack pa speeches ss wp 22:26:09 ^style nethack 22:26:10 Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal) 22:26:11 hi fungot 22:26:11 AnMaster: they say that venus sprang from the oligocene of asia... the legend of his hidden pot of gold in a waterproof bag that had a local celebration called " o learned one of the old, old man, " where does this beggar came from the " lord of the modern day domestic dog, canis dingo, of course, but sometimes... 22:26:34 fungot: more nonsense, please 22:26:34 ais523: valkyrie, valkyrie: the elves, and finally a god of the strangers that sojourn in israel, or yeti, is human apart from his horse at the shoulder. ( conan the avenger by robert e. howard) 22:26:37 I don't know the legend of Venus' hidden pot of gold in a waterproof bag. 22:26:43 the legend of his hidden pot of gold in a waterproof bag that had a local celebration called " o 22:26:45 lovely 22:27:03 Israel? 22:27:07 in nethack? 22:27:10 fungot: keep going 22:27:10 ais523: cave*man, human cave*man: now issek of the half-extinguished light, they make many clever ones. the waves to the land, and a horn. it protects all who carry it from the bottom the only place to go before i sleep. 22:27:16 AnMaster: it's in the flavour text, probably 22:27:34 ais523, flavour text? 22:27:35 there's a lot of flavour text in nethack, and people hardly ever read it 22:27:43 AnMaster: using / 22:27:49 hm 22:27:54 and answering y to the "More information?" prompt 22:27:58 It's for Moloch. 22:28:01 oh 22:28:02 everyone just uses ; though because it's faster and does the same thing 22:28:07 fizzie, huh 22:28:15 ais523, ah yes I always used ; indeed 22:28:16 A direct quote from (Leviticus 20:1-5). 22:28:19 never even knew about / 22:28:30 fungot, details? 22:28:31 AnMaster: they say that some fire ants will make you batty, for a change of scenery. people steal souls. ( a field guide to fantasyland, by richard patrick) 22:28:47 heh 22:29:04 nice with references at the end 22:29:05 The data.base file, from which the model was built, is ~200k of ascii text. That's a sizeable book. Lots of quotations, of course. 22:29:09 wikipedia would love that 22:29:31 fungot, go on... 22:29:31 AnMaster: they say that the delphic oracle knows that speed kills. figurative: _a paper tiger_, something that is accidentally dropped will hide under a larger object. 22:29:46 heh 22:29:50 the last... 22:30:17 There's a proposal for a new C++ syntax that would make *(*foo->bar)->quux look like foo^.bar^^.^ or something like that, as close as I can understand. http://www.csse.monash.edu.au/~damian/papers/HTML/ModestProposal.html#section3.4 if you feel like it. 22:30:18 pit below some small food item anyone? 22:30:22 sounds familiar? 22:30:38 foo^.bar^^.^ 22:30:39 what 22:30:43 that makes no sense 22:30:56 ^ as the dereferencing operator, and . with the good old member-of syntax. 22:31:06 So -> gets superfluous, as it's just ^. 22:31:08 The C++ equality test (val1 == val2) has been changed in SPECS to val1 = val2, as this binding for "=" is more consistent with widespread mathematical usage. The inequality operators ("!=", "<", "<=", ">", ">=") are unchanged. 22:31:10 argh 22:31:11 And postfix ^, yes. 22:31:13 so how would one do: 22:31:24 AnMaster: One would use a temporary. 22:31:35 Deewiant, even so 22:31:36 One would use the assignment operator, :=. 22:31:37 specs is hot 22:31:43 it would break headers 22:31:51 would it? 22:32:00 why not just handle that syntax internally 22:32:06 and translate 22:32:07 ehird, system headers with that idiom? ((a = b) == c) yes? 22:32:09 I have seen it 22:32:16 why not just handle that syntax internally 22:32:17 and translate 22:32:17 in macros yes 22:32:23 why not just handle that syntax internally 22:32:23 and translate 22:32:29 ehird, for all edge cases? good luck 22:32:37 AnMaster: you mean like... a c++ parser? 22:32:38 i think those exist. 22:32:52 ehird, yes but how can you detect which was meant in all cases? 22:32:56 it is a breaking change 22:32:57 ... 22:32:59 what? 22:33:13 i mean you parse as C, then translate to SPECS 22:33:14 trivial 22:33:14 making = mean == in if context breaks stuff 22:33:24 = means == in every context 22:33:29 ehird, what about other ones? Like random C libraries 22:33:46 AnMaster: "If you include .h or .hpp or .hh or .H it's parsed as C or C++ then converted to SPECS" 22:33:49 iirc valgrind client request headers has it 22:33:53 mhm 22:33:56 SPECS files would have a different file extension, obviously 22:34:06 Alternatively you can just translate all SPECS source files into "standard" syntax, if you feel like it, and use your old compiler. 22:34:07 right 22:34:16 fizzie: That would be more compatible, yes. 22:34:43 oh it isn't about suggested C++ changes 22:34:47 like fizzie said 22:34:50 but another language 22:34:50 ... yes, it is 22:34:51 right 22:34:52 no 22:34:55 it's a proposed new syntax for c++ 22:34:57 what is SPECS then? 22:35:02 to replace the old one 22:35:18 is it still TC to parse? 22:35:21 no. 22:35:24 [it's by Damian Conway of Perligata fame] 22:35:29 [and some other person who's less interesting] 22:35:47 not Conway as in GOL? 22:35:51 no. 22:35:53 oh 22:35:53 he is not a programmer. 22:35:55 true 22:35:56 he is an old mathematician. 22:36:19 relatives? 22:36:34 No. 22:36:35 Well, I don't think it changes the type system or templates, more than just the consmetic syntactic changes, so I don't think it makes C++ compiler-writers any happier; it's just supposed to be nicer to read and use. 22:36:39 Conway is not uncommon as a second name. 22:36:50 fizzie: No, i think it stops the foo<> ambiguity 22:36:55 So it wouldn't be tc to parse 22:36:56 just compile 22:37:10 Oh, right. There is that. 22:37:35 I'm not sure if there was still some "must know whether this is a type or not" situations. 22:37:46 I'm not a C++ expert at all. :/ 22:38:08 x := p-> template alloc<200>(); 22:38:08 The SPECS equivalent is: 22:38:08 x := p^.alloc<[200]>(); 22:38:10 well sure 22:38:16 AnMaster: that's delicious 22:38:18 But it indeed stops the <> problem with the <[ ... ]> brackets. 22:38:19 but -> is nicer than ^. 22:38:20 IMO 22:38:24 it just looks pretty 22:38:27 -!- ais523 has quit (Remote closed the connection). 22:38:33 p→alloc! 22:38:34 ehird, I think -> looks more logical though 22:38:44 AnMaster: it's called familiarity 22:38:58 At least ^ is pointier than the *. :p 22:39:10 ehird, partly yes, but -> is more vertically symmetrical than ^. 22:39:26 (AnMaster probably won't like the fact that they've changed bitwise xor from ^ to ! then.) 22:39:39 fizzie, what happened to logical not then? 22:39:40 ... 22:39:43 That's unary. 22:39:48 oh true 22:39:51 "a ! b" didn't mean anything sensible, yet. 22:40:09 FireFly, still ! for xor doesn't make a lot of sense, nor does ^ 22:40:15 what about the keyword xor? 22:40:39 Now you remind me of VBScript 22:40:50 FireFly, I was thinking about erlang, it has bxor 22:40:56 for bitwise xor 22:40:57 Ah 22:41:19 does vbscript do xor heh 22:41:35 I think they've kept that. 22:41:42 (C++ already does keywords for operators.) 22:42:06 fizzie, nothing wrong with keywords for operators 22:42:26 Scala does operators nicely, `a b c` is just `a.b(c)` 22:42:40 fizzie, have they fixed the "recompile all code linked against header when private members change" yet? 22:42:54 for classes 22:42:56 C++ has "xor" as a synonym for ^, but & and | are "bitand" and "bitor", because "and" and "or" are reserved for && and ||. 22:43:03 Well, no, it's still C++. 22:43:56 What is a bit silly is that since bitand means &, you can use it whenever you'd use a &: so "char *foo = &bar;" can be written as "char *foo = bitand bar;" or so I believe. 22:44:01 ehird, what do the ` mean in that? 22:44:11 AnMaster: code. 22:44:37 -!- oerjan has joined. 22:44:45 ehird, are they part of the code, or just quotes in your irc line. that is in-band or out of band? 22:44:53 latter. 22:44:59 right 22:45:14 It looks like... well, a number of wiki-markups, the backticks-for-code. 22:45:18 22:43 fizzie: What is a bit silly is that since bitand means &, you can use it whenever you'd use a &: so "char *foo = &bar;" can be written as "char *foo = bitand bar;" or so I believe. 22:45:20 that's awesome 22:45:24 fizzie: I stole it from markdown 22:46:03 fizzie, I was thinking `` as in shell 22:46:05 first 22:46:29 ehird, so you do \` in markdown to escape one? 22:46:33 AnMaster: Yes. 22:46:39 heh 22:46:47 DokuWiki uses ''monospaced'', but I think Confluence (that proprietary "enterprise wiki" by Atlassian) does `code`. Maybe, might remember wrongly too. 22:47:08 what we really need is out of band markup 22:47:10 no idea how 22:47:21 no escapes in the data 22:47:33 maybe markup as a separate stream with offsets in the other one 22:47:40 but that would be hard to maintain 22:47:45 AnMaster: xanadu had out of band markup 22:47:54 ehird, how did it work? 22:48:03 ask ted nelson. 22:48:05 Just send the markup as TCP "urgent" data. 22:48:15 :D 22:48:37 fizzie, what about when they are stored on disk or edited though? 22:48:46 Different files then, I guess. 22:48:46 Ted Nelson also invented the word "teledildonics". 22:48:55 Meaning "dildos controlled via computers". 22:49:07 He is rather anti-sane. 22:49:27 ehird, ... indeed 22:49:37 "Other products being released fit a new category called bluedildonics, which allow a sex toy to be controlled remotely via a Bluetooth connection." 22:49:57 released? heh 22:50:19 That was accompanied with a Wired article-link, http://www.wired.com/culture/lifestyle/commentary/sexdrive/2004/09/65064 22:50:36 I believe there's a GNU/LINUX POWAHED server for teledildonics thingies; which gave me an awful image involving richard stallman. 22:50:55 Mental image that is 22:51:11 -!- olsner has quit ("Leaving"). 22:51:19 I wonder what the c++0x guys will do when it turns to 1x 22:51:58 -_- 22:54:01 what is *.cfm? 22:54:06 windows help 22:54:28 I was reading the url fizzie linked and one link was "http://www.exn.ca/mini/startrek/holodeck.cfm" 22:54:33 it just doesn't work in firefox 22:54:38 AnMaster: Cold Fusion 22:54:41 oh 22:54:42 it redirects to an invalid host 22:54:48 ehird: That's chm 22:54:49 cold fusion 22:54:50 right 22:54:52 Deewiant: yep 22:54:54 as in invalid top domain 22:55:00 does the link work for anyone? 22:55:06 no 22:55:07 or does it redirect to *.camini 23:02:17 As a consequence of the change in the equality operator, the C++ assignment operator (ref = val) becomes ref := val in SPECS1. As might be anticipated, the compound assignment operators become "+:=", "-:=" , "*:=", etc. 23:02:22 this reminds me of pascal 23:03:53 night 23:03:57 don't forget the the date 23:04:03 none of us wan't to get fooled right? 23:09:33 Yes, well, it says it's Pascal-inspired, somewhere in there. 23:10:37 AnMaster: i cannot be fooled, i'm wearing my tinfoil hat 23:14:28 -!- FireFly has quit ("Night"). 23:27:24 -!- nooga has joined. 23:29:22 http://www.hokstad.com/writing-a-compiler-in-ruby-bottom-up-step-1.html 23:29:24 mehehe 23:30:27 old 23:30:57 -!- lifthras1ir has joined. 23:31:46 tried it myself 23:32:07 but i don't know x86 asm well enough 23:32:22 target c? 23:32:51 beh 23:32:52 lame 23:33:07 llvm? 23:35:12 does it target normal processors? 23:35:16 yes. 23:35:41 mm compiler -> llvm -> x86 machine code ? 23:35:43 your language -> llvm asm -> aggressive optimization and suchlike -> tuned processor-specific machine code 23:35:49 well 23:35:54 instead of llvm asm you should use their library 23:35:57 btu w/e 23:35:59 *but 23:36:04 ah 23:36:09 sounds good 23:36:19 -!- lifthras1ir has left (?). 23:36:28 nooga: yeah, there's llvm-gc 23:36:29 *gcc 23:36:29 -!- lifthras1ir has joined. 23:36:33 which is stable enough for general use 23:36:40 and they have their own c/c++/obj-c compiler called clang that's rapidly maturing 23:36:49 it's been heavily invested in by Apple so its not going anywhere 23:40:23 -!- BeholdMyGlory has quit (Remote closed the connection). 23:45:27 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)). 23:53:54 this whole llvm looks quite awesome 23:54:15 nooga: Its gc support is flaky although it does have some hooks 23:54:18 but apart from that, indeed. 23:54:23 and it links statically 23:54:28 hm? 23:54:37 wut? 23:54:47 so that there is no problem with distribution 23:54:53 oh 23:54:57 right 23:55:00 no additional binaries are needed 23:55:11 yes, it's a native compiler after all 23:55:24 nooga: if you compile llvm on os x, beware 23:55:32 you MUST tell it to compile with 'gcc-4.2' 23:55:33 not 'gcc' 23:55:40 because 'gcc' is an older version that llvm trips some bugs on 23:55:46 (they don't show up until you actually try it) 23:56:03 forgot I have to tell everyone that :d