00:05:18 -!- RedDak has quit (Remote closed the connection). 00:05:27 damn, the more i look at lisp, the better it seems 00:05:33 (lisp as in CL) 00:20:33 but i'm still pretty sure it sucks :) 00:27:04 -!- timotiis has quit ("leaving"). 00:31:38 -!- Tritonio_ has joined. 00:39:35 -!- sebbu has quit ("@+"). 00:40:46 -!- BMeph has joined. 01:24:14 -!- olsner has quit ("Leaving"). 01:35:41 -!- calamari has joined. 02:24:51 -!- CakeProphet has joined. 02:26:22 ...what's a good C reference? 02:26:38 like, not a tutorial, but something that has a lot of information I can look up quickly. 02:49:33 -!- Corun has quit (Read error: 110 (Connection timed out)). 03:02:57 -!- CakeProphet_ has joined. 03:19:22 -!- CakeProphet has quit (Read error: 110 (Connection timed out)). 03:31:01 -!- CakeProphet_ has quit ("haaaaaaaaaa"). 03:53:38 man 04:02:31 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 04:03:08 -!- GregorR has joined. 04:15:23 * pikhq declares some of his music 'hell for basses'. 04:15:37 The *bass part* is written in the lower end of the treble clef. :( 05:37:26 -!- immibis has joined. 05:38:04 -!- immibis has left (?). 06:18:00 no bassist is going to like you for that. 06:19:32 lament: It's music that I have to sing. 06:19:37 I'm a bass. 06:19:41 I fucking hate it. 06:19:47 oh, you're a bass. 06:19:55 * pikhq wants to be *below* the bass clef, thanks. 06:19:58 cut your balls off. 06:20:12 I'll just convince the tenors to sing my part. :p 06:59:01 -!- calamari has quit ("Leaving"). 07:14:24 -!- BMeph has quit ("calls it a night"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:26 -!- bsmntbombdood has quit. 08:15:21 pikhq: aaand notes please 09:00:04 -!- bsmntbombdood has joined. 09:27:19 -!- oerjan has joined. 10:11:06 stack stacks in funge is really complex 10:11:15 are* 10:26:16 they are? 10:27:21 pikhq: "your music", assumed you meant a composition of yours, but i now realize that might not be the case 10:27:44 if its not yours that way, i ofc don't care much for the score 10:28:13 although, i guess i still do a bit 10:37:47 guitar pro is one awesome program, it simply cannot play a song correct :D 10:44:20 -!- oklokok has joined. 10:44:36 used my morning well http://www.vjn.fi/oklopol/music/random/riff006.mid 10:45:02 WOAH 10:45:21 2 seconds in it's already /awesome/ 10:45:25 :D 10:45:27 well, thx 10:45:35 that's just the midi guitar, it' kinda sucky 10:45:38 *it's 10:46:04 It's the sort of similar to the sound as Ooze on megadrive 10:46:17 or Alien Solier 10:46:18 also, some parts i guess should have some synth, and some parts i haven't really thought through 10:46:47 because it's so fucking slow composing when you listen to it after every fucking note : P 10:47:55 that was good 10:47:58 faxathisia: i guess after that reaction i have to link you to some of my musics 10:48:52 http://www.mikseri.net/artists/?id=44508 <<< my old band 10:49:03 http://www.mikseri.net/artists/?id=62623 <<< my other current band 10:49:47 (the other one i don't have anything online for, and it's not really my band) 10:50:26 we have much better and weirder stuff nowadays, but haven't recorded yet 10:51:06 Syleily is not mine, and Wanna feel pain is only mine when the synth solo starts 10:51:20 which i play very badly, i used to suck quite bad 10:56:22 uhh, i sing like a horse 10:57:01 ...in case horses suck at that 10:57:08 not sure, never heard one sing 10:58:19 well, also http://www.vjn.fi/s/black.mp3 and http://www.vjn.fi/oklopol/music/etydes/all-as-midi.rar 10:58:30 listen to some of that if you have time 10:58:52 i can also upload you my hundreds of other gp songs if you want, but i think you're fine with those :P 10:59:06 what's gp? 10:59:09 guitar pro 10:59:35 usually do songs with that, because i tablatures are a lot nicer than the normal score notation 10:59:38 *-i 11:00:12 a matrix view is of course the best for composition, and i have some ascii notations i use, but i don't have any program that actually plays those, nowadays 11:00:31 should make one, just so lazy 11:05:15 actually i don't know what the *notation* is called, perhaps pikhq tells me 11:05:34 it's basically "note writing" in finnish 11:06:14 which is a quite idiotic, scores are only good for writing piano sheets, if that 11:06:23 * oklokok HATES. 11:06:39 -!- sebbu has joined. 11:11:08 i also have about a hundred riffs as a test of my newest notation, but you'd have to learn that 11:11:18 * oklokok counts 11:12:41 lol just 50 11:13:26 would be cool if i used even 50% of my time, i'd have enough stuff to fill the screen with links when someone comments my music :-) 11:13:43 unfortunately someone introduced me to the world of tv series 11:14:09 * oklokok kills 11:22:04 * oerjan verbs 11:39:14 oerjan: verb verbing you verbing motherverber 11:40:52 your noun! 11:41:38 verb pronoun. 11:42:57 Why can't pronoun all just verb adverb? 11:44:01 interjection exclamation mark i'm so adjective at pronoun 11:44:22 lol 11:45:53 AnMaster: no need to verb adjective. 11:46:07 s/adjective/adjective 11:46:56 to what? I can't figure out what you mean 11:47:32 oerjan: verb pronoun verb pronoun question mark 11:47:44 s/oerjan/nick :D 11:47:59 s/:D/smiley 11:48:01 * AnMaster goes to verb on his noun interpreter 11:48:10 s/s/*/*/substitution 11:48:16 AnMaster: that might be for the vest. 11:48:27 *best, actually 11:48:35 "vest"? A kind of clothing right? 11:48:41 yeah 11:48:45 ah best 11:49:11 verb verb stackstacks of befunge! 11:49:12 :( 11:49:26 what's adjective about them, really? 11:49:39 they are complex to implement 11:49:41 that's the problem 11:49:47 hmm, in bash? 11:49:49 in C 11:49:50 * oerjan calls a moratorium on generic grammar terms 11:49:53 hm 11:49:59 * AnMaster points to his cfunge 11:50:01 how are they complex to do in c? 11:50:09 can be either conformant funge, or C funge 11:50:11 you decide 11:50:21 anyway it will be conformant 11:50:28 you make a stack thingie, then make a stack of stacks. 11:50:33 that's it, really 11:50:48 oklokok, yep, but then there is the complexities of { and } instructions 11:50:52 begin stack and end stack 11:51:07 with transfer of items in order between stacks and what not 11:51:12 umm, their behavior ais imperatively described there 11:51:20 yep 11:51:21 you just do exactly what it says. 11:51:23 *is 11:51:25 and it isn't easy to implement 11:51:43 not the way I made the stack structure 11:52:04 using the variable sized structure to have an array of pointers to stacks at the end of the stack stack structure 11:52:06 make a function to move a certain amount of shit from the top of a stack to the top of another, and put a boolean flag there to indicate direction 11:52:06 a C99 feature 11:52:26 anyway I think I got it mostly now 11:52:32 begin stack that is 11:52:46 just need to do some magic to find storage offset 11:52:55 i don't know what that feature is, but i do know you don't have to use it, and it's trivial without it :P 11:55:31 nah, but it means one less pointer redirection 11:55:36 err whatever 11:56:34 well, if you care about stuff like that 11:56:36 i don't :D 12:00:08 whoa, circular dependencies in headers sucks 12:00:46 * AnMaster adds a incomplete type to get around it. 12:20:42 Real = { Orig -> { §int -> Orig; 12:20:43 §+ N -> Orig + (int N) } }; 12:20:43 ((real 7) + 4) + (1 + (real 3)) 12:20:48 works 12:20:50 yay 12:20:57 already owns java then 12:23:05 1 + n always calls int(n) 12:23:29 4 + 2.0 = 6, which might confuse some 12:25:51 oklokok, wtf are you doing? 12:27:47 Destroying mathematics as we know it 12:43:37 AnMaster: only bases up to 36 are supported, I think it reflects if you give it something like that 473 12:43:57 BAD: { transfers cells incorrectly 12:43:58 10 0 0 Stopping due to fear of corrupt stack stack 12:44:03 Deewiant, I can't find what I do wrong 12:44:51 I looked at how you do it, and I debugged output of stack before and after and it looks correct to me 12:44:54 make a test proggy with just that 123456{ snippet (or whatever Mycology uses) and see the diffs 12:45:06 maybe the stack stack is messed up 12:45:23 Deewiant, I can't read mycology, it's too dense :( 12:45:37 n29*y is meant to be 0 12:45:43 why should it be 1 12:46:01 ah, wait a minute 12:46:19 because isn't the value checked before y does any popping and pushing? 12:47:09 note that values 10-14 are vectors 12:47:19 so they're 2 cells each 12:47:22 yes but 29* = 18 12:47:24 not 14 12:47:40 yes, so it does y and then takes the 18th cell 12:47:48 but values 10-14 contain 10 cells in themselves 12:48:03 indeed and? 12:48:03 18. size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip) 12:48:04 Stack sizes are pushed as if they were measured before y began pushing elements onto 12:48:04 the stack. 12:48:12 that's not the 18th cell 12:48:14 there is just a single stack 12:48:27 Deewiant, ok that's stupid -_- 12:48:34 it's what the spec says 12:48:50 and that's how it has to work in order to work as a pick instruction :-) 12:49:16 Deewiant, but that breaks adding new pick entries in newer versions of the specs 12:49:17 err 12:49:21 new y entries 12:49:22 I mean 12:49:37 no it doesn't, if you add them at the end 12:49:58 if you add them at the beginning it'd break anyway 12:50:03 yes, you add them at the end indeed 12:50:10 but that breaks pick instruction 12:50:18 I mean, breaks y working as pick 12:50:32 how's that 12:50:41 you have to run y first to get the size of the stack it pushes anyway 12:50:54 hm 12:50:55 since the length of y isn't predetermined 12:51:01 y is silly IMO 12:51:02 consider command line args and envvars 12:51:08 the way it is done I mean 12:51:15 this is an esoteric language, it's supposed to be silly :-P 12:51:26 * AnMaster suggests a sane esoteric language 12:51:34 not esoteric then, any more :-) 12:51:49 btw, the mycology readme has a step-by-step explanation of what should happen with 101-{} 12:51:58 yes it can be, anything with a 2D IP = esoteric 12:52:00 maybe that'll help with your { woes 12:52:16 Deewiant, it fails earlier than that 12:52:24 on the very first {-test 12:52:35 BAD: { transfers cells incorrectly 12:52:36 10 0 0 Stopping due to fear of corrupt stack stack 12:52:38 yeah, but if you say you can't see why that fails maybe you can see why that fails 12:52:42 Deewiant, what does that 10 0 0 mean? 12:52:55 probably something that shouldn't be there and is printed accidentally 12:53:01 you know, corrupt stack stack and all :-P 12:53:31 from mycouser: 12:53:35 UNDEF: BASE fingerprint not loaded, won't check I. 12:53:38 and 12:53:39 UNDEF: STRN fingerprint not loaded, wo those look weird to me 12:53:58 are those how they should be output if those fingerprints are missing or? 12:54:18 yeah, it just says your interpreter doesn't support BASE and STRN 12:54:20 I mean, It's "I won't check" in English 12:54:26 and then the < in the second message 12:54:28 oh, right 12:54:36 read it as "won't check the instruction 'I'" :-) 12:54:43 I can't remember what the < is about 12:54:55 in some interpreters it's output and in others not 12:55:01 possibly to do with how you implement k 12:55:06 I see 12:55:15 Deewiant, I do k as you do mostly 12:55:55 >;#"BAD: { transfers cells incorrectly"an< < < < < < v780>'_,#! #:<"GOOD: { transfers cells correctly"aw0w5w4w3w2w1< 12:56:05 that is where the problem happens I guess 12:56:15 if I replace the ( with r CCBI prints "won't" and not "wo but when I check in gdb my stack looks like that 12:56:33 Deewiant, ah thanks 12:56:45 find out which w causes the messup 12:56:55 and then find out why the stack is messed up at that point 12:56:57 * AnMaster uncomments trace output 12:57:42 ok, not easy to parse my trace output though 12:58:50 v<1w>^1<< < < < < < 12:58:59 so the very first one fails 12:59:19 so what was your stack at that point and why :-) 12:59:37 * AnMaster looks 13:00:20 call StackDump(newStack) 13:00:20 0=5 1=4 2=3 3=2 4=1 5=0 6=0 <-- that is how it looks when { is just done 13:00:35 what's with the two zeros 13:00:42 that's storage offset right? 13:01:00 The { "Begin Block" instruction pops a cell it calls n, then pushes a new stack on the top of the 13:01:01 stack stack, transfers n elements from the SOSS to the TOSS, then pushes the storage offset 13:01:01 as a vector onto the SOSS, then sets the new storage offset to the location to be executed next 13:01:01 by the IP (storageo f f set ↠position + delta). It copies these elements as a block, so order is 13:01:01 preserved. 13:01:02 ", then pushes the storage offset as a vector onto the SOSS" 13:01:03 from standard 13:01:05 the SOSS, not the TOSS 13:01:13 Deewiant, aha 13:03:03 BAD: { doesn't set storage offset correctly, or p doesn't use it <-- right, time to fix that 13:03:07 * AnMaster changes p 13:14:06 Deewiant, p should push at (offset + requested position) right? 13:15:02 aye 13:15:41 -!- oerjan has quit ("leaving"). 13:18:39 in retrospect, the best way to write Mycology would have been to, write after the Befunge-93 stuff, test {}pg and storage offsets, and then the code could be written modularly 13:18:44 err 13:18:47 s/write/right/ 13:18:59 how did that happen O_o 13:19:27 Rampant illetrism sweeping the nation? 13:20:36 sumthin like thät 13:23:07 Deewiant, your ccbi binary btw: 13:23:08 UNDEF: Y says pow(2, -7) is 0.007812 (0.007813) 13:23:19 a bit off is it? 13:23:19 AnMaster: that's FPSP probably? 13:23:30 FPDP 13:23:38 darn 13:23:39 ah well 13:23:43 and FPSP too 13:23:44 it's floats, what do you expect :-) 13:23:58 Deewiant, still :P 13:24:08 oh, come on 13:24:49 why is BASE totally UNDEF? 13:24:58 looks like it's the same on windows btw 13:25:16 2^-7 is 0.0078125 13:25:41 so if that comes out as 0.0078124999999 it'll be 0.007812 which is probably the problem 13:25:54 or then my CCBI output does truncation and not rounding 13:26:04 I don't care, the answer is correct enough :-) 13:26:20 Deewiant, CNCBI ? 13:26:33 it's not defined anywhere what should be done in that case 13:26:36 same with the BASE 13:26:42 have you looked at the RC/Funge-98 docs? they /suck/ 13:26:46 ah 13:26:51 and the source is worse 13:27:07 AnMaster: you complained about having to reverse engineer my code. I had to reverse engineer code that doesn't work. :-) 13:27:18 * AnMaster sighs 13:27:34 eventually I decided to write the tests based on the spec only 13:27:49 then I'd run RC/Funge there and more often than not it'd fail early 13:27:49 I still can't get it to think that p does the right thing when it pushes at (offset + requested position) 13:27:56 so something somewhere is wrong 13:28:05 possibly { is wrong 13:28:24 the storage offset is correctly set, I verified 13:29:08 maybe you've got your y and x mixed up at some point 13:29:44 well the StackPopVector is correct, or the code would fail when mycology tests x hm 13:30:08 maybe you're adding the wrong storage offsets 13:30:22 or setting them incorrectly 13:30:22 ipForward(1, ip, fspace); 13:30:23 pos.x = ip->position.x; 13:30:23 pos.y = ip->position.y; 13:30:23 ipForward(-1, ip, fspace); 13:30:34 that is how you get the new vector right? 13:30:38 the new offset I mean 13:30:58 err, sec 13:31:20 * AnMaster notes ccbi tend to reverse instead, and can't go backwards in one function call :P 13:31:25 yeah, looks like 13:31:33 somehow, that feels like a small win there :) 13:31:34 ;P 13:31:37 :-P 13:31:47 it's not like it'd be difficult to make a function that does that :-P 13:31:50 void ipForward(int_fast64_t steps, instructionPointer * ip, fungeSpace *space) 13:31:50 { 13:31:50 ip->position.x += ip->delta.x * steps; 13:31:50 ip->position.y += ip->delta.y * steps; 13:31:51 fungeSpaceWrapInPlace(space, &ip->position); 13:31:53 } 13:31:55 indeed 13:31:57 :) 13:32:17 CCBI isn't optimized at all 13:32:24 or a bit, but not much really 13:32:26 Deewiant, nor is mine in most places 13:32:37 Deewiant, look, your k is optimized in strange ways! 13:32:39 in most cases I just went for the easiest-to-write code 13:32:49 yeah, k was one I prematurely optimized :-) 13:33:04 so that 9999***k> doesn't loop needlessly 13:33:10 and such 13:33:20 but I'm off to eat now, have fun with your debugging o) 13:33:27 * AnMaster sighs 13:43:16 Deewiant, btw, on }, where do you get the storage offset from? 13:43:40 do you always restore the previous offset or? 13:49:40 corresponding } "End Block" instruction pops a cell off the stack that it calls n, then pops a vector off the SOSS which it assigns to the storage offset 13:50:01 it's not necessarily the original offset although it usually is 13:54:53 right 13:55:42 * AnMaster wish mycology code wasn't so dense 13:56:04 it could use a rewrite, yeah 13:56:13 but I'm not going to do that, sorry :-) 13:56:41 FWIW the code gets better later on, at least in my opinion 13:56:53 the 'y' stuff is probably worst 13:57:20 but the fingerprint stuff is almost sane 13:57:51 there's some intentional obfuscation somewhere, though - just ask if you get totally confused :-) 13:58:04 after all, it's Befunge, it's not supposed to be easy to read ;-) 13:58:29 the storage offset is correctly calculated at least 13:59:04 as in, the right x and y value is stored in ip->storageOffset 13:59:48 you might want to try something simple like zzzzz{00g,'0,@ which, I think, should print 00 13:59:51 oh I got it, it wraps things 13:59:52 hah 14:00:03 the "set with offset" wraps things 14:00:09 * AnMaster changes order of calculation 14:02:11 * AnMaster implements } too 14:04:17 yay segfault 14:04:25 yay C ;-) 14:04:59 Deewiant, can't you get segfaults in D? 14:05:04 you got pointers after all 14:05:10 it's less likely 14:05:15 since you usually don't use pointers 14:05:30 arrays are built-in which helps a lot 14:05:42 so are C ones partly 14:05:47 FUNGEDATATYPE entriesCopy[count + 1]; 14:05:49 only static arrays 14:05:56 that one is dynamic 14:05:58 C99 feature 14:06:03 yeah, C99 has VLAs 14:06:07 but they're a bit clunky 14:06:12 Deewiant, and my code is C99 14:06:34 Deewiant, and memory managment: not an issue, I use boehm-gc 14:06:47 that helps a lot :-) 14:07:17 of course, realloc code to extend/contract stackstack pointer array to stacks is a bit hariy 14:07:30 since it use the "dynamic arrays at end of struct" thingy 14:07:59 typedef struct {// Top stack and current stack 14:07:59 size_t current; 14:07:59 // Array of pointers to stacks 14:07:59 fungeStack * stacks[]; 14:07:59 } fungeStackStack; 14:08:10 err, messed up newlines in paste 14:08:29 what's "current stack"? 14:08:38 TOSS and top also 14:08:40 oh, you just use it to hold the stack size 14:08:55 Deewiant, yep, as size and TOSS are the same for stack stack 14:09:04 I contract the thing when I pop stack stack 14:09:09 unlike normal stacks 14:09:20 where I keep a size counter and a "top" counter 14:09:30 and reallocates to add 10 in a bunch if more are needed 14:12:41 yay 14:13:11 stacks[0] and stacks[2] are valid, but stacks[1] = NULL 14:13:13 * AnMaster looks 14:16:14 GOOD: { transfers cells correctly 14:16:15 GOOD: { sets storage offset correctly, and p uses it 14:16:15 Program exited normally. 14:16:18 Deewiant, any clue? 14:16:20 heh 14:16:27 nope 14:16:29 * AnMaster can't see where it would do that 14:16:39 but something tells me "normally" isn't quite right :-P 14:16:48 that is what gdb says 14:16:52 ie, exit code = 0 14:17:10 x=87 y=72: # (35) 14:17:10 x=89 y=72: } (125) 14:17:10 Program exited normally. 14:17:11 interesting 14:17:26 :-) 14:17:39 aha, missing break in case lol 14:17:52 so fell through to next, that was @ 14:18:00 :-D 14:18:05 nop, not that 14:18:18 now it quits in another way 14:18:30 * AnMaster removes trace output to be able to see what mycology said 14:18:48 BAD: } reflects, hrrm 14:18:52 I suggest making that a command-line switch :-) 14:19:11 Deewiant, yes, right, when I implement proper command line parsing 14:19:28 GOOD: } resets storage offset 14:19:28 GOOD: } transfers cells correctly 14:19:28 Segmentation fault 14:19:29 bbl 14:19:35 how about right now just test if args[2] is -t or something 14:28:44 heh indeed 14:32:19 -!- RedDak has joined. 14:37:09 yay fixed it 14:54:00 Deewiant, there? 14:54:02 "If n is negative, |n| zeroes are pushed onto the SOSS." 14:54:10 isn't that a typo for TOSS in that case? 14:54:36 maybe it is but it says SOSS :-) 14:55:18 doesn't that match with: "If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells." 14:56:43 is there no matching GOOD for BAD: 101-{} doesn't leave stack top as 0 and next as 1 ? 14:56:52 no :-/ 14:56:53 at least mine doesn't print anything for that test when I corrected it 14:56:56 so confusing 14:57:00 Deewiant, that is bad :( 14:57:00 aye :-/ 14:57:06 FIX! ;P 14:57:06 I agree :-/ 14:57:12 easier said than done :-D 14:57:18 BAD: fedcba0{05-} doesn't leave 15 on stack 14:57:23 explain that one please 14:57:24 wow, that's rare 14:57:31 well, self-explanatory? 14:57:31 Deewiant, tell me about it 14:57:36 no I don't get it 14:57:41 I think I've only seen one other interpreter that does that 14:57:43 well 14:57:46 well mine does 14:57:47 fedcba0{05-} was executed 14:57:52 ok 14:57:57 and the top of the stack should be 15 after that, but it isn't 14:58:02 or wasn't, whatever 14:58:29 so my handling of negative counts for } is bad in other words? 14:58:35 probably 14:58:52 If n is negative, |n| cells are popped off of the (original) SOSS. 14:58:57 that means they are discarded? 14:59:09 well that's what it says isn't it :-) 14:59:18 that's an easy fix 14:59:42 GOOD: 1y and 5y do not disagree about = 14:59:42 No reliable cross-platform method of testing: assume = works 14:59:48 indeed, both says it doesn't exist 15:00:07 yep 15:00:09 * AnMaster thinks that second message is wrong with y says = doesn't exist 15:00:16 meh 15:00:18 it doesn't work! 15:00:21 read it as "works as intended" 15:00:26 ok 15:00:36 it doesn't use it anywhere 15:00:38 Deewiant, btw, could I invent my own = system? 15:00:52 that is an own operating paradigm? 15:00:54 not really since there's no standard :-/ 15:01:09 Deewiant, but I could make my own operating paradigm right? 15:01:15 y does allow that 15:01:17 "an implementation may support one of several standardized ways of interpreting the string, and which routine it uses can be determined by querying y" 15:01:23 the standardized ways are given 15:01:27 as long as it's one of them it's okay 15:01:42 This value is included so the program can have a reasonable idea of what = will do. The 15:01:43 values shown here are only the most basic set available at the time of publication. See the 15:01:43 Registry for any late-breaking headway into further Operating Paradigms. 15:01:45 from y 15:01:48 yep 15:01:54 but there is no registry 15:01:57 so that means you could make a new one 15:01:57 so we're screwed :-) 15:02:03 Deewiant, ah, so no libffi then :( 15:02:03 basically yes 15:02:06 but the problem is 15:02:13 because that's what I would want to do 15:02:16 what if your interpreter uses 16 for what you do 15:02:16 call libffi :) 15:02:22 and another interpreter uses 16 for something else 15:02:32 Deewiant, indeed, so we got to start a new registry 15:02:34 since there's no central registry, that can't be controlled 15:02:50 Deewiant, look, I want to use libffi to call C functions using it! :P 15:02:51 that's up to you :-) 15:03:09 just to be a pain in the **** for everyone else 15:03:20 I'd just call that 2 actually 15:03:21 "Equivalent to interpretation by a specific shell or program " 15:03:25 or even 3 15:03:30 since yours is a C program 15:03:33 haha 15:03:42 or no, scratch that 15:03:47 3 refers to the command-line shell 15:03:52 2 is what it'd be 15:04:00 heh 15:04:14 no, I'm not likely going to do libffi 15:04:18 too painful 15:04:44 Deewiant, the push on other stack then pop back thing for y = really painful :( 15:05:08 it's bad for performance 15:05:09 somewhat, yes 15:05:15 and coding style too 15:05:27 I just push all the things and then, at the end, check if some need to be popped 15:06:28 on a temp stack? 15:06:47 no, on the real stack 15:07:08 if you got 2y, that means 3y will also end up on stack? 15:07:10 but below it? 15:07:21 no, they're removed as well 15:07:41 then you need to shift items if you push onto real stack 15:07:48 I think what I do is push all, then pop up to 2, remember that cell, pop the rest that were pushed, push the remembered one 15:07:53 not sure though 15:08:03 that is even messier 15:08:15 actually it's quite clean in the code 15:08:34 as far as performance goes, it's not the best option though :-) 15:08:57 btw if I get this: 15:08:57 GOOD: ] turns flying IP right 15:09:01 and then lockup 15:09:07 what is the likely cause 15:09:12 can't remember 15:10:25 got to love this "mutex" in concurrent befunge: 15:10:26 <@Zaba> >#vt' 'o'l'l'e'H,,,,,,'>21p@ 15:10:27 <@Zaba> ><'!'d'l'r'o'w,,,,,, ^ 15:10:47 yep, I use that 15:10:58 not that I will implement that I think 15:10:59 in Mycology that is 15:11:07 concurrent that is 15:11:13 meh 15:11:23 you're making this too easy for yourself :-) 15:11:35 might as well just implement Befunge-93 ;-) 15:11:38 at least I want to finish everything that is required in funge98 before I start on optional things 15:11:46 aye, sure 15:14:39 StackStackTransfer(FUNGEDATATYPE count, bool inOrder, fungeStack *TOSS, fungeStack *SOSS) <-- yay, that should be reusable 15:14:59 Deewiant, btw what data type does ccbi use for the cells? 15:15:04 64-bit or 32-bit? 15:15:06 32-bit int 15:15:10 I think 15:15:12 or no, wait 15:15:15 its int_fast32_t 15:15:22 hah, mine use 64-bit, and should be easy to make 128-bit 15:15:30 using int128 thing for amd64 15:15:31 so it depends on what the library defines that as 15:15:43 Deewiant, ah mine is int_fast64_t heh 15:15:55 but easy to change in a header 15:15:57 AnMaster: so good luck compiling that on 32-bit? :-P 15:16:05 Deewiant, oh? should work still 15:16:16 64-bit values does exist on 32-bit 15:16:20 long long is such a value 15:16:24 oh yeah, C99 15:16:28 Deewiant, :D 15:16:34 ah well 15:16:35 C99 rocks 15:16:38 good luck /running/ on 32-bit ;-) 15:16:49 Deewiant, it will run on 32-bit, just slower 15:16:55 exactly, quite a bit slower :-P 15:17:15 anyway just open src/global.h and redefine: 15:17:16 #define FUNGEVECTORTYPE int_fast64_t 15:17:20 #define FUNGEDATATYPE int_fast64_t 15:17:24 to something else 15:17:32 yeah, just change alias int_fast32_t cell to alias long cell in CCBI, too :-) 15:17:53 for example I had it as char when I debugged play field loading 15:17:55 why don't you use typedef 15:17:59 because that makes print sane 15:18:08 Deewiant, no real reason 15:18:19 it hardly matters though 15:19:04 but upper case = defines normally, so changing it would mean a sed if I want to keep good coding style 15:19:34 Deewiant, btw, following ccbi's style of using weird build systems: I use cmake 15:19:35 :) 15:19:48 oh and I use POSIX specific stuff 15:19:59 so it will only run on real OS I bet 15:20:07 rebuild/DSSS is pretty much standard for D 15:20:20 D isn't terribly much standard though 15:20:21 and meh 15:20:27 no, but I like using real languages ;-) 15:20:43 C is more real 15:20:52 what language is the D compiler itself written in? 15:20:57 I bet answer is: C 15:20:59 C++ I believe 15:21:03 ok or C++ 15:21:04 :) 15:21:08 and C++ compiler is in C 15:21:10 so well 15:21:15 no, more likely that's in C++ as well :-P 15:21:30 Deewiant, not the gcc one I think? 15:21:31 but why the POSIX stuff, what do you need it for? 15:21:32 or maybe it bootstraps 15:21:38 I'm not sure about GCC actually 15:21:42 DMD and DMC are both C++ 15:21:48 Deewiant, simply because it's standard 15:22:13 any OS not being POSIX.1-2001 isn't worth coding for IMO :P 15:22:15 that's debatable 15:22:18 but what do you need it for 15:22:33 nothing really, just cases of easier to use / better functions 15:22:46 for example, for some reason random() is often more random than rand() 15:22:53 well, you do know that Linux and most BSDs aren't fully POSIX-compliant ;-) 15:22:58 random is POSIX, rand is C89/99 15:23:09 Deewiant, indeed, I test my app on both freebsd and linux 15:23:24 I'd just use the mersenne twister if I were you 15:23:26 Linux tux.lan 2.6.24-gentoo-r2 #1 Mon Feb 11 16:14:47 CET 2008 x86_64 AMD Sempron(tm) Processor 3300+ AuthenticAMD GNU/Linux 15:23:30 for that example, for instance 15:23:50 Deewiant, for ? instruction 15:24:15 it's just that I don't see the advantage in locking out Windows, I don't think the POSIX-only stuff is /that/ good 15:24:20 nothing in the funge standard says about what type or random 15:24:32 of* 15:24:34 nope, you could alias it to > if you want :-P 15:24:42 although that'd infinite loop in mycorand.bf 15:24:47 Deewiant, err no, that would be stupid 15:24:48 yeah 15:25:00 Deewiant, no, but it doesn't say it has to be 100% uniform i what I mean 15:25:02 better, you could iterate over >v<^ always in the same order :-) 15:25:21 long int rnd = random() % 4; 15:25:28 is good enough I think 15:25:35 :S 15:25:41 of course with % it may not be random 15:25:42 why not rand() % 4 and support windows on top, then :-P 15:25:54 unsigned char rnd = random() % 4; // OPTIMIZED 15:25:55 Deewiant, oh I do call srandom(time(NULL)) before :P 15:26:11 faxathisia, hah, but then gcc complains about a cast needed 15:26:13 seems a bit pointless to lose windows support just for that ;-) 15:26:15 and I use -Werror 15:26:16 :P 15:26:25 O-o 15:28:00 -std=c99 -Wall -Wextra -Wformat=2 -pedantic -Wstrict-aliasing=2 -Wfloat-equal -Wwrite-strings -Wshadow -Wcast-align -Wcast-qual -Wbad-function-cast -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wundef -Wnested-externs -Wdeclaration-after-statement -Wmissing-include-dirs -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -W 15:28:00 redundant-decls -Werror 15:28:02 in fact 15:28:22 nice 15:28:32 I use -funroll-loops 15:28:38 and no other flags 15:28:43 look it is for debugging! 15:28:50 to code good code 15:29:16 I use -ggdb3 -O0 15:29:18 -_- 15:29:23 -!- Tritonio_ has quit (Remote closed the connection). 15:29:25 hhehe 15:29:36 for this app that is 15:31:07 and stuff like __attribute__((nonnull,warn_unused_result)); (of course I #define away __attribute__ for non-gcc) to make sure I don't forget return values and so on 15:35:48 BAD: u with a negative count transfers cells incorrectly 15:35:49 hm 15:35:52 * AnMaster looks again 15:37:11 yay 15:39:27 Deewiant, BAD: after y the top cell is greater than 15 15:39:45 hm 15:46:09 unclear? 15:46:13 no 15:46:41 -!- RedDak has quit (Remote closed the connection). 15:46:45 just how I indicate how to follow 08 draft *adds a compatibility mode to be selected with parameter* 15:50:03 Deewiant, interesting: 15:50:04 That the command-line arguments were: [ "/" null "jÿ" null ] 15:50:15 :-) 15:50:16 * AnMaster pushes two null atm until he fixed some things 15:50:28 \0\0 = end of list 15:50:29 so? 15:50:37 so? 15:50:44 why does it not realize it is just a case of an empty list? 15:50:56 it should 15:50:56 after all, it is valid to not have command line arguments 15:51:02 no it's not 15:51:05 The first string is the name of the Funge source program being run. 15:51:16 Deewiant, that could be hard coded into an array into the interpreter :P 15:51:18 so it should always be mycology.b98 15:51:43 it's not the interpreter name, it's the Funge program name 15:51:55 Deewiant, or it may be a case of downloading, say a funge that can execute urls 15:51:58 or streams 15:52:01 where it won't know 15:52:12 it can push the URL then 15:52:15 nothing says the funge program has to be loaded from a file does it? 15:52:41 well, it talks about "Funge-98 source files" a lot :-) 15:52:45 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php 15:52:46 Deewiant, :) 15:52:52 93, but still 15:53:01 yep, I know :-) 15:53:06 or: 15:53:08 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php 15:53:09 I haven't run those on Mycology to see if they work 15:53:22 Deewiant, mycology would be too large 15:53:29 to fit inside it as well 15:53:41 you do realize that the first 80x25 chars are valid Befunge-93 :-) 15:53:45 and test the whole Befunge-93 spec 15:53:50 yep I do 15:53:53 I know that 15:54:06 and that Befunge-93 interpreters should only load the first 80x25 chars anyway 15:54:09 but I like to point out those programs load themself into the befunge93 space too 15:54:10 so 15:54:19 so they're not valid :-) 15:54:33 Deewiant, btw what is this minifunge thing? 15:54:36 or whatever it was called 15:54:59 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/dynafing.txt 15:55:15 unfortunately I implemented RC/Funge-98's version and not that one 15:55:22 but it shouldn't require many changes 15:55:29 if someone wants me to implement that one instead :-P 15:56:47 why not? 15:56:53 do they differ much? 15:57:05 not IIRC 15:57:09 Deewiant, what is hover mode? 15:57:15 and such 15:57:20 defined in MODE fingerprint 15:57:29 as it says there :-) 16:02:02 * AnMaster wonders if it would be nice to make HRTI take advantage of HPET on linux when available 16:02:14 en.wikipedia.org/wiki/High_Precision_Event_Timer in case you don't know what it is 16:02:28 isn't HPET exposed in any of the standard C lib 16:02:38 it isn't afaik? 16:02:46 I mean, just in the form of a higher CLK_TCK or whatever 16:02:51 * AnMaster guess doing some stuff on /dev/hpet could work 16:03:00 of course with some fallback 16:03:09 as only one of my computers got hpet 16:03:38 Deewiant, but maybe 16:03:51 anyway use NO_HZ so... 16:03:51 heh 16:08:33 * AnMaster writes functions to push and pop C string to/from 0gnirts 16:13:29 -!- RedDak has joined. 16:57:29 -!- RedDak has quit (Remote closed the connection). 17:15:32 #>:#_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y 17:15:33 Deewiant, ^ 17:15:38 that is the infinite loop 17:15:53 'the'? 17:15:59 that my code get into 17:16:15 f8+y doesn't work then apparently 17:16:24 what is f8+y supposed to be? 17:16:35 I don't know, what does CCBI output there 17:16:52 a sec 17:17:43 GOOD: ] turns flying IP right 17:17:44 GOOD: : on empty stack makes stack size 2 according to y 17:17:47 hm 17:17:49 the second one 17:17:54 so it's trying to get the stack size 17:18:06 TOSS size to be exact 17:18:11 * AnMaster checks 17:18:29 Deewiant, why don't it print BAD or such then? 17:18:54 I didn't expect that y would reflect after y having worked all the way up to there :-) 17:19:17 Deewiant, maybe add that check? :) 17:19:21 I can't check for reflection every time I try an instruction :-P 17:19:37 Deewiant, you can, 98 doesn't have a size limit so it's easy 17:19:44 ;P 17:19:53 except that much of the later code uses hard-coded y-coordinates 17:19:58 so adding lines breaks the whole program 17:20:12 interesting 17:20:21 just let it expand outwards to x? 17:20:24 hence what I said earlier about testing {}pg first and then using {} 17:20:31 that doesn't work either due to the tests on # edge jump 17:20:47 the line there has to be the longest line in the file 17:20:56 well just make that even longer? 17:20:59 of course I could just make that one longer 17:21:07 but then there's also the check for what y pushes for maxX/maxY 17:21:08 simple really 17:21:13 which would also have to be changed 17:21:18 and possibly something in the fingerprints as well :-P 17:21:22 too much trouble really 17:21:49 it looks like there's plenty of free space there though 17:21:52 Deewiant, does mycology test nested { and } btw? 17:22:02 not sure 17:22:16 Deewiant, you wrote it! you should know ;P *runs* 17:22:39 it's over 100 KB of Befunge, I can't be sure :-P 17:23:22 * oklopol wants to write something in befunge 17:23:36 oklokok, simple really 17:24:14 AnMaster: i'm not saying i don't have the skill 17:24:22 i'm saying god i wanna do it 17:24:26 what should i use? 17:24:31 for the interp 17:24:34 a text editor? :-P 17:24:36 CCBI, of course 17:24:53 ccbi is what? 17:24:59 my interpreter :-) 17:25:03 for what os? 17:25:17 oklokok, ccbi 17:25:17 for now 17:25:17 :P 17:25:20 tested on windows and linux, might work on bsd if you can get it to compile 17:25:34 oklokok, ccbi is coded in d though 17:25:38 so a bit hard to compile 17:25:38 http://iki.fi/matti.niemenmaa/befunge/ccbi.html 17:25:46 AnMaster: but fortunately, I provide a linux binary now :-) 17:25:49 i'm using windows then, prolly 17:25:51 AnMaster: thanks for testing it ;-) 17:25:52 oklopol: RE: your question earlier. . . Think 'Eb above middle C'. 17:25:55 (painful) 17:25:57 Deewiant: you finnish? 17:26:01 oklopol: aye 17:26:12 oklopol, he got a linux binary as well yes 17:26:27 Deewiant: BSD can be binary-compatible with Linux. 17:26:33 Deewiant, not linked from site though 17:26:35 add the link there 17:26:37 AnMaster: yes it is 17:26:59 Deewiant, then your servers send something bad with cache headers? 17:27:01 pikhq: i can do octave over C 17:27:10 AnMaster: or you don't see it. :-P 17:27:10 although i'm not sure what question you were answering :P 17:27:12 Deewiant, had to do Ctrl-R 17:27:16 to make it show up 17:27:16 AnMaster: I don't know, they're school servers 17:27:18 interesting 17:27:47 and octave below G below middle C 17:27:51 Deewiant, the "befunge98 SVN r11" linked from your site, link is broken 17:28:01 Deewiant, on test results page 17:28:07 bah 17:28:10 maybe do a "local source" thing like for rcfunge? 17:28:12 AnMaster: i prefer my windows machine 17:28:18 it seems he's redesigned his site 17:28:25 oklopol, sure, just install linux on it 17:28:30 Deewiant, correct link then 17:28:35 not worth it 17:28:43 AnMaster: the only difference is a slash at the end >_< 17:28:44 oklokok, to get a real OS I mean 17:28:58 oklopol: I ave a *low* range, not a high range. ;) 17:29:04 (I'm in high school) 17:29:04 not much difference 17:29:06 oklopol: design and testing is done on Windows XP, so it's more likely to work there anyway :-) 17:29:50 oklokok, in the future compiling cfunge may be a simpler choice :) 17:29:56 when I get it done 17:30:22 pikhq: how low do you get? 17:30:29 -!- timotiis has joined. 17:30:45 oklokok, cfunge can be set to use 64-bit stuff easily, in fact it is optimized for 64-bit ABI (I've read AMD64 ABI specs, so I optimize parameter order to pass as much as possible in the registers!) 17:30:51 AnMaster: want to try iki.fi/deewiant/mycology.b98, it should have a test for that f8+y now 17:31:12 Deewiant, I fixed my y for that, so can't test that 17:31:19 AnMaster: undo the fix :-) 17:31:22 oklopol: At *least* to low C. . . 17:31:31 what's low c? 17:31:37 what are the names of the octaves? 17:31:38 C below bass clef. 17:31:48 ERm. 17:31:53 I might have screwed that up. 17:31:59 * pikhq imagines scale, labelling notes. . . 17:32:03 low C, some C, middle C 17:32:04 ? 17:32:13 like, two octaves down from that 17:32:46 i can do F quite easily too, but i'm a tenor really 17:32:48 well 17:33:03 as i'm not really a singer, i don't have a clear range like that 17:33:26 what are the ranges officially? 17:34:58 Deewiant, anyway should nf8+y return 0 or 1? 17:35:02 Ah. The note I'm thinking of is called 'E2'. E below bass clef. 17:35:11 http://www.library.yale.edu/cataloging/music/vocalrg.htm 17:35:14 oh 17:35:26 C3 C2 C c c2 c3 17:35:30 and c is middle c? 17:35:33 AnMaster: 0. 17:35:41 Yeah. 17:35:44 ah 17:35:54 then wtf is up with: 17:35:54 same as in finnish then 17:35:55 BAD: \ on empty stack doesn't make stack size 2, says y 17:36:00 well 17:36:06 because, according to gdb 17:36:07 it does 17:36:09 That range chart is a bit bad, though. . .I know all those parts have wider ranges. 17:36:10 Deewiant, ^ 17:36:16 Granted, not *much* wider. 17:36:21 AnMaster: well, according to a Befunge program, it doesn't. :-) 17:36:35 Deewiant, also BAD: i not implemented according to 1y - cannot test it <-- why is that "BAD"? 17:36:41 it is fully valid to not have i and o 17:36:52 AnMaster: I disagree 17:37:00 Deewiant, the standard says so 17:37:10 AnMaster: does it? 17:37:14 # Bit 1 (0x02): high if i is implemented. 17:37:14 # Bit 2 (0x04): high if o is implemented. 17:37:19 i can do all those, but i think i prefer the highest 17:37:23 AnMaster: sure, it says that 17:37:35 oklopol: My *comfortable* range is the bass clef. ;) 17:37:36 "Also, any of the instructions t (concurrent execution,) = (execute,) i (input-file,) and o (output-file) may be unavailable in different interpreters for many reasons, and are routinely bound to (i.e. act just like) r as well. However, they may also act like r when they fail to execute. To test if they are actually supported, execute 1y and examine the cell it produces." 17:37:39 AnMaster: but that doesn't mean that a fully conforming implementation doesn't have to implement them :-) 17:37:39 Deewiant, that too ^ 17:37:54 section "Instructions" 17:37:55 :P 17:37:57 AnMaster: alright 17:38:02 so yes it is fully valid to not have those 17:38:14 Did I say anything about '='? Was that UNDEF or nothing? 17:38:42 darn, not much space there 17:38:48 what you say is: 17:38:49 BAD: i not implemented according to 1y - cannot test it 17:38:50 BAD: can't test o without working i, might overwrite some existing file 17:39:03 Deewiant, your test suite isn't conformant! :P:P 17:39:08 hm, the second is kind of tricky 17:39:12 AnMaster: I never claimed it was :-P 17:39:29 pikhq: you didn't answer the question of wether it was a composition of yours 17:39:32 Deewiant, anyway, I don't implement either i or o 17:39:36 nor do I plan to yet 17:39:39 as they are optional 17:40:28 Deewiant, so far: http://rafb.net/p/AA3KEd72.html 17:40:32 yes I know y is broken still 17:40:39 and so is some wrap parts 17:42:36 oklopol: Nope. 17:42:46 *whether 17:42:49 Just something I have to perform for my (fairly good) high school choir. 17:43:02 * pikhq damns the fourth movement of the Easter Cantata to hell. 17:45:01 AnMaster: there' 17:45:06 s a new Mycology up 17:45:13 should say UNDEF at those two places now 17:46:17 did you update test results? 17:46:19 :P 17:46:26 no, can't be bothered now 17:46:41 some of the programs are outdated, too 17:47:01 it's mostly "on hold" for now, I'll update it all later 17:47:11 Deewiant, add a change log entry on that page for your change? 17:47:33 Deewiant, http://users.tkk.fi/~mniemenm/files/befunge/mycology/mycology.zip is the right thing to download I assume? 17:47:39 yep 17:48:27 ok, interesting why CRLF btw? 17:48:43 to make sure people support it :-) 17:58:47 Deewiant, what about systems with multiple chars for path separator? iirc such systems existed that had two chars 17:58:52 don't remember name 17:58:58 but befunge won't work on those 17:59:00 AnMaster: the standard specifies it's one cell 17:59:07 can't be helped 17:59:13 Deewiant, so befunge breaks on such systems 17:59:14 I see 17:59:21 on such a system, the interpreter could push a reserved value 17:59:28 which it translates to the path sep on output 18:11:51 reserved hm? 18:12:11 like, say, it could say that cell sizes are 7 bytes 18:12:28 and then reserve all higher values for stuff like that 18:12:38 Deewiant, what file in CCBI does wrapping? 18:13:16 ip.d probably 18:14:40 yeah, IP.move 18:14:42 bah, CLOS is lame 18:14:53 no it's not 18:15:07 Have you used other object systems? 18:15:26 for lisp or in general? 18:15:31 In general 18:15:53 lament, what is CLOS? 18:15:58 some befunge fingerprint? 18:16:09 object system for common lisp 18:16:14 faxathisia: i just don't like (method object) 18:16:33 huh? 18:16:49 because it's namespace clutter 18:16:57 you'd rather write method(object) ? 18:17:08 no, that's still namespace clutter 18:17:15 object.method() is not namespace clutter 18:17:23 there's no "method" in the global namespace 18:17:41 i understand the issues with multiple dispatch 18:17:43 You can use packages 18:18:47 that doesn't really help, you just clutter the package namespace instead of the global one 18:19:06 as opposed to not cluttering anything 18:19:12 what way do people usually do functions in befunge? 18:19:17 I don't really know why you are saying 'clutter' when actually you are defining a method 18:19:40 if you didn't want it, don't write it 18:19:41 or they usually don't? 18:19:53 AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-) 18:19:54 faxathisia: because in clos, this method is in the global namespace, and in python/c/c++/java/c# it's local _to the object_ 18:20:17 which is where it belongs 18:20:18 Lisp is different .. embrace it :) 18:20:39 it's not just different, it's worse 18:20:42 the change is better in this case, especially reading something like AMOP 18:20:46 oklokok: they usually don't, I guess 18:20:52 pretty simple to do for n-dimensions with (n-1) dimensions used in a function 18:20:58 so that you use one direction as a mapping level 18:21:15 like, you have every second level be one that just redirects the turtle in the right slow 18:21:26 based on function coordinates pushed on the stack 18:21:28 oklokok: one way is to reserve one line/column of Funge-Space for a return address stack 18:21:31 faxathisia: good management of namespaces is one of the nicest things a language can do for you 18:21:38 oklokok: and then use pg 18:21:47 when you have 20000 symbols in your namespace, it's hard to keep track of stuff 18:22:00 AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-) 18:22:01 hehe 18:22:09 yay wrapping now works 18:22:15 i'm fairly sure i can make callable functions with something like this, although you need to push a lot of stuff when you call a function 18:22:17 non-cardinal I mean 18:22:42 Deewiant: that sounds slow 18:22:47 Deewiant: 18:22:50 UNDEF: 1k # does nothing at k or jumps at k and doesn't move past # 18:22:53 oklokok: Befunge isn't fast :-P 18:23:07 Deewiant, can you explain that one to me, and what way is "best" 18:23:38 Deewiant: no reason to make slow programs, quite the opposite! 18:23:43 AnMaster: this is the thing that was discussed between myself and, IIRC, Lee Houghton 18:23:53 AnMaster: I changed it in february to be UNDEF 18:24:22 AnMaster: in short, k followed by a space is very poorly specified 18:24:33 AnMaster: read the spec however you will 18:24:38 yes indeed, it should not execute the space 18:24:40 that is clear 18:24:56 but after that, there are at least 3 options 18:25:00 1) reflect 18:25:07 2) ignore it and do nothing for 1 tick 18:25:19 3) find the instruction after the space and exec that 18:25:20 and third? 18:25:41 Deewiant, what one would you recommend? 18:25:46 CCBI does 2 18:25:53 some do 1, some do 3 18:25:59 Deewiant, and the one I did? 18:26:03 up to you really, based on the spec all can be justified 18:26:09 I mean, the result 18:26:26 "1k # does nothing at k" means 2 18:26:37 "jumps at k and doesn't move past #" means that k doesn't move past the instruction it executes 18:26:37 Deewiant, so it ignores the #? 18:26:46 no, it means it ignores the space 18:26:51 and then moves onto the # on the next tick 18:27:25 -!- jix has joined. 18:27:29 err how can you know about tick for non-concurrent funge? 18:27:30 or, in that latter case, that it executes # at k 18:27:41 well for non-concurrent funge it doesn't make a difference 18:27:58 I'm just saying "next tick" to clarify that it happens sequentially like that :-) 18:28:03 Deewiant, my k function just calls return on space 18:28:13 and reflects on 1) ", ; and nested k 18:28:26 err not the , instruction that is 18:28:28 why reflect on "? 18:28:35 " toggles stringmode 18:28:43 Deewiant, because standard says " isn't allowed in k 18:28:51 it does? 18:29:02 or rather indicates 18:29:09 :-P 18:29:09 "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;)" 18:29:10 how's that 18:29:20 I would suggest " is a marker 18:29:29 no, it's not 18:29:32 it's an instruction 18:29:43 The instruction " "Toggle Stringmode" toggles a special mode 18:29:47 Deewiant, so what should 2k" do? 18:29:54 nothing 18:30:06 and 3k" ? 18:30:12 same as 1k" 18:30:16 or just " 18:30:20 Deewiant, turn string mode on that is 18:30:23 the only two markers are space and ; 18:30:26 ok, that's stupid 18:30:27 AnMaster: yep 18:30:29 why 18:30:40 I'm sure I could find a use for it if I try hard enough :-) 18:30:41 Deewiant, k" doesn't make any sense :( 18:30:56 say you've got two-dimensional code 18:31:01 you need to skip over some code 18:31:08 you've got semicolons in the middle so you can't use ; 18:31:28 you're trying to move east and the code at that point looks like k"asdf 18:31:28 j instruction 18:31:37 you don't have enough room to turn to the east 18:31:51 before hitting that k, that is 18:31:55 hm ok 18:31:58 so you put 1 on the stack and turn right 18:32:00 relocate your code 18:32:05 :-) 18:32:09 that's not what befunge is about :-P 18:32:26 to me anyway 18:32:31 Deewiant, and you get a lot of crap on the stack right? 18:32:35 -!- ais523 has joined. 18:32:42 do n afterwards 18:33:01 or ask y for the current stack size and then use k$ 18:33:01 Deewiant, I would relocate the code to fit in a j instruction if needed 18:33:39 if you can relocate like that, might as well not use j at all :-) 18:34:19 but my point is, there can be a use for it 18:34:19 I always write PIC code in befunge :P 18:34:22 it's not /completely/ pointless 18:34:36 to me that's somewhat self-defeating, might as well use brainfuck or whatever :-) 18:35:16 * AnMaster ponders a befungelint until he realizes it would be impossible to find what direction you enter a instruction without running it and seeing what happens in some cases 18:35:23 yep 18:35:52 Deewiant, anyway nasty thing that you check if ( that reflects pops things :P 18:36:05 * AnMaster could have managed further without that check 18:36:11 as I don't implement ( yet 18:36:25 an easy way to implement ( is just to make it pop a value then pop that many cells 18:36:30 and reflect, of course 18:36:52 but you do realize that if you're that far you've done pretty much everything else :-) 18:36:55 wait, so ( isn't popping a 0gnirts? 18:37:07 nope 18:37:10 Deewiant, well my y is still seriously broken 18:37:38 heh, looks like 18:37:48 http://rafb.net/p/OqbNQJ59.html 18:37:51 there ^ 18:38:17 also, my fungespace field is a mess, until I replace it with a sparse array 18:38:31 a mess of 800x2500 cells heh ;P 18:38:41 :-P 18:38:56 just to do some things for now until I wait for some idea for sparse array 18:39:13 anyway the interface for fungespace is clean 18:39:13 Befunge98 used an octree I think 18:39:19 so easy to replace with something else 18:39:46 Deewiant, look, I'm in what equals last year of high school, I don't know the computer science stuff yet! tell me what a octree is :) 18:40:14 when I started with CCBI I was, too :-) 18:40:20 hahahah 18:40:51 can't you guess from the name - octree i.e. octal tree i.e. a tree where each node has eight children 18:41:01 uhu 18:41:05 right 18:41:10 so basically, each funge-space cell has pointers to each immediate neighbour 18:41:42 I see 18:42:05 Deewiant, must be slow to traverse if you want to not just go to next cell 18:42:14 I don't know to be honest 18:42:17 but say, get cell at 0,5 while you are at 374,57 18:42:30 Deewiant, how does ccbi do it? 18:42:31 he might have partitioned it 18:42:37 AnMaster: D has built-in hash tables :-) 18:42:41 :( 18:42:48 Perl too.. 18:42:53 AnMaster: cell[cellidx][cellidx] space; or something 18:43:08 well bash got sparse arrays hm 18:43:14 but not matrixes 18:43:31 so no point in looking at bash source 18:43:46 there're libraries 18:43:55 don't know what but there're bound to be some :-) 18:44:46 Deewiant, I found some for floating point, some with bad license, some that was just 1D arrays and some that lacked any comments in code and said "buy this book to get documentation" 18:45:03 and obfuscated source 18:45:07 http://www.google.com/search?q=hash%20table%20library 18:45:22 Deewiant, for C++ there are plenty, but not for C 18:45:22 looks like a decent amount of results :-) 18:45:31 the first one there is for C 18:45:36 hm yes 18:45:37 * AnMaster looks 18:45:53 the one referenced on the wikipedia page is also for C 18:46:09 I looked at the ones listed there 18:46:17 they were not 2D 18:46:32 they don't have to be 2D 18:46:35 oh? 18:46:44 you have two options basically 18:46:52 go on :) 18:46:53 1) what I do, have a hash table containing hash tables 18:47:06 mhm 18:47:15 2) use, as the key, something which contains 2 integers 18:47:40 either a struct or just a 128-bit integer with the higher bits as the y-coordinate and the lower as the x-coordinate or whatever 18:47:59 ok, that makes "SunriseDD" look good, assuming license works with GPL3, because it works with boehm-gc 18:50:24 CFUN eh 18:50:34 Deewiant, er yes? 18:50:37 is it in use? 18:50:47 don't think so 18:51:02 most use BEF or something instead of FUN 18:51:15 FUN as in FUNGE 18:51:20 yep 18:51:20 but true it is just 2D 18:51:50 Deewiant, does handprint have to be 4 chars? 18:51:58 no 18:52:03 it has to be a cell 18:52:08 in your case it could be up to 8 chars 18:52:15 since you have 64 bits 18:52:38 I wonder, what about BIGNUMs? 18:52:46 in that case it could be anything 18:52:52 indeed 18:53:15 because it doesn't matter whether other interpreters can represent it 18:53:45 Deewiant, does mycology only test befunge or trefunge too? 18:53:51 befunge only 18:53:59 would be really hard to make it work for both befunge and trefunge 18:54:00 and does it handle running under trefunges gracefully 18:54:04 no, not at all 18:54:08 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 18:54:15 or unefunges ;-) 18:54:17 Deewiant, it should check size of vectors :) 18:54:29 tricky in 80x25 chars 18:54:32 because if it does that, it can run under any funge > 2 18:54:38 Deewiant, well I mean for funge98 18:54:45 it'd have to be done for funge93 too 18:54:52 oh? 18:54:58 Deewiant, 80x25xwhat? 18:55:02 funge93 has p and g 18:55:04 which use vectors 18:55:17 for trefunge93 I mean 18:55:26 beats me 18:55:41 but I guess you're right in that way, -93 didn't specify anything other than 2D 18:55:42 does trefunge93 exist even? 18:56:05 but still, it'd be tricky for funge98 as well 18:56:14 since it'd have to be done /every time/ a vector is pushed/popped 18:56:27 unless you mean just branching and saying "not befunge" the first time 18:56:35 nah, not at all 18:56:48 you check it once, then do some self modifcation 18:56:56 to change all p/g instructions 18:56:59 err 18:57:07 there are a lot more instructions than just p and g that use vectors :-P 18:57:07 you should leave place around 18:57:09 of course 18:57:14 Deewiant, yes all those twoo 18:57:15 too* 18:57:16 it's too difficult 18:57:19 intractable in fact 18:57:28 Deewiant, but not inpossible 18:57:30 once again, since you can't tell what direction an instruction is entered from 18:57:32 it's impossible 18:57:41 and consider y for instance 18:57:48 yes? 18:57:49 it pushes 5 vectors 18:58:05 you do y once, to find out whatfunge it is 18:58:15 how would you programmatically modify anything that uses y to deal with arbitrary-sized vectors 18:58:20 since the code would be very spread out 18:58:29 then you go into self modification mode, and add the needed code around each place 18:58:32 using p 18:58:39 to change the mycology program itself 18:58:41 how would you find 'the place' 18:58:48 'each place' that is 18:58:55 it's impossible, I tell you 18:58:56 Deewiant, store it as incomplete vectors? 18:59:12 and then add the extra 0 needed :) 18:59:21 how would you store it like that 18:59:29 here's some code: aa+y 18:59:44 -!- slereah__ has joined. 18:59:46 modify that to work under a dimensionality given on top of the stack :-) 18:59:51 yes then you store say 53 or wherever it is at 19:00:07 the position of that aa 19:00:15 haha 19:00:25 for every use of vectors, store the position somewhere? :-D 19:00:36 no thanks 19:00:44 Deewiant, yep, and then once you find out the dimension count, change those places 19:01:02 pad the vectors to p that change them with 0 19:01:12 as needed 19:01:22 it'd probably be easier to check the dimensionality separately at each place :-D 19:01:22 Deewiant, look, it isn't impossible 19:01:23 ! 19:01:32 it's impossible programmatically 19:01:40 you need to change the original code beforehand 19:01:45 err no? 19:01:53 yes, because you need to store all those places 19:01:56 just leave some spaces around that you can fill out 19:02:15 to support a fixed set of n dimensions 19:02:42 exactly 19:02:55 so first of all that limits you to a static number of dimensions 19:03:01 no wait, you don't need to 19:03:08 and second, that's changing the original code 19:03:13 all you need is a sub routine 19:03:25 simple you told someone here yourself how to 19:03:28 jump and so on 19:03:54 it's not that simple 19:04:02 there are instructions that do X, then pop a vector, then do Y 19:04:07 or s/pop/push/ 19:04:20 you'd need a subroutine for each such instruction 19:04:25 not just p/g 19:04:37 just a make vector subroutine 19:04:38 :) 19:04:50 that you can use for p/g/whatever 19:05:04 even for x 19:05:21 but still, this is all changing the original source 19:05:25 Deewiant, also vector isn't hard, in that case, all you need is 0 in the extra dimensions right? 19:05:31 what I mean is that you can't tractably do the following: 19:05:35 so if stack is empty after vector 19:05:49 then all will be + 19:05:50 eh 19:05:51 0 19:05:55 write befunge code that loads mycology.b98 and modifies each vector use to work for any number of dimensions 19:05:59 without changing mycology.b98 19:06:06 beforehand 19:06:13 Deewiant, no I didn't say that 19:07:19 that's what I was thinking when I said impossible 19:07:31 of course, if you can rewrite the whole code, it's possible 19:07:35 just ugly :-P 19:07:40 and overly tricky 19:07:54 it's much easier for the interpreter to allow specifying dimensionality 19:08:06 since nobody's going to write a Funge interpreter which doesn't execute Befunge ;-) 19:08:41 Deewiant, err what about unefunge? 19:09:12 s/Funge/greater-than-2-Funge/ 19:09:14 nitpicker :-P 19:09:19 hah 19:09:37 also what about "extra dimensions on demand" style funge 19:09:44 that would be nice 19:10:20 Deewiant, wouldn't it? 19:10:21 Deewiant: aren't all Befunge programs also legal Trefunge programs? 19:10:28 ais523: nope 19:10:32 (although they'll get the number of elements in a vector wrong) 19:10:35 ais523, nop, because of vector size 19:10:38 so that won't work 19:10:48 ais523: consider 102p 19:10:54 of course they are legal 19:10:56 that should put 1 at the position (0,2) 19:10:58 just won't do the same thing 19:11:06 Deewiant, assuming befunge 19:11:10 in trefunge, it'd put whatever was on the stack beforehand at the position (1,0,2) 19:11:35 ais523, Deewiant: still legal, just won't do the same 19:11:36 clearly, dimension-independent vectors are needed 19:11:37 AnMaster: yes, of course. Always assume Befunge unless I say otherwise :-) 19:11:41 ais523, yes 19:11:42 so that we can have Hilbert-space-funge 19:11:49 ais523, err what? 19:11:56 AnMaster: infinitely many dimensions 19:12:06 AnMaster: university stuff ;-) 19:12:07 ais523, yes, but how do you indicate end of vector 19:12:12 ah got an idea: 19:12:14 AnMaster: just give the size 19:12:16 only finitely many of which are allowed to be anything other than 0, so that it's possible to store coordinates in finite size 19:12:20 ah yes 19:12:35 Deewiant, first in vector: size of vector 19:12:38 rest is vector 19:12:41 yep 19:13:10 Deewiant, now that would need some substantial redesigning or a fingerprint of some kind 19:13:35 ais523, err? 19:14:04 AnMaster: you can specify vectors by giving a number of coordinates and listing the first few 19:14:16 because as only finitely many can be non-zero, there must be some highest non-zero coordinate 19:14:27 AnMaster: INDV/PNTR supports arbitrary-dimensional vectors 19:14:40 AnMaster: I think. 19:14:42 at least some fingerprint did. 19:14:49 Deewiant, interesting 19:14:57 it would be easy enough to have a fingerprint that supports G and P as arbitrary-dimensional g and p 19:14:59 not in this way, I don't think, but in some way. 19:15:14 ais523, also need X too 19:15:33 it wasn't INDV. 19:15:33 does y return any vectors? I can't remember offhand 19:15:33 or you couldn't jump into those dimensions 19:15:34 ais523, it does 19:15:38 oklokok: you were asking about functions: there's the SUBR fingerprint 19:15:40 so Y too 19:16:11 Deewiant, hm fingerprints got to fit in a cell? 19:16:14 they don't do they? 19:16:17 nope 19:16:24 or yep, actually 19:16:26 or wait 19:16:29 not sure 19:16:32 read the spec :-P 19:16:45 can I make fingerprints that would only work on 64-bit funges is the question 19:16:50 AnMaster: JSTR is the fingerprint I was thinking of 19:17:10 Deewiant, modified rcfunge right? 19:17:19 yep, jesse van herk's 19:17:22 btw, the rcfunge with SGNL didn't compile 19:17:29 had to remove SGNL thing 19:17:31 quite possible 19:17:36 and this is unix 19:17:45 so it should work 19:17:46 like said, POSIX is a bad thing ;-) 19:17:55 Deewiant, it isn't 19:18:00 I'm on cygwin so I think I removed SGNL and WIND 19:18:10 or rather, I tested it on cygwin 19:18:13 Deewiant, anyway WIND is just a crappy idea 19:18:29 I agree, which is why I didn't implement it :-) 19:18:32 it should be QT of course 19:18:33 :D 19:18:38 baah 19:18:42 or maybe XLIB or GTK+ 19:18:48 I think using Funge for GUIs is just worthless :-P 19:18:52 because those two would fit into 4 chars 19:19:03 AnMaster: and yes, a fingerprint has to fit in a cell 19:19:11 Deewiant, according to that principle, funge is worthless 19:19:15 Deewiant: are you aware of Deltaplex 19:19:20 s/$/?/ 19:19:23 ais523, what is it? 19:19:36 it's a fungeoid designed for GUIs, graphics, etc. 19:19:41 AnMaster: no, I just think GUI programming isn't Funge's forté ;-) 19:19:46 it even has 3-D graphics commands and mouse support built in 19:19:48 ais523, eww 19:19:50 AnMaster: http://www.esolangs.org/wiki/Deltaplex 19:20:12 Deewiant, then you should drop TURT too :P 19:20:14 * ais523 has the Esolang Firefox search widget 19:20:30 AnMaster: nah, TURT isn't for GUIs, it's for drawing pictures 19:20:33 drawing pictures isn't Funge's forté 19:20:53 Deewiant, tell me what is Funge's forté? 19:21:09 AnMaster: obfuscated code :-) 19:21:20 it is an /esoteric/ language after all 19:21:27 yes 19:21:35 not drawing pictures then! 19:21:41 true 19:21:49 I just liked the idea of TURT 19:21:52 seemed to fit the theme 19:22:13 * ais523 was under the impression that Befunge was originally invented to be hard to compile 19:22:25 ais523, indeed 19:22:26 yes, I believe so 19:22:29 and it is 19:22:45 I wouldn't even try to, even without anything like p 19:22:54 it's probably harder to compile than Unlambda, which is itself traditionally hard to compile 19:22:55 essentially impossible to compile for modern arches, unless you count embedding the interpreter into the executable 19:23:03 since it relies on self-modifying code so much 19:23:06 or can rely 19:23:09 Deewiant, you know W^X/NX/PaX/misc/other/names 19:23:11 ? 19:23:20 * ais523 is working on a language that Unlambda compiles to, and that can be compiled to C 19:23:31 AnMaster: the data execution denial bit or whatever? 19:23:38 No Execute thing, either pages are write or execute, but not both at same time indeed 19:23:44 well that would break for funges 19:24:00 so you can't compile it 19:24:04 yeah, that effectively disallows all self-modifying code I believe 19:24:08 and run it on any sane system 19:24:15 Deewiant, well JITs does work around it 19:24:36 and pure interpreters too 19:24:54 * AnMaster ponders NX bit for funge, per-cell 19:25:00 :-) 19:25:00 as a fingerprint 19:25:01 :) 19:25:12 best make it possible to set an area in one instruction then 19:25:19 yep indeed 19:25:24 anyway I won't do that yet 19:25:53 also, following style of how hardware NX works, it shouldn't just reflect, but instead terminate current IP 19:25:54 :D 19:26:08 that'd work too 19:26:13 it's to protect against bugs, after all 19:26:51 so you'd set the NX bit on code after executing it once, and then if it ever goes there again it'll fail gracefully 19:27:02 err no 19:27:05 ah yes 19:27:11 :-P 19:27:13 and NoWrite bit too 19:27:15 as well 19:27:21 well, not necessarily 19:27:24 you can use it for scratch space 19:27:26 yes both are useful 19:27:33 NX for scratch space 19:27:35 sure, const :-D 19:27:38 and NW for code space 19:27:43 Funge++ 19:27:46 NX? 19:27:53 ais523: http://en.wikipedia.org/wiki/NX_bit 19:27:53 ais523, No eXcute 19:28:01 eXecute* 19:28:16 Deewiant, we need a NoRead bit too of course 19:28:22 for write only data 19:28:26 no idea about use 19:28:29 :-D 19:28:33 INTERCAL has a setting that can be placed on a command to prevent it running more than once 19:28:35 but I'm sure someone could make one 19:28:39 (it becomes a NOP after it runs, but can be reset) 19:28:46 ah, there's an idea 19:28:59 Deewiant, also, what about vectored IO for funge? :D 19:29:04 it's used for multithreading synchronisation, and also a convenient way to write an if statement 19:29:08 AnMaster: a fingerprint that sets a mode, so that whenever an instruction is executed it becomes the given instruction 19:29:17 like zM - after that, all executed instructions become zs after executed 19:29:25 'zM rather 19:29:35 yes I know that 19:29:38 you'll end up inventing Malbolge at that rate 19:29:42 :-) 19:30:09 anyone up for the task of writing a malbolge interpreter in befunge? 19:30:46 how about a befunge/malbolge quine 19:30:49 one generates the other 19:31:10 Deewiant, not going to try that 19:31:12 I'm not insane 19:31:23 writing a malbolge interpreter however, isn't as hard 19:31:27 :-) 19:31:36 ... as writing any program in malbolge 19:31:37 malbolge interps are quite easy, normally 19:31:38 the point about malbolge isn't to write interpreters, it's to try and write programs 19:31:51 Deewiant, it is about saneness 19:31:55 although I think it might be impossible to write one in Befunge-93 without some sort of extra storage 19:31:58 I'm not going to write in malbolge 19:32:04 ais523, indeed 19:32:25 maybe someone should invent a 2D version of malbolge 19:32:25 ais523, err what? 19:32:26 no 19:32:34 -93 sucks 19:32:36 that combines the worst aspects of malbolge and befunge 19:32:40 you can load files into befunge98 19:32:59 so just use 98 19:32:59 -_- 19:33:01 * ais523 agrees with Deewiant about -93's lack of storage, or indeed, TCness 19:33:01 AnMaster: as he said, Befunge-93 19:33:01 of course you're fine in -98 19:33:06 true 19:33:09 or well no 19:33:13 you are insane still 19:33:14 :P 19:33:28 (not that I'm claiming to be sane myself in any way!) 19:33:34 AnMaster: any Befunge-98 implementation should easily be able to fit 59049 10-trit words into the playfield memory 19:33:51 ais523, indeed 19:33:51 yes, 'should'. Might not, though. :-) 19:34:08 case in point: a few interpreters crashed on loading mycology 19:34:11 and Malbolge itself is basically an evilly twisted version of assembler 19:34:21 Deewiant, oh? what ones? 19:34:37 AnMaster: can't remember... befunge98 at least 19:34:39 Deewiant: interfunge does that, but to be fair it's designed as a Befunge-93 implementation and doesn't like strings longer than 80 characters on the input 19:34:46 Deewiant, interesting 19:34:55 ais523, err no 19:35:04 ais523, it should discard the extra data 19:35:05 :P 19:35:10 AnMaster: basically here was a bug in his octree code and he 'fixed' it by enlarging the default size :-) 19:35:14 s/here/there/ 19:35:23 Deewiant, lol 19:35:23 AnMaster: CLC-INTERCAL requires you to know the length of a string before you can input it 19:35:43 ais523, then you can't write a conforming interpreter in that language 19:35:44 sorry 19:35:49 not even 93 one 19:35:53 although interfunge is written in C-INTERCAL and therefore should be able to handle line-ends with extra code 19:36:02 ais523, there you are then 19:36:12 you also need to type two newlines at EOF because INTERCAL can't detect an EOF; it errors out instead 19:36:38 ais523, well you would need to pre-process your code then 19:36:39 although I have cunning plans to get around that which involve multithreading 19:36:49 oh god 19:36:59 look, intercal is even more insane than befunge 19:37:10 Befunge always struck me as relatively sane 19:37:18 but then I have a nonstandard set of things to compare it to 19:37:46 btw didn't someone from this channel prove that something was turing complete and win some kind of price for it? 19:37:54 must have been a few months ago 19:38:09 AnMaster: that was me 19:38:14 oh 19:38:29 I looked at the proof pdf or whatever it was, and didn't understand it 19:38:38 there isn't anything very difficult in there 19:38:42 it just goes on and on and on 19:38:43 ais523: what did you prove 19:38:45 me neither :D 19:38:49 I will read it again 19:38:52 that a particular Turing machine was Turing-complete 19:38:55 ais523, how much money= 19:38:57 was it 19:39:00 $25000 19:39:05 although that comes to less in pounds 19:39:13 that is quite a lot I think *coverts to SEK* 19:39:14 ais523: is this on the 'Net somewhere? 19:39:23 http://www.wolframprize.org/ 19:39:26 what did you do with the money? :P 19:39:27 oh, that one 19:39:32 faxathisia: put it in the bank 19:40:12 ais523, still a LOT 19:40:14 although I used a small amount of it to buy this laptop 19:40:16 25 000 U.S. dollars = 152 887.432 Swedish kronor 19:40:18 indeed a lot 19:40:27 enough to buy a car 19:40:40 (small car that is) 19:40:45 or, in my case, just about cancel out my student loan 19:40:54 ah nice 19:40:55 of course, the dollar was much more valuable 6 months ago :-) 19:41:06 bad luck 19:41:20 or rather, good luck that he got the money then and not now 19:41:30 assuming he did get the money back then, and not now :-P 19:41:32 ah maybe? 19:41:33 yes 19:41:35 right 19:41:50 was thinking in reverse 19:41:53 too much befunge 19:41:57 heh 19:42:19 Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time 19:42:42 ais523, err? 19:42:48 it wasn't very efficient 19:42:52 I'm sure mine isn't that effective 19:42:52 I actually thought about that competition when I first saw it, but then I figured it'd be too tedious :-) 19:42:55 at least not the way I programmed it 19:43:15 probably wouldn't have bothered to finish it if I did start it 19:43:19 ais523, ? 19:43:22 kudos for getting it done :-) 19:43:36 AnMaster: the input program is ridiculously long and repetitive 19:43:37 AnMaster: he's talking about wolfram's turing machine 19:43:47 ah 19:43:50 he said befunge too 19:43:53 Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time 19:43:53 (in fact, infinitely long, but finitely many characters can run a program for any finite time) 19:44:10 ais523: yes, where "some turing machine" is wolfram's 2,3 turing machine :-) 19:44:12 err 19:44:13 AnMaster: ^ 19:44:17 ah 19:44:19 right 19:44:45 ais523, wouldn't emulating P'' be the best option? 19:44:50 ais523: but wasn't there something about the proof being flawed? 19:44:57 AnMaster: I emulated cyclic tag systems 19:45:05 ais523, that is? 19:45:10 and as for the argument about the proof, the original concern was based on a misconception 19:45:30 although new concerns emerged as a result which basically demonstrated that nobody is entirely sure exactly what Turing-completeness is anyway 19:45:47 ais523, err, indeed I'm not sure of that 19:45:55 and although my proof is correct, it lead to an argument about whether what it demonstrated was useful or not 19:46:11 ais523, as long as you got the money! ;) 19:46:12 as in, whether the definition of TCness I used was appropriate and/or interesting 19:46:33 but the argument died down suddenly in the middle when the list moderator went on holiday, and never resumed 19:46:39 :-D 19:46:45 (that is, the argument, not the moderator) 19:46:51 heh 19:46:58 ais523, so well was it useful or not? 19:47:02 I think it was 19:47:47 anyone who actually followed through the entire proof - that is, me and at least one of the judges, and possibly other people - realises that I emulate all features of the cyclic tag system in the original Turing machine 19:47:52 s/realises/realised/ 19:47:57 so it's definitely a valid emulation 19:48:10 however, most mathematicians prefer to take a black-box approach to Turing-completeness 19:48:21 which means that you need to be very careful with definitions 19:48:30 and my proof hit the gray area that nobody was sure about 19:48:39 in terms of a black-box approach 19:50:23 ais523, oh? 19:50:30 what does black box mean in this case 19:50:54 that you deduce whether something is TC by applying certain tests to an emulation 19:50:58 rather than seeing how the emulation works 19:51:08 mhm 19:51:31 I don't really aprove of the approach myself, but mathematicians like it because the other method is often hard to define rigorously 19:52:26 Deewiant, wtf is the point of the fingerprint TOYS 19:52:44 AnMaster: like it says, it's toys - random stuff 19:52:55 btw, I'll take this moment to ask 19:52:59 and most pointless, and with silly names 19:53:05 (incidentally, a number of other esolangs came out of the proof. 1cnis came out indirectly, and I invented certain other languages which qualify as esolangs as stages in the proof, although system 5 is probably the only interesting one) 19:53:12 Deewiant, ...where you can get my code? 19:53:16 does anybody know what 'the result of a "butterfly" bit operation' is?! 19:53:27 AnMaster: it's in tribute to INTERCAL character names 19:53:32 Deewiant: yes 19:53:42 aha 19:53:46 you take the sum and the difference of two numbers, then multiply the differenceby a constant 19:53:56 ais523: and what's the constant 19:53:58 it's an operation in Fourier transforms 19:53:59 B ('pair of shoes') pops two cells off the stack and pushes the result of a "butterfly" bit operation. 19:54:09 how am I to understand that 19:54:11 hmm... maybe it's a different operation 19:54:24 because you have to provide the constant in the butterfly operation I know about 19:54:29 and besides, mine isn't bitwise 19:54:31 Deewiant, what does CCBI do for that? 19:54:43 the same as !Befunge 19:54:50 and what does it do? 19:54:54 which has a "/* Guess what this is meant to be... */" comment in the code :-P 19:54:58 umm, befunge actually doesn't have an operator that digs up n deep in the stack and pushes that on top? 19:55:01 it's the only one that implements anything at all 19:55:09 oklokok: nope. only the FRTH fingerprint has something like that 19:55:18 oklokok, of course not 19:55:20 lame :< 19:55:24 AnMaster: of course? 19:55:43 AnMaster: it pushes the sum and then the difference of the values and then reflects 19:55:47 oklokok, of course as it would make coding much easier, and we already used all ASCII chars below 127 19:55:48 :P 19:55:52 that are printable 19:55:53 AnMaster: and outputs a warning if in warning mode, etc. 19:56:06 Deewiant, interesting 19:56:14 mine doesn't reflect but otherwise does the same 19:56:17 Deewiant, who wrote the TOYS thing? 19:56:22 k could be replaces 19:56:24 *replaced 19:56:26 it's useless 19:56:27 the specs I mean 19:56:29 I'm guessing it reflects because the constant wasn't provided...? 19:56:31 oklokok, it isn't! 19:56:37 yeah it is 19:56:39 AnMaster: since it's part of the standard, probably chris pressey 19:56:49 oklokok: Underlambda is going to have a very similar combinator 19:56:49 Deewiant, then, why not ask him? 19:56:53 ais523: possibly 19:57:08 AnMaster: he posted back in 2000 or so that he's 'not very interested in befunge' anymore or something like that :-) 19:57:26 ais523: i'm sure it has a use in underlambda 19:57:26 AnMaster: I figured I'd take the route of implementing everything I can find currently 19:57:28 Deewiant, aha, that explains why I got no answer on my license mail 19:57:31 AnMaster: or choosing not to 19:57:38 AnMaster: and then just leave it at that. 19:57:50 it's just befunge doesn't have many operators worth iterating alone. 19:57:57 AnMaster: yeah, maybe he automatically filters everything with 'befunge' in it ;-) 19:58:01 oklokok, yes it does 19:58:04 like what? 19:58:08 * / \ : and a few more 19:58:09 :) 19:58:15 $ for instance 19:58:22 2222222222222222 88+k* 19:58:24 $ and , are the ones I use 19:58:28 what does that result in? 19:58:30 pop makes sense in some cases 19:58:32 yes , too 19:58:43 but unfortunately using k, turned out to be a bad idea 19:58:48 since interpreters implement k differently 19:58:51 so the output becomes b0rked 19:59:04 Deewiant, well thanks to mycology it won't any more 19:59:23 AnMaster: but I still can't use it in mycology itself :-) 19:59:32 and I probably won't be writing much more befunge :-D 19:59:41 Deewiant, why not? 19:59:47 -!- faxathisia has quit (Connection reset by peer). 19:59:48 are you also no longer interested in the language 19:59:49 :( 20:00:03 I've written more befunge than all others on this planet put together :-D 20:00:22 you are sure? 20:00:23 I was interested in implementing it and then writing that test suite, for fun 20:00:32 of course not 20:00:35 but probably 20:00:35 ah 20:00:38 indeed 20:00:51 Deewiant, however that guy with the crazy domain name comes close I think 20:00:55 but yeah, I never felt like I'd /use/ Befunge for something 20:01:10 AnMaster: not necessarily 20:01:20 Deewiant: I wrote a few Befunge programs as anarchy golf entries 20:01:26 befunge would be nice for mission critical stuff, because it won't crash, it just reflects instead 20:01:27 but I'm not very good at Befunge golfing 20:01:34 so you can know your program won't end 20:01:38 unfortunately it only supports Befunge-93 20:01:46 Mycology is over 100K of Befunge 20:01:48 AnMaster: it could get stuck in an infinite loop easily 20:01:52 ais523, yes indeed 20:01:57 a quick look at J^4 suggests he's written around 30K, maybe 20:01:59 but it wouldn't actually end 20:02:01 or published, at least 20:02:13 if you count nonpublished then I go up to over 200K probably 20:02:27 Deewiant, he likely written more, backspaced written more backspaced again 20:02:34 considering how hard it is 20:02:35 :) 20:02:36 AnMaster: so have I :-) 20:02:51 heh true 20:04:01 the Befunge-93 section of Mycology has been fully rewritten 4 times, I believe 20:04:13 the first time it was much more readable 20:04:19 but it didn't come even close to fitting in 80x25 20:04:25 hah 20:04:40 it looked a bit like the befunge code you showed me you wrote :-) 20:04:42 Deewiant, it isn't readable at all now 20:04:43 although not quite as sparse 20:04:49 yes, because it has to fit in 80x25 20:04:59 and nor is the rest of the code -_- 20:05:03 Deewiant: how much do you cross code over itself? 20:05:06 yes, because I was naïve :-S 20:05:14 ais523: too much, I'd say :-) 20:05:25 ais523, way to much for Deewiant 20:05:26 -!- Hiato has joined. 20:05:33 I avoid doing it when possible 20:05:43 have you seen SNUSP? 20:05:49 ais523, what is that? 20:05:57 http://www.esolangs.org/wiki/SNUSP 20:06:01 it's basically a cross between Befunge and Brainfuck 20:06:08 urgh? 20:06:13 befunge with ] and [ 20:06:13 but with procedures added in (in Modular SNUSP) 20:06:17 and # 20:06:27 and something weird 20:06:29 Deewiant, err befunge got # 20:06:30 which looks like !j 20:06:35 making it really elegant to write constants 20:06:37 AnMaster: err, brainfuck not befunge 20:06:58 Deewiant, and brainfuck got [ and ] 20:07:10 AnMaster: not befunge's ] and [ :-) 20:07:21 SNUSP doesn't use either 20:07:30 just ! as a trampoline 20:07:31 Deewiant, true 20:07:37 and ? as a maybe-trampoline depending on the current tape element 20:07:59 ais523: which I think is equivalent to !j 20:08:14 * ais523 tries to remember what j does 20:08:33 jumps ahead a given number of cells 20:08:58 in that case, yes it's equivalent, apart from only taking up one funge-space cell 20:09:15 yep 20:11:00 Modular SNUSP is the most interesting part of it, though, in my opinion 20:11:10 especially the base-Fibonacci constants 20:11:19 that work using recursive procedure calls 20:25:01 Deewiant, 20:25:03 BAD: ( should have reflected trying to load nonexistent fingerprint 0 20:25:10 does it say anywhere it can't exist 20:25:16 what if I make one with that number? 20:25:40 AnMaster: then Deewiant will add it to Mycology and change the number of the nonexistent one 20:25:50 exactly :-) 20:25:53 now, an interp which had a fingerprint for /every/ 32-bit number might be interesting 20:26:01 ais523, heh :) 20:26:01 AnMaster: but actually, many interpreters define 0 as some sort of internal fingerprint 20:26:12 Deewiant, so that could be a problem then 20:26:25 anyway now mine reflects on any fingerprint 20:26:31 doesn't the spec say that all fingerprints have to be registered? 20:26:33 I haven't coded fingerprints yet 20:26:33 AnMaster: it's part of the reason I chose that fingerprint :-) 20:26:39 so just the y mess left :D 20:27:00 and the sparse thing 20:27:11 so you get to the end? 20:27:18 -!- Hiato has left (?). 20:27:21 Deewiant, I do 20:27:25 not bad :-) 20:27:26 Deewiant, http://rafb.net/p/SNzhKr58.html 20:27:37 still a few BAD around y stuff though 20:29:38 Deewiant, so still some stuff needed to be done 20:29:43 yep 20:29:55 oh and I think mycouser works 20:30:20 Deewiant, no longer the < in mycouser 20:30:26 got no idea what I changed 20:30:30 heh 20:30:39 Deewiant, still the horrible grammar though 20:30:40 :( 20:30:45 UNDEF: BASE fingerprint not loaded, won't check I. 20:30:52 it's absolutely correct 20:30:56 that's just not correct English 20:30:56 I is the instruction that isn't checked 20:31:01 ah 20:31:12 it looks like it's horrible grammer 20:31:16 not to me 20:31:21 since "I won't check" would be equally horrible 20:31:23 adding quotes of some kind around would work 20:31:25 because check needs an object 20:31:28 maybe 20:31:32 but I'm really tight for space already 20:31:45 Deewiant, it doesn't need to fit in 80x25 does it? 20:31:53 I'd prefer it did 20:32:10 since strictly speaking I guess it's valid for a befunge-93 to error out on seeing a file bigger than 80x25 20:32:12 why? 20:32:22 is it? 20:32:31 well, it's probably unspecified 20:32:41 it only says "programs are 80x25" or something probably 20:33:18 * AnMaster notes: add support for stuff like command line parameters 20:33:29 command line parameter parsing is easier to do in bash than C :/ 20:33:38 heh 20:33:43 "Befunge-93 programs have a maximum size of 80x25 total commands and data bytes" 20:33:45 since you're going posix, use getopt, right 20:33:57 implying that any program that's larger isn't valid Befunge-93 20:33:59 yeah, so strictly speaking a befunge-93 program /should/ error on seeing 80x25 20:34:04 er, bigger than 80x25 20:34:26 * ais523 guesses that those dimensions are because they're the standard dimensions of characters on the screen in DOS 20:34:38 Deewiant, getoptlong though :/ 20:34:48 is gnu only 20:34:52 AnMaster: beats me, haven't used getopt 20:35:02 * AnMaster checks gnulib for a getoptlong version 20:35:10 I use the good old way of writing help strings manually and iterating over argv :-) 20:35:28 Deewiant, and that is silly 20:35:39 works fine for me 20:35:41 I would never do that in C 20:35:49 well, in C it sucks a bit more 20:35:52 if windows doesn't have getopt, it can 20:35:52 since you have to use strcmp 20:37:35 C-INTERCAL uses getopt if it's available, but provides its own minimal-but-good-enough version for if it isn't 20:37:51 and autoconf detects whether it's available or not and selects the right version 20:38:09 ais523, autotools :( 20:38:09 -!- oerjan has joined. 20:38:11 * AnMaster use cmake 20:38:21 brb 20:38:22 AnMaster: it only uses autoconf, not the other autotools 20:41:13 I won't use that either 20:43:12 I even wrote some special INTERCAL-specific tests 20:43:33 (one of them tested for the presence of undocumented behaviour in yacc that some of the pre-existing program depended on) 20:51:15 Deewiant: I just noticed that Mycology uses the string 2+2 for testing the PERL fingerprint 20:51:23 aye 20:51:34 that string's a palindrome, so if 0gnirts communication fails by getting the string backwards, you won't notice 20:52:03 true 20:52:31 8/2 would be one way to solve that problem without modifying anything else 20:52:53 I was thinking 3-1 20:52:59 hmm, is that problematic 20:53:11 er, 5-1 of course 20:53:15 it's unlikely to be a problem in practice 20:53:27 but then, most of what Mycology tests is unlikely to be a problem in practice 20:53:33 ;-) 20:53:44 it's just that various interps fail at various different points 20:54:00 multiple things each of which is unlikely to fail, together may be likely for /something/ to fail 20:56:00 ais523: mind if I credit you with your realname on my website? 20:56:07 Deewiant: no 20:56:32 although you may want to use my actual realname, not the one I use on IRC 20:56:40 which is obviously not a real realname 20:56:41 :-) 20:56:50 (it doesn't matter in here, but it does matter in some other channels) 20:58:04 hah, mr. This Is, that's just something you _say_ 20:58:27 another point: ccbi fails Mycology's tests for K in FPSP, at least on my computer, by giving 0 for ln(2) 20:58:41 but it's sneakily marked as UNDEF: on the actual test due to issues with rounding 20:58:46 of course 20:58:57 it may be a case where single-point precision simply can't hold the actual value 20:59:02 strangely the FPDP version is correct 20:59:10 that's double-point precision 20:59:15 so it is more likely to be correct :-) 20:59:17 and I'm sure that 0.693 can be held more accurately than 0 in single-precision floating point 20:59:27 I am checking 20:59:48 UNDEF: K says ln(2) is 0.693147 (0.693147) 20:59:51 works fine here 21:00:03 must be something at my end, then 21:00:23 and also on a school linux comp 21:13:09 ais523, what arch? 21:13:23 Ubuntu 7.10 21:13:27 running on x86 21:14:31 hm 21:14:50 I just got a nice idea 21:14:56 Linux iruel.hut.fi 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686 GNU/Linux 21:15:03 use SSE vector instructions for delta and such 21:15:03 ais523: worked on such 21:15:10 Deewiant, what do you think? 21:15:18 as a #ifdef 21:15:26 Linux dell 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux 21:15:35 using gcc intrinsics of course 21:15:38 AnMaster: well, you'd have to benchmark to see if they're actually faster 21:15:42 but it's likely just a misconfiguration of gdc or tango or something at my end 21:15:46 Deewiant, they probably aren't 21:16:09 Deewiant, anyway it finishes mycology fast enough without using -O even so... heh 21:16:38 real 0m0.367s 21:16:38 user 0m0.076s 21:16:38 sys 0m0.022s 21:16:47 Deewiant, how would ccbi do with no fingerprints? 21:16:56 of course, you realize it's only executing a fifth or so of mycology :-) 21:17:02 beats me 21:17:15 Deewiant, I'm aware of that, and it is compiled as 64-bit 21:17:17 real 0m4.975s 21:17:17 user 0m0.718s 21:17:17 sys 0m0.104s 21:17:19 for ccbi 21:17:27 but note! 21:17:35 amd64 got more registers than x86 21:17:43 about twice as many CPU registers iirc 21:17:56 AnMaster: pipe output to /dev/null, how about then 21:18:19 also, and this may be a disadgantage, my code is compiled as -fpic for some reason (blame cmake!) 21:18:21 real 0m2.236s 21:18:21 user 0m0.707s 21:18:21 sys 0m0.050s 21:18:22 for ccbi 21:18:35 real 0m0.243s 21:18:36 user 0m0.073s 21:18:36 sys 0m0.017s 21:18:37 for cfunge 21:18:47 damn, that's slow 21:18:51 real 0.66 21:18:51 user 0.58 21:18:51 sys 0.04 21:18:56 for CCBI on a school linux comp 21:19:01 and /dev/null 21:19:17 os[Linux 2.6.24-gentoo-r2 x86_64] distro[Gentoo Linux (stable)] cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz] mem[Physical : 1.5GB, 46.7% free] disk[Total : 92.82GB, 29.40% Free] video[nVidia Corporation G73 [GeForce 7600 GS]] sound[EMU10K1 - SB Live 5.1] 21:19:36 128 kb cpu cache 21:19:42 odd 21:20:00 well, I dunno 21:20:02 sempron 3300+ 21:20:47 -!- GregorR has quit (Read error: 113 (No route to host)). 21:21:06 well, okay 21:21:10 these are apparently Intel Celeron 2.4 Ghz 21:21:25 so beats me 21:22:49 Deewiant, well a 64-bit version of ccbi would likely be faster 21:22:55 let me try mine with -O 21:23:15 AnMaster: yeah, but I doubt it'd make that big a difference 21:23:22 or maybe it does, then, whatever 21:23:56 -O3 21:23:57 real 0m0.216s 21:23:58 user 0m0.047s 21:23:58 sys 0m0.019s 21:24:05 with cfunge of course 21:24:06 Deewiant: -O2 tends to be much better than -O 21:24:07 wait 21:24:13 AnMaster: that was for you 21:24:15 sorry 21:24:17 -O3 is only really an advantage over -O2 on embedded systems IME 21:24:27 I was compiling in background another thing now 21:24:28 real 0m0.170s 21:24:28 depends on the system and the code in question 21:24:29 user 0m0.045s 21:24:29 sys 0m0.020s 21:24:36 when I abort that compile 21:24:37 Deewiant, ^ 21:25:02 I'm surprised that there'd be a 4x performance penalty for running 32-bit code 21:25:19 Deewiant, depends on register usage 21:25:20 although hmm 21:25:24 real 0m0.234s 21:25:25 user 0m0.065s 21:25:25 sys 0m0.019s 21:25:27 I wonder if the linux ccbi one is compiled with optimizations :-) 21:25:28 with -Os 21:25:38 all these are average on 5 runs 21:25:40 Deewiant, ^ 21:25:54 AnMaster: your numbers mean nothing to me :-P 21:26:02 Deewiant, why not? 21:26:17 it is the normal way 21:26:17 mainly due to the 32/64-bit schism 21:26:21 and secondly, because I don't care much 21:26:39 well I'd try with -m32 except I got no 32-bit boehm-gc installed :P 21:27:13 yes, it seems that the ccbi binary has been compiled without optimizations 21:27:34 Deewiant, even with -O0 mine was fast 21:27:38 real 0m0.243s 21:27:42 * AnMaster points to that 21:27:48 AnMaster: one big difference between the two is how we do instructions 21:27:55 AnMaster: you probably have a big switch in a main loop, right? 21:28:14 Deewiant, well not in main loop no but in a ExecuteInstruction function 21:28:22 so I can call same from k 21:28:26 aye 21:28:29 and I got a if case first for string mode 21:28:34 I have hash tables containing function pointers 21:28:35 in execute instruction 21:28:43 which is immediately a huge performance penalty 21:28:48 Deewiant, I plan doing that for extensions 21:29:13 Deewiant, also I try to flattern out any structures 21:29:15 so rather: 21:29:16 aye, but especially with as good a compiler as GCC you're bound to get a huge performance boost over such 21:29:25 struct whatever { fungevector foo; .... } 21:29:44 than 21:29:44 struct whatever { fungevector * foo; .... } 21:29:50 not a huge difference 21:30:10 and there are two reasons for that I do so: less memory managment needed 21:30:22 faster theoterically 21:30:30 theoretically* 21:30:50 AnMaster: unless you need to make shallow copies of the objects inside 21:30:59 ais523, indeed 21:31:21 typedef struct { 21:31:21 FUNGEVECTORTYPE x; 21:31:21 FUNGEVECTORTYPE y; 21:31:21 } fungePosition; 21:31:21 typedef fungePosition fungeVector; 21:31:32 the reason for that is self documenting code partly 21:31:50 as in, I use the name vector when I mean a vector, and position when I mean a absolute position 21:31:58 makes it easier to read the code 21:34:11 AnMaster: there's a new CCBI binary up which may or may not be faster, but it's compiled with -O this time :-) 21:34:20 Deewiant, link? 21:34:28 iki.fi/deewiant/befunge/ccbi.html 21:34:41 Deewiant, page fails in lynx :/ 21:34:47 O_o 21:34:48 it shouldn't 21:34:50 and I don't want to start firefox 21:35:05 looks good here 21:35:13 ok, maybe lynx version then 21:35:29 Lynx Version 2.8.5rel.1 (04 Feb 2004) 21:35:47 Deewiant, you got a issue 21:35:55 $ ls -l 21:35:55 total 261 21:35:55 -rw-r--r-- 1 arvid arvid 263164 11 mar 2008 ccbi 21:35:55 -rw-r--r-- 1 arvid arvid 1508 7 jan 17.46 license.txt 21:36:04 you may want to set +x on binary in archive 21:36:04 issue? 21:36:09 I'm on windows 21:36:09 I don't know if zip can do it 21:36:10 impossible 21:36:13 but well tar can 21:36:16 tar.bz2 21:36:20 quite possible 21:36:22 is what I recommend for linux binaries 21:36:24 but like said, I'm on windows 21:36:28 where such distinctions don't exist 21:36:32 Deewiant, you crosscompiled? 21:36:38 Deewiant, I think cygwin does +x flag 21:36:39 no, I compiled it on a linux box 21:36:47 but I use UPX to compress it on windows 21:36:54 $ time ./ccbi ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null 21:36:55 real 0m2.418s 21:36:55 user 0m0.542s 21:36:55 sys 0m0.050s 21:36:56 that website seems to work fine for me in w3m 21:37:04 although I haven't tried to download any of the binaries from it 21:37:04 Deewiant, upx is bound to slow it down 21:37:05 AnMaster: heh, slower 21:37:10 as it need to uncompress binary 21:37:11 AnMaster: yeah, but it should be a small cost 21:37:22 AnMaster: the original binary is 1.3 megabytes 21:37:26 optimized that is 21:37:27 Deewiant, depends, it won't be if system enforce NX bit 21:37:29 like mine does 21:37:30 unoptimized it's 0.8 megabytes 21:37:39 AnMaster: ah, that can be a problem 21:37:51 Deewiant, in fact I suspect it will have to create a temp file to run on hardened systems 21:37:53 AnMaster: if you have upx, you can decompress it in place 21:37:59 Deewiant, I don't have upx 21:38:07 AnMaster: portage probably does 21:38:15 Deewiant, nor is it available for amd64 in a stable form 21:38:20 ah, darn 21:38:20 * app-arch/upx 21:38:21 Available versions: *1.25 ~2.02 ~3.00 21:38:26 * AnMaster tries to avoid running ~arch 21:38:33 though sometimes I have to 21:38:54 like for boehm-gc to get some stuff called "Extensible cords" 21:39:14 if you want, try iki.fi/deewiant/ccbi2 21:39:17 uncompressed 21:39:19 "Extensible cords are strings that may be destructively appended to. They allow fast construction of cords from characters that are being read from a stream." 21:39:22 sure 21:40:12 real 0m1.755s 21:40:12 user 0m0.520s 21:40:12 sys 0m0.055s 21:40:13 better 21:40:26 damn, that was a big difference 21:40:28 almost a second 21:40:37 op 21:40:46 and maybe the remaining second can be attributed to 32/64-bit differences 21:40:49 .4 + .3 != 1 21:41:06 0.7 ~= 1 21:41:11 Deewiant, it can't I tried mine as -m32 21:41:12 if you want, "over half a second" instead 21:41:14 it is almost as fast 21:41:23 well whatever 21:41:34 real 0m0.307s 21:41:34 user 0m0.076s 21:41:34 sys 0m0.015s 21:41:35 with 32-bit 21:41:51 if I could be bothered to get GDC running this might end up being a lot faster 21:41:57 but I can't, so. :-) 21:42:18 Deewiant, gdc is faster than dmd? 21:42:28 maybe 21:42:29 -!- RedDak has joined. 21:42:31 Deewiant, anyway function pointers in hash map is slower 21:42:35 with GCC 4.x, probably 21:42:40 of course, that's what I said 21:42:47 Deewiant, a static array index by char would be faster 21:42:48 it's much slower than whatever GCC compiles a switch to 21:43:06 yes, it would be 21:43:16 and a switch statement would be even faster :-) 21:43:28 Deewiant, tried that? I guess something on the lines of instructions[127] would be all that was needed 21:43:44 if you can do such stuff in D 21:43:58 AnMaster: would have to have extra checking for unimplemented instructions like control chars 21:44:04 and it'd have to be 255, of course 21:44:10 ok 21:44:25 so 21:44:36 and I might have to rewrite the way fingerprints are done, not sure 21:44:38 put the r instruction in the rest of the slots 21:44:39 :) 21:44:43 for control chars 21:44:53 aye 21:44:59 and why 255? 21:45:14 hmm, never mind actually 21:45:20 if (opcode < 127) { use array here } else { reflect here } 21:45:21 :) 21:45:27 there's a fingerprint that allows rewriting instructions 21:45:30 err actually 21:45:32 < 128 21:45:40 * AnMaster sucks at off by one issues in arrays 21:45:40 but it's implemented separately, doesn't modify the main instructions array 21:45:56 -!- olsner has joined. 21:46:04 Deewiant, anyway fingerprints, yes you would need some way to layer them 21:46:04 true 21:46:19 so for A-Z you would need something slightly different 21:46:20 they're done separately though 21:46:25 so it shouldn't matter 21:46:26 Deewiant, btw, want to see my switch case? 21:46:57 it's "inlined" mostly 21:47:04 http://rafb.net/p/Ry1n7736.html 21:47:07 XD 21:47:21 just k and y are outside 21:47:25 because they were so complex 21:47:31 ew, messed up indentation 21:47:33 and y is still broken 21:47:36 Deewiant, what? 21:47:39 I like that style 21:47:40 :) 21:47:44 O_o 21:47:47 do { 21:47:47 ipForward(1, ip, fspace); 21:47:47 } while (fungeSpaceGet(fspace, &ip->position) == ' '); 21:47:55 err that is pastebin messup 21:48:01 thought so :-) 21:48:14 do { 21:48:14 ipForward(1, ip, fspace); 21:48:14 } while (fungeSpaceGet(fspace, &ip->position) == ' '); 21:48:17 is how it looks here 21:48:33 Deewiant, and so it does on pastebin in firefox I notice 21:48:51 "show as plain text" looks smart 21:49:10 Deewiant, non-plaintext looks ok in konq and firefox 21:49:40 actually I wonder 21:49:50 I may have a off by one issue with ; 21:49:51 I'm on firefox 3 beta 3 21:49:59 Deewiant, firefox whatever the stable is on gentoo 21:50:07 2.0.0.12 prolly 21:50:09 [I] www-client/mozilla-firefox (2.0.0.12@2008-02-15): Firefox Web Browser 21:50:11 indeed 21:50:15 64-bit version 21:50:32 do { 21:50:33 ipForward(1, ip, fspace); 21:50:33 } while (fungeSpaceGet(fspace, &ip->position) != ';'); 21:50:39 doesn't that have a off by one issue? 21:50:49 as I forward at end of main loop once 21:50:52 or? 21:51:04 wait it doesn't 21:51:05 no, shouldn't be a problem 21:51:06 it's fine 21:51:08 as you forward up to the ; there 21:51:10 and then past it 21:51:47 Deewiant, anyway bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge08 21:51:51 if you want the whole thing 21:51:58 my bzrweb is currently broken 21:52:03 haven't had time to look at problem 21:52:13 so just go to bazaar-vcs.org 21:52:17 and get your copy today :) 21:52:22 :-) 21:52:23 maybe later 21:52:28 the best distributed version control system IMO :D 21:52:36 I like mercurial myself 21:52:38 * AnMaster ducks for git and mercurial dans 21:52:40 fans* 21:52:48 Deewiant, mercurial isn't too bad 21:52:50 it is git I hate 21:53:01 I don't like git because it doesn't work on windows :-) 21:53:07 or didn't, I guess it does now 21:53:09 http://changelog.complete.org/posts/698-If-Version-Control-Systems-were-Airlines.html' 21:53:13 err remove ' at end 21:53:14 yes, I saw that 21:53:24 ah? 21:53:35 * AnMaster saw it posted in #friendly-coders recently 21:53:43 I don't normally read blogs 21:53:49 I saw it on reddit myself 21:53:53 on what? 21:54:00 http://reddit.com/ 21:54:02 slashdot, dig and such: I don't do them 21:54:07 or digg or whatever 21:54:14 your loss :-) 21:54:19 although in the case of digg, maybe a win ;-) 21:54:26 hah :) 21:54:42 I got better things to spend my time on 21:57:46 * AnMaster wonders how a license like http://www.sunrisetel.net/software/devtools/sunriseDD/LICENSE can be GPL compatible 21:58:30 that library would otherwise provide the perfect hash table 21:58:57 "The Sunrise Data Dictionary is a library for lock-free hash table storage of arbitrary data objects with built-in reference counting and guaranteed order iteration for the C programming language. It can be used with the Boehm garbage collector, participate in external reference counting systems or use its own built-in reference counting. It comes with a variety of built-in hash functions and allows t 21:58:57 he use of runtime supplied hash functions via callback." 21:59:00 looks very nice 21:59:08 and it says license is GPL2 compatible 21:59:13 but what about GPL3? 22:00:04 * oerjan recalls GPL2 containing an "or any later version" clause 22:00:36 yep you can do "gpl2" or "gpl2 or any later" 22:00:49 but you don't need to do the later version bit 22:00:49 oh it's author's choice? 22:00:55 oerjan, it is 22:01:23 oerjan: much GPL stuff is licensed with an or-later 22:01:43 but there's no legal requirement to put that clause in if you don't want to 22:01:43 but or-later is is the most common way 22:01:47 GPLv3 also allows an 'or later, but only if such and such a person says so' 22:02:03 ais523, ah nice didn't know that 22:02:08 * AnMaster will change his to that 22:02:45 as in, you get to choose who says a license is a version of the GPL, in case you don't trust the FSF to keep the spirit of the license the same 22:03:18 ais523, indeed I often wondered if GPL4 is where RMS will go mad 22:03:30 he tried to in the early drafts of gpl3 22:03:36 in what ways? 22:03:55 ais523, I can't see the "such and such person" clause in gpl3 document? 22:04:04 search for the word 'proxy' 22:04:27 what exact wording should I use in my files for that? 22:04:39 I don't know offhand 22:04:46 it doesn't say 22:04:48 not being a lawyer, or an expert on GPLv3 22:05:56 I'd suggest using the same wording as the license itself 22:06:20 as in, " is a proxy who can decide which future versions of the GNU General Public License can be used." 22:06:29 but that's just a guess 22:14:01 wow this looks good 22:14:16 POSIX.1-2001 got some hash functions built in 22:14:17 Deewiant, ^ 22:14:18 :D 22:14:25 thought it might :-) 22:14:27 hcreate, hdestroy, hsearch 22:14:37 no idea about preformance though 22:14:50 AnMaster: if you feel like more benchmarking, CCBI uses a static array for instructions now 22:15:02 Deewiant, got a download? 22:15:43 iki.fi/deewiant/ccbi2 as before 22:16:15 might make some difference but probably not very much 22:16:40 Deewiant, btw even that version wants executable stack 22:16:53 hm, wonder why 22:17:13 might be something in the compiler runtime 22:17:17 $ scanelf -txebS ccbi2 22:17:17 TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE 22:17:17 ET_EXEC PeMRxS RWX --- RW- - LAZY ccbi2 22:17:21 that is how it looks 22:17:30 looks greek to me :-D 22:17:38 wants executable stack 22:17:43 that is the bad part 22:17:46 STK 22:17:48 and under it 22:17:49 I suppose there's no way of figuring out why 22:17:50 RWX 22:17:55 Deewiant, no clue 22:18:07 Deewiant, at least *I* can't 22:18:16 you would need to look at your linker 22:18:17 and such 22:18:23 yeah, and that's tricky 22:18:28 closed source, written in asm :-P 22:18:34 or no, actually 22:18:37 on linux it uses ld I think 22:18:43 $ scanelf -txebS cfunge08 22:18:43 TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE 22:18:43 ET_EXEC ---xe- RW- R-- RW- - LAZY cfunge08 22:18:47 much saner 22:18:58 non-executable stack 22:19:17 any performance difference between this version and the last? 22:20:02 real 0m1.743s 22:20:02 user 0m0.515s 22:20:02 sys 0m0.063s 22:20:15 so not much 22:20:20 indeed 22:20:44 have a look at iki.fi/deewiant/asdf 22:20:44 Deewiant, and PaX really doesn't like executable stack! 22:20:49 does it claim to want executable stack 22:21:02 Deewiant, it does 22:21:08 AnMaster: it's hello world :-/ 22:21:31 AnMaster: how about this one, same file 22:21:48 I got no idea why, but I can't paste output, pasting just broke it seems 22:21:56 into my irc client only 22:22:00 heh 22:22:31 AnMaster: so what about that one 22:22:38 Deewiant, current version of that file also wants X stack 22:22:44 that's just an empty main function 22:22:49 so it looks like it's the compiler's fault 22:22:55 then blame the compiler for being crappy 22:23:00 :-) 22:23:09 rather, written in a time when this wasn't an issue 22:23:12 maybe there's something in the frontend 22:23:23 tried gdc? 22:23:34 would require recompiling gcc 22:23:39 to install it 22:23:41 you got gcc don't you? 22:23:44 Deewiant, true 22:23:56 and I'm on a school comp, can't be bothered to pull out my gentoo laptop 22:23:56 and why I have no plans on getting a newer version 22:24:05 ah you run gentoo :D 22:24:33 Deewiant, still when I implement finger prints mine will be slower 22:24:36 I will do a few 22:24:39 I won't do them all 22:24:49 that's what I thought at first, as well ;-) 22:25:01 Deewiant, you didn't do them all 22:25:05 WIND and SNGL 22:25:09 all but 2 or 3 22:25:17 SGNL can't work on windows so it's out for not being portable 22:25:21 and WIND is just crap :-D 22:25:32 Deewiant, and I think TURT is silly too 22:25:49 is there any *stream IO* fingerprint 22:25:54 unlike i/o instructions 22:26:02 that hardly would work on binary streams well 22:26:02 there's FILE 22:26:14 which implements fopen/fread-instructions and such 22:26:29 Deewiant, so just write a PNG/SVG writing routine in befunge? :P 22:26:32 using FILE 22:26:53 yeah, you could :-) 22:26:58 TURT is just silly 22:27:07 Deewiant, how do you create svg files btw? 22:27:12 in your D app I mean 22:27:23 you use some library for it? 22:27:26 no, manually 22:27:29 it's all in the source 22:27:36 I read the SVG spec a bit 22:27:39 isn't svg xml-o-crap? 22:27:41 it's pretty simple actually 22:27:50 * AnMaster prefers S-Expressions 22:27:50 if all XML is crap to you, then yes :-P 22:27:53 but it could be worse 22:27:56 * Deewiant also 22:28:02 ever played supertux? 22:28:05 nope 22:28:07 mario like open source game 22:28:13 side scrolled platform jump 22:28:20 * AnMaster is one of several developers on it 22:28:30 AnMaster: I got somebody to compile a GDC version for me, iki.fi/deewiant/test4 22:28:34 it uses S-Expressions for data files, and thanks to it I learnt to love S-Expressions 22:28:35 see if that needs executable stack 22:28:40 (I don't have scanelf) 22:28:55 Deewiant, it doesn't need it 22:29:01 okay 22:29:24 * AnMaster wonder WTF is up with pasting in xorg 22:29:38 yesterday middle mouse button paste into lyx died 22:29:50 now it's emacs running my irc client 22:30:21 Deewiant, ever used lyx? 22:30:37 LaTeX with WYSIWYM (what you see is what you meant) 22:30:37 nope 22:30:40 very nice 22:30:58 you just take care of the structure it does the formatting 22:31:07 it works very well 22:31:52 Deewiant, if you want to see my (still not allowed with copyright though!) funge08 specs I can DCC the generated pdf that looks awesom 22:32:02 and allow you to give some input on my changes if you want 22:32:16 AnMaster: one last one, iki.fi/deewiant/foo 22:32:29 AnMaster: I don't really have time now 22:32:50 Deewiant, no executable stack in that one, but unlike test4 it doesn't have sane PaX flags 22:33:03 sane? 22:33:17 insane: as in PaX flags being PeMRxS 22:33:24 how's that insane 22:33:31 sane: as in ---xe- 22:33:31 like said it's all greek to me :-) 22:34:05 so what does PeMRxS mean 22:34:27 Deewiant, because it basically means that PaX (hardened kernel thing for NX) would allow lots of things 22:34:28 a sec 22:34:46 or rather, what are the differences to ---xe- 22:35:14 Deewiant, I can't paste into irc client atm so... 22:35:22 got a link or something? 22:35:33 PAGEEXEC EMUTRMAP MPROTECT RANDMMAP RANDEXEC SEGMEXEC 22:35:36 those are the flags 22:36:10 so it's got more protections enabled 22:36:25 less 22:36:37 chars mean those are disabled 22:37:05 or "BAD" 22:37:05 as you would say in mycology 22:37:05 :P 22:37:36 apart from the e there 22:37:40 it is actually good 22:37:50 aye 22:38:05 there's no way for you to disable PaX temporarily or anything, to see if CCBI runs faster? 22:38:19 the x is bad, but you need compile and link with -fpic -fpie -pie to make that work 22:38:29 Deewiant, not without recompiling kernel and rebooting 22:38:29 :P 22:38:33 meh :-P 22:38:36 shouldn't take too long :-P 22:38:49 Deewiant, I got a blender render running now 22:38:58 huge size very slow 22:39:10 guess 24 hours from now or so 22:39:10 maybe 22:39:15 meh, cancel it, this is more important >_< 22:39:27 Deewiant, also another thing: I like my uptime 22:39:38 meeh 22:39:44 had it at 180 days at most 22:39:57 currently at 19 due to power outage :( 22:40:01 heh 22:40:06 so it's not a big loss anyway ;-) 22:40:10 it is 22:40:20 and I don't want to disconnect from irc 22:40:42 currently on 397 channels spread over 23 networks 22:41:11 O_o 22:41:32 I see, that's why you don't have time for things like slashdot ;-) 22:42:29 heh 22:42:39 I'm ircoper on some smaller networks 22:43:59 night 22:44:05 night 22:49:15 -!- Deformative has joined. 22:49:55 -!- Deformative has left (?). 22:56:12 -!- ais523 has quit ("too tired to concentrate"). 22:58:13 -!- RedDak has quit (Remote closed the connection). 23:07:23 http://www.vjn.fi/oklopol/befunge.txt 23:07:29 -!- Deformative has joined. 23:07:34 http://www.vjn.fi/oklopol/befunge.txt 23:07:49 god it took long to get intuition for that 23:08:16 * oerjan laughs and points 23:08:29 now if i just understood it as well... :D 23:09:48 it's a simple copypaste solution 23:10:14 i'll make something real when i have time 23:13:45 i didn't even have time to obfuscate it 23:14:08 also, it's heavily commented :o 23:14:12 This is the stack 23:18:35 i noticed that, after a while. first i thought those were some strange commands... 23:18:47 hehe 23:35:53 hmm... 23:36:10 might be fun to make something that executes english sentences