00:00:18 <ehird> fizzie: Come on, there’s a better empty box in there.
00:00:56 <fizzie> That's the BALLOT BOX, you're certainly supposed to use it if you're also using BALLOT BOX WITH CHECK.
00:01:15 <ehird> It’s sized differently here.
00:01:35 -!- olsner has quit (Read error: 60 (Operation timed out)).
00:01:40 <oerjan> i guess it failed the check, then
00:01:50 -!- swistakm has joined.
00:03:02 <fizzie> Maybe they've been lazy and reused an empty box glyph. There are certainly enough of those.
00:03:34 <oerjan> hm that sounds like an idea for an esolang
00:04:07 <Ilari> Unicode abuse? You can make esolang that's truly horrible to write with that...
00:04:26 <oerjan> it was not the writing i was thinking of...
00:04:54 <Asztal_> combining diacritics as control structures?
00:05:06 <oerjan> no, just empty boxes :D
00:05:58 <Ilari> 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 <ehird> ¨ is map, since . . looks like two elements.
00:06:42 <ehird> ´ is fold, since it looks kind of like a bend.
00:06:48 <oerjan> of course another idea might be to have a single complicated sign that can be written several ways with combining characters
00:06:58 <oerjan> and to have the language distinguish those
00:07:10 <oerjan> Ilari: is astral a pun on "plane"?
00:07:30 <Ilari> oerjan: "Astral characters", means characters from planes 1-16.
00:07:32 <ehird> astral plane is all non-basic multilingual plane haracters
00:07:39 <ehird> "astral plane" was almost certainly intentional
00:08:51 <fizzie> 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 <fizzie> Sorry, got tired of looking for those.
00:09:24 <ehird> fizzie: nko letter sa doesn't show up here
00:09:27 <ehird> so get 2 more and we have a BF dialect
00:09:53 <fizzie> I'm not surprised; it made the text field in gucharmap get right-to-left direction, too.
00:10:44 <ehird> it just has something inside
00:11:08 <fizzie> 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 <Ilari> 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 <fizzie> 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:57 <fizzie> Musical symbol square notehead white, 𝅆, is also a type of square, although horribly tiny and quite far down.
00:14:15 <ehird> Those are not squares here.
00:14:24 <ehird> + ⎕ - ⌷ < ☐ > ⃞ , □ . ◻
00:14:47 <fizzie> The square notehead should at least be a square, though. Oh well.
00:15:23 <ehird> I think my not-found char is a box with a relevant symbol inside
00:16:05 <fizzie> 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 <oerjan> Ilari: ah, TAG is _not_ an acronym, you evil scum :D
00:16:17 <Ilari> oerjan: U+E00xx contains copies of 95 basic ASCII characters as "TAG" versions. Meant for language tags.
00:17:01 <Ilari> So U+E0030 is TAG DIGIT ZERO.
00:17:19 <fizzie> ehird: I think I didn't yet say white small square ▫ and white rectangle ▭.
00:17:23 <Ilari> And U+E0041 is TAG LATIN CAPITAL LETTER A
00:17:46 <ehird> + ⎕ - ⌷ < ☐ > ▫ , □ . ◻ Replaced the troublesome compiler. still 2 t o go
00:18:29 <fizzie> Why not white rectangle? Or doesn't that show up either?
00:18:38 <oerjan> Ilari: so is there a YOU ARE IT character to end a sequence of those? :D
00:19:34 <Ilari> Well, there's also LANGUAGE TAG (U+E0001) and CANCEL TAG (U+E007F).
00:20:19 <oerjan> but nothing at the end?
00:21:25 <fizzie> 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 <fizzie> Unless you count the drop-shadowed squares? ❏❐❑❒
00:22:13 <ehird> that's an octothorpe
00:22:29 <fizzie> No, it's a viewdata square. Hey, there's "square" in the name.
00:22:29 <Ilari> fizzie: What codepoints do those musical box-looking characters have?
00:22:59 <fizzie> Ilari: Around U+1D100 and above.
00:23:29 <fizzie> 1D126 for drum clef-2, 1D15A for cluster notehead white, and 1D146 for square notehead white.
00:26:15 <fizzie> 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:59 <ehird> + ⎕ - ⌷ < ☐ > ▫ , □ . ◻ [ ⬞ ] ⬜
00:27:02 <ehird> hey, those are BLACK
00:27:25 <fizzie> You never said why the white rectangle ▭ was not to your tastes.
00:27:42 <ehird> too distinguishable from the others
00:28:33 <fizzie> Oh, okay. There's white vertical rectangle, ▯, too. That's quite close to that apl squish quad.
00:29:00 <fizzie> Feel free to mix-n-match. The very small square is here quite distinguishable too, since it's so, well, small.
00:29:51 <ehird> 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 <ehird> Took a looooooot of zooming to see that.
00:31:04 <fizzie> I think I'll do some sleeping, but have a boxy night.
00:32:38 <Ilari> 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 <kerlo> Claim: Every possible meaning can be expressed as the limit of an infinite sequence of phrases in English.
06:55:36 <kerlo> 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 <bsmntbombdood> how do you do foo ? bar : baz; without any branches?
07:56:40 <fizzie> 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 <fizzie> In which case it's not really a ?:.
07:58:02 <fizzie> Well, that you can do with a "mov resultreg, 0; test foo; cmov resultreg, 1" style of thing.
07:59:00 <fizzie> 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 <bsmntbombdood> 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 <fizzie> 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 <fizzie> Maybe if you had condition codes for more than just move instructions, though.
08:03:18 <AnMaster> fizzie, xor is the best way on x86 certainly
08:03:35 <AnMaster> well iirc sub %reg,%reg may also work on some x86 models
08:04:35 <AnMaster> 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 <AnMaster> so it knows that xor on itself doesn't depend on the current value of the register
08:05:55 <fizzie> 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 <Deewiant> You might want to use 'mov reg, 0' if you want to preserve flags
08:10:00 <bsmntbombdood> ({ typeof(bar) blah[2]; blah[0] = bar; blah[1] = baz; blah[foo?1:0]; })
08:10:38 <lifthrasiir> or in lieu of obfuscated C, bar*foo+baz*!foo...
08:12:58 <lifthrasiir> though i have used such expression once...
08:13:10 <fizzie> Unca Linus says cmov is bad for you, though: http://ondioline.org/mail/cmov-a-bad-idea-on-out-of-order-cpus
08:13:28 <fizzie> Of course P4 is not very modern nowadays.
08:14:20 <fizzie> Yes, although most would write that !!foo and not foo?1:0.
08:14:55 <fizzie> It's pretty much the same thing.
08:15:11 <fizzie> Forces foo to be 0 or 1, depending on the truthfulness.
08:15:39 <fizzie> Makes me wonder how it's compiled, actually.
08:16:13 <Deewiant> Depends on whether the compiler optimizes it by default or not. With any -O I suspect it's equivalent to a cast.
08:16:46 <fizzie> "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:29 <Deewiant> Does it do a double-not without?
08:17:41 <Deewiant> Or maybe a sete followed by a not
08:18:01 <fizzie> With -O0 it's.. "cmpl $0x0,-4(%rbp); setne %al; movzbl %al,%eax;", discounting some stack-handling.
08:18:42 <Deewiant> Hmm, it prefers xor followed by set to set followed by movzx.
08:20:38 <fizzie> 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 <fizzie> I'm sure I could get some other sequences with suitable -march= flags.
08:21:01 <Deewiant> () is dereferencing in AT&T parlance?
08:21:30 <fizzie> I think so, yes. There's a lea ...,%ecx somewhere up there.
08:21:41 <Deewiant> Alternatively, just use -masm=intel ;-)
08:22:15 <fizzie> Actually I'm using gcc -c + objdump -d, which is the silly way. :p
08:22:31 <fizzie> So it's something like "-M intel".
08:22:44 <Deewiant> -Mintel would have been my guess, yes.
08:28:35 <fizzie> 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: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 <ais523> 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:09 <AnMaster> I'm just about to make a cfunge release
12:38:16 <AnMaster> atm the server hosting bzr is down
12:38:38 <AnMaster> someone was digging in the street outside and managed to dig off the cable it seems.
12:38:47 <AnMaster> so the bzr bit will be a bit out of date atm
12:39:01 <AnMaster> ais523, btw is it vectorize or vectorise in UK English?
12:39:19 <ais523> err... oh dear, you've hit the -ise vs. -ize debate
12:39:30 <ais523> the correct answer is that nobody can remember, so using either will work
12:39:41 <ais523> for the really correct answer, I suppose you could look it up
12:39:42 <AnMaster> ais523, I thought z was US and s UK?
12:39:48 <ais523> it's not that simple nowadays
12:39:54 <ais523> because the two languages got muddled
12:41:49 <Deewiant> en-GB-oed for the win: -ize it is.
12:42:17 <AnMaster> I used s and commited and tagged now
12:43:03 <Deewiant> The rationale is that it comes from Greek 'izare' (modulo the Latin alphabet) and is also pronounced like a z
12:43:33 <Deewiant> I.e. it's wrong in every possible way ;-)
12:43:57 -!- Hiato has joined.
13:00:30 <AnMaster> "Submit my news to the Slashdot.org Firehose"
13:00:42 <AnMaster> when submitting a news for the project on sf.net
13:00:55 <ais523> AnMaster: the firehose is the list of things that happen on slashdot
13:01:01 <ais523> so stories, submissions, comments, etc
13:01:18 <ais523> if your news ends up in the firehose, then the editors might decide to put it on slashdot's front page
13:01:28 <AnMaster> it is a rather dry release announcement...
13:01:30 <ais523> there's no chance it'll happen, of course, but it would be incredibly funny if it did
13:01:42 <AnMaster> "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 <AnMaster> ais523, http://slashdot.org/firehose.pl?op=view&id=3967171
13:03:13 <AnMaster> also the submitting user looks odd
13:03:23 <AnMaster> wait sf.net and slashdot have same owner right?
13:03:34 <AnMaster> ais523, so can I use same login?
13:03:42 <ais523> also, anyone who's been on slashdot for long enough (about 6 months) is a mod some of the time
13:03:45 <ais523> it's determined at random
13:03:55 <ais523> but you can mod the firehose even if you aren't a mod for the main page at that particular moment
13:04:17 <ais523> well, it certainly creates a lot of debate
13:04:27 <fizzie> There's also the whole meta-moderation stuff.
13:04:42 <fizzie> Every now and then you get to rate some ratings.
13:05:05 <AnMaster> 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 <fizzie> Or can you metamoderate whenever? Anyway.
13:05:17 <ais523> you can metamod whenever
13:05:26 <fizzie> "How often can I M2? Several times per day (we adjust this slightly sometimes, to keep M1 and M2 in balance)."
13:05:30 <ais523> just the link for doing it comes up at random
13:05:47 <ais523> where you moderate moderations
13:05:56 <ais523> if a person's moderations get modded down too often, they can't moderate
13:06:10 <AnMaster> you should be able to mod metamods too
13:06:34 <fizzie> "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:40 <ais523> likewise, you can't moderate unless your comments have been M1-moderated up more often than down
13:06:58 <ais523> that's what mostly determines karma, which is basically a sum of all moderations that have happened to you
13:07:51 <AnMaster> ais523, so ick is going to release tomorrow?
13:08:08 <ais523> I'll probably release a beta
13:08:15 <ais523> I'm too busy to get things finalised
13:08:21 <AnMaster> ais523, did you figure out the profiler thingy?
13:08:23 <ais523> but having extra community input would be helpful
13:08:27 <ais523> it was an utterly ridiculous bug
13:08:47 <ais523> what happened was that I forgot to include config.h in one of the files that used the profiler information
13:08:49 <ais523> but remembered in the other
13:09:00 <ais523> now, I was using #ifdef and similar to work out the sizes of various things
13:09:02 <AnMaster> ais523, afraid that due to the datacenter issue my hosting of your darcs repo is also down btw
13:09:13 <ais523> so's my email, for unrelated reasons
13:09:35 <AnMaster> ais523, why #ifdef and not sizeof()?
13:09:49 <ais523> AnMaster: because it depended on the accuracy of the timer functions
13:09:56 <ais523> if I had something that measured in nanoseconds, I wanted to use long long
13:10:03 <ais523> if it measured only in microseconds, i used long instead
13:10:18 <ais523> so what happened was that libyuk.a thought an array was made of long longs
13:10:18 <AnMaster> ais523, I would always use long long, wouldn't really hurt in your case
13:10:20 <fizzie> A giant, snow-covered banjo.
13:10:31 <ais523> and the generated program thought it was made of longs
13:10:43 <AnMaster> also what style was that fizzie ?
13:11:01 <ais523> 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 <AnMaster> ais523, no overflows you said though?
13:11:25 <fizzie> 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 <ais523> ah, that's the interesting thing
13:11:38 <ais523> it turns out that the mudflap guard value was never written to
13:11:44 <ais523> it wrote past it, but not to the value itself
13:12:03 <ais523> 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 <AnMaster> ais523, valgrind's exp-prtcheck would have found that
13:12:14 <ais523> AnMaster: but it was valid memory!
13:12:25 <AnMaster> ais523, yes but even so. It tracks every single pointer and what object it is connected to
13:12:38 <AnMaster> so even two objects after each other and the pointer passing would be noticed
13:12:39 -!- fungot has joined.
13:12:47 <ais523> AnMaster: I was using array indexing, not pointers
13:12:59 <ais523> can valgrind really tell a[x] from b[x], where a and b are two different static arrays?
13:13:07 <ais523> the pointer's pointing to the wrong array at the time it's created
13:13:41 <AnMaster> 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:51 <AnMaster> this means false positives sometimes
13:14:00 <ais523> and that would work because the program always starts at the first lien
13:14:14 <AnMaster> ais523, it works on machine code level, so "line" doesn't matter
13:14:14 <ais523> so it starts by accessing the [0] element of the array
13:14:21 <AnMaster> and it would work with [1] too
13:14:24 <ais523> AnMaster: no, I mean the INTERCAL program starts at the first line
13:14:35 <ais523> 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 <AnMaster> 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 <AnMaster> ais523, there is more info in http://valgrind.org/docs/manual/pc-manual.html
13:16:13 <AnMaster> see "10.3. How Ptrcheck Works: Heap Checks" and "10.4. How Ptrcheck Works: Stack and Global Checks"
13:16:31 <ais523> anyway, using long long by default would be mad
13:16:40 <ais523> I'm trying to port C-INTERCAL to a compiler that doesn't understand const or volatile
13:16:47 <AnMaster> 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 <AnMaster> ais523, configure has checks to define them away
13:17:20 <AnMaster> ais523, then you can throw away all the ANSI C
13:17:26 <AnMaster> and why are you porting to BCC
13:17:29 <ais523> it has an -ansi option that runs the code through unprotoize
13:17:40 <AnMaster> ais523, what platforms can it compile for?
13:18:09 <AnMaster> Blind carbon copy - Wikipedia, the free encyclopedia
13:18:11 <ais523> not sure, but the 6502 used to be popular, and similar numbers generally = similar ICs when it comes to component numbering
13:18:19 <ais523> AnMaster: "bruce's C compiler"
13:18:41 <AnMaster> ais523, can't find official homepage
13:18:50 <ais523> maybe it doesn't have one?
13:19:16 <ais523> from the repos, obviously
13:19:22 <ais523> same place I get everything else from
13:20:14 <Deewiant> What else would have something that old? :-P
13:20:36 <AnMaster> Gentoo amd64 made gcc 4.3.2 stable yesterday btw
13:20:53 <AnMaster> wasn't stable on any other platforms (including x86) last I checked
13:21:08 <ais523> anyway, bcc will take quite a bit of porting
13:21:12 <ais523> IIRC it even has 16-bit int
13:21:21 <AnMaster> Deewiant, so do I on my arch one
13:21:30 <ais523> 32-bit's the minimum for long
13:22:18 <ais523> well, 32-bit int it seems
13:22:18 <AnMaster> 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:32 <fizzie> 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 <ais523> AnMaster: because I think C-INTERCAL fundamentally assumes that int is 32-bit
13:22:48 <ais523> it shouldn't, but I think it did before I came to it
13:22:51 <AnMaster> ais523, in that aspect cfunge is more portable
13:22:54 <fizzie> 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 <AnMaster> ais523, I never use int or long or such where it matters, only stdint.h ones
13:23:42 <AnMaster> ais523, I do assume char is 8 bits, I don't assume char is either signed or unsigned though
13:23:48 <ais523> you're assuming the existence of stdint.h, how modern!
13:23:58 <AnMaster> ais523, that would be trivial to construct yourself
13:24:11 <ais523> but you can't force it on other people's program
13:24:12 <AnMaster> an include with some typedefs for your local $CC
13:24:28 <ais523> 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 <AnMaster> ais523, I suspect configure could construct one for you
13:24:50 <ais523> AnMaster: it's buggy, it defined both uint16_t and uint32_t to unsigned int
13:24:53 <ais523> which can't be correct
13:25:08 <AnMaster> 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 <ais523> hmm... unless bcc doesn't have a short, I should test that
13:25:16 <AnMaster> and it seemed to work just fine
13:25:27 <AnMaster> a lot easier for out of tree builds too
13:25:39 <AnMaster> in fact I got no clue if *in* tree builds work for cfunge any more
13:25:42 <ais523> sizeof(short)=2, that's helpful
13:25:50 <ais523> and entirely unsurprising, I've never seen a compiler set it to anything else
13:26:27 <ais523> also, some systems have 32-bit char
13:26:39 <ais523> so assuming 8-bit char is probably a bad idea
13:26:42 <ais523> if you want to be portable
13:26:46 <AnMaster> 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 <AnMaster> ais523, well there is no way I can properly do fingerprints then
13:27:38 <ais523> struct my8bittype { char x : 8};
13:27:50 <ais523> there, you have an 8-bit type
13:27:51 <AnMaster> ais523, what about padding for that?
13:28:03 <ais523> AnMaster: that's in the struct, not in x itself
13:28:12 <ais523> although admittedly trying to use x will be very slow if char isn't 8 bits long
13:28:13 <AnMaster> ais523, I mean, I don't want padding
13:28:29 <AnMaster> ais523, anyway I also depend on IEEE floats (or as much as 32-bit float and 64-bit double)
13:28:55 <ais523> what about on a 40-bit system?
13:29:23 <AnMaster> ais523, actually I don't depend on 8 bit char, I depend on uint8_t
13:29:32 <AnMaster> which I think C99 requires in fact
13:29:43 <AnMaster> so it is up to the system how it does that
13:29:48 -!- Hiato has quit ("Leaving.").
13:29:59 <ais523> oh, it seems bcc is normally used to write bootloaders
13:30:00 <AnMaster> POSIX 2008 mentions that they notice that they now require char to be 8 bits btw
13:30:02 <ais523> as it generates real-mode code
13:30:10 <ais523> AnMaster: that's POSIX, not ISO
13:30:20 <AnMaster> ais523, ISO defines int8_t too in C99
13:30:31 <ais523> really, though, I'm porting to K&R C
13:30:36 <AnMaster> ais523, and cfunge needs POSIX anyway. So I'm quite safe.
13:30:45 <ais523> I spent last night removing C99isms from the C-INTERCAL coe
13:30:46 <AnMaster> what do you think of this btw:
13:30:47 <AnMaster> __builtin_ia32_movntps(((float*)(void*)&cfun_static_space) + i*4,
13:30:47 <AnMaster> *((const v4sf*)(const void*)&fspace_vector_init));
13:30:49 <ais523> (although not from IFFI)
13:30:59 <AnMaster> ais523, what about the safe vsnprintf thingy?
13:31:01 <ais523> AnMaster: I hope you have falbacks
13:31:08 <ais523> AnMaster: I fixed a bug in it
13:31:14 <AnMaster> ais523, it works on SPARC after all
13:31:19 <ais523> you were referencing iyylineno, even though it wasn't declared anywhere
13:31:44 <AnMaster> it sounds like some yacc thingy
13:32:06 <ais523> well, yylineno is an undocumented feature of bison that C-INTERCAL used to rely on
13:32:10 <AnMaster> ais523, I remember cleaning up in the flex/yacc thing
13:32:22 <ais523> I felt that relying on undocumented features was a bad idea, especially as it had caused bugs in the past
13:32:30 <ais523> so iyylineno does the same thing, but is calculated by hand
13:32:32 <fizzie> 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:33:02 <ais523> uint_least8_t is manadatory though, IIRC
13:33:17 <AnMaster> 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 <ais523> see, there's no love for 16 bit systems nowadays
13:33:51 <fizzie> Yes, well, u?int_least{8,16,32,64}_t are all mandatory. The fixed-width ones are all very optional.
13:34:14 <AnMaster> and really, since I require POSIX.1-2001 with the mmap option anyway int8_t will most probably exist.
13:34:30 <ais523> wow, the asm generated by bcc is beautiful
13:34:50 <ais523> standard real-mode x86 stuff, it looks just like the asm I used to work with back on DOS
13:35:07 <ais523> 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 <ais523> ah, that's what the -3 option does, it makes the code 32-bit
13:36:00 <AnMaster> 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:03 <ais523> no wonder my code wasn't running without it
13:36:54 <AnMaster> well I don't know how floats are encoded in asm
13:37:05 <ais523> AnMaster: no, they're used for integers
13:37:09 <ais523> to mark them as decimal
13:37:37 <ais523> and floats in asm work the same way as floats in C, or in anything else really
13:37:41 <AnMaster> decimals also means "the bit after the ." (or is that a Swedishism?)
13:37:45 <ais523> the assembler converts them into hex
13:37:52 <ais523> AnMaster: no, it means that in English too, but only in the plural
13:38:00 <ais523> "decimals" = fractional part of a number
13:38:13 <AnMaster> ais523, en decimal (a decimal) is correct for one number after the dot in Swedish
13:38:34 <AnMaster> as in 3.14 containing two decimals
13:38:44 <AnMaster> ais523, what would you say in English there?
13:39:07 <fizzie> 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 <AnMaster> ais523, btw what do you think of this:
13:39:09 <AnMaster> static funge_cell cfun_static_space[FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y]
13:39:09 <ais523> often abbreviated to d.p.
13:39:29 <ais523> AnMaster: what's the __asm__ for?
13:39:52 <AnMaster> ais523, asm name. Otherwise I get undefined refs when doing movntps %%xmm0,0x10+cfun_static_space(%%rax) and such
13:40:03 <AnMaster> well depends on compile time options
13:40:11 <AnMaster> it works anyway in -O0 and normal -O3
13:40:16 <AnMaster> just not with -combine -fwhole-program
13:40:34 <AnMaster> (yeah I'm crazy, we established that by now I think, right?)
13:41:10 <ais523> it's always fun when you do stuff that means you have to care about your optimizer options
13:41:42 <AnMaster> ais523, you should download http://downloads.sourceforge.net/cfunge/cfunge-0.4.0.tar.bz2 and make sure it works with IFFI now
13:42:08 <ais523> AnMaster: IFFI still isn't integrated into the build system
13:42:26 <ais523> really, you just need to install the library to the right place
13:43:22 <AnMaster> ais523, I remember make install copying it+
13:43:30 <ais523> that was an old version
13:43:37 <ais523> although it should be just a quick fix
13:43:43 <AnMaster> ais523, in that case I hope it still works
13:43:45 <ais523> anyway, I need a modern cfunge to test that part of the build
13:43:51 <AnMaster> because when I fixed IFFI I assumed it did
13:44:01 -!- KingOfKarlsruhe has joined.
13:55:31 <AnMaster> 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 <ais523> I don't even need to make the joke, it's too obvious
13:56:01 <ais523> do you have stability and security branches too?
13:56:45 <ais523> AnMaster: launchpad? ugh
13:57:44 <AnMaster> ais523, good code hosting though
13:58:03 <AnMaster> ais523, I always have 98% code coverage before releasing
13:58:22 <AnMaster> the remaining 2% is mostly code handling "failed malloc"
13:58:26 <ais523> what does code coverage mean in that case?
13:58:44 <ais523> AnMaster: are you using glibc?
13:58:50 <AnMaster> ais523, line coverage as measured by gcov after running mycology and various other test suites
13:59:05 <ais523> add a malloc hook that prompts the user whether to do the allocation or not
13:59:06 <AnMaster> ais523, branch coverage is usually around 97%
13:59:27 <AnMaster> also I'm using glibc on some systems. FreeBSD libc as well
13:59:32 <ais523> AnMaster: by defining functions with certain names, you can affect the behaviour of glibc malloc
13:59:53 <AnMaster> ais523, I might use optimised variants for GCC or whatever, but I always have pure C + POSIX fallbacks
14:00:37 <AnMaster> 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 <AnMaster> ok around 500 malloc calls when running mycology, 27 from other parts of glibc itself. T
14:04:12 <AnMaster> most is due to having to copy the stacks used for fingerprints ops when doing t
14:04:22 <AnMaster> 260 is due to fingerprint stacks being copied
14:04:34 <ais523> hmm... is that inefficient?
14:04:42 <ais523> do you store fingerprint stack as a linked list, or as an array?
14:04:47 <ais523> a stack can sensibly be stored as either
14:04:52 <AnMaster> ais523, array that I realloc when needed
14:04:53 <ais523> but array plus realloc is probably faster
14:05:07 <ais523> ah, you have one for each letter
14:05:13 <ais523> that's why you need so many malloc calls
14:05:26 <ais523> well, you know you have exactly 26 letters
14:05:31 <AnMaster> ais523, loading and unloading out of order is allowed
14:05:39 <ais523> mightn't you store the stacks all in the same array, using every 26th element
14:05:45 <ais523> and keep 26 pointers into the array?
14:06:01 <ais523> that means less allocing's going on, and you still have the separate stacks
14:06:08 <AnMaster> malloc overhead is rather small here though
14:06:11 <ais523> uses slightly more memory, but it's probably faster as one big allocation's faster than 26 small ones
14:06:48 <AnMaster> ais523, pushing env in y is what takes most time though
14:07:08 <AnMaster> and yeah it is rather optimised, to make it faster I would need to make stack grow down instead
14:07:15 <AnMaster> which means I couldn't use realloc
14:07:21 <ais523> does the env change over the course of the program?
14:07:28 <AnMaster> ais523, it could if I implement EVAR
14:07:33 <AnMaster> but yes I considered caching it
14:07:35 <ais523> I was wondering about memoizing it
14:07:48 <ais523> because after all, y is often called more than once
14:08:22 <AnMaster> 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:09:28 <AnMaster> 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 <AnMaster> and well if I don't implement EVAR...
14:10:38 <AnMaster> stack_push_string was called 38111 times during an execution? hum... Oh wait.. y duh
14:10:56 <AnMaster> to add a time delay to test with
14:11:12 <AnMaster> (without HRTI mycology is a lot faster btw)
14:11:41 <Deewiant> AnMaster: You think cfunge is too fast? Try running stuff through http://iki.fi/deewiant/files/befunge/programs/slowdown.b98
14:12:06 <Deewiant> You seem to be running into some kind of speed limits
14:12:13 <Deewiant> That should place them a bit further away
14:12:17 <AnMaster> Deewiant, yes bit what is that program good for?
14:12:27 <Deewiant> It's good for slowing down Befunge interpreters
14:12:33 <AnMaster> is it written as a worst case for cfunge or something?
14:13:08 <AnMaster> 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:42 <ais523> AnMaster: you want save as
14:13:54 <AnMaster> ais523, yes but saving to url doesn't even make sense
14:13:56 <Deewiant> cfunge chokes as badly as CCBI on Mycology, unsurprisingly
14:13:57 <ais523> 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 <ais523> of course it makes sense, just nobody implements it
14:14:12 <Deewiant> AnMaster: When run through that
14:14:17 <Deewiant> Try it and watch your CPU burn
14:14:28 <AnMaster> Deewiant, what about memory usage btw?
14:14:52 <Deewiant> Beats me, probably not much worse than normally
14:15:21 <AnMaster> Deewiant, it is fast up until "GOOD: p modifies space"
14:15:21 <ais523> Deewiant: you're writing to the path of the IP in the loaded file, to slow it down every command?
14:15:36 <AnMaster> Deewiant, what are you doing then?
14:15:37 <Deewiant> AnMaster: Yep, that's wraparound
14:16:03 <Deewiant> No, that's not a befunge-98 interpreter :-P
14:16:11 <AnMaster> Deewiant, how do you slow down then
14:16:28 <Deewiant> 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 <AnMaster> Deewiant, you write to far out funge space I see
14:16:53 <Deewiant> So I guess that actually is a Befunge-98 interpreter, now that I think about it
14:16:59 <ais523> Deewiant: you're copying each element of the other program to the IP's path in yours, to step through it?
14:17:01 <AnMaster> since the main time is spent in hash calculation
14:17:51 <AnMaster> 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 <Deewiant> It's nothing clever really, it's just a bit targeted against the way interpreters tend to implement Funge-Space
14:18:06 <AnMaster> Deewiant, how do you do it I asked.
14:18:16 <ais523> Deewiant: you're moving the target program in fungespace every now and then?
14:18:28 <ais523> oh, to negative fungespaec?
14:18:39 <AnMaster> well negative funge space isn't that slow for me
14:18:41 <Deewiant> 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 <AnMaster> wrapping would end up like that
14:18:50 <Deewiant> Do some cleanup and then jump there
14:18:56 <AnMaster> Deewiant, that isn't fair, this build is 64-bit!
14:19:06 <Deewiant> Which slows down cfunge a bit because it gets out of its static array
14:19:12 <Deewiant> And it slows down everything a crapload because wraparound takes forever.
14:19:27 <AnMaster> Deewiant, do you replace it all with spaces in the original area?
14:19:47 <Deewiant> Solve mycoedge and you can probably speed that up to 'normal' speeds.
14:19:52 <ais523> Deewiant: how do you handle g and p?
14:19:59 <Deewiant> ais523: Sets the storage offset
14:20:01 <AnMaster> Deewiant, I planed to update bounds if needed in y though
14:20:07 <Deewiant> AnMaster: That's exactly what I meant.
14:20:16 <AnMaster> Deewiant, wrapping bounds wouldn't update except when y was called though
14:20:27 <AnMaster> but wrapping bounds would be updated on the fly then
14:20:30 <ais523> Deewiant: storage offset? is that in a fingerprint?
14:20:39 <Deewiant> ais523: No, it's in the spec, it's what g and p are relative to.
14:20:46 <ais523> oh, I didn't know about that
14:20:57 <ais523> I thought { just messed with the stack stack
14:21:05 <Deewiant> 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 <Deewiant> ais523: It pushes the old storage offset on the stack below, and } pops it back so as to reset it.
14:21:33 <AnMaster> and with some hacks using u to transfer to the stack below you can change it
14:21:39 <AnMaster> to set a different offset on first stack
14:21:57 <Deewiant> 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 <AnMaster> Deewiant, that's two extra additions for every g or p access! :(
14:22:08 <fizzie> 0{<y><x>02-u0}$$ I seem to have written once; I'm not sure if that's tested, though.
14:22:32 <AnMaster> fizzie, why not a plain n after, it is faster;P
14:22:53 <Deewiant> Where 01g and 11g are just the new offset
14:23:04 <fizzie> Don't you need -2 in u? Maybe I got the directions mixed, then.
14:23:49 <AnMaster> Deewiant, btw my { and } are very fast. Doing fast memcpy() to copy between SOSS and TOSS
14:24:13 <AnMaster> with some code to handle the zero filling of course
14:24:31 <Deewiant> Breaking the stack abstraction makes the instruction pointer cry :'-(
14:24:36 <AnMaster> Deewiant, this didn't affect mycology I remember, but some other app. Maybe it was fungot, maybe it was something else
14:24:36 <fungot> AnMaster: what's yours?
14:24:45 <AnMaster> Deewiant, err it is in the stack code
14:25:03 <AnMaster> that implements both stack and stack-stack
14:25:11 <AnMaster> Deewiant, so I don't see what you mean
14:25:29 <Deewiant> Yes you did or you wouldn't have rebuked it
14:25:50 <AnMaster> Deewiant, I see what you mean if I would have exposed this outside stack code
14:26:02 <AnMaster> bool stackstack_begin(struct s_instructionPointer * restrict ip,
14:26:03 <AnMaster> const funge_vector * restrict storageOffset);
14:26:08 <AnMaster> bool stackstack_end(struct s_instructionPointer * restrict ip,
14:26:10 <AnMaster> void stackstack_transfer(funge_cell count,
14:26:16 <fizzie> 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 <AnMaster> Deewiant, basically I don't break the abstraction there
14:27:01 <Deewiant> Well, those aren't exactly functions intrinsic to stacks :-P
14:27:43 <AnMaster> Deewiant, I have string push and pop for stacks too, and stack_push_vector, and stack_strlen (helps for STRN)
14:28:23 <AnMaster> 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 <AnMaster> asserting doesn't mean assert() here
14:28:40 <AnMaster> but rather stack_prealloc_space
14:29:09 <AnMaster> stack_prealloc_space(stack, len + 1);
14:29:09 <AnMaster> const size_t top = stack->top + len;
14:29:09 <AnMaster> for (ssize_t i = len; i >= 0; i--)
14:29:09 <AnMaster> stack->entries[top - (size_t)i] = str[i];
14:29:17 <AnMaster> the const thing there helps GCC optimise
14:29:43 <AnMaster> I looked at the relevant asm code with and without that const
14:29:45 <Deewiant> I'm surprised it can't figure out that it's constant by itself
14:30:07 <AnMaster> Deewiant, it couldn't in 4.1.2 at least. Haven't checked since I upgraded the compiler
14:30:58 <AnMaster> Deewiant, basically I think the alias analysis had been hit by a thrown potion of confusion or something...
14:31:11 <AnMaster> even adding restrict to various places didn't help
14:31:12 <ais523> Deewiant: what is mycoedge?
14:31:12 <ais523> my copy of Mycology's very old, I should get a new one really
14:31:23 <AnMaster> ais523, not released I think, since CCBI fails it
14:31:29 <Deewiant> It's something I worked on for about 15 minutes and haven't bothered to finish
14:31:55 <ais523> that still doesn't explain what it is
14:31:58 <AnMaster> Deewiant, do you have a zero-copy STRN N?
14:31:58 <ais523> or will be, when it's finished
14:32:16 <Deewiant> The point is to check that y always reports the tightest bounds for Funge-Space
14:32:32 <AnMaster> ais523, cfunge also fails it yes.
14:32:48 <Deewiant> Everything apart from hsfunge fails it, and that's unavailable anywhere
14:32:57 <AnMaster> Deewiant, pyfunge manages it iirc
14:33:04 <ais523> Deewiant: does y's report shrink if you space out the edges of funge-space?
14:33:06 <Deewiant> Oh, right, he said something like that
14:33:12 <AnMaster> Deewiant, also I may have an old copy of hsfunge around iirc
14:33:26 <AnMaster> $ ls ~/funges/interpreters/hsfunge
14:33:26 <AnMaster> Eval.hs Fingerprints.hs FungeSpace.hs FungeVal.hs GetSysInfo.hs IP.hs Main.hs
14:33:37 <fizzie> Even jitfunge has zero-copy STRN N.
14:33:55 <fizzie> Admittedly I don't much have a stack "abstraction" there.
14:34:08 <fizzie> Deewiant: Something that doesn't just do pop + strlen.
14:34:14 <AnMaster> Deewiant, as in do the length check on the stack, instead of popping, strlen and pushing back
14:34:28 <AnMaster> but zero-copy sounds a lot cooler ;P
14:34:50 <Deewiant> I maintain the stack abstraction so that my instruction pointers may smile all day long
14:35:16 <AnMaster> Deewiant, you have push_vector though iirc
14:35:27 <Deewiant> It's a helper function separate from stack
14:36:09 <AnMaster> Deewiant, also I remember a string pushing one
14:36:29 <AnMaster> 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 <Deewiant> Nothing in stack.d is aware of befunge except for the pop-zero-on-empty
14:37:04 <AnMaster> Deewiant, don't you have a clear function though?
14:37:48 <AnMaster> Deewiant, anyway I do abstractions where it is useful. That is against other code outside the stack module.
14:38:08 <AnMaster> Deewiant, that sounds like my stack_discard(stack, n)
14:38:26 <fizzie> 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 <AnMaster> Deewiant, btw does FPDP define that it will take two cells at all?
14:39:10 <Deewiant> 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:16 <ais523> isn't glfunge98 buggy in other ways?
14:40:00 <fizzie> It's not really that either. It would be very very slow for those not-in-the-16*64-range coordinates.
14:40:04 <fizzie> And it's buggy in very many ways.
14:40:21 <Deewiant> It can't even load Mycology without crashing :-)
14:40:42 <fizzie> Yes, yes, well, I'll concentrate on jitfunge if I ever have time for befunge-implementing any more. :p
14:40:50 <AnMaster> B(n -- n)Sin of double precision fp number
14:40:58 <AnMaster> that implies it could be one or two
14:41:12 <AnMaster> Deewiant, I might change it to be one in 64-bit cfunge
14:41:26 <AnMaster> Deewiant, it would make it faster in mycology I think ;P
14:41:33 <AnMaster> and it shouldn't break anything either
14:41:42 <AnMaster> since I follow the fingerprint spec
14:45:06 <Deewiant> Heh, slowdown.b98 takes a hello world to around 0.1s in CCBI
14:45:23 <lifthrasiir> Deewiant: seems to be found another bug in mycology... heh.
14:45:34 <fizzie> 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:46:17 <AnMaster> Deewiant, how do you know how much to pop in FPDP then?
14:46:21 <AnMaster> I remember you mentioning this before
14:46:28 <AnMaster> when I talked about FPDP in efunge
14:46:35 <Deewiant> Bloody cfunge with its static array, being able to run a slowed-down helloworld in 0.01s
14:46:48 <Deewiant> AnMaster: Would I need to know how much to pop anywhere?
14:46:50 <AnMaster> which would be internally stored as a tagged tupple
14:46:52 <lifthrasiir> 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 <AnMaster> Deewiant, my dynamic funge space is rather fast too, I mean not as fast as the static area, but still quite fast.
14:47:28 <fizzie> You can always just I$ to discard a floating-point, no matter whether it's two stack cells or one.
14:47:30 <AnMaster> Deewiant, fungot routinely uses the dynamic area when running underload for example
14:47:30 <fungot> 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 <Deewiant> AnMaster: Sure, but I suspect that that's the main reason for the difference; alternately it's y
14:47:59 <fungot> Available: agora alice darwin discworld europarl ff7 fisher ic irc* lovecraft nethack pa speeches ss wp
14:48:19 <AnMaster> Deewiant, slowdown would move way outside the static area anyway
14:48:27 <lifthrasiir> well, i was fixing TOYS fingerprint and touched the bug... :p
14:48:40 <Deewiant> AnMaster: Yes, but it needs to fill the original area with spaces
14:48:40 <AnMaster> Deewiant, and I'm trying to come up with a fast solution for the mycoedge case atm...
14:48:50 <fizzie> "irc" style is the default one, so the recent Freenode service-break made fungot reset back to that.
14:48:51 <fungot> 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 <Deewiant> AnMaster: 9000-cell-loop, pushes thousands of cells on stack to set up a kp
14:49:00 <AnMaster> Deewiant, yes that would be rather fast. Is it slow under ccbi or something?
14:49:07 <Deewiant> AnMaster: Like said, 0.1s for a hello world
14:50:06 <AnMaster> also 9000 cells. means around 35 kilobyte for 4-byte cells
14:50:07 <Deewiant> lifthrasiir: TOYS was a bit of a pain to test :-P
14:50:11 <AnMaster> or doube that for 8 byte variant
14:50:31 <Deewiant> AnMaster: I wasn't talking about the stack space used
14:50:46 <AnMaster> I was talking about writing spaces to memory too
14:50:51 <Deewiant> AnMaster: I was rather thinking about how many iterations it takes to run through that
14:51:01 <Deewiant> AnMaster: It's around 200k ticks
14:51:14 <Deewiant> 200k fetches from a hashmap take a while
14:51:32 <AnMaster> 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 <Deewiant> Yes, I was going to at first but then realized I don't need it
14:52:00 <Deewiant> I try not to depend on a fingerprint if I can help it
14:52:00 <AnMaster> Deewiant, well it would be even faster
14:52:07 <Deewiant> ............. It's called slowdown.b98
14:52:11 <Deewiant> It's not exactly supposed to be fast
14:52:11 <AnMaster> >"PXIF"4#^(>n2y8*2-2\R1-:+1+:D#v?>\D#v?>01p:11p 31g+12p 01g21g+02pv
14:52:31 <fizzie> Since it's slowdown.b98, why are you even using such a blazing-fast method as a kp loop? :p
14:52:55 <Deewiant> That's the only thing that can overwrite itself
14:52:58 <AnMaster> Deewiant, manual >v style loop?
14:53:06 <Deewiant> AnMaster: Won't work, can't overwrite itself
14:53:10 <AnMaster> Deewiant, how do you set the delta then after it overwrote itself?
14:53:21 <ais523> fizzie: presumably to do self-overwriting in a few characters
14:53:24 <Deewiant> The kp is at (-2,0) and (-1,0)
14:53:35 <Deewiant> So it's heading east into (0,0) afterwards
14:53:56 <fizzie> 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 <AnMaster> 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 <Deewiant> 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 <AnMaster> you would need a > manually just outside
14:54:10 <Deewiant> Unfortunate, that would have been much cooler
14:54:30 <ais523> Deewiant: hah, that's genius
14:54:45 <AnMaster> Deewiant, so how much do you push on stack? 2*9000 cells?
14:54:51 <AnMaster> that is close to nothing for cfunge :P
14:55:10 <Deewiant> Fortunately I have a debugger for this kind of thing :-P
14:55:17 <AnMaster> Deewiant, ah that would slow me down ;P
14:55:29 <AnMaster> Deewiant, you know you can disable the tracing code at compile time in cfunge?
14:55:40 <lifthrasiir> 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 <AnMaster> Deewiant, as for TRDS and tick count, cfunge doesn't even track the tick count
14:56:28 <Deewiant> But yes, if you want speed, then whatever
14:56:43 <Deewiant> slowdown.b98 can't run mycotrds
14:56:45 <AnMaster> Deewiant, I actually did track it at one point when debugging to find out when something broke
14:56:57 <AnMaster> then I ran ccbi's debugger to same tick count
14:57:14 <AnMaster> (worked well before y was called, not as good after)
14:57:35 <AnMaster> volatile uint64_t tick = 0; And a tick++; in mainloop
14:57:53 <AnMaster> Deewiant, to prevent optimising it out...
14:58:03 <AnMaster> it could do that since the value was never read
14:58:17 <Deewiant> You really should implement TRDS
14:58:24 <Deewiant> I estimate a 50% slowdown on all programs from that
14:58:55 <AnMaster> Deewiant, no because I would have cfunge and cfunge.trds compiled with different defines then
14:59:03 <Deewiant> It's a few branches for every instruction, the predictors in modern CPUs should be able to handle them
14:59:15 <Deewiant> Maybe not, in which case it might even be 50%
15:00:00 <AnMaster> 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 <AnMaster> probably would be slower though
15:01:18 <AnMaster> 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:50 <AnMaster> Deewiant, what exactly does it change? I mean I saw a line number mentioned. But what test is it in?
15:01:53 <Deewiant> I didn't test it but they look aligned now :-P
15:02:25 <lifthrasiir> Deewiant: i feel i should make Funge-98 test suite test suite... XD
15:02:26 <Deewiant> AnMaster: If TOYS was broken some w's would end up where they shouldn't
15:02:42 <AnMaster> well my TOYS should work correctly
15:02:57 <fizzie> Grown men, playing with their TOYS.
15:03:08 <AnMaster> lifthrasiir, I found a fair number of bugs in mycology while developing cfunge too
15:03:29 <Deewiant> And I found the most of all while developing CCBI ;-P
15:04:27 <Deewiant> I'm surprised at how unbuggy MycoTRDS turned out to be
15:04:52 <Deewiant> lifthrasiir: Planning on doing TRDS?
15:05:23 <Deewiant> Don't bash your head against the wall too much then
15:05:48 <AnMaster> lifthrasiir, I would recommend against it. It means changing the whole app probably
15:06:17 <Deewiant> He's just saying that because he's a speed freak
15:06:59 <fizzie> What, you mean he uses controlled substances?
15:07:13 <fizzie> "Like profilers and things like that."
15:07:41 <fizzie> I'm not going to go the TRDS route in jitfunge, I presume.
15:07:48 <AnMaster> fizzie, kernel level whole system profilers even. Like oprofile
15:08:01 <ais523> has anyone tried to implement TRDS using continuations?
15:08:11 <ais523> and how easy would it be?
15:08:24 <Deewiant> I can hardly understand either
15:08:24 <AnMaster> ais523, does D support them? Or any other language ever used to write a funge98 in?
15:08:40 <Deewiant> C supports them so why not D :-P
15:08:45 <ais523> AnMaster: I don't think any of them do officially
15:08:49 <Deewiant> AnMaster: TRDS and continuations
15:08:51 <ais523> there are known hacks to simulate them in C
15:08:57 <AnMaster> Deewiant, what about oprofile then?
15:09:23 <Deewiant> Well, a 'kernel level whole system profiler'
15:09:39 <AnMaster> Deewiant, kernel level profiler with low overhead, because it uses data from the performance counter thingies found in many modern CPUs
15:09:52 <Deewiant> So what does a 'whole system profiler' do
15:09:59 <Deewiant> Profile every program in the system simultaneously?
15:10:05 <AnMaster> Deewiant, well it always end up profiling every program and the kernel yes
15:10:17 <AnMaster> you just have to select from the collected data the part you want
15:11:26 <AnMaster> Deewiant, the tools are fairly good but can be hard to use correctly
15:11:54 <AnMaster> 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:04 -!- oerjan has joined.
15:12:26 <oerjan> ick? never heard of that webcomic
15:12:33 <AnMaster> oerjan, that is sv for en:hiccup
15:12:51 <ais523> I've heard of ick, don't think it's a webcomic yet though (that would be scary)
15:14:00 <AnMaster> Deewiant, when you decide to handle mycoedge correctly in ccbi, how will you do it?
15:14:17 <Deewiant> It's one of those things I'm not going to do in CCBI 1
15:14:26 <Deewiant> And I haven't thought about the details much
15:14:31 <AnMaster> Deewiant, I would suggest using a FPGA and CAM to accelerate funge space :D
15:14:47 <Deewiant> AnMaster: Are you running things on the GPU yet?
15:14:54 <AnMaster> Deewiant, no, my GPU is too old
15:15:03 <AnMaster> also I don't think cfunge would benefit much from it
15:15:14 <Deewiant> Or maybe using MPI so you can have a Beowulf cluster running Mycology?
15:15:25 <AnMaster> Deewiant, again I think there will be a lot of overhead
15:15:33 <ais523> would that be faster or slower than just running it on one computer
15:15:33 <oerjan> ais523: hm now that + today's iwc makes me think of a cheesy cartoony INTERCAL tutorial featuring cthulhu and friends
15:15:43 <Deewiant> ais523: cfunge is so fast that it'd be a lot slower
15:15:47 <AnMaster> but if I get a dual core I may experiment with OpenMP for stuff like initial filling of funge space
15:15:54 <Deewiant> It'd be even slower than CCBI, probably
15:15:59 <AnMaster> like divide the loop over several CPUs, each filling it's own part
15:16:01 <Deewiant> Maybe even slower than Pyfunge O_o
15:16:37 <ais523> AnMaster: what about pushing some of the computation onto the GPU
15:16:59 <Deewiant> ais523: That's what I just asked :-P
15:17:05 <AnMaster> 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:30 <ais523> you could use the GPU to store funge-space
15:17:35 <ais523> and just use it for blitting, etc
15:17:49 <AnMaster> why would I need blitting funge space btw?
15:17:59 <AnMaster> some fingerprint I assume, But which?
15:18:44 <ais523> TOYS has a fungespace copy, doesn't it?
15:19:09 <AnMaster> ais523, yes but that needs to deal with area outside the static area too
15:19:37 <AnMaster> 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:39 <AnMaster> so anyone have good suggestions for calculating exact funge space edges for y
15:20:53 <AnMaster> I would definitely cache result to begin with
15:21:01 <Deewiant> 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 <AnMaster> and invalidate cache on writing a space in an edge cell
15:21:36 <fizzie> 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 <AnMaster> 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:23:07 <AnMaster> 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 <AnMaster> cfunge has long been optimised to allow as much vectorising as possible by both GCC and ICC
15:23:45 <AnMaster> there are probably more places that could be vectorised, but quite a few are already done
15:23:51 <AnMaster> for example the TOYS sum of stack one
15:23:59 <AnMaster> is transformed into some SSE thingy
15:24:56 <AnMaster> 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:26:04 <fizzie> Funny that the sum and stack ops do all elements, instead of taking a number of elements on top.
15:26:23 <AnMaster> 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 <fizzie> s/stack/product/, s/ops/ops in TOYS/
15:26:33 <AnMaster> when the bounds need to be updated for y
15:27:10 <AnMaster> 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:29 <AnMaster> on the other hand it was 93 + a few things from 98
15:27:44 <AnMaster> it passed the 93 part, but not the 98 part
15:28:08 <oerjan> <Deewiant> The rationale is that it comes from Greek 'izare' (modulo the Latin alphabet) and is also pronounced like a z
15:28:27 <oerjan> i think that would be 'izein' or something like that, -are is just latin iiuc
15:28:58 <Deewiant> The key point is the z anyway ;-)
15:29:26 -!- neldoreth has joined.
15:29:29 <oerjan> No the key point is to nitpick.
15:30:36 <oerjan> http://www.myetymology.com/greek/-izein.html
15:30:59 <AnMaster> 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:23 <AnMaster> (is that even physically possible? I kind of loose the sense of numbers when it comes to large enough numbers...)
15:31:49 <AnMaster> it would be more than 64-bit could adress
15:31:56 <AnMaster> you would need an 128-bit computer I think
15:32:34 <fizzie> A square with a side of 2^32 elements obviously has an area of 2^64 elements, so...
15:32:44 <ais523> if i understand correctly, is my guess
15:33:24 <AnMaster> fizzie, so physically impossible too I guess?
15:33:54 <fizzie> Well, I don't know about that. Certainly rather unlikely with current technology.
15:34:01 <ais523> 65536 doesn't strike me as beyond the realms of possibility
15:34:10 <ais523> although it would be a bit tricky with modern hardware, definitely
15:34:26 <ais523> the entire Internet comes to about 3 or 4 PB, apparently
15:34:32 <ais523> that's how big the Wayback Machine's archive is
15:34:37 <fizzie> Wikipedia has a "Petabytes in use" list in the Petabyte article.
15:34:39 <ais523> and it fits into one storage container
15:35:00 <ais523> I can certainly imagine 20000 or so of the things all containing data farms
15:35:04 <AnMaster> ais523, waybackmachine is far from complete
15:35:23 <ais523> anyway, I think that 65536 would be /possible/ with today's technology, just expensive
15:35:49 <AnMaster> 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:36:03 <ais523> nope, it's blocked by robots.txt, IIRC
15:36:12 <ais523> and things that block wayback via robots.txt aren't wayback-archived
15:36:50 <fizzie> 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 <fizzie> s where they shrink very much.
15:37:02 <fizzie> Anyway, has to go work → home now, so away.
15:37:28 <ais523> you could keep a count of nonspaces in each row and each column
15:37:41 <ais523> that would make fungespace read and write O(1)
15:37:46 <ais523> whilst letting you know when to shrink
15:39:07 <AnMaster> ais523, it should translate to a simple inc or dec most of the time, with a slight overhead at loading.
15:39:25 <ais523> you'll also need some memory to store the count in
15:39:35 <ais523> although an unsigned fungecelltype would be big enough
15:40:18 <AnMaster> 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 <AnMaster> ais523, actually it wouldn't work outside static space, I would need two 2^32 arrays
15:41:27 <ais523> just use the same method as you use for fungespace
15:41:32 <AnMaster> and growing the array dynamically each time the bounds grow sounds like it could be bad
15:41:39 <ais523> static arrays for the middle, a hash elsewhere
15:41:42 <AnMaster> ais523, you mean hash outside the static area hm
15:42:40 <AnMaster> 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 <ais523> well, that probably isn't a problem
15:42:54 <AnMaster> well I can use same, but a different copy of it special-cased in another way
15:43:26 <AnMaster> ais523, I mean it can't store anything but funge cells, since they are inlined in the records themselves and such.
15:43:47 <AnMaster> (I profiled compared to having a pointer to the cell)
15:44:07 <AnMaster> also the records are allocated from a memory pool that gives out fixed size blocks
15:44:20 <AnMaster> anyway just compile it twice with different parameters heh
15:46:36 <AnMaster> there is the hsearch stuff in libc too
15:47:08 <Deewiant> Haha 'I only use Gentoo with -fbroken-math, -fno-stack, and -finfinite-loops.'
15:47:42 <ais523> what would -finfinite-loops do, anyway?
15:47:49 <ais523> the other two I can sort of guess
15:48:01 <AnMaster> 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:25 <Deewiant> I think omit-frame-pointer is risky :-P
15:48:28 <AnMaster> Deewiant, -march=k8-sse3 -pipe -O2 -g is what I use
15:48:34 <AnMaster> and I don't ever use omit-frame-pointer
15:48:45 <Deewiant> It's the default on gentoo though
15:49:20 <AnMaster> Deewiant, I used gentoo since 2005, and it hasn't ever been default
15:49:42 <Deewiant> Hmm, maybe it was just a recommendation on the wiki for 'safe CFLAGS' or something
15:50:05 <AnMaster> Deewiant, yeah, but that wiki is edited by users, and not even an official gentoo project
15:50:20 <AnMaster> it is good often yes, good howtos for many things
15:50:28 <Deewiant> 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 <AnMaster> Deewiant, archive exists and people are checking that the howtos aren't outdated (a lot were) and adding them back
15:51:09 <AnMaster> anyway on gcc 4.3 I would just recommend -O2 -march=native -pipe
15:51:16 <AnMaster> -pipe just makes gcc use less temp files
15:51:19 <ais523> Deewiant: why do you think omit-frame-pointer is risky? it's part of -O3, IIRC
15:51:27 <ais523> and the compiler doesn't do it in the situations it doesn't work
15:51:33 <ais523> it just makes debugging harder
15:51:40 <Deewiant> You never know when you want to debug
15:51:50 <AnMaster> which usually means around 5%-7% saved on compile time for large apps
15:52:13 <AnMaster> ais523, is it part of -O3? That sounds wrong
15:52:49 <AnMaster> maybe the omitting leaf frame pointer is default at -O3...
15:53:09 <AnMaster> (a separate, more conservative flag)
15:53:16 <Deewiant> Evidently it is part of -O3 on x86-64
15:53:19 <ais523> AnMaster: -pipe will bork gcc /really/ badly on DOS
15:53:37 <AnMaster> ais523, ok maybe. But I recommend using it on all sane systems
15:53:43 <ais523> actually, I think DJGPP works around it, by running the processes one at a time and using temp files
15:53:53 <AnMaster> Deewiant, iirc it isn't needed really on x86_64
15:53:54 <ais523> either that, or it's simply turned off in the DOS version of gcc, that wouldn't surprise me
15:54:06 <AnMaster> Deewiant, btw it is _ not - iirc
15:54:26 <AnMaster> 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:34 <Deewiant> AnMaster: "It" is either AMD64 or Intel 64 these days
15:54:34 <AnMaster> I never seen it with a - instead of _
15:54:47 <AnMaster> Deewiant, yes AMD64 or IEMT64 or something
15:54:49 <Deewiant> And yet the Wikipedia article is called x86-64
15:54:52 <AnMaster> forgot what the intel called it
15:54:59 <Deewiant> AnMaster: Intel 64 these days, as I said.
15:55:59 <Deewiant> 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:28 <Deewiant> (If you define the ordering relation on correctness correctly.)
15:57:23 <AnMaster> Deewiant, Gentoo calls it amd64, gcc and other parts of toolchain calls it x86_64
15:57:38 <Deewiant> AMD64 I can understand, x86_64 I can't.
15:58:05 <AnMaster> lrwxrwxrwx 1 root root 59 21 jul 2008 /etc/make.profile -> ../usr/portage/profiles/default/linux/amd64/2008.0/desktop
15:58:26 <AnMaster> Deewiant, that is microsoft making a mess
15:58:41 <Deewiant> It's other companies as well, might have started with MS though.
15:58:59 <Deewiant> AnMaster: At least Sun uses it also.
15:59:43 -!- neldoreth has quit ("leaving").
16:00:26 -!- neldoreth has joined.
16:01:39 <AnMaster> how is a struct that is passed by value passed on 32-bit x86=
16:01:57 <AnMaster> And in registers for x86_64 right?
16:01:58 <ais523> depends on the compiler
16:02:02 <Deewiant> Beats me, I don't know the C calling conventions beyond integers
16:02:11 <Deewiant> And even those only for x86-64 :-P
16:02:15 <ais523> IIRC with the right compiler flags, gcc will pass it in a register if it fits, and on the stack otherwise
16:02:29 <AnMaster> ais523, lets say GCC with __attribute__((regparm(3)))
16:02:41 <ehird> 12:56 ais523: AnMaster: launchpad? ugh
16:02:41 <ehird> 12:57 AnMaster: ais523, good code hosting though
16:02:43 <ehird> 12:57 AnMaster: for bzr
16:02:46 <ais523> gcc-bf will pass it in registers if the total size of the arguments is 32 bytes or less
16:02:56 <ehird> you can't redeem launchpad with *bzr*, that's opposite world :-)
16:02:56 <AnMaster> ehird, since when do google code hosting have bzr?
16:03:11 <ais523> AnMaster: look up false dichotomy some time
16:03:21 <ehird> 11:39 AnMaster: ais523, btw is it vectorize or vectorise in UK English?
16:03:21 <ehird> 11:39 ais523: err... oh dear
16:03:24 <ehird> my thoughts exactly
16:03:25 <AnMaster> ais523, well bzr would be a hard requirement
16:03:39 <ais523> AnMaster: why not just get a webserver that runs bzr, and push there?
16:03:44 <ais523> that's the same way you host any other dvcs
16:03:54 <AnMaster> ais523, as I said there were data center issues. And that is what I used before
16:03:59 <ehird> (ais523: objection; i use github :-P)
16:04:22 <ais523> ehird: you know I don't agree with github's terms of use
16:04:29 <ehird> i think they fixed them
16:04:37 <ais523> 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 <ehird> but it doesn't change the fact that I do use it
16:04:46 <ais523> given that only about 5 people are likely to have read them?
16:04:52 <ehird> so "that's the same way you host any other dvcs" is wrong
16:04:53 <ais523> apparently there's another bug in them, not just the adblocker thing
16:05:03 <ehird> Are you sure you're not thinking of another site?
16:05:06 <ais523> I can't remember offhand, let me read them again
16:05:12 <ais523> it was on proggit a while back, though
16:05:18 <ehird> ais523: that was about sourceforge
16:05:25 <ehird> and that was wrong too, btw
16:05:27 <ais523> what was the bug there?
16:05:30 <ehird> it was only referring to non-code content
16:05:40 <ehird> ais523: "we, sourceforge, have an exclusive license to do what the fuck we want with your stuff"
16:05:45 <ehird> but it was only referring to non-code content you submit
16:06:07 <ais523> even so, people might want to store non-code stuff there
16:06:15 <ais523> and "exclusive"? that rules out pretty much all documentation licences
16:06:32 <ehird> sf is obsolete anyway
16:06:35 -!- neldoreth has quit ("leaving").
16:06:42 <ais523> hmm... github have the facebook bug
16:06:48 -!- neldoreth has joined.
16:06:52 <ais523> where they can change the ToS without notice and you have to comply with the new ones
16:07:02 <ehird> ais523: that's not the "facebook bug"
16:07:05 <ehird> that's in every website tos ever
16:07:17 <ais523> but it became famous wrt facebook
16:07:17 <ehird> if you don't want to comply with the new terms, stop using the site
16:07:24 <AnMaster> IMO they should have to give you an advanced warning so you can pull your stuff if you disagree
16:07:33 <ais523> they can grab the copyright to your uploaded content, though, etc
16:07:36 <ehird> AnMaster: err... sourceforge do
16:07:41 <ehird> oh, you mean github?
16:07:52 <AnMaster> I know sf.net give advance warning yes
16:07:52 -!- BeholdMyGlory has joined.
16:07:54 <ehird> it's their right to put whatever terms they like
16:08:01 <ehird> They would probably warn
16:08:05 <AnMaster> "<ais523> where they can change the ToS without notice and you have to comply with the new ones"
16:08:07 <ehird> but requiring a warning is dumb
16:08:13 <AnMaster> that is what I'm talking about
16:08:18 <ehird> yes. you're wrong.
16:08:24 <ehird> (but that's never stopped you)
16:08:33 <AnMaster> it seems ais523 agreed with me here
16:08:50 <ehird> Doesn't stop it being wrong
16:08:57 <ais523> github also doesn't allow you to use significantly more than average bandwidth for their customers
16:09:07 <ais523> thinking about it: how many inactive accounts are there on github?
16:09:16 <ais523> quite possibly /all/ the active ones are using significantly more than average
16:09:28 <AnMaster> well you didn't say "<ehird> yes. you're wrong." to him. You were much ruder to me
16:09:41 <ehird> AnMaster: because you're wrong far more often, and you always state it far more idiotically
16:09:53 <ehird> and, to boot, you irritate me greatly so if you feel offended that's great
16:10:33 <ais523> 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 <ais523> 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 <ais523> although strangely, if you want to cease to agree to their terms you have to do it in writing
16:13:35 <ais523> 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 <ehird> ais523: you disagree with me in a less irritating fashion.
16:14:06 <AnMaster> yeah I wonder what is wrong with ehird...
16:14:26 <ehird> 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 <AnMaster> ehird, wait, didn't you mix up "you" and "I" there?
16:15:10 <ehird> I think you would be less irritating if you didn't make pathetic attempts at insulting humour
16:15:12 <AnMaster> actually no, you aren't an idiot, just annoying
16:15:20 <ais523> AnMaster: "I're an irritating idiot"? your grammar is slipping
16:15:45 <AnMaster> ais523, well of course the grammar would need fixup after replacing
16:16:30 <AnMaster> anyway I wouldn't call ehird an idiot. But annoying and over-reacting yes, as well ass rude and several other things.
16:16:54 <AnMaster> a typo that was indeed rather funny
16:17:46 <ais523> why do people here think asses are intrinsically funny anyway?
16:18:11 <AnMaster> ais523, well donkeys do sound rather weird. Maybe because of that?
16:18:38 <ais523> "donkey" is funny, but "monkey" is funnier still
16:18:46 <ais523> based on the sounds of the words, nothing to do with meaning
16:18:55 <AnMaster> ais523, but ass isn't a synonym for "monkey"
16:19:33 <ais523> it also doesn't sound like "donkey"
16:19:37 <AnMaster> ais523, btw Swedish use one word for "monkey" and "ape", causing some issues when translating Discworld books
16:19:50 <ais523> how do they get around the problem?
16:19:57 <ehird> monkey and ape same word? How creationist.
16:20:46 <AnMaster> ais523, using an older form of it, "apekatt", which sounds very out of place. So a very poor solution.
16:21:01 <AnMaster> and confusing, until I read the English books
16:21:16 <AnMaster> until I realised what the translator was trying to express
16:22:48 <AnMaster> 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:56 <ehird> This will be *fun*
16:23:10 <Deewiant> "Insert CD, follow instructions, and you're done."
16:23:16 <ehird> Deewiant: Well, yes, that's what I'm hoping for.
16:23:25 <ehird> But you never know with the newfangled hardwares these days.
16:23:29 <AnMaster> ehird, does the CD have pigin or such? (or whatever the name currently is of that software)
16:23:50 <ehird> AnMaster: It has all the software that it has post-installation
16:24:04 <ais523> just it's slower before it's installed
16:24:09 <ais523> because it has to keep reading from the CD
16:25:30 <AnMaster> ais523, many livecds tend to use ramdisks?
16:25:42 <ehird> AnMaster: loading all the software into RAM?
16:25:43 <AnMaster> well mostly the minimal ones I guess
16:25:47 <ehird> It runs on low-RAM machines, you know.
16:26:07 <AnMaster> ehird, at least the gentoo minimal install cd (around 70-90 MB iso iirc) has such an option
16:26:38 <AnMaster> along with the other ones like "noacpi" and such
16:26:57 <AnMaster> though it was a few years ago I last looked
16:27:00 <ehird> Actually the story _before_ this installation was more amusing.
16:27:14 <ehird> His male parental overlord ... thinks he knows computers.
16:27:25 <ehird> WiFi routers are bad because people can steal your internet, and they give off cancer-causing radiation.
16:27:38 <ehird> Ubuntu and non-Norton virus scanners and Firefox are less secure and you should not use them.
16:27:55 <ehird> You can infer the rest :-P
16:29:24 <ais523> well, people can steal your internet if the router isn't set up properly
16:29:30 <ais523> why is he being allowed to install ubuntu anyway?
16:29:38 <ais523> norton doesn't even run on it
16:29:45 <AnMaster> 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 <ehird> ais523: After a few days: "Well fine you can install it but i'm not happy about it"
16:30:11 <ehird> "Grumble grumble mumble etc"
16:30:24 <AnMaster> ehird, shared or own computer?
16:30:34 <ehird> AnMaster: he got this laptop a few days ago.
16:33:29 -!- BeholdMyGlory has quit (Remote closed the connection).
16:33:50 <ehird> Ikea = awesome. This fact brought to you by ehird.
16:35:39 <AnMaster> ehird, why do you think they are awesome?
16:35:46 <ehird> 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 <ais523> after all, prefabricated buildings aren't exactly unknown
16:36:33 <AnMaster> ais523, you mean an IKEA store itself packaged like an IKEA thing?
16:36:48 <ehird> I love the bit behind all the actual on-display stuff
16:36:48 <AnMaster> ais523, might be rather... large?
16:36:52 <ehird> Where it's just racks and racks and cardboard boxes
16:36:56 <ais523> AnMaster: yep, you'd probably need a couple of lorries
16:36:57 <ehird> It's kind of surreal
16:37:05 <ehird> ais523: have you seen how huge IKEAs are?
16:37:05 <AnMaster> ehird, like any other IKEA store?
16:37:09 <ehird> they're ginormous!
16:37:17 <ehird> ais523: you'd need like 100 lorries
16:37:28 <ais523> ehird: they're mostly full of air, though
16:37:35 <ais523> I admit that the surface area of the walls would come to quite a bit
16:37:38 <ehird> Those ceilings are terribly high
16:37:51 <oerjan> AnMaster: "it's called cfunge because it's as slow as watching mushrooms grow"?
16:37:57 <AnMaster> ehird, IKEA also sells stuff which isn't flat packaged, like plates and glasses and such
16:38:07 <ehird> AnMaster: oh, I know that
16:38:20 <ehird> there's also a little shop at the entrance where they sell stuff from Sweden
16:38:35 <ehird> they have some nice biscuits I forget the name of
16:38:39 <AnMaster> but yeah IKEA usually means impossibly compactly packed with an allen wrench included
16:38:57 <AnMaster> <ehird> there's also a little shop at the entrance where they sell stuff from Sweden <-- never seen that...
16:39:06 <AnMaster> I guess it is non-Swedish IKEA only
16:39:32 <AnMaster> ehird, what are those small stores like?
16:39:52 <ehird> AnMaster: Sort of like... erm...
16:40:01 <ehird> They're very small
16:40:14 <AnMaster> that would be rather a contrast compared to IKEA itself
16:40:59 <ehird> 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 <AnMaster> 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 <ehird> Just one massive floor.
16:41:46 <ehird> Although considering how high the ceilings are you could fit about 5 more in.
16:41:47 <oerjan> the one in Trondheim is two.
16:42:08 <AnMaster> ehird, with a restaurant near the middle of the path you walk before reaching the box area?
16:42:15 <AnMaster> assuming they have same layout
16:42:23 <ehird> Er. I don't think so.
16:42:45 <AnMaster> where you have to walk something like a Hilbert space filling fractals with items on all sides
16:43:04 <oerjan> definitely like that here
16:43:18 <ehird> The box area is what I mentioned before.
16:43:22 <ehird> No recollection of a restaurnt.
16:43:50 <AnMaster> 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 <ais523> I imagine not all IKEAs are identical
16:44:01 <ehird> ais523: it wouldn't surprise me
16:44:01 <AnMaster> ais523, true, but they have the same basic idea
16:44:09 <ehird> I imagine all Apple Stores are identical, for instance
16:44:11 <oerjan> ais523: i've heard nearly all IKEA's _are_ identical
16:44:12 <AnMaster> they vary a bit, but not that much
16:45:16 <AnMaster> 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 <oerjan> the ads they had here even said "remember to eat at the cafeteria"
16:46:02 <AnMaster> the one here have a combined restaurant/cafeteria indeed though
16:46:56 <ehird> Whee, he has managed to burn the CD correctly.
16:47:07 <ehird> Before that Windows decided to burn the ISO file as the single content of it.
16:47:28 -!- FireFly has joined.
16:48:33 <oerjan> 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 <AnMaster> oerjan, that isn't Swedish. It is Norwegian. Swedes would never add that j
16:49:12 <oerjan> of course this is Norway, where some people regularly take trips to sweden to buy things that are cheaper there
16:49:20 <oerjan> not? google failed me then
16:49:33 <ehird> oerjan: are fjords nice?
16:49:45 <AnMaster> yeah they are a Norwegian speciality!
16:49:48 <oerjan> somehow i googled kjöttbullar and got a hit
16:49:59 <oerjan> also new zealand i hear
16:50:07 <ehird> AnMaster: i think you should give slartibartfast more credit
16:50:45 <AnMaster> ehird, I never was against giving him credit.
16:50:52 <oerjan> all you need for that are mountains and a previous glacial age, i presume
16:50:54 <ehird> you said Norweigan specialty
16:51:19 <oerjan> the norwegian specialty would be kjøttkaker
16:51:29 <AnMaster> ehird, well slartibartfast placed them in Norway obviously (I didn't know they existed in new zealand too at that point)
16:51:41 <oerjan> (kjøttboller exists too, but kjøttkaker is what was voted our national dish iirc)
16:51:45 <AnMaster> but couldn't they be the speciality of both Norway and slartibartfast
16:52:16 <AnMaster> oerjan, poor Norwegian vegetarians
16:52:35 * AnMaster wonders what the Swedish national dish is
16:52:40 <oerjan> norway is definitely not known for its veggie food
16:53:24 <ehird> Wow. His video card was supported out of the box. Full resolution.
16:53:43 <oerjan> AnMaster: well köttbullar seems to get high on the list
16:53:45 <FireFly> I can also write the characters
16:53:48 <oerjan> http://wiki.answers.com/Q/What_are_Sweden's_national_foods
16:53:52 <AnMaster> anyway since it isn't debian but ubuntu I wouldn't be surprised ehird ;P
16:54:15 <ehird> 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 <ehird> NVIDIA GeForce Go 9200M GS (Dedicated Graphics)
16:54:17 <ehird> Intel® X4500 (Integrated Graphics)
16:54:22 <ehird> although I don't know which it is
16:54:53 <AnMaster> if he is not computer literate
16:54:55 <ehird> AnMaster: I think I'd rather not scare him off. :-)
16:55:45 <oerjan> hm wait i see claims norway's national dish is/was fårikål
16:55:55 <AnMaster> 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:02 <AnMaster> so I'm not really surprised for either case
16:56:58 <AnMaster> ehird, lucky it wasn't ATI/AMD graphics... Though even that is starting to get better slowly after AMD bought ATI
16:57:34 <oerjan> more humorously, in modern days it's Pizza Grandiosa (a norwegian shrink-wrap pizza)
16:57:58 <AnMaster> 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:58:13 * AnMaster wonders how long his own 7600 will be supported
16:58:14 <ehird> Yeah but even with nvidia I have to let ubuntu asy "oh hai you need these drivers"
16:58:38 <AnMaster> ehird, hm ok, If 3D works I guess it is intel then
17:14:29 <ehird> <Friend's dad> Since Ubuntu is freeware it'll make money through advertising so you have to download an adware and spyware scanner
17:16:34 <Robdgreat> yes, open source spyware is very common. -_-
17:16:42 <ehird> Robdgreat: how else will ubuntu corporation make money duh
17:16:55 <ais523> ehird: by being given it all for free by a rich millionaire
17:17:04 <ehird> ais523: ha ha nerds don't have money!
17:17:15 <ais523> the funny thing is that that /is/ the real method...
17:29:00 <ehird> ais523: "rich millionaire"?
17:29:22 <ais523> well, millionaires aren't necessarily rich nowadays
17:29:34 <ais523> many of them are just barely scraping by trying to live in London
17:29:42 <AnMaster> "so you have to download an adware and spyware scanner" <-- are those freeware ones since you can download them
17:29:47 <ehird> AnMaster: :-DDDDDDD
17:29:55 <ehird> this adware scanner is supported by ads!
17:30:07 <ais523> actually, many freeware programs pretending to be spyware scanners are themselves spyware
17:30:17 <AnMaster> yes I know, but I was trying to be funny there
17:32:08 <ais523> that wasn't ruining the joke
17:32:13 <ais523> the joke had already happened
17:32:27 <ais523> also: "<ehird> AnMaster: :-DDDDDDD"
17:32:37 <ais523> ehird: is something wrong with you? You actually liked AnMaster's humour
17:33:03 * ais523 kicked ehird from #esoteric (obviously an imposter)
17:33:40 <AnMaster> 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 <ehird> AnMaster: I think that would be playing with fire
17:34:01 <ehird> AnMaster: But seriously, this guy likes *Norton*.
17:34:06 <ehird> That's McAffe, you know? Symantec?
17:34:11 <ehird> Worst virus scanner ever?
17:34:30 <ais523> I'm not sure it's the worst altogether, it has some pretty strong competition
17:34:32 <AnMaster> ehird, err isn't McAffe or whatever separate from the Symantec one?
17:34:39 <ais523> but hooking into everything in the OS is pretty annoying
17:34:45 <ais523> and putting toolbars on everything is pointless
17:34:51 <AnMaster> anyway, what would a good antivirus be on Windows? I have no clue
17:35:07 <ais523> also, did you know that Symantec have a downloadable program specifically to uninstall Norton
17:35:13 <ais523> because the packaged uninstaller doesn't work properly?
17:35:22 <ais523> AnMaster: do you mean one that already exists, or in theory?
17:35:40 <ehird> AnMaster: Nod32, AVG.
17:35:41 <AnMaster> ais523, one existing that you could recommend to computer illiterates
17:35:43 <ais523> 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:57 <AnMaster> ehird, I ran into Panda once, it seemed just as bad as norton
17:35:59 <ais523> but I don't think there's a Windows one like it
17:36:17 <ehird> As far as firewalls go, Comodo is quite good.
17:36:21 <Deewiant> ClamAV is supposedly rather crap
17:36:21 <ais523> 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 <ais523> Deewiant: its interface is good, though
17:36:33 <ehird> ais523: Yes, well, the actual virus checking is good
17:36:33 <AnMaster> ehird, personally I prefer pf, a pitty it doesn't exist for windows
17:36:45 <Deewiant> I don't really care about the interface when it comes to virus checkers :-P
17:36:51 <AnMaster> ehird, I doubt you could run pf on anything but *BSD
17:36:52 <ais523> Deewiant: anyway, does it matter, what would it be looking for anyway?
17:36:57 <ehird> nod32 is good, anyway
17:36:58 <AnMaster> too hooked into the BSD style kernels
17:37:01 <ehird> it's hand-coded entirely in asm
17:37:12 <ehird> and also it's quite expensive shareware
17:37:12 <ais523> ClamAV looks out for Windows viruses, and logic bombs like infinitely large zip files
17:37:18 <ehird> but its memory footprint is close to 0
17:37:19 <fizzie> F-Prot wasn't too shabby, back then.
17:37:23 <ehird> and its virus checking is excellent
17:37:48 <fizzie> F-Prot is what turned into F-Secure, I guess.
17:38:11 <AnMaster> 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 <FireFly> [18:36:48] <Deewiant> I don't really care about the interface when it comes to virus checkers :-P <-- Well, me neither, within certain bounds
17:38:24 <ehird> AnMaster: It has an OK security model built in.
17:38:31 <ehird> "Anti-viruses" are a laughable concept.
17:38:37 <AnMaster> ehird, yes true, but even so there have been bad things
17:38:40 <ehird> Why remove viruses when you can fix them>
17:38:46 <FireFly> For example, I dislike Norman Antivirus' interface
17:38:48 <AnMaster> ehird, vmsplice() to mention to last one
17:39:23 <ehird> AnMaster: when you can fix the security issues that let them work
17:39:24 <Deewiant> It's just not F-Secure's F-Prot.
17:39:27 <fizzie> Deewiant: Yes, Google said so. How curious.
17:39:51 <Deewiant> fizzie: The F-Prot engine was always licensed from Iceland.
17:39:51 <fizzie> "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:40:16 <fizzie> Conglomerate is a fine word, though.
17:40:16 <AnMaster> 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:41:48 <AnMaster> 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:42:02 <fizzie> Heh, the likelyhasbetween(x,m,n) macro in http://www-graphics.stanford.edu/~seander/bithacks.html#HasBetweenInWord is by mooz.
17:42:26 <ehird> AnMaster: That's fixable by a capability-based security model.
17:42:34 <fizzie> 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 <ehird> 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 <AnMaster> fizzie, need more than byte range. 16 bit integer would work though
17:42:51 <ehird> But viruses generally aim for more.
17:43:16 <ais523> does anyone use likelyhasbetween, btw?
17:43:22 <ais523> I can't think of an obvious use-case for it
17:43:25 <AnMaster> ehird, well infect the user's shell ~/.bashrc and .xinitrc and so on
17:43:39 <ais523> AnMaster: infecting bashrc would be ridiculous
17:43:43 <fizzie> ais523: It was designed for a real need, yes; I vaguely remember the conversation leading to it.
17:43:47 <ehird> read one word at a time, likelyhasbetween 0
17:43:49 <ais523> it would be easy to notice, possibly by accident
17:43:51 <ehird> if it does, then check it further
17:44:00 <ais523> ehird: I mean, why are you doing the check in the first place
17:44:04 <AnMaster> ais523, .xinitrc or some gnome/kde specific autoload stuff hidden somewhere
17:44:27 <ehird> oh, "Determine if a word has a zero byte "
17:45:06 <AnMaster> actually I'm not looking for if it is in the box fizzie, but *on* the edge.
17:45:21 <fizzie> 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 <ais523> the bithacks page reminds me of INTERCAL
17:47:07 <ais523> I wonder what those would look like translated to the simplest equivalent INTERCAL expressions? Shorter or longer, I wonder?
17:47:26 <ehird> I ought to get me an editor with which to edit haskell.
17:47:46 <ais523> don't you have an emacs already?
17:49:26 <AnMaster> basically I'm looking for a faster way than:
17:49:28 <AnMaster> if ((x != fspace.bottomRightCorner.x)
17:49:28 <AnMaster> && (x != fspace.topLeftCorner.x)
17:49:28 <AnMaster> && (y != fspace.bottomRightCorner.y)
17:49:28 <AnMaster> && (y != fspace.topLeftCorner.y))
17:49:44 <AnMaster> (assuming that is correct, I haven't tested that well yet)
17:50:22 <ais523> replacing && with & may be faster, but the compiler can probably figure out that optimisation for itself
17:50:34 <AnMaster> ais523, hah. Yeah I assume it should
17:51:06 <ais523> are the fspace members volatile?
17:51:13 <ais523> if not, I really /hope/ it figures it out for itself
17:51:43 <AnMaster> static struct fungeSpace fspace;
17:53:25 <ais523> if the definition of struct fungeSpace contains no volatiles, it should be able to work it out
17:53:39 <ais523> hmm... I might put & there rather than &&, anyway
17:53:47 <ais523> then to confuse people further, remove all the parens
17:53:55 <AnMaster> ais523, I would confuse myself
17:54:12 <fizzie> 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 <AnMaster> I can never remember the precedence rules in C... for && and !=
17:54:49 <ais523> 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 <ais523> AnMaster: && is lower than ==
17:55:06 <AnMaster> there isn't anything outside indeed
17:55:06 <ais523> in fact, even & is lower than ==
17:55:54 <Deewiant> == is lower than all arithmetic
17:55:59 <fizzie> Most of the precedence makes sense, the bitwise & and | are the strange ones.
17:56:07 <ais523> yep, but higher than the bitwises and logicals
17:56:08 <Deewiant> Is ^ in a different class from & and |?
17:56:15 <ais523> Deewiant: nope, it's between then IIRC
17:56:31 <ais523> but relative ordering of ^ to & and | I'm not entirely sure about
17:56:38 <Deewiant> Just wondering if 1 ^ 1 == 0 is true or not
17:56:50 <ais523> AnMaster: it's because && is a comparatively recent invention in the history of C
17:56:54 <Deewiant> Hm, actually that's true in either case isn't it
17:56:59 <ais523> for ages, & and | were all that existed
17:57:24 <fizzie> Deewiant: That's the illogical 1 ^ (1 == 0), yes. I just didn't bother mentioning it.
17:57:31 <ais523> AnMaster: that explains why their precedence is below =='s
17:57:45 <ais523> because people wanted to write x1 == x2 && y1 == y2, or whatever
17:57:50 <ais523> back then it was x1 == x2 & y1 == y2
17:57:58 <AnMaster> ais523, oh? Couldn't they have put it otherwise since && would have been invalid before, thus not existing in any code
17:57:58 <ais523> because there wasn't separate bitwise and relational and
17:58:16 <ais523> well, & was already below ==
17:58:27 <ais523> where are they going to put &&? Putting it above == would be ridiculous
17:58:36 <ais523> as people hardly ever use == to compare booleans, and doing so is bad practice
17:59:13 <AnMaster> ais523, maybe in a compiler test suite? ;P
18:00:09 <fizzie> 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 <fizzie> "warning: suggest parentheses around comparison in operand of &" with -Wall, yes.
18:01:18 <AnMaster> (gdb) print cfun_static_use_count_row
18:01:18 <AnMaster> $1 = {0 <repeats 64 times>, 18446744073709551522, 18446744073709551474, 18446744073709551482, 18446744073709551491, 18446744073709551485, 18446744073709551490,
18:01:18 <AnMaster> 18446744073709551503, 18446744073709551502, 18446744073709551503, 18446744073709551507, 18446744073709551488, 18446744073709551498, 18446744073709551551,
18:01:35 <ais523> looks like it's been decremented below 0
18:02:19 <AnMaster> $3 = {0 <repeats 64 times>, 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 <AnMaster> 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 <AnMaster> 109, 115, 74, 72, 131, 119, 112, 112, 123, 92, 74, 106, 72, 60, 97, 115
18:04:17 <fizzie> Quite a large program, if there were 18446744073709551522 non-space elements on row 0.
18:05:14 <fizzie> Something like... 10 % larger than Mycology, eh?
18:05:55 <AnMaster> the one I got from TRDS in CCBI. How it will look in 10 years
18:06:02 <AnMaster> when RCS defined lots of new fingerprints
18:06:12 <AnMaster> about 10% of which Deewiant bothered to test
18:06:24 <AnMaster> (the rest being crap or too badly defined)
18:06:39 <Deewiant> Just haven't had the time/will for somem
18:06:57 <AnMaster> somem? sounds like RCS one indeed
18:06:57 <Deewiant> Some I did plain choose to ignore, yes
18:07:13 <AnMaster> related to memory management for *.so
18:07:29 -!- Slereah_ has joined.
18:08:03 <fizzie> There should be a UNIC fingerprint that would change the semantics so that you could use ↑↓←→ instead of ^v<>. :p
18:08:51 <AnMaster> fizzie, heh. You couldn't load that from the file
18:08:58 <AnMaster> it would load into several cells
18:09:08 <AnMaster> ehird, check how it is defined in Funge-98
18:09:10 <ehird> you could pretend they're chars 256
18:09:20 <ehird> that's spec compliant
18:09:37 <AnMaster> well I assumed using the same encoding as fizzie just sent
18:10:30 <fizzie> 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 <AnMaster> "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:11:17 <AnMaster> fizzie, damn you were 3 seconds faster there
18:11:32 <fizzie> I've already forgotten the "justification" too.
18:11:33 <Deewiant> I have since said that I'd consider UTF translation spec-compliant
18:11:48 <AnMaster> new justification please Deewiant!
18:11:53 <Deewiant> I originally did that, then I didn't, then I thought about it more and realized that it's fine.
18:12:04 <AnMaster> you told me it wasn't fine before
18:12:14 <Deewiant> Yes, I did, but I've also told you that it is fine.
18:12:23 <fizzie> Deewiant: You're quite a waffler.
18:12:33 <Deewiant> You /do/ know that I've changed my mind, you've just forgotten.
18:12:39 <AnMaster> anyway it isn't like cfunge will handle utf-8 in source files, that requires too much processing!
18:12:53 <fizzie> 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 <Deewiant> Anyway, the reason is essentially that UTF is just an encoding for the underlying values
18:13:14 <Deewiant> You could just as well support loading gzip-compressed source without violating the spec.
18:13:52 <AnMaster> Deewiant, but EBCDIC would violate I think
18:13:56 <fizzie> Not (directly) related to the edible stuff.
18:14:05 <AnMaster> because values in the range 0-127 would have different values
18:14:06 <Deewiant> AnMaster: Unless you translate it to ASCII, yes.
18:14:16 <AnMaster> 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 <Deewiant> And I guess that can't really be done; I'm not sure.
18:15:24 <AnMaster> Deewiant, you could translate most of it to unicode I think
18:15:30 <AnMaster> not sure if all could be translated
18:15:47 <Deewiant> I think the problem would be more that you can't support the full Funge instruction set
18:15:59 <ais523> what's the argument about?
18:16:18 <AnMaster> ais523, is ASCII <-> EBCDIC lossy?
18:16:36 <ais523> ¬ isn't in ASCII, for one
18:16:37 <AnMaster> in both directions then? Right
18:16:41 <ais523> not all ASCII punctuation's in EBCDIC
18:16:47 <AnMaster> what about EBCDIC <-> Unicode?
18:16:47 <ais523> and EBCDIC has newline, carriage return, /and/ linefeed
18:16:55 -!- Slereah has quit (Read error: 110 (Connection timed out)).
18:16:56 <ais523> which is a rather confusing combination
18:17:07 <Deewiant> ais523: The more interesting question is can EBCDIC encode Befunge?
18:17:35 <AnMaster> Deewiant, no. It can't, since you need trigraphs or digraphs to write C on EBCDIC.
18:17:44 <AnMaster> meaning { and } doesn't exist I think
18:17:47 <fizzie> 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:14 <Deewiant> "CCSID 500, one of the code page variants of EBCDIC"
18:18:16 <ais523> AnMaster: trigraphs aren't for ebcdic
18:18:29 <ais523> AnMaster: encodings outside the ISO-guaranteed range
18:18:29 <AnMaster> ais523, what encoding are they for then?
18:18:33 <Deewiant> EBCDIC-500 evidently contains Latin-1.
18:18:33 <fizzie> "Unassigned codes are typically filled with international or region-specific characters in the various EBCDIC code page variants."
18:18:44 <fizzie> So it might not be so portable, anyway.
18:19:33 <fizzie> Also only those non-colorful-background characters are "common to all EBCDIC code pages".
18:19:53 <fizzie> Er, I mean the opposite, of course.
18:21:22 <fizzie> 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:22:15 <fizzie> ehird: http://www.cis.hut.fi/htkallas/box.html
18:22:35 <fizzie> (I wanteded to collect whatever I mentioned yesterday.)
18:23:06 <Deewiant> DejaVu's Unicode support isn't /that/ good.
18:23:27 <AnMaster> Deewiant, true. But I don't have Bitstream Cybit or whatever the name was
18:23:51 <fizzie> 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 <fizzie> The situation was a lot worse at work.
18:24:09 <AnMaster> # U+2B1C WHITE LARGE SQUARE: ⬜
18:24:19 <AnMaster> actually I see some of the ones before
18:24:24 <fizzie> It's a large, white square; you're not missing much.
18:24:26 <AnMaster> fizzie, take a screenshot then
18:24:30 <fizzie> Well, it's from a supplemental code block.
18:24:33 <AnMaster> # U+2B1E WHITE VERY SMALL SQUARE: ⬞
18:24:33 <AnMaster> # U+1D126 MUSICAL SYMBOL DRUM CLEF-2: 𝄦
18:24:33 <AnMaster> # U+1D146 MUSICAL SYMBOL SQUARE NOTEHEAD WHITE: 𝅆
18:24:33 <AnMaster> # U+1D15A MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE: 𝅚
18:24:36 <AnMaster> I don't see any of them either
18:24:42 <AnMaster> nor # U+23E2 WHITE TRAPEZIUM: ⏢
18:24:54 <Deewiant> Some are question marks, some are white-bordered rectangles
18:25:00 <AnMaster> # U+29E0 SQUARE WITH CONTOURED OUTLINE: ⧠ # U+2F1E KANGXI RADICAL ENCLOSURE: ⼞ # U+31FF KATAKANA LETTER SMALL RO: ㇿ are also missing
18:25:02 <Deewiant> Where the question mark is the Unicode replacement character
18:25:09 -!- Mony has joined.
18:25:31 <AnMaster> Deewiant, here the missing unicode shows up as [23<blur>2]
18:26:09 <Deewiant> AnMaster: They show up as boxes with the code point number in them in Firefox, but not in my terminal
18:26:23 <AnMaster> Deewiant, they do in my terminal hm
18:26:30 <fizzie> AnMaster: http://zem.fi/~fis/box.png
18:26:54 <AnMaster> # U+1106 HANGUL CHOSEONG MIEUM: ᄆ
18:26:55 <AnMaster> # U+11B7 HANGUL JONGSEONG MIEUM: ᆷ
18:27:07 <ehird> fizzie: ebest page ever
18:27:24 <fizzie> I've seen the Unicode reference pictures.
18:27:39 <AnMaster> fizzie, your rendering is missing # U+29E0 SQUARE WITH CONTOURED OUTLINE: ⧠ too
18:27:43 <fizzie> Quite many of those can be characterized as "small rectangles".
18:27:52 <ehird> i think my left hand has rsi
18:27:55 <AnMaster> U+31FF KATAKANA LETTER SMALL RO: ㇿ too
18:27:59 <fizzie> AnMaster: I know. It's one of those supplemental code pages.
18:28:03 <AnMaster> ehird, ouch, you need to write less or something
18:28:11 <ehird> AnMaster: no -- i need to type *better*
18:28:15 <fizzie> AnMaster: That's just a smaller version of the large ro, or the halfwidth ro.
18:28:17 <AnMaster> fizzie, what is "supplemental code pages"?
18:28:18 <ehird> home row and whatnot
18:29:51 <fizzie> AnMaster: The unicode ranges have names; the U+29E0 square with contoured outline comes from "Miscellaneous Mathematical Symbols-B".
18:30:33 <fizzie> 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:32:17 <fizzie> 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 <fizzie> "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 <AnMaster> 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 <fizzie> "Leftwards arrow above reverse almost equal to", too.
18:34:38 <Deewiant> 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 <AnMaster> Deewiant, well there are some better than others, for one byte xchg %ax,%ax is the canonical one iirc
18:36:05 <Deewiant> Yes, I know, but a manual had a table going up to something like 25
18:36:15 <AnMaster> Deewiant, point is the CPUs often special code them as NOPs so they can schedule better
18:36:17 <fizzie> How come that one-byte nop is "better" than the nop nop?
18:36:31 <Deewiant> I'm looking for the table, not an explanation of what NOPs are
18:36:40 <Deewiant> fizzie: nop is an alias for that
18:36:59 <AnMaster> The NOP instruction is an alias for XCHG rAX,rAX.
18:37:16 <fizzie> Yes, I don't need it to be said twice. :p
18:37:30 <AnMaster> Programs written for the legacy x86 architecture commonly use opcode 90h (the XCHG EAX, EAX
18:37:30 <AnMaster> instruction) as a one-byte NOP. In 64-bit mode, the processor treats opcode 90h specially in order to
18:37:30 <AnMaster> preserve this legacy NOP use. Without special handling in 64-bit mode, the instruction would not be a
18:37:30 <AnMaster> true no-operation. Therefore, in 64-bit mode the processor treats XCHG EAX, EAX as a true NOP,
18:37:47 <AnMaster> it would zero to upper 32 bits in 64 bit mode
18:38:27 <AnMaster> 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 <AnMaster> This special handling does not apply to the two-byte ModRM form of the XCHG instruction. Unless a
18:38:29 <AnMaster> 64-bit operand size is specified using a REX prefix byte, using the two byte form of XCHG to
18:38:30 <AnMaster> exchange a register with itself will not result in a no-operation because the default operation size is 32
18:38:57 <Deewiant> Some of my code might be broken then :-P
18:39:00 <AnMaster> Deewiant, what do you mean "what?!"
18:39:14 <Deewiant> Are you saying that 'mov eax, eip' zeroes the upper bytes of rax
18:39:14 <AnMaster> Deewiant, well apart from the xchg exception
18:39:29 <AnMaster> Deewiant, I don't talk Intel syntax
18:39:50 <Deewiant> AnMaster: mov %ebx, %eax zeroes upper 4 bytes of %rax?
18:40:55 <AnMaster> Deewiant, AMD docs, part 1 figure 3-4
18:41:13 <AnMaster> Deewiant, 16 bit or 8 bit usage doesn't zero extend
18:42:00 <AnMaster> Deewiant, xor %eax,%eax encodes as shorter ;P
18:42:11 <AnMaster> Deewiant, anyway, this is interesting. What are you doing?
18:42:33 <Deewiant> I thought you knew? I'm writing a DOBELA interpreter
18:42:54 <AnMaster> also is DOBELA the "almost-tc" one?
18:43:20 <AnMaster> going around from sources and such?
18:43:51 <ehird> http://esolangs.org/wiki/DOBELA
18:43:59 <AnMaster> 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 <AnMaster> performing 32-bit operations with a GPR destination in 64-bit mode, the processor zero-extends the
18:44:00 <AnMaster> 32-bit result into the full 64-bit destination. 8-bit and 16-bit operations on GPRs preserve all unwritten
18:44:00 <AnMaster> upper bits of the destination GPR. This is consistent with legacy 16-bit and 32-bit semantics for
18:44:02 <Deewiant> To learn it and because I think it's cool to have a program that depends on only the kernel
18:44:05 <AnMaster> Software should explicitly sign-extend the results of 8-bit, 16-bit, and 32-bit operations to the full 64-
18:44:06 <AnMaster> bit width before using the results in 64-bit address calculations.
18:44:27 <Deewiant> AnMaster: You don't have to paste paragraphs of stuff from docs after having told me where it is
18:44:34 <AnMaster> Deewiant, you hard code x86_64 linux syscall numbers directly?!
18:45:02 <Deewiant> At the source level, they are named constants
18:45:17 <Deewiant> And I have a script which parses them from sys/syscalls.h or whatever it's called
18:45:17 <AnMaster> Deewiant, doesn't linux use SYSCALL or something
18:45:37 <AnMaster> Deewiant, what was SYSENTER for?
18:45:54 <Deewiant> 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 <AnMaster> Deewiant, so they selected the intel one for use in AMD64?
18:46:43 <Deewiant> Well there's probably a reason why Intel thought sysenter was crap and rolled their own :-P
18:46:44 <AnMaster> ais523, does levels have a size limit?
18:46:54 <ais523> no, but it's constant for any given level
18:47:02 <ais523> my guess, btw, is it's not TC due to no infinite storage
18:47:04 <ais523> but only because of that
18:47:17 <ais523> if you had an unlimited source of coins, you could do a Minsky machine using time
18:47:25 <Deewiant> It wasn't a table of nops, it was a listing of ways of multiplying by constants
18:47:36 <Deewiant> Section 8.2 in AMD's optimization guide for family 10h
18:47:40 <AnMaster> Deewiant, how could you possibly confuse them?
18:47:49 <AnMaster> Deewiant, familiy 10h? Who cares
18:47:49 <Deewiant> My brain is lossy, unfortunately
18:48:18 <AnMaster> ais523, can you tell me why http://esolangs.org/wiki/DOBELA loaded without any stylesheets or images?
18:48:20 <Deewiant> AnMaster: I refer to the newest docs in general.
18:48:26 <AnMaster> as in wikipedia-having issues style
18:48:30 <ais523> AnMaster: known MediaWiki caching bug
18:48:33 <ais523> try again and it'll work
18:48:48 <AnMaster> Deewiant, might break on older CPUs
18:48:57 <oerjan> 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 <AnMaster> Deewiant, do you have a new enough one yourself?
18:49:07 <Deewiant> If I can find an excuse to use SSE4.1 I will
18:49:13 <Deewiant> My CPU supports everything up to that, not SSE4.2 though
18:49:28 <Deewiant> And not AMD's 3DNow! stuff since it's Intel
18:49:39 <AnMaster> Deewiant, I would recommend using 3DNow! :P
18:49:48 <Deewiant> Was there anything useful in there that wasn't in SSE?
18:50:02 <AnMaster> Deewiant, some stuff related to matrix dot product iirc
18:50:09 <ehird> 3DNow! is an irritating name
18:50:26 <AnMaster> ehird, yes, like my sound card: "SoundBlaster Live! 5.1"
18:50:46 <Deewiant> 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 <Deewiant> But, anyway, I need a 2-byte NOP.
18:51:27 <Deewiant> Anything better than mov eax, eax?
18:51:37 <AnMaster> 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 <AnMaster> (and still pure C fallbacks after that)
18:52:29 <AnMaster> Deewiant, iirc gas' .align or .p2align inserts the best nops
18:53:05 <AnMaster> Deewiant, that is, if it is in a text section
18:53:18 <AnMaster> http://sourceware.org/binutils/docs/as/P2align.html
18:53:43 <AnMaster> Deewiant, well try it and see what it generates, then use that in your own asm?
18:56:03 <AnMaster> Deewiant, nopw %cs:0x0(%rax,%rax,1) is a rather interesting nop
18:56:47 <fizzie> Nothing, since it's a nop. :p
18:56:59 <fizzie> 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00. That's one long-ass instruction.
18:57:03 <AnMaster> fizzie, but what does "nopw" do?
18:57:11 <ehird> Long ass-instruction.
18:57:13 <AnMaster> fizzie, is that was it ends up as?
18:57:29 <fizzie> Yes, objdumped a gas-generated nop that seemed to be just that particular one.
18:57:57 <ehird> Proposed new macro: a_nop_of_some_sort.
18:58:01 <ehird> Selects randomly at compile-time.
18:58:01 <AnMaster> ehird, you should do: <ehird> My hobby: Making the xkcd hobbies my own.
18:58:05 <ehird> For When You Just Don't Care (TM)
18:58:12 <ais523> maybe you should be able to ask for a NOP of a particular length
18:58:25 <fizzie> Deewiant: This generates "xchg %ax,%ax" as a two-byte nop.
18:58:27 <AnMaster> 0x000000000040f122 <fungespace_create+18>: nopw %cs:0x0(%rax,%rax,1)
18:58:28 <AnMaster> 0x000000000040f130 <fungespace_create+32>: movntps %xmm0,0x632630(%rax)
18:58:33 -!- oerjan has quit ("Hits wiki with the saucepan and runs for the bus ===\___/").
18:58:50 <fizzie> 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:32 <ais523> that would probably dent the saucepan
18:59:46 <ais523> and we all know oerjan doesn't like his saucepan damaged
18:59:54 <fizzie> 4: 0f 1f 40 00 nop DWORD PTR [rax+0x0]
19:00:05 <fizzie> (That's with "objdump -M intel -d test.o".)
19:00:17 * AnMaster hits the saucepan with his fire poker and runs for the saucepan o=========E
19:00:19 <ehird> GTK on os x working nice
19:00:29 <ehird> AnMaster: WHAT ABOUT THE WIKI AND THE BUS
19:00:38 <ais523> ehird: I thought you hated GTK
19:00:42 <AnMaster> ehird, I'm lazy, running for them would have taken a lot more work
19:01:14 <Deewiant> fizzie: Hmmh, that's 3 bytes from fasm
19:01:17 <AnMaster> ehird, is it better than GTK under X on OS X though?
19:01:28 <ehird> AnMaster: Way more buggy, but I prefer i.
19:01:31 <Deewiant> Or wait, is this doing some alignment of its own
19:01:41 <AnMaster> Deewiant, generate some in GAS and look for yourself
19:01:48 <ehird> Maybe I'll try http://www.gtk-osx.org/
19:02:23 <ais523> / 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 <fizzie> 2: 66 66 66 66 66 2e 0f nop WORD PTR cs:[rax+rax*1+0x0]
19:02:38 <fizzie> 9: 1f 84 00 00 00 00 00
19:02:40 <ais523> (text seen on www.cadence.com with JavaScript turned off, the site is a mess like that in other ways too)
19:02:57 <fizzie> Really wonder what that does, since the opcode there is actually "nop" according to objdump-disassembly.
19:03:09 <AnMaster> when asked to align to 128 bytes it inserts a lot of 1 byte nops instead
19:03:12 <Deewiant> Oh, I need a 5-byte nop after all
19:03:57 <ais523> yearrgh, SystemC (which is actually a C++ library) uses overloaded << for sensitivity lists
19:04:04 <ais523> that was a bad idea even for iostreams
19:04:33 <ehird> but ze operator is pretty! ;_;
19:04:41 <AnMaster> <fizzie> 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 <AnMaster> or nop WORD PTR cs:[rax+rax+0x0]
19:04:45 <fizzie> Deewiant: 3: 0f 1f 44 00 00 nop DWORD PTR [rax+rax*1+0x0]
19:05:53 <Deewiant> I think fasm is optimizing away the +0
19:05:57 <AnMaster> thats movntps %xmm0,0x632670(%rax)
19:06:14 <fizzie> http://ref.x86asm.net/coder.html#x0F1F just lists "0f 1f" as a real nop.
19:06:17 <AnMaster> Deewiant, I don't even have fasm
19:06:30 <AnMaster> package manager doesn't have fasm
19:06:42 <AnMaster> ais523, you know what %eax is?
19:06:57 <ais523> I thought %qax was the 64-bit version
19:07:17 <ais523> well, I learnt x86 on DOS, with a 16-bit system
19:07:48 -!- kar8nga has joined.
19:08:01 <AnMaster> x86_64 is still register starved
19:08:02 <Deewiant> They should have added r16 as well
19:08:16 <Deewiant> rsp is like rip, you can't really use it for much
19:08:24 <AnMaster> Deewiant, I would prefer something more like ppc
19:08:38 <ais523> gcc-bf has 64 8-bit registers
19:08:50 <Deewiant> x86-64 has 8 or 16 128-bit registers though
19:09:05 <AnMaster> possibly of your own size selection
19:09:55 <AnMaster> "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 <fizzie> Parrot has any number of registers you like. :p
19:10:05 <AnMaster> source: http://www.ibm.com/developerworks/library/l-ppc/
19:10:07 <ais523> parrot's an HLVM, though
19:10:17 <ais523> in fact, no reason a given compilation can't use both parrot /and/ llvm
19:10:26 <AnMaster> Deewiant, err x86_64 has 16 of them
19:10:39 <Deewiant> AnMaster: SSE or SSE2 give the additional 8
19:10:42 <AnMaster> but x86_64 in 64-bit mode always have 16 SSE registers
19:10:55 <AnMaster> Deewiant, err on x86_64 it has to
19:11:05 <Deewiant> You can have an x86-64 processor which doesn't support SSE
19:11:35 <fizzie> "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 <Deewiant> If you're right then it's all the better
19:11:51 <Deewiant> Why are you complaining about registers if you have 16 128-bit ones? :-P
19:11:52 <AnMaster> fizzie, I remember reading something like that yes
19:11:59 <AnMaster> Deewiant, because they aren't GPR
19:12:14 <Deewiant> You can put stuff there instead of in memory
19:12:34 <AnMaster> Deewiant, yes but you can't easily do all the types of operations in them
19:12:41 <Deewiant> Although I'm not actually sure wrt L1 cache whether it's faster to push/pop or movd/movd
19:12:42 <AnMaster> it is very good for stream processing yes
19:12:44 <fizzie> 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 <Deewiant> If push puts something in L1 it might be faster than moving to an XMM register
19:13:12 <AnMaster> Deewiant, check AMD's optimising guide as well as the intel one
19:13:26 <Deewiant> I know that push has a lower latency
19:13:28 <AnMaster> Deewiant, I think I remember reading about push/pop vs. mov there
19:13:41 <AnMaster> Deewiant, mov was better for scheduler or something
19:13:43 <Deewiant> vs. mov sure, but what about vs. XMM mov
19:14:16 <Deewiant> I'm talking about moving between GPR and secondary storage, where the latter is either the stack or an XMM register
19:14:29 <ais523> wow, the licence on the SystemC standard is really strange
19:14:36 <ais523> you can download it for free, but only once
19:14:42 <ais523> and you can only keep one copy
19:14:50 -!- kar8nga has quit (Read error: 60 (Operation timed out)).
19:14:55 <AnMaster> Deewiant, CVTTPS2PI you PFRSQIT1 of a CVTTPS2DQ!
19:14:59 -!- Mony has quit ("Quit").
19:15:16 <AnMaster> all real MMX and SSE instructions yes
19:15:25 <Deewiant> Looks like floating-point stuff
19:15:25 <fizzie> ais523: You can print your own copy of the Java VM specification, but only once. Better not lose the papers!
19:15:33 <ais523> fizzie: yep, same rule on printing
19:15:36 <ais523> you can only print your copy once
19:15:40 <AnMaster> Deewiant, I just selected some cryptic names from AMD docs
19:15:49 <ais523> what a really strange rule, I don't see what its purpose is
19:16:22 -!- kar8nga has joined.
19:16:37 <fizzie> "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 <AnMaster> 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 <ais523> well, in the case of the IEEE SystemC standard, they had a rather scary-looking EULA
19:17:23 <Deewiant> AnMaster: Toldya it was floating point
19:18:04 <AnMaster> Deewiant, PFRSQIT1 is 3DNow btw
19:18:24 <fizzie> AltiVec has 32 of those 128-bit registers.
19:18:48 <AnMaster> a lot better than x86_64 as usual
19:18:54 <fizzie> But you can't move from scalar registers to altivec regs, just load/store in a RISCy way.
19:18:55 <AnMaster> I really don't see why Apple went Intel
19:19:18 <Deewiant> Because people don't write asm, compilers do, and x86-64 happens to be more performant than PPC :-P
19:19:44 <Deewiant> At least, that's my suspicion. There could be some non-technical reasons as well.
19:19:50 <fizzie> Also it is a "business decision", which... right.
19:19:51 <AnMaster> Deewiant, PPC had atomic load-link-store thingies iirc
19:20:42 <lifthrasiir> current pyfunge (rev 1cde4290a9e6) got no BAD from mycology... first ever! ;)
19:23:26 <lifthrasiir> ais523: maybe none, i manually checked the output and cannot find any supicious things
19:27:35 <AnMaster> lifthrasiir, what about mycouser.b98?
19:27:45 -!- neldoreth has quit ("leaving").
19:28:06 <AnMaster> lifthrasiir, check also echo -e "a9b" | ./pyfunge mycouser.b98 and such
19:28:13 -!- neldoreth has joined.
19:28:15 <AnMaster> echo -e "a9" | ./pyfunge mycouser.b98
19:28:29 <AnMaster> lifthrasiir, make sure that all works
19:28:38 <AnMaster> it can take some time to get it right
19:28:59 <AnMaster> lifthrasiir, and - is ignored on input or should be iirc
19:29:07 <AnMaster> as in it is treated non-numeric
19:29:12 <AnMaster> Deewiant, that is right isn't it?
19:29:22 <lifthrasiir> while testing other code i knew pyfunge sometimes ignore EOF... i'll fix it.
19:29:54 <fizzie> "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:30:04 <AnMaster> lifthrasiir, all input should share one buffer too
19:30:29 <AnMaster> * Standard input is read one line at a time and buffered internally. Those
19:30:30 <AnMaster> instructions reading chars fetch one char from this buffer, leaving the rest
19:30:30 <AnMaster> (if any) including any ending newline. Instructions reading an integer will
19:30:30 <AnMaster> leave anything after the integer in the buffer with one exception: if the
19:30:30 <AnMaster> next char is a newline it will be discarded.
19:30:50 <AnMaster> Deewiant, that sounds right to you?
19:31:14 <AnMaster> lifthrasiir, input from STRN also fetch from same buffer
19:31:27 <fizzie> What's that newline-discarding exception about?
19:31:48 <AnMaster> I think I basically checked what ccbi --help or whatever said and did the same
19:32:01 <fizzie> Deewiant: Heh, you're a de-facto standard.
19:32:03 <AnMaster> because it was a pain to get it right with the standard
19:32:35 <AnMaster> 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:47 <fizzie> Deewiant: If you'd define 22+ to leave 5 on the stack, half of the world's interpreters would follow.
19:33:01 <AnMaster> Deewiant, now we are only missing the !Befunge author
19:33:17 <AnMaster> fizzie, no I would report it as a bug in mycology and/or ccbi
19:33:20 <Deewiant> There are other interpreters as well
19:33:42 <AnMaster> 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 <AnMaster> like Mike Riley and now lifthrasiir did
19:34:22 <Deewiant> Why doesn't Language::Befunge get any love here? :-P
19:34:32 <ehird> !Befunge is being revived?
19:34:32 <AnMaster> Deewiant, because it has a hard to remember name
19:34:38 <lifthrasiir> well i have only one input buffer from pyfunge.platform, so it should not be a problem... right?
19:34:45 <AnMaster> ehird, I just said that was all that was missing
19:34:50 <ais523> ehird: why did you like !Befunge in particular?
19:34:53 <Deewiant> ehird: If you want it so much, email him
19:34:58 <ehird> 19:33 AnMaster: Deewiant, oh true. I mean him to email you about how he just found mycology
19:35:01 <AnMaster> Deewiant, also jerome hasn't been in here has he?
19:35:21 <Deewiant> AnMaster: No, I don't think so. Not sure though.
19:35:23 <AnMaster> ehird, you have a 1-line scrollback? ~~
19:35:26 <ehird> It still doesn't make any sense
19:35:31 <ehird> Was it meant to be a joke?
19:35:37 <AnMaster> ehird, ... it makes perfect sense.
19:36:01 <ehird> Deewiant: <AnMaster> !Befunge author saw mycology! <ehird> Really? <AnMaster> No! Duh!
19:36:06 <fizzie> Haha: "-- I think AnMaster trusts CCBI a bit more than he should --"
19:36:10 <Deewiant> ehird: That's not what he said.
19:36:24 <Deewiant> fizzie: De-facto standard, like you said. :-P
19:36:28 <AnMaster> <AnMaster> Deewiant, now we are only missing the !Befunge author
19:36:30 <AnMaster> <Deewiant> There are other interpreters as well
19:36:33 <AnMaster> <AnMaster> Deewiant, oh true. I mean him to email you about how he just found mycology
19:36:40 <AnMaster> ehird, how doesn't that make sense
19:36:49 <ehird> AnMaster: because you then go on to deny that the !befunge author found mycology
19:36:58 <Deewiant> ehird: Where does he affirm that in the above
19:37:08 <ehird> Deewiant: <AnMaster> Deewiant, oh true. I mean him to email you about how he just found mycology
19:37:13 <Deewiant> ehird: He said (1) that !Befunge's author is missing.
19:37:20 <Deewiant> ehird: Then (2) I queried him as to what exactly he meant.
19:37:40 <Deewiant> ehird: Then (3) he explains what he meant: he meant that he's the only one who hasn't emailed me.
19:38:00 <ehird> AnMaster's broken english strikes again
19:38:00 <AnMaster> 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 <ehird> "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:48 <ehird> Deewiant: garbage in garbage out
19:39:05 <Deewiant> ehird: 'I meant him not having emailed you...'
19:39:12 <Deewiant> Or something, would be more accurate.
19:39:24 <fizzie> Deewiant: "he¹ meant that he²'s the only one who..."
19:39:25 <Deewiant> Or right, now I misread what you said.
19:39:38 <AnMaster> /ignore chan:#esoteric type:highlight time:5
19:39:40 <Deewiant> Hmm, my keyboard only goes up to ³
19:39:57 <fizzie> Deewiant: Mine goes up to ¹¹!
19:40:07 <ais523> fizzie: that's cheating
19:40:08 <Deewiant> You turn off highlights? That might explain why you highlight others so much :-P
19:40:25 <Deewiant> ais523: http://en.wikipedia.org/wiki/Up_to_eleven
19:40:39 <ais523> AnMaster: ¹²³€½¾{[]}¡⅛£¼⅜⅝⅞™±°
19:40:44 <ais523> (that's with and without shift)
19:40:56 <ais523> Deewiant: I'm aware of the meme
19:40:57 <Deewiant> ¹²³£¥ĦÐÞ“”—÷ with, ¡ºª¢€ħðþ‘’–× without
19:41:12 <AnMaster> 1234567890+ !"#¤%&/()=? ¡@£$€¥{[]}\¹²³¼¢⅝÷«»°¿
19:41:32 <ais523> <wikipedia> 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 <lifthrasiir> hmm... is there any appropriate trefunge program for testing?
19:41:40 <AnMaster> normal, shift, altgr, altgr+shift
19:41:42 <Deewiant> lifthrasiir: There's that editor
19:41:44 <ais523> IIRC there's a trefunge editor
19:41:54 <ais523> I'm not sure how it works
19:41:56 <AnMaster> lifthrasiir, there is no test suite afaik
19:42:02 <fizzie> Deewiant: Maybe you should spend some time writing "Trungyfonology" or something.
19:42:13 <ais523> just make a version of Mycology that handles any number of dimensions
19:42:23 <lifthrasiir> that was http://www.imaginaryrobots.net/projects/funge/code/funged.3f, and it needs many yet-unimplemented fingerprints... hmm.
19:42:26 <AnMaster> fizzie, ccbi doesn't support trefunge, nor does cfunge, so I fail to see how it would work
19:42:48 <Deewiant> Well actually not impossible, just extremely inconvenient.
19:42:49 <AnMaster> fizzie, since Deewiant only test stuff ccbi supports
19:42:55 <ais523> just use only Unefunge commands that don't need vectors until you've run a y to find out dimension count
19:43:19 <AnMaster> lifthrasiir, what specific fingerprints?
19:43:27 <Deewiant> ais523: Yeah, and then I'd have to have a zero-pad loop prior to every vector-using instruction.
19:43:39 <Deewiant> Which would be somewhat of a pain.
19:43:48 <AnMaster> lifthrasiir, also it depends on how rcfunge misimplements fingerprints
19:44:04 <AnMaster> Deewiant, yes, and it loads FNGR
19:44:14 <AnMaster> as far as I can figure out it uses FNGR to workaround
19:44:23 <AnMaster> lifthrasiir, what is wrong with NCRS?
19:44:30 <Deewiant> Since FNGR's new specs just state the way () should behave when it's loaded
19:44:32 <AnMaster> lifthrasiir, I implement NCRS in cfunge.
19:44:44 <AnMaster> lifthrasiir, FNGR I wouldn't implement
19:44:51 <Deewiant> AnMaster: I don't think he said anything was wrong, just that it's one he hasn't implemented.
19:45:00 <AnMaster> lifthrasiir, yeah NCRS was rather low priority for me too
19:45:15 <Deewiant> AnMaster: Do you have TERM and NCRS now?
19:45:36 <Deewiant> I might have to take a look at that then, to get TERM running on POSIX
19:45:39 <AnMaster> Deewiant, loading order should work fine for TERM anywhere I hope
19:45:50 <AnMaster> Deewiant, I had TERM since several releases
19:45:53 <lifthrasiir> eventually i'll implement them (not FNGR though) but my high priority is an usable interpreter now.
19:46:04 <AnMaster> Deewiant, btw you can only do NCRS 1I once and 0I once
19:46:38 <AnMaster> Deewiant, it says you shouldn't do it more than that
19:46:58 <lifthrasiir> while analyzing mycology i felt that many corner cases are still untested, so i'm adding regression tests for now.
19:47:00 <AnMaster> Deewiant, not silly. I had segfaults inside ncurses otherwise
19:47:24 <AnMaster> Deewiant, cfunge safeguards against that with tracking state and reflecting if it is done the wrong way
19:48:14 <Deewiant> AnMaster: What about TERM/NCRS interaction... can TERM be used after NCRS has done 0I, for instance?
19:48:40 <AnMaster> Deewiant, yes NCRS does a call into TERM and vice verse to inform each other of the state of each
19:48:51 <AnMaster> Deewiant, so hopefully all interactions should work correctly
19:48:58 <Deewiant> Meh, interdependent fingerprints
19:49:09 <AnMaster> Deewiant, well they are, there is no way to avoid it
19:49:18 <Deewiant> They're independent in Windows
19:49:53 <AnMaster> Deewiant, well my TERM doesn't depend on ANSI escape codes
19:50:07 <AnMaster> it will work with any terminal supported in terminfo/termcap
19:50:13 <Deewiant> My TERM doesn't work, period :-P
19:50:29 <fizzie> I don't even have a TERM. :p
19:50:30 <AnMaster> Deewiant, what about non-cmd.exe on windows?
19:50:30 <Deewiant> Windows is so much easier in this respect
19:50:49 <Deewiant> AnMaster: I don't know, depends on if they're implemented correctly.
19:50:49 <AnMaster> Deewiant, say, rxvt from msys or windows powershell?
19:51:10 <Deewiant> Powershell should definitely work, I'd be very surprised if it didn't.
19:51:16 <Deewiant> I mean, these are Windows system calls
19:51:27 <Deewiant> AnMaster: I don't know, depends on if they're implemented correctly.
19:51:27 <Deewiant> AnMaster: I don't know, depends on if they're implemented correctly.
19:51:38 <AnMaster> Deewiant, hey stop turning ehird
19:52:07 <AnMaster> fizzie, echo $TERM? I think NCRS and TERM fails if that isn't set
19:52:08 <fizzie> You're using the FooConsoleBar functions?
19:52:23 <AnMaster> fizzie, Ex! Dammit you forgot Ex
19:52:45 <AnMaster> Deewiant, unusual. I'd say suspicious even.
19:53:00 <ehird> Oh, more AnMaster Windows-sucks humour.
19:53:07 <ehird> Hah hah 12 parameters Ex ohhh I'm in stitches.
19:53:10 <fizzie> 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 <Deewiant> No, I don't, I expect a console to exist.
19:53:41 <Deewiant> I do check the functions' return values though so I guess nothing would happen if there wasn't one.
19:53:45 <ais523> ehird: it is actually pretty funny, admittedly
19:53:55 <ehird> Fooled me you could have.
19:53:56 <AnMaster> 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 <Deewiant> Doesn't the executable itself embed whether it's to run in a console or not?
19:54:50 <ais523> it runs in a console if it tries to open one, IIRC
19:55:08 <ais523> 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 <Deewiant> It seems to me that it's a link-time option whether it should have a console or not
19:55:12 <AnMaster> 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 <ais523> there are quite a few there that people forget about
19:55:21 <AnMaster> there should be guards for it where needed
19:55:23 <ais523> Deewiant: presumably that depends on what startup code it links against
19:55:37 <fizzie> There is a PE header field that is specific for "console executables", though.
19:55:51 <fizzie> The Subsystem field; it can be WINDOWS_GUI or WINDOWS_CUI; for a GUI app, or for a console app.
19:56:03 <AnMaster> when is accessing an invalid memory address safe?
19:56:08 <fizzie> I wouldn't be surprised if the system took care of creating a console if the .exe has WINDOWS_CUI there.
19:56:37 <AnMaster> 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:22 <AnMaster> that you should know considering what you have been doing lately Deewiant
19:57:32 <AnMaster> I would have expected you to be aware of this
19:57:55 <Deewiant> I don't know that much when it comes to asm-level stuff
19:58:10 <ehird> Tch Deewiant how dare you not know.
19:58:20 <ehird> Duhhh. Are you stupid or something?
19:59:15 <AnMaster> Deewiant, GCC docs for __builtin_prefetch() says it clearly, but I have also seen it in amd manuals
19:59:42 <AnMaster> "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."
20:00:00 <AnMaster> with the General instruction reference
20:00:14 <Deewiant> Right, so what you're saying is that prefetching memory you can't access is a nop
20:00:20 <Deewiant> I wouldn't call that accessing the memory
20:00:48 <Deewiant> All you're doing is saying "hey, prepare this for me so I could mess with it faster"
20:00:55 <Deewiant> You're not actually reading or writing
20:01:45 <AnMaster> "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:54 <AnMaster> http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
20:02:21 <AnMaster> Deewiant, It is in fact a memory access, though indirectly
20:02:44 <AnMaster> hey I just thought of a new NOP: prefetch (%rip) basically
20:03:00 <ehird> I wonder if I should try to get back into Perl.
20:03:01 <fizzie> Attempting to access memory that would normally result in a segfault is "safe" also if you're prepared for the segfault.
20:03:40 <fizzie> 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 <AnMaster> 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 <Deewiant> I was going to say that but I decided I'd not
20:05:02 <fizzie> I would probably just not have asked the question, to tell the truth.
20:05:35 <fizzie> A cop-out is when you go and arrest criminals.
20:06:53 <fizzie> "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 <fizzie> Ooh, it's one of the dreaded weasel words.
20:09:50 <ais523> Happy Australian Mailman Reminders Day, everyone!
20:10:14 <ais523> ehird: explain for Deewiant?
20:10:28 <ais523> it's not a very good secret
20:10:58 <ehird> Deewiant: search sans australian
20:11:03 <ehird> then realise that the Agora lists were first in Australia
20:11:13 <ais523> taking out australian will tell you the full story
20:11:26 <ais523> just I announce it a day early, because I'm subscribed to an Australian mailing list
20:11:29 <ais523> and it's in a different timezone
20:11:55 <ais523> 10:07:13 <ehird> happy australian mailman reminders day
20:11:56 <ais523> 10:07:25 * AnMaster opens mail client
20:11:58 <ais523> 10:07:33 <AnMaster> none yet
20:11:59 <ais523> 10:07:43 <ehird> i said australian
20:12:01 <ais523> 10:07:47 <AnMaster> ah
20:12:02 <ais523> (from the logs for Jan 31)
20:12:11 <ais523> it's quite a #esoteric tradition, I think
20:12:22 <AnMaster> I expect to get freebsd ones tomorrow evening
20:12:32 <AnMaster> apart from that I don't get any
20:12:44 <Deewiant> I was thinking of snailmailmen.
20:13:13 <AnMaster> I have seen mailman with the option turned off
20:13:32 <AnMaster> sf.net hosted mailman lists turn it off by default iirc
20:13:47 <ais523> that seems unlikely, there isn't a copy of the AGPL attached to every reminder email it sends out
20:13:54 <AnMaster> Deewiant, what is googlewhack though?
20:14:03 <ehird> ais523: just look at the horrid UI and design decisions
20:14:31 <Deewiant> http://www.justfuckinggoogleit.com/?q=googlewhack
20:14:34 <Deewiant> It's been a long time since I last used that alias
20:14:43 <ais523> Deewiant: does it need JavaScript turned on?
20:14:51 <ehird> ais523: why not click and find out
20:14:55 <Deewiant> No, it is not stupid like letmegooglethatforyou
20:14:59 <ais523> because I don't like clicking on random websites
20:15:00 <AnMaster> actually I'll just wikipedia it
20:15:01 <lifthrasiir> so what time is it there, not yet March 31?
20:15:07 <ehird> Deewiant: letmegooglethatforyou is more snarky though.
20:15:11 <AnMaster> wikipedia doesn't work well as a verb
20:15:15 <Deewiant> ehird: It confused me the first time I saw it.
20:15:17 * ais523 pastes http://www.justfuckinggoogleit.com/ into Google
20:15:40 <Deewiant> ais523: You're tampering with forces you don't fully comprehend
20:15:44 <ais523> 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:54 <ais523> AnMaster: I'm trying to make ehird's head explode
20:16:16 <AnMaster> <Deewiant> ehird: It confused me the first time I saw it. <-- yeah you mean: "Enable javascript to use LMGTFY."
20:16:35 <AnMaster> http://lmgtfy.com/ has a Swedish translation here
20:16:51 <ehird> http://lmgtfy.com/?q=let+me+google+that+for+you
20:17:02 <ais523> 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:05 <AnMaster> actually, I have javascript enabled
20:17:24 <ehird> Deewiant: ok, now make that recursive
20:17:39 <ehird> we need to link a term to http://lmgtfy.com/?q=<term>&l=1
20:17:43 <AnMaster> <ais523> 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:18:22 <Deewiant> ehird: It might be possible to specify a javascript: URL there in which case it could be done
20:18:48 <ais523> 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:33 <Deewiant> Never mind, can't be done that way
20:20:33 <AnMaster> ais523, tell me, how does alexa work?
20:21:04 <ais523> although legitimate spyware
20:21:07 <ais523> as in, you download it from them
20:21:28 <ais523> of course, it's in the interest of companies to download the alexa toolbar
20:21:37 <ais523> because the computers there are set to the company's homepage
20:21:40 <AnMaster> "Google.com has a traffic rank of: 1"
20:21:40 <ais523> so it boosts the alexa rank
20:21:57 <ehird> ais523: spyware is illegitimate by definition
20:21:59 <ehird> alexa isn't spyware
20:22:04 <AnMaster> Live.com has a traffic rank of: 4
20:22:15 <ais523> ehird: my definition's obviously different to yours
20:22:30 <ehird> Making a better Internet
20:22:31 <ehird> 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 <ehird> they're upfront about what it does
20:22:40 <ehird> it's not SPYing on you
20:24:54 <AnMaster> ehird, would you use it though?
20:25:09 <ehird> No. Not personally.
20:25:17 <AnMaster> would you like it "spying" on your bank logins?
20:25:27 <AnMaster> how can you know it won't look at https
20:25:31 <ehird> That would be a valid compliant, AnMaster, if it actually did that.
20:25:54 <ehird> AnMaster: let's never install any software
20:26:01 <ehird> it could attach to our browsers and spy on our bank logins
20:26:12 <Deewiant> Your hardware could do it too!
20:26:14 <ehird> booooh! scary ghost! woooh! are you scared yet? Be scared.
20:26:21 <ehird> EVERYONE IS OUT TO GET YOU.
20:27:20 <AnMaster> ehird, yes and? It isn't exactly news
20:27:30 <AnMaster> which is why I never do bank stuff over internet personally
20:28:07 <Deewiant> That /is/ smarter, I'm just too lazy myself
20:28:24 <Deewiant> I probably would do that if I lived across the street from a bank or something
20:28:40 <Deewiant> But it's a 5 min walk away, too far :-P
20:28:47 <AnMaster> Deewiant, well four and a half block in my case
20:28:57 <Deewiant> A 'block' carries no meaning at all
20:29:05 <Deewiant> Speak in terms of distance or time
20:29:10 <AnMaster> Deewiant, true, they are very different size
20:29:13 <Deewiant> Unless there's a Swedish standard block I'm unaware of
20:29:28 <AnMaster> hm, maybe 5 minutes walk I'd guess
20:29:38 <AnMaster> and google earth res is too poor here
20:29:48 <AnMaster> I can barley see the town at all in google earth
20:29:52 <ehird> Me: Walk down short street, walk up the bank, walk to the end of the main street, bank.
20:30:35 <Deewiant> Those would be some short streets had that been metres :-P
20:31:09 <ehird> Well, my street is just like 6 houses.
20:31:11 <fizzie> 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:27 <ehird> fizzie: MSN-for-workplaces is a Microsoft thing they sell.
20:31:29 <ehird> It is probably MSN.
20:31:48 <fizzie> Does it use Microsoft's servers for all message-passing, though?
20:31:56 -!- Nawak has joined.
20:32:23 -!- Nawak has left (?).
20:32:25 <ehird> fizzie: yar I think so
20:32:51 <AnMaster> 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 <AnMaster> so you won't do the mycoedge stuff
20:33:14 <Deewiant> Maybe when Pyfunge has MycoTRDS done
20:33:22 <fizzie> Deewiant: And will you put jitfunge results there if I manage to get a respectable score before that? :)
20:33:23 <AnMaster> Deewiant, that could take ages
20:33:25 <ais523> will mycoedge be part of the main mycology?
20:33:41 <ais523> fizzie: how does jitfunge mycologize atm?
20:33:49 <ais523> Deewiant: any particular reason for that?
20:33:57 <AnMaster> Deewiant, the mycoedge copy I have had a bug according to the hs author iirc
20:34:05 <ehird> I should find some text i need to process to use Perl on.
20:34:08 <Deewiant> ais523: So that one 'p' results in a change in the bounds.
20:34:14 <ehird> Maybe to fix up my log-getting script.
20:34:15 <Deewiant> ais523: With Mycology, I'd have to kill a whole row/column.
20:34:34 <Deewiant> AnMaster: No, none. Trivial to write tho.
20:34:38 <ais523> Deewiant: why not just p to negative fungespace
20:34:40 <Deewiant> You could even do it yourself ;-)
20:34:44 <ehird> Yess, WWW-Mechanize... good good
20:34:45 <ais523> then p to wipe out that negative value?
20:35:16 <Deewiant> Yeah, I guess that'd work too.
20:35:40 <AnMaster> Deewiant, then someone would implement buggy initial file bounds
20:35:49 <Deewiant> Although then AnMaster could optimize by only changing the bounds when it's outside his static array :-P
20:36:07 <AnMaster> Deewiant, I never optimise away correctness
20:36:26 <AnMaster> Deewiant, I'm not doing "worse is better" design
20:36:27 <ais523> AnMaster: but how fast would cfunge run if you did?
20:36:42 <ehird> They should make a "use sane;" that does:
20:36:46 <AnMaster> why not just hard code the output of mycology
20:37:00 <ehird> ais523: whyever not?
20:37:06 <AnMaster> ais523, somewhat like ick's "compile to shellscript"
20:37:07 <ehird> It makes it use proper exceptions
20:37:10 <Deewiant> 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 <ais523> ehird: Perl doesn't have proper exceptions
20:37:29 <ais523> I mean, autodie throws /strings/
20:37:33 <ais523> that isn't a proper exception
20:37:37 <AnMaster> FYI: Included with cfunge is some additional test suites
20:37:43 <ehird> Doesn't Moose have something for exceptions
20:37:43 <AnMaster> that I found I needed for extra code coverage
20:37:51 <ais523> ehird: Moose has something for everything
20:37:56 <fizzie> C++ can throw strings, if you're so inclined!
20:37:57 <AnMaster> Deewiant, you might want to check them (and any comments in them) for ccbi too
20:38:06 <ehird> ais523: well, autodie is _useful_
20:38:09 <fizzie> 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 <ais523> ehird: I only do about 2 or 3 things it would trigger on anyway
20:38:27 <ehird> I guess I can drop `use utf8;` since I don't have any of them moon speak thingies
20:38:38 <ais523> and use utf8 only means that your script's in UTF8, IIRC
20:38:41 <ehird> And I guess I can write dying stuff myself
20:38:44 <ais523> it's like a BOM, just longer and in text
20:38:50 <ehird> ais523: BOM = windows shit
20:38:55 <ehird> anyway it should be the default
20:38:59 <ehird> it's only not because of legacyyyyyyyyyy
20:39:09 <ehird> OK, that's better.
20:39:31 <AnMaster> because it would make too many realise the truth
20:39:40 <ehird> AnMaster: please stop trying to be funny it's awful
20:39:53 <AnMaster> ehird, I only did it to irritate you :P
20:40:04 <AnMaster> (you done that a lot to me before, time to attack back)
20:40:06 <ehird> AnMaster: you have srs issues
20:40:25 <fizzie> 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 <AnMaster> ehird, you have said you did such to me before, so that implies you too have serious issues.
20:40:52 <ehird> AnMaster: yes but I don't do it all the damn time, only when you irritate me
20:41:09 <AnMaster> I only do it when you irritate me
20:41:13 -!- pikhq has quit (Read error: 60 (Operation timed out)).
20:41:15 <ehird> AnMaster: You're as irritable as Wooble.
20:41:22 * ehird breathes ← irritating
20:41:38 <AnMaster> 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 <AnMaster> and then point out you trolled.
20:42:01 <ehird> it really is heartwarming see you try and backtrack and try a new strategy.
20:42:04 <AnMaster> though I think this is meta-trolling
20:42:44 <AnMaster> ehird, ok that was an interesting reply. Sounds like same basic concept as some I tried before on you though.
20:44:30 <ais523> I didn't even know of use diagnostics;
20:44:41 <ais523> although interestingly, Moose auto-includes strict and warnings
20:45:21 <fizzie> "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:46:06 <ehird> AnMaster: lern2understandimplementationdeatailsofperl
20:46:16 <AnMaster> I thought perl was interpreted and/or bytecode?
20:46:24 <ehird> it compiles to bytecode.
20:46:28 <ehird> fizzie: do you have a solution to the 'cpan is a verbose, questiony whore' problem
20:46:44 <AnMaster> ehird, but it doesn't produce bytecode files does it?
20:46:54 <ehird> http://search.cpan.org/~chromatic/Modern-Perl-1.03/lib/Modern/Perl.pm <-- this looks nice
20:47:00 <ais523> actually, the perl5 "compiler" is more just a parser
20:47:06 <ais523> and the parse tree is interpreted
20:47:25 <ais523> just the interp and parser call each other a lot, because of things like BEGIN and eval
20:48:02 <ais523> they're ripping the mess out and starting again for perl6
20:48:08 <ais523> which is partly why it's taking so long to implement
20:48:26 <Deewiant> 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 <AnMaster> 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 <ehird> Perl 6 is far more messy.
20:48:38 <ehird> AnMaster: dnf will be written in perl6
20:48:45 <AnMaster> Deewiant, which was that semi-new
20:48:45 <ehird> & have the new mbv as soundtrack
20:48:51 <ehird> everyone knows that
20:48:59 <ais523> AnMaster: the most annoying thing about perl6 is that there's clearly progress being made
20:49:06 <ais523> just it doesn't seem like they'll ever finish
20:49:12 <AnMaster> Deewiant, and yes the sysexec one is cfunge specific as mentioned in the file iirc
20:49:27 <AnMaster> Deewiant, oh and rc/funge segfaults on some of those tests iirc
20:49:37 <Deewiant> AnMaster: Ah, you're right, I didn't check.
20:49:39 <AnMaster> Deewiant, so might be worth adding some of that to mycology, just for fun
20:50:01 <AnMaster> Deewiant, pretty sure it fails to handle division by zero in some fingerprint
20:50:20 <AnMaster> lifthrasiir, there? You may want to take a look on the cfunge test cases
20:50:30 <AnMaster> Deewiant, btw, 0k x? I don't remember that one
20:50:46 <AnMaster> Deewiant, I saw gets() in mosaic too, but that is the only other place
20:51:02 <lifthrasiir> AnMaster: thank you for information. (i'm not yet slept... hehe.)
20:51:21 <AnMaster> some other delayed project I guess
20:51:52 <AnMaster> Deewiant, well the 109 tests are more extensive for iterate really
20:52:04 <ehird> 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 <AnMaster> Deewiant, together both sets run all the relevant code paths for iterate in cfunge
20:52:23 <Deewiant> AnMaster: k@ seems to crash RC/Funge
20:52:40 <Deewiant> *** glibc detected *** ./funge: double free or corruption (!prev): 0x0000000000633010 ***
20:52:47 <ais523> Deewiant: for killing a thread, or for killing the program, or both?
20:52:59 <AnMaster> ais523, it should only kill current thread
20:53:04 <Deewiant> ais523: A thread, it dies after the first @ and can't iterate any more.
20:53:06 <AnMaster> it used to segfault cfunge way way back
20:53:41 * AnMaster tries to figure out how tests/iterate-zero.b98 works
20:53:47 <fizzie> Deewiant: It is, in fact, double-free.
20:54:19 <AnMaster> Deewiant, in tests/iterate-zero.b98 that is
20:55:09 <fizzie> 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 <Deewiant> Sorry, that just cracked me up :-D
20:55:18 <AnMaster> Deewiant, so it is something else? ok
20:55:31 <fizzie> Deewiant: You should've said \forall x. Ok x, that's more guessable.
20:55:55 <fizzie> This font lacks a sensible 0.
20:55:59 <Deewiant> jumpwrap.b98 seems to infinite-loop RC/Funge
20:56:11 <AnMaster> in how they are implemented in cfunge
20:56:19 <AnMaster> so it didn't make a lot of sense to me
20:57:18 <AnMaster> Deewiant, and test-formfeed.b98 is because rc/funge thinks it is trefunge even when it is befunge mode
20:57:31 <AnMaster> so it increments z in befunge I think
20:58:06 <Deewiant> AnMaster: What's up with a5+, why not just do f
20:58:28 <Deewiant> And also, there's no # in that file :-P
20:58:35 <AnMaster> Deewiant, I wrote that in 2008-03-12
20:59:04 <AnMaster> Deewiant, why would there be #? It tests j
20:59:07 <Deewiant> Ah, but you've updated it in 2008-09-20
20:59:15 <Deewiant> AnMaster: It has a comment talking about # and spaces
21:00:24 <AnMaster> Deewiant, I think the comment is wrong
21:00:37 <AnMaster> the new version makes more sense
21:00:51 <AnMaster> $ ../build/cfunge jumpwrap.b98
21:01:17 <AnMaster> Deewiant, seriously I'm not sure what is right there
21:01:58 <AnMaster> Deewiant, ah I probably adjusted for that then :D
21:02:15 <Deewiant> Just like # v doesn't jump over the v, so should 1j v not jump over the v
21:02:39 <AnMaster> Deewiant, that isn't how it is done though
21:02:39 <Deewiant> That's the same thing; there's about 2^32 - 20 spaces in between
21:02:47 <ehird> "Cannot unzip, no unzip program available "
21:03:07 <Deewiant> 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:04:21 <ehird> "WARNING: 'All rights reserved' in copyright may invalidate Open Source license. "
21:04:24 <ehird> cpan checks for _everything_
21:04:25 <AnMaster> Deewiant, any other tests you wonder about? Be aware some messy k stuff is only tested in the 109 variant
21:04:31 <Deewiant> 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 <AnMaster> you may want to check what those files do
21:04:51 <AnMaster> to see if it is relevant to test for ccbi
21:04:54 <Deewiant> Didn't really look at them in detail, just checked which ones gave BAD :-P
21:05:12 <AnMaster> Deewiant, any 109 ones gave good in 98?
21:05:24 <AnMaster> Deewiant, btw when I was lazy C means correct and W wrong
21:05:36 <AnMaster> Deewiant, in case the stuff is hard to interpret
21:05:39 <Deewiant> One of the 109s was an infinite or long loop
21:05:54 <Deewiant> So I just skipped them after that ;-P
21:06:16 <AnMaster> tell me what that one should do
21:06:23 <AnMaster> Deewiant, ah how do you handle k over k?
21:06:24 <ais523> AnMaster: that's nice and pretty
21:06:38 <Deewiant> AnMaster: That's a bug in your test
21:06:43 <Deewiant> The v following doesn't go anywhere
21:06:49 <Deewiant> On the first line of iterate-iterate2
21:06:53 <ais523> 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 <Deewiant> AnMaster: And I simply don't handle kk
21:07:12 <AnMaster> Deewiant, that is quite possible yes. because that would be a failure path
21:07:21 <AnMaster> cfunge handles nested k for n levels
21:07:23 <ehird> http://search.cpan.org/search?query=unzip&mode=all
21:07:30 <ehird> There is more than one way to hate profileration of modules.
21:07:31 <AnMaster> CCBI is less conforming than cfunge. yay
21:07:38 <AnMaster> Deewiant, when do you plan to fix it?
21:07:51 <AnMaster> Deewiant, k over k makes sense in 98 too
21:07:59 <Deewiant> Yes, and I think my interpretation makes more sense. :-P
21:08:06 <Deewiant> We've been over this before in hours-long discussions.
21:08:40 <ais523> Deewiant: what does 2#;k; do?
21:09:02 <ais523> especially in a multithreaded program?
21:09:23 <Deewiant> ais523: Well, it loops infinitely, since there's no @
21:09:27 <AnMaster> Deewiant, what? I plan to comit this. And I love seeing a >:#,_ idiom over edge
21:09:36 <ais523> Deewiant: yes, but how many ticks does it take per iteration?
21:09:40 <Deewiant> AnMaster: Meanie in that it's VERY BAD and not BAD
21:10:13 <Deewiant> The k finds the 2, running it twice.
21:10:15 <AnMaster> Deewiant, well I think k over k should at least do something sensible in 98 too
21:10:20 <ais523> Deewiant: no, it doesn't
21:10:37 <Deewiant> AnMaster: I think that's sensible given the specs.
21:11:01 <ais523> ehird: welcome to the world of Perl
21:11:08 <ehird> ais523: i like cpan, just not cpan(1)
21:11:11 <ehird> it's horrifically badly designed
21:11:22 <ais523> AnMaster: that should push six 5s on the stack, shouldn't it?
21:11:27 <ais523> ehird: well, agreed about cpan(1)
21:11:33 <ais523> but how else are you going to use cpan?
21:11:34 <AnMaster> ais523, says: v"Correct output is:"a"5 5 5 5 5 5 5 5"<
21:11:47 <ais523> AnMaster: no it isn't, you missed the trailing space
21:11:49 <AnMaster> I think it may differ in 98 and 109
21:11:55 <Deewiant> ais523: Anyway, it takes one tick since it's k ;-)
21:12:07 <Deewiant> But I think it'll thereafter always skip the 2
21:12:08 <AnMaster> $ ../build/cfunge iterate-iterate.b109
21:12:08 <ais523> Deewiant: one tick to run an infinite tower of k?
21:12:10 <AnMaster> $ ../build/cfunge -s 109 iterate-iterate.b109
21:12:17 <ais523> as far as I can tell, all interps would just lock up on that code
21:12:17 <Deewiant> ais523: It's not infinite the way CCBI does it.
21:12:20 <ais523> not allowing othe threads to run
21:12:24 <ais523> Deewiant: what, really?
21:12:31 <ais523> oh, because nested k is broken
21:12:32 <Deewiant> ais523: Let me check, I'm quite sure. :-P
21:12:44 <AnMaster> ais523, which code did you mean isn't infinite?
21:12:58 <ais523> AnMaster: we're talking about 2#;k;
21:13:11 <ais523> 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 <Deewiant> ais523: Yeah, it's k per tick.
21:13:27 <Deewiant> ais523: IP gets stuck on the k with an empty stack.
21:13:28 <AnMaster> ais523, wait no, it will end when it realises 0k
21:13:37 <AnMaster> it won't try to fetch next instruction in case of 0k
21:13:44 <AnMaster> so it will be limited of size of stack
21:13:51 <ais523> AnMaster: what does 0kkv do?
21:14:36 <lifthrasiir> <AnMaster> ais523, wait no, it will end when it realises 0k
21:14:52 <ais523> I think you have to keep parsing the row of ks, don't you
21:14:59 <ais523> to figure out precisely what it is that you aren't doing?
21:15:07 <ais523> or is it always legal to optimise that away
21:15:21 <Deewiant> Hmm, actually it's simpler than I thought, isn't it, I'm not sure what I was thinking before.
21:15:39 <ehird> Discovery: Perl is pretty is you hide everything.
21:15:53 <ehird> sub download_and_extract {
21:15:56 <ehird> $mech->get($url, ':content_file' => 'foo.zip');
21:15:57 <ais523> AnMaster: that doesn't surprise me at all
21:15:59 <ehird> $zip = Archive::Zip->new('foo.zip');
21:16:00 <ehird> $zip->extractTree();
21:16:06 <AnMaster> ais523, it makes perfect sense
21:16:07 <ehird> Of course, I only call this once...
21:16:10 <Deewiant> ais523: Why would you have to parse the row of ks? You get 0kk and abort.
21:16:19 <ais523> ehird: hardcoded temp filenames?
21:16:28 <ehird> ais523: Gotsaproblemwitdat
21:16:35 <ehird> ais523: Or, show me an easier way in Perl.
21:16:38 <ais523> ehird: yes, it's a security risk
21:16:39 <ehird> is there a mktemp module?
21:16:53 <ais523> this is Perl we're talking about
21:16:53 <ehird> This downloads #esoteric logs.
21:16:57 <ais523> is there a X module is true for all X
21:17:10 <fizzie> File::Temp can open you the file without any sort of racy issues.
21:17:12 <ais523> ehird: well, for throwaway scripts you only use yourself, hardcoding temp file names may be acceptable
21:18:02 <AnMaster> build/cfunge -t 9 tests/ais02.b98 & kill $! <-- fills my scrollback
21:18:12 <lifthrasiir> AnMaster: why are there .b109 files in the tests? sort of "UNDEF in Funge-98 but should be..."?
21:18:16 <ehird> Global symbol "$mech" requires explicit package name at /Users/ehird/Code/scraps/2009-03/grab-esoteric-logs.pl line 16.
21:18:18 <ehird> my $mech = WWW::Mechanize->new(agent => '#esoteric scraper');
21:18:30 <AnMaster> lifthrasiir, that is due to the new revised standard I'm working on
21:18:37 <AnMaster> which fixes a lot of UNDEF yes
21:18:44 <ehird> lifthrasiir: AnMaster is working on a standard that nobody but him will use.
21:18:48 <ehird> And all it does is specify edge cases everyone already agrees on.
21:18:53 <AnMaster> ehird, RCS actually has a half-broken mode for it
21:18:58 <fizzie> Nobody agrees on k. :p
21:19:01 <Deewiant> ehird: I disagree with some of -109.
21:19:03 <ais523> ehird: disagree on the "everyone already agrees on"
21:19:05 <ehird> Deewiant: I was about to say,
21:19:11 <ehird> and also specifies things that AnMaster just decrees Are True
21:19:17 <ehird> thus making it even less appealing
21:19:22 <ais523> well, the # over file/line edge thing needs fixing IMO
21:19:32 <AnMaster> ais523, I defined it iirc in 109
21:19:38 <Deewiant> ais523: I think it's fairly irrelevant in practice, actually. :-P
21:19:38 <ehird> great, a standard for one single case of ambiguity
21:19:44 <ais523> hmm... have you definied a semantic for # over the edge of fungespace
21:19:50 <lifthrasiir> AnMaster: besides precise semantics, is there any addition?
21:19:55 <ais523> as in, if you put a # right at the most positive coordinates
21:20:02 <ais523> does it necessarily jump column 0?
21:20:04 <AnMaster> ais523, http://rafb.net/p/8P9UDb22.html
21:20:27 <Deewiant> ais523: A # at 2^(cell size in bits)-1 should jump over -2^(cell size in bits) IMO.
21:20:32 <AnMaster> the trace from nested k is not clear
21:20:33 <ais523> you avoid the infinite regress because you can optimise 0k
21:20:50 <ais523> I think probably it should too
21:21:10 <AnMaster> Deewiant, what about flying delta and that?
21:21:14 <lifthrasiir> Deewiant: but if cell size is unbounded, like bignum?
21:21:19 <ehird> Hrm, I wonder if perl has funky syntax for checking if a file exists.
21:21:30 <AnMaster> Deewiant, also efunge uses bignum
21:21:34 <Deewiant> lifthrasiir: Then # over the edge never skips over anything.
21:21:34 <ehird> 21:19 lifthrasiir: AnMaster: besides precise semantics, is there any addition? no
21:21:38 <fizzie> ehird: You mean more funky than "-e $file"?
21:21:49 <ehird> fizzie: Funky exactly like that.
21:21:59 <Deewiant> AnMaster: What about flying deltas?
21:22:12 <AnMaster> Deewiant, I don't know. That is what I'm asking you
21:22:21 <AnMaster> lifthrasiir, well there is an idea about using URIs for fingerprints instead, to reduce namespace collision
21:22:26 <Deewiant> AnMaster: What don't you know?
21:22:34 <ais523> lifthrasiir: Funge-109 uses URIs for fingerprint names
21:22:43 <Deewiant> I mean, is there something nonobvious somewhere
21:22:49 <Deewiant> They work the way you'd expect :-P
21:22:49 <ais523> personally I think that may be a bad idea, because loading fingerprints uses up enough space as it is
21:22:52 <ehird> my $last = sort(<*>)[-1]; # hope that works :P
21:22:57 <ehird> it makes code infinitely more bloated and ugly
21:23:02 <AnMaster> Deewiant, delta 4,10, # at 2^(cell size in bits)-1 is hit
21:23:05 <ehird> at the gain of never having collisions that don't happen
21:23:42 <fizzie> 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 <Deewiant> AnMaster: Well, moving 1 east from the edge gets you to -2^(cell size in bits).
21:23:49 <AnMaster> ehird, also versioned fingerprints
21:24:02 <ehird> AnMaster: Yaaaay more solved problems that never existed that makes code more ugly
21:24:05 <AnMaster> in case someone decides to retcon it
21:24:07 <ehird> perl 108 for the win.
21:24:08 <Deewiant> AnMaster: There are no spaces to skip over so it's just as though it weren't on the edge.
21:24:12 <AnMaster> ehird, it happened several times
21:24:36 <AnMaster> and Deewiant insisting on breaking the spec
21:25:40 <fizzie> 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 <ehird> AnMaster: how dare he
21:26:05 <ehird> he's a... a... an INSISTOR
21:26:39 <lifthrasiir> fizzie: only if interpreter uses unbounded integer for coordinate.
21:26:40 <fizzie> Nobody expects the Spanish insistion.
21:27:14 <fizzie> 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:28:52 <AnMaster> lifthrasiir, it uses unbounded too?
21:28:54 <fizzie> 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 <Deewiant> fizzie: It annoys me that there's no maths at all in the description of the 'mathematical model'
21:29:06 <AnMaster> lifthrasiir, then what do you push for size of cells?
21:29:14 <Deewiant> fizzie: Yes, definitely, I don't think it's important in practice either :-P
21:29:34 <lifthrasiir> once 4 without careful thinking, currently -1, and not yet sure that what is correct.
21:29:40 <AnMaster> lifthrasiir, python (on the C side at least) have two integers
21:29:51 <Deewiant> fizzie: But yeah, I guess that can be read either way.
21:29:58 <AnMaster> iirc they removed the int in python 3 though
21:30:34 <fizzie> There's some sort of automatic promotion to long, though.
21:31:17 <lifthrasiir> yeah, and that automatic promotion cannot be suppressed without using... & 0xffffffff, and so on.
21:31:40 <fizzie> >>> 9223372036854775807
21:31:40 <fizzie> >>> 9223372036854775807+1
21:32:01 <ehird> Is there really no good way t o do copying =~ without a tmp var?
21:33:20 <fizzie> You'd want the result of a s/// without mangling the original?
21:34:00 -!- BeholdMyGlory has joined.
21:37:19 <ehird> Hey fizzie, you got them 2002 esoteric logs?
21:37:27 <ehird> Could integrate that into my script.
21:37:38 <ehird> 02:12:04 <fizzie> 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:38:21 <fizzie> 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:47 <ais523> AnMaster: self bitwise not would be ~=
21:38:50 <ais523> and besides doesn't make sense
21:38:57 <ais523> =~ is Perl's pattern-match operator
21:39:16 <AnMaster> ais523, yeah ~~i and i~~ would make more sense
21:39:35 <ais523> AnMaster: nope, that would be equivalent to i ~= 1;
21:40:13 <fizzie> ~=i; could make sense, as a shorthand for i = ~i.
21:40:34 <fizzie> Unary prefix ~= sounds a bit perverse.
21:41:53 <ais523> AnMaster: how often does it come up anyway? I mean really?
21:42:08 <AnMaster> fizzie, I want suffix version too!
21:42:42 <fizzie> ais523: Well, especially in the logical "x = !x" form it does happen. So maybe !=x;
21:43:46 <fizzie> Flip x but evaluate to the original value? That's just !!=x. :p
21:44:01 <AnMaster> Deewiant, efunge get no BAD btw in the branch https://code.launchpad.net/~anmaster/efunge/supervisor-tree
21:44:02 <fizzie> Maybe not exactly, since it would do the boolean-cast too.
21:44:06 <AnMaster> might be nice adding to mycology page
21:44:16 <AnMaster> Deewiant, it is development yes
21:44:35 <fizzie> ~~=x; should work just as well as a postfix x=~; operation. (I flipped the order of =/~ there.)
21:44:46 <fizzie> Certainly it would raise the line noise factor of C.
21:44:53 <AnMaster> <fizzie> Maybe not exactly, since it would do the boolean-cast too. <-- indeed
21:45:14 <AnMaster> since it would end up like perl then
21:45:30 <AnMaster> good think ISO would never do it anway
21:46:13 <AnMaster> actually shouldn't it be time for a new C version around now?
21:46:39 <AnMaster> anyone know what the plans are for new C versions?
21:47:11 <fizzie> Perl recognizes the following "x="-style operators: **= += -= .= *= /= &= x= &= |= ^= <<= >>= &&= ||= //=
21:47:24 <fizzie> Yes, it's pretty much ~=foo;
21:47:33 <fizzie> It is there on the list.
21:47:50 <fizzie> But the first &= should be %=, that was a typo.
21:48:03 <ais523> fizzie: //= is very new
21:48:35 <fizzie> $foo = "yay"; $foo x= 4; # $foo is now "yayyayyayyay"
21:49:47 <lifthrasiir> AnMaster: that will be C1x, cannot be done in 2009
21:49:56 <fizzie> 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 <lifthrasiir> i heard that gets is finally removed from C1x, but who knows.
21:50:56 <fizzie> Wikipedia has heard that too, but [citation needed].
21:50:57 <ais523> people haven't even finished implementing C99 yet, though!
21:51:03 <fizzie> (The tag is not there, but ought to be.)
21:52:26 <fizzie> What do people usually write in the edit summary, if they just add a {{fact}}?
21:53:00 <fizzie> Heh, that copy-pastable list of funky characters under the textbox is funny.
21:55:26 <lifthrasiir> there eventually be every character in unicode 5.1 in that list.
21:57:00 <AnMaster> 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 <AnMaster> so why wouldn't the same be true for C?
21:57:49 <AnMaster> and I don't know why it takes them so long to implement C99
21:57:59 <AnMaster> if they really wanted it could certainly be done by now
21:58:00 <ais523> have you ever tried to implement C99
21:58:09 <ais523> that nobody wants to is the point, more or less
21:58:13 <ais523> it means it's failing as a standard
21:58:22 <ais523> heh, two names for the same thing
21:58:27 <AnMaster> ais523, people have implemented the nice bits from it
21:58:31 <ais523> only difference between C89 and C90 is the section numbers
21:58:37 <AnMaster> ais523, it was actually an off by one key error
21:58:44 <AnMaster> not a joke about the different names
22:00:39 * AnMaster wonders if the expression && makes sense
22:01:19 <AnMaster> yeah where would the middle pointer be
22:01:25 <AnMaster> would it make sense with a space?
22:01:42 <ais523> AnMaster: foo ** bar == foo * (*bar)
22:01:56 <ais523> also, you can't take the address of an address
22:02:01 <ais523> that's like writing &6;
22:02:04 <AnMaster> ais523, without a middle variable yes
22:02:09 <fizzie> GCC computed-goto extension has stolen unary && already. :p
22:02:14 <ais523> in gcc, unary && is the address-of-label operator
22:02:27 <AnMaster> ais523, why doesn't normal & work for that?
22:02:35 <ais523> labels have a different namespace to variables
22:02:43 <ais523> so you need to say which you're taking the address of
22:03:15 <AnMaster> it doesn't really make much sense
22:04:36 <AnMaster> 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:52 <AnMaster> but still, why & for reference and * for dereference
22:05:48 <lifthrasiir> in BCPL, BPL or whatever before C, once '*c' is used instead of '\c'
22:06:30 -!- pikhq has joined.
22:08:28 <fizzie> 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 <fizzie> That's not really an explanation, though.
22:12:12 <fizzie> 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:25:19 <AnMaster> FireFly, that is a lot of bouncing indeed
22:25:47 <AnMaster> FireFly, what do you expect with that nick?
22:26:06 <fungot> Available: agora alice darwin discworld europarl ff7 fisher ic irc* lovecraft nethack pa speeches ss wp
22:26:10 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
22:26:11 <fungot> 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 <ais523> fungot: more nonsense, please
22:26:34 <fungot> 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 <fizzie> I don't know the legend of Venus' hidden pot of gold in a waterproof bag.
22:26:43 <AnMaster> the legend of his hidden pot of gold in a waterproof bag that had a local celebration called " o
22:27:10 <fungot> 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 <ais523> AnMaster: it's in the flavour text, probably
22:27:35 <ais523> there's a lot of flavour text in nethack, and people hardly ever read it
22:27:54 <ais523> and answering y to the "More information?" prompt
22:28:02 <ais523> everyone just uses ; though because it's faster and does the same thing
22:28:15 <AnMaster> ais523, ah yes I always used ; indeed
22:28:16 <fizzie> A direct quote from (Leviticus 20:1-5).
22:28:31 <fungot> 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:29:04 <AnMaster> nice with references at the end
22:29:05 <fizzie> 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:31 <fungot> 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:30:17 <fizzie> 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 <AnMaster> pit below some small food item anyone?
22:30:56 <fizzie> ^ as the dereferencing operator, and . with the good old member-of syntax.
22:31:06 <fizzie> So -> gets superfluous, as it's just ^.
22:31:08 <AnMaster> 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:24 <Deewiant> AnMaster: One would use a temporary.
22:31:36 <fizzie> One would use the assignment operator, :=.
22:32:00 <ehird> why not just handle that syntax internally
22:32:07 <AnMaster> ehird, system headers with that idiom? ((a = b) == c) yes?
22:32:16 <ehird> why not just handle that syntax internally
22:32:23 <ehird> why not just handle that syntax internally
22:32:29 <AnMaster> ehird, for all edge cases? good luck
22:32:37 <ehird> AnMaster: you mean like... a c++ parser?
22:32:38 <ehird> i think those exist.
22:32:52 <AnMaster> ehird, yes but how can you detect which was meant in all cases?
22:33:13 <ehird> i mean you parse <c*> as C, then translate to SPECS
22:33:14 <AnMaster> making = mean == in if context breaks stuff
22:33:24 <ehird> = means == in every context
22:33:29 <AnMaster> ehird, what about other ones? Like random C libraries
22:33:46 <ehird> 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 <AnMaster> iirc valgrind client request headers has it
22:33:56 <ehird> SPECS files would have a different file extension, obviously
22:34:06 <fizzie> Alternatively you can just translate all SPECS source files into "standard" syntax, if you feel like it, and use your old compiler.
22:34:16 <ehird> fizzie: That would be more compatible, yes.
22:34:43 <AnMaster> oh it isn't about suggested C++ changes
22:34:55 <ehird> it's a proposed new syntax for c++
22:35:02 <ehird> to replace the old one
22:35:24 <ehird> [it's by Damian Conway of Perligata fame]
22:35:29 <ehird> [and some other person who's less interesting]
22:35:53 <ehird> he is not a programmer.
22:35:56 <ehird> he is an old mathematician.
22:36:35 <fizzie> 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 <ehird> Conway is not uncommon as a second name.
22:36:50 <ehird> fizzie: No, i think it stops the foo<> ambiguity
22:36:55 <ehird> So it wouldn't be tc to parse
22:37:10 <fizzie> Oh, right. There is that.
22:37:35 <fizzie> I'm not sure if there was still some "must know whether this is a type or not" situations.
22:37:46 <fizzie> I'm not a C++ expert at all. :/
22:38:08 <AnMaster> x := p-> template alloc<200>();
22:38:16 <ehird> AnMaster: that's delicious
22:38:18 <fizzie> But it indeed stops the <> problem with the <[ ... ]> brackets.
22:38:24 <ehird> it just looks pretty
22:38:27 -!- ais523 has quit (Remote closed the connection).
22:38:34 <AnMaster> ehird, I think -> looks more logical though
22:38:44 <ehird> AnMaster: it's called familiarity
22:38:58 <fizzie> At least ^ is pointier than the *. :p
22:39:10 <AnMaster> ehird, partly yes, but -> is more vertically symmetrical than ^.
22:39:26 <fizzie> (AnMaster probably won't like the fact that they've changed bitwise xor from ^ to ! then.)
22:39:39 <AnMaster> fizzie, what happened to logical not then?
22:39:51 <fizzie> "a ! b" didn't mean anything sensible, yet.
22:40:09 <AnMaster> FireFly, still ! for xor doesn't make a lot of sense, nor does ^
22:40:39 <FireFly> Now you remind me of VBScript
22:40:50 <AnMaster> FireFly, I was thinking about erlang, it has bxor
22:41:35 <fizzie> I think they've kept that.
22:41:42 <fizzie> (C++ already does keywords for operators.)
22:42:06 <AnMaster> fizzie, nothing wrong with keywords for operators
22:42:26 <ehird> Scala does operators nicely, `a b c` is just `a.b(c)`
22:42:40 <AnMaster> fizzie, have they fixed the "recompile all code linked against header when private members change" yet?
22:42:56 <fizzie> C++ has "xor" as a synonym for ^, but & and | are "bitand" and "bitor", because "and" and "or" are reserved for && and ||.
22:43:03 <fizzie> Well, no, it's still C++.
22:43:56 <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:44:01 <AnMaster> ehird, what do the ` mean in that?
22:44:37 -!- oerjan has joined.
22:44:45 <AnMaster> ehird, are they part of the code, or just quotes in your irc line. that is in-band or out of band?
22:45:14 <fizzie> It looks like... well, a number of wiki-markups, the backticks-for-code.
22:45:18 <ehird> 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:24 <ehird> fizzie: I stole it from markdown
22:46:03 <AnMaster> fizzie, I was thinking `` as in shell
22:46:29 <AnMaster> ehird, so you do \` in markdown to escape one?
22:46:47 <fizzie> DokuWiki uses ''monospaced'', but I think Confluence (that proprietary "enterprise wiki" by Atlassian) does `code`. Maybe, might remember wrongly too.
22:47:08 <AnMaster> what we really need is out of band markup
22:47:33 <AnMaster> maybe markup as a separate stream with offsets in the other one
22:47:40 <AnMaster> but that would be hard to maintain
22:47:45 <ehird> AnMaster: xanadu had out of band markup
22:48:05 <fizzie> Just send the markup as TCP "urgent" data.
22:48:37 <AnMaster> fizzie, what about when they are stored on disk or edited though?
22:48:46 <fizzie> Different files then, I guess.
22:48:46 <ehird> Ted Nelson also invented the word "teledildonics".
22:48:55 <ehird> Meaning "dildos controlled via computers".
22:49:07 <ehird> He is rather anti-sane.
22:49:37 <fizzie> "Other products being released fit a new category called bluedildonics, which allow a sex toy to be controlled remotely via a Bluetooth connection."
22:50:19 <fizzie> That was accompanied with a Wired article-link, http://www.wired.com/culture/lifestyle/commentary/sexdrive/2004/09/65064
22:50:36 <ehird> I believe there's a GNU/LINUX POWAHED server for teledildonics thingies; which gave me an awful image involving richard stallman.
22:50:55 <ehird> Mental image that is
22:51:11 -!- olsner has quit ("Leaving").
22:51:19 <ehird> I wonder what the c++0x guys will do when it turns to 1x
22:54:28 <AnMaster> I was reading the url fizzie linked and one link was "http://www.exn.ca/mini/startrek/holodeck.cfm"
22:54:33 <AnMaster> it just doesn't work in firefox
22:54:42 <AnMaster> it redirects to an invalid host
22:55:00 <AnMaster> does the link work for anyone?
22:55:07 <AnMaster> or does it redirect to *.camini
23:02:17 <AnMaster> 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:04:03 <AnMaster> none of us wan't to get fooled right?
23:09:33 <fizzie> Yes, well, it says it's Pascal-inspired, somewhere in there.
23:10:37 <oerjan> 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 <nooga> http://www.hokstad.com/writing-a-compiler-in-ruby-bottom-up-step-1.html
23:30:57 -!- lifthras1ir has joined.
23:32:07 <nooga> but i don't know x86 asm well enough
23:35:12 <nooga> does it target normal processors?
23:35:41 <nooga> mm compiler -> llvm -> x86 machine code ?
23:35:43 <ehird> your language -> llvm asm -> aggressive optimization and suchlike -> tuned processor-specific machine code
23:35:54 <ehird> instead of llvm asm you should use their library
23:36:19 -!- lifthras1ir has left (?).
23:36:28 <ehird> nooga: yeah, there's llvm-gc
23:36:29 -!- lifthras1ir has joined.
23:36:33 <ehird> which is stable enough for general use
23:36:40 <ehird> and they have their own c/c++/obj-c compiler called clang that's rapidly maturing
23:36:49 <ehird> 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 <nooga> this whole llvm looks quite awesome
23:54:15 <ehird> nooga: Its gc support is flaky although it does have some hooks
23:54:18 <ehird> but apart from that, indeed.
23:54:23 <nooga> and it links statically
23:54:47 <nooga> so that there is no problem with distribution
23:55:00 <nooga> no additional binaries are needed
23:55:11 <ehird> yes, it's a native compiler after all
23:55:24 <ehird> nooga: if you compile llvm on os x, beware
23:55:32 <ehird> you MUST tell it to compile with 'gcc-4.2'
23:55:40 <ehird> because 'gcc' is an older version that llvm trips some bugs on
23:55:46 <ehird> (they don't show up until you actually try it)
23:56:03 <ehird> forgot I have to tell everyone that :d