00:03:52 -!- Slereah2 has joined. 00:17:31 -!- KingOfKarlsruhe has quit (Remote closed the connection). 01:00:07 -!- tusho has quit. 01:02:21 Hi, tusho. 01:02:24 Bye, tusho. 01:16:04 -!- AnMaster_ has joined. 01:18:26 -!- Slereah2 has quit (Read error: 113 (No route to host)). 01:26:46 -!- sebbu2 has quit ("@+"). 01:30:36 -!- AnMaster has quit (Connection timed out). 02:10:10 -!- olsner has quit ("Leaving"). 03:14:00 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:26:17 -!- oerjan has quit ("leaving"). 03:48:09 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | *goran*?. 04:37:53 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 04:56:00 optbot! 04:56:00 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | ELIZA not ELIZa. 04:56:04 optbot! 04:56:04 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | it could be that your terminal shows unknown characters as ?. 06:32:22 -!- AnMaster_ has changed nick to AnMaster. 07:50:54 -!- cherez has quit ("Leaving."). 07:52:04 -!- cherez has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:11:11 -!- puzzlet has joined. 08:13:05 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)). 08:13:34 -!- cherez has quit ("Leaving."). 08:14:02 -!- cherez has joined. 08:14:06 -!- cherez has quit (Client Quit). 08:16:05 -!- cherez has joined. 08:16:05 -!- cherez has quit (Remote closed the connection). 08:16:36 -!- cherez has joined. 08:16:37 -!- cherez has quit (Client Quit). 08:16:58 -!- cherez has joined. 08:22:16 * pikhq hits cherez with a flyswatter. 08:22:33 Stay, dammit. I know your Internet connection is stable... 08:22:39 The sentiment is not appreciated. 08:22:42 Hell, it's hooked right next to mine. 08:36:26 -!- puzzlet_ has joined. 08:37:13 -!- puzzlet has quit (Remote closed the connection). 09:16:12 GregorR: damn you, i've highlighted you about both mips and hydra, and you haven't responded, but you have time to play with optbot like 24/7 09:16:12 oklofok: Ello. 09:21:16 Deewiant, there? 09:21:37 Deewiant, where is "UNDEF: D says 1/0 is inf (NaN or +infinity)" defined to be one of those two values 09:31:40 ieee 754 should have an exception for where the result is simply not *perfect* 09:32:05 this way you could actually use it even if you're doing math 09:32:43 i'm not saying there isn't one, my ieee 754 knowledge is limited to wikipedia, which didn't list the exceptions 09:34:34 AnMaster: IEEE 754 says it's +inf, and practically all floating point arithmetic uses approximately that 09:34:47 Deewiant, does FPDP say it uses IEEE 754 anywhere? 09:34:59 no, it doesn't 09:35:16 Deewiant, issue: Erlang throws an exception at inf or nan 09:35:21 very very irritating 09:35:25 catch it 09:35:32 Deewiant, sure I will 09:35:36 and reflect? 09:35:41 but will mycology handle that? 09:35:46 why reflect? 09:36:08 Deewiant, since I can't know if it was inf or nan that IEEE 754 would have produced? 09:36:20 1> 1/0.0. 09:36:21 ** exception error: bad argument in an arithmetic expression 09:36:21 in operator '/'/2 09:36:21 called as 1 / 0.0 09:36:50 that is a badarg exception 09:36:52 AnMaster: can't you do if y == 0 then push whatever else push x/y 09:37:17 Deewiant, sure for division, but what about other stuff, you can get inf by multiplying enough 09:37:18 or, push x/y `catch` if x == 0 push nan else push signbit(x) * inf 09:37:19 and so on 09:37:19 or whatever 09:37:36 hm 09:37:41 AnMaster: it throws an exception if you get floating point infinity by multiplication? O_o 09:37:55 Deewiant, it throws an exception if you get inf or nan 09:38:00 sigh 09:39:37 so if you do 1e200 * 1e200 what do you get? 09:39:58 Deewiant, syntax error. doesn't like that syntx 09:40:02 * AnMaster checks 09:40:34 ah had to make those 1.0e 09:40:39 4> 1.0e200 * 1.0e200. 09:40:40 ** exception error: bad argument in an arithmetic expression 09:40:40 in operator */2 09:40:40 called as 1.0e200 * 1.0e200 09:40:55 and 1.0e100 * 1.0e100 works? 09:41:13 6> 1.0e100 * 1.0e100. 09:41:13 1.0e200 09:41:33 sigh 09:41:46 Deewiant, yes very strange design choice 09:43:38 Deewiant, so what would you do? 09:44:30 I guess I could resort to using a linked in driver (a module coded in C that is loaded into erlang) but that seems quite complex. 09:45:01 I'd probably catch the exceptions and figure it out 09:45:37 Deewiant, hm and I'm unable to find a copy of the IEEE 754 specs (for free at least) 09:46:50 why do you need the specs 09:46:58 there's a lot of stuff there that you don't have to care about 09:47:23 Deewiant, to know if I should treat it as nan +inf of -inf 09:47:38 as they all generate the same exception 09:47:53 0/0 is nan 09:47:56 others aren't 09:48:04 Deewiant, n/0 too? 09:48:09 no 09:48:09 or just 0/0? 09:48:09 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | hello. 09:48:11 hm 09:48:20 wikipedia has this level of info 09:48:26 UNDEF: E says asin(2) is nan (actually complex: NaN) <-- from cfunge output 09:48:32 oh well 09:48:50 I was talking about division there 09:48:55 Deewiant, true 09:48:58 cases like that are easy 09:49:01 but all the other operators 09:49:08 + can be either +inf or -inf 09:49:13 yep 09:49:20 but not nan :-P 09:49:35 and I can't think of some good heuristics for finding out what inf 09:49:42 I done told ya 09:49:48 hm? 09:49:51 for division anyway 09:49:57 yes for division I can see 09:50:03 inf + n = inf! 09:50:29 x + y = -inf if that throws and y < x 09:50:36 er 09:50:38 y < 0 09:50:41 ah right 09:50:56 what if x = -inf and y is like 100 09:51:00 hmm 09:51:03 x can't be -inf 09:51:10 since it would have thrown previously :-P 09:51:19 oh i see i'm missing context yes. 09:51:34 although 09:51:38 but it's symmetric, how can there be a constraint on y but not x 09:51:49 * oklofok gets not 09:51:53 it is possible that you get the bit pattern for -inf pushed on the stack via other means 09:52:01 Deewiant, ah not in efunge no 09:52:16 it should be, why not 09:52:18 Deewiant, since they are type tagged tuples 09:52:19 :D 09:52:37 so what happens if I do 00A (if A was the floating point addition instruction, can't remember) 09:53:10 Deewiant, undefined by FPDP 09:53:15 and it will reflect actually 09:53:41 Deewiant, you know about that C compiler for Lisp machines? NULL not 0x0 for example and so on 09:53:50 think efunge is something like that but for befunge :P 09:54:09 NULL == 0x0 in C 09:54:19 Deewiant, implementation defined 09:54:23 whether the machine null pointer has value 0 or not is 09:54:32 if 0x0 is used in pointer context however it is indeed true 09:54:40 but the implementation should always convert it 09:54:48 just like it is guaranteed that '1' == '0' + 1 09:54:56 even though the charset might be different 09:55:02 Deewiant, depends on if you do int i = 0; char * = (char*)i; 09:55:02 then no 09:55:20 that might actually still work 09:55:26 well 09:55:29 char *foo 09:55:30 but char* x = *(char**)&i; won't 09:56:01 Deewiant, oh and g/p will handle the tuples correctly. And any instructions like normal +-*/% will pop a dummy value instead 09:56:26 since it is undefined what they will do on floating point values in FPDP 09:56:28 that's somewhat annoying 09:56:44 but oh well 09:56:52 Deewiant, oh? using normal + on two floating point numbers in befunge make no sense 09:57:06 even if you use unions to store them 09:57:35 in fact, hmm 09:57:35 g 09:57:38 anything that doesn't care if it is an int or not, use pop(), anything that needs an int use pop_int 09:57:42 that means g and p will work 09:57:45 do you have to p a floating point before g works? 09:57:55 or can you do 000p 00g and get 0 as floating point 09:58:21 guess not 09:58:23 Deewiant, that would be undefined. You would need to use the FPDP functions to create such a floating point number 09:58:54 ah well, somewhat limiting but can't be helped I guess 09:59:05 I asked Mike about this in an email, and he said ok basically :P 09:59:17 11:56:38 AnMaster: Deewiant, oh? using normal + on two floating point numbers in befunge make no sense <<< what, no polymorphism? 09:59:18 Deewiant, waiting for email client to load 09:59:23 mycology might use 0 to push floating point 0 09:59:34 so if you run into problems that might explain it 09:59:37 Deewiant, that would reflect. And you invoke undefined behaviour 09:59:44 or then it might not, I don't know 10:00:00 blergh, haven't checked mail for two days 10:00:10 * AnMaster waits for about 500 mails to be downloaded 10:00:23 O_o you get a lot of mail 10:00:32 Deewiant, 70% is spam 10:00:37 the rest are mostly mailing lists 10:00:42 you get a lot of spam then :-P 10:00:52 and you still get a lot of mail, even with only 30% :-P 10:00:53 actually around 60% is spam 10:01:27 Deewiant, what do you expect from lists like -commits and such :P 10:01:43 example: [Crossfire-cvs] SF.net SVN: crossfire:[9912] maps/trunk/quests 10:02:04 meh, I'd read such through gmane :-P 10:02:16 Deewiant, are you a developer on those projects though? 10:02:33 even if I were I'd read through gmane 10:04:33 but, something is starting in this classroom so I'm off -> 10:05:10 Deewiant, only thing he said was: "However if you cannot use standard functions to duplicate these numbers on the stack or read/write these numbers in funge-space, you may need to augment (add another fingerprint maybe) the extension to provide this ability." 10:05:26 dup/swap/put/get/store with s/fetch with ' all works 10:05:56 is there a way to write like a ping pong in befunge 10:06:05 i'm not aware of all the fingerprints 10:06:15 oklofok, using the NCRS or TERM fingerprint you should be able to do it I guess 10:06:23 is there a list? 10:06:42 of fingerprints + short descriptions 10:06:50 TERM is basic terminal functions like moving cursor to another line and such, while NCRS is more or less full blown ncurses interface iirc 10:07:06 cfunge has TERM but not NCRS so I don't know the NCRS details very well 10:07:11 oh i was thinking like 3d 10:07:51 oklofok, hm, could be done I guess (rendering 3D image as ascii art or whatever) but it would be too slow to be usable 10:08:11 i was thinking like not ascii art 10:08:21 it's an awful way to draw stuff 10:08:23 there is the 3DSP fingerprint to handle some vector operations on signle precision floating point vectors/matrices 10:08:32 -!- puzzlet_ has quit ("leaving"). 10:08:33 oklofok, then nothing remotely portable 10:08:44 RC/Funge got some "windows handler" thing 10:08:47 but iirc it is very basic 10:09:02 so probably not usable for anything more than basic dialogs 10:09:51 oklofok, you could render images using TURT I guess (turtle style like Logo)... 10:09:58 but that have issues too 10:10:17 what isses? 10:10:19 like cfunge and ccbi don't implement the "display in window" only the "save to file" variant 10:10:20 *issues 10:10:27 -!- puzzlet has joined. 10:10:34 and rcfunge that got render to window blocks until you close the window 10:10:47 so you need the user to close the window every time you drawn to it 10:11:05 oklofok, and it is still 2D so any 3D you would need to implement yourself 10:11:43 have we never met before? i implement everything myself 10:13:07 oklofok, well I can't think of a sane way to do it. Nor of an insane one 10:13:29 sane way to do the 3d calculations yourself? 10:13:29 don't know about that old glfunge thing, it used opengl for something iirc, but don't remember what 10:13:39 oklofok, no, sane way to display it 10:13:43 sane way to draw textures and shit using turtles? 10:13:57 well i was commenting the latter thing, that it's 2d. 10:13:58 oklofok, well you could draw it using TURT, but displaying it... 10:14:32 about displying it i have nothing to say, because it's you who has any idea about these fingreptinrts 10:14:37 typoed a bit there 10:14:39 as I said the show to user command (that far from all implement) blocks until the window is closed in all interpreters I know 10:14:44 Is There A List? 10:14:55 oklofok, not any complete no 10:14:59 okay 10:15:02 should be done 10:15:05 you can certainly find lists of what each interpreter implements 10:15:15 someone needs to maintain it 10:15:22 since new are added all the time 10:15:55 i can find them, the question is will you find them for me :) 10:16:09 perhaps i'll make my own "draw ip's to screen" fingerprint 10:16:19 so that you can create befunge code to move the ip's around 10:16:49 only a part of the codespace would be visible at any point, and only ip's would be seen 10:17:05 should be simple with threads to make something outta that 10:18:02 the fruit flies are everywhere :< 10:18:15 should throw those kebab remains away... 10:18:27 they've sat there for like 2 weeks 10:19:15 oklofok, also the speed would be horrible. cfunge is the fastest interpreter out there. With -O3 -march=k8 -m64 it can manage something like 12000 instructions per second at best on my 2 GHz AMD64. Of course it depends on what funge instruction. I calculated that using a befunge 93 program that implements game of life 10:19:27 wait more than 12 000 10:19:35 * AnMaster got the 0s mixed up 10:19:44 120 000 iirc 10:19:54 I think it was 10:20:09 no that doesn't work out 10:20:20 do you optimize parts that aren't self-modifying? 10:20:28 oklofok, no I don't. 10:20:34 befunge is one of the best languages for compilations 10:20:37 *compilation 10:20:43 because you can always compile it better 10:20:45 you could JIT it 10:20:50 yes, definitely 10:21:02 but the issue is then you tie yourself to a specific instruction set 10:21:05 like x86 or ppc 10:21:26 or a pseudoassembly 10:21:31 i'd use a pseudoassembly 10:21:33 oklofok, thinking of LLVM? 10:21:46 no, because i don't know what that is 10:22:02 seems it's a program of some sort 10:22:04 http://en.wikipedia.org/wiki/Low_Level_Virtual_Machine 10:22:26 i'm thinking just making everything myself :-) 10:22:34 it's simpler 10:22:44 i'm a programmer, not an installer! 10:22:57 anyway, i gotta be going 10:23:18 llvm is like something you can then compile to something real? 10:23:50 because that's something i probably couldn't do, as real things are full of annoying details, especially x86 10:24:36 i'm leaving, you can answer my ponderings while i'm gone if you wish -> 10:28:13 llvm is like something you can then compile to something real? <-- yes 10:28:18 there is also a JIT for it iirc 10:29:31 llvm byte code is more or less platform independent. You can then either interpret it (it JITs it) or you can compile it into machine code and link it to a binary 10:30:10 llvm can also optimize the byte code. 11:38:02 -!- oerjan has joined. 11:42:17 -!- Slereah2 has joined. 11:44:28 -!- puzzlet has quit (Read error: 60 (Operation timed out)). 11:44:32 -!- puzzlet has joined. 11:55:16 Deewiant, "UNDEF: N says -0 is 0.000000 (-0)" <-- hm??? 11:56:49 IEEE distinguishes positive and negative zero 11:57:17 oerjan, well nowhere does it say FPDP requires IEEE floating point actually 11:57:47 Which might be why it's UNDEF? 11:58:34 fizzie, no it is undef because comparing floating point is tricky in befunge 11:58:47 "Because floating point equality is, with epsilons, too tricky, and without them, poorly defined, and because rounding with I is too inaccurate, results of calculations will be UNDEF. The precisely correct answer will follow, to 6 decimal places: the calculated result can be compared to it." 12:00:03 I guess "precisely correct" here will mean IEEE, then; as said, it's "poorly defined". 12:00:41 fizzie, well even in cfunge they don't match in the last decimal place. Nor in CCBI iirc 12:00:45 not all of them anyway 12:01:09 Although you don't need to resort to the IEEE explanation in this case: -0 is -0 in the mathematical sense, too. 12:02:43 it doesn't seem to have sense to have a signed 0 12:03:56 it makes 1/0 come out the right infinity 12:04:57 oerjan, and 1/0 makes even less sense to me 12:04:59 and some transcendental functions are discontinuous at 0 12:05:03 hm 12:05:51 It's also very common in floating point representations, which tend to be of the sign-mantissa-exponent variety often, no matter how much sense it might fail to make make. 12:05:58 Make-make. 12:06:55 http://en.wikipedia.org/wiki/Makemake_(dwarf_planet) 12:09:24 -!- sebbu has joined. 12:11:24 also, http://en.wikipedia.org/wiki/Negative_zero 12:30:46 AnMaster: in CCBI they all match down to the last decimal place, except in FPSP of course. :-) 12:31:22 * oerjan wonders exactly how you define "poorly defined" again 12:31:45 Deewiant, you use higher precision internally then? 12:31:46 oerjan : "This sentence is not poorly defined" 12:31:51 That is the best definition 12:32:05 could be, could be 12:32:06 AnMaster: the only one that differs is the last one, 2^-4 or something, anyway 12:37:37 Deewiant, anyway I can't make my FPDP IEEE conformat for non-finite maths since it will be a hell to handle if one of the operands already are inf or nan 12:37:39 -!- ais523 has joined. 12:38:07 but since FPDP doesn't say it have to be IEEE 754 conforming I can get away with that 12:38:12 hi ais523 12:40:23 -!- ais523 has quit (Remote closed the connection). 12:40:37 -!- ais523 has joined. 12:41:36 Deewiant, for example inf+(-inf) seems to be nan in my tests 12:41:44 ais523, hi 12:41:52 hi AnMaster 12:42:04 also inf+-inf is NaN IIRC 12:42:07 what else could it be? 12:42:22 -!- tusho has joined. 12:42:35 ais523, except in erlang any result of nan or inf is an exception, very irritating 12:42:45 make FPDP really painful 12:42:47 hi tusho 12:42:51 ais523: HI 12:42:53 also, ugh 12:42:53 er 12:42:53 and hi tusho 12:42:55 hi ais523 12:43:05 ais523 won by 4 seconds 12:43:06 :D 12:43:09 what 12:43:11 no i didn't. 12:43:13 er 12:43:14 no he didn't 12:43:18 tusho, check logs 12:43:22 AnMaster: inf-inf is nan, that's correct 12:43:36 AnMaster: i think you've forgotten: the logs go by our own clients 12:43:42 ais523: what does your client say? 12:43:45 when did you send your hi 12:43:47 tusho: that's an unworkable rule as we have different clocks 12:43:55 it's not that unworkable 12:43:57 and let me open up the log to get the seconds, this thing only shows the minutes by default 12:43:58 as our clocks are not that different 12:44:08 anyway it's a better solution than the tunes.org logs 12:44:14 because that removes the reflex time altogether 12:44:15 mån sep 22 11:44:14 UTC 2008 12:44:17 check that it match 12:44:22 my clock is set using ntp 12:44:26 AnMaster: so is mine. 12:44:28 you can calculate difference against it 12:44:40 mån sep 22 11:44:14 UTC 2008 incompatible encoding 12:44:44 (yeah colloquy logs as xml :|) 12:45:02 Deewiant, it should be 0 IMO ;P. Anyway I don't plan to make my FPDP IEEE 754, it is undef. and mycology does try to depend on 0 being a fpdp 0 too 12:45:03 so I am 1hr,2sec ahead of anmaster 12:45:14 tusho, that was utc timestamp 12:45:18 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 12:45:20 -!- ais523_ has joined. 12:45:21 and the 2 secs are probably irc lag 12:45:21 hi ais523_ 12:45:25 okay 12:45:27 so my clock is correct 12:45:27 good 12:45:31 let's assume ais523's is too 12:45:35 well 12:45:56 ais523: HI 12:46:02 hi tusho 12:46:03 12:42:36 12:46:05 ais523_: and you? 12:46:12 -!- ais523_ has changed nick to ais523. 12:46:14 tusho: I pasted it in-channel 12:46:16 I think 12:46:17 mån sep 22 11:46:16 UTC 2008 12:46:22 did it not come through? 12:46:22 no you did not ais523 12:46:24 (stupid connection problems) 12:46:25 :) 12:46:29 also ais523 12:46:33 my clock is = AnMaster's 12:46:38 more or less 12:46:43 by 2 seconds, which could be irc lag 12:46:51 most likely 12:47:11 mine is sync'd to time.euro.apple.com 12:47:12 [Mon Sep 22 2008] [12:42:47] hi tusho 12:47:14 os x does it by default 12:47:16 [Mon Sep 22 2008] [12:42:51] ais523: HI 12:47:20 ais523: HI 12:47:28 [Mon Sep 22 2008] [12:42:52] also, ugh 12:47:32 [Mon Sep 22 2008] [12:42:53] er 12:47:33 ais523: that's not important 12:47:35 your send time is 12:47:35 stop that 12:47:36 [Mon Sep 22 2008] [12:42:53] and hi tusho 12:47:40 [Mon Sep 22 2008] [12:42:55] hi ais523 12:47:41 tusho, se.pool.ntp.org 12:47:44 [Mon Sep 22 2008] [12:43:05] ais523 won by 4 seconds 12:47:45 ais523: STOP FLOODING 12:48:03 anyway, point is, I beat you by 11 seconds 12:48:04 tusho: I only pasted 7 lines, and my round-trip ping time is 33 seconds so your "stop that" came far too late 12:48:07 give or take a second or so 12:48:12 and no, because our clocks are obviously different 12:48:18 ais523: fine 12:48:19 wait 12:48:20 AnMaster: 12:48:22 do your thing again 12:48:32 /exec -o date -u 12:48:43 AnMaster: try again 12:48:44 :P 12:48:44 mån sep 22 11:48:43 UTC 2008 12:48:47 ais523: paste his line from the logs 12:48:51 tusho: our clocks are within 1s of each other 12:48:51 tusho, I did that with intention 12:49:04 and no, I don't want to freeze up the computer again to open the logs, my #esoteric logs are massive 12:49:04 ais523: probably irc lag 12:49:04 so 12:49:10 well 12:49:12 who's clocks 12:49:14 are within 1s 12:49:17 anyway, point is, i beat you 12:49:21 :P 12:49:22 tusho: mine and yours, I was CTCP TIMEing you 12:49:23 intentionally* 12:49:26 okay 12:49:30 tusho, also since you use a script it doesn't count 12:49:33 AnMaster: no 12:49:34 not when I join 12:49:42 just when he does 12:49:54 oh and you are such a bad looser you can't even admit you loose 12:49:56 ;P 12:49:57 what? 12:49:59 i won 12:50:03 we just checked it and i won 12:50:10 and...that makes me a sore loser? 12:50:16 and no, I don't want to freeze up the computer again to open the logs, my #esoteric logs are massive 12:50:19 ais523, try log rotation 12:50:27 I rotate each month 12:50:46 AnMaster: I never plan to delete any of the logs in question, and they're easier to grep if they're all one file 12:50:56 ais523: why not just tail the log 12:50:58 to get his message 12:50:59 or grep 12:51:08 grep 'mÃ¥n sep 22 11:48:43 UTC 2008' esoteric.log 12:51:12 but anyway 12:51:14 tusho: I could do that easily enough but that would involve going through the filesystem to find the log 12:51:16 you CTCP TME'd 12:51:17 close enough 12:51:21 *TIME 12:51:22 I just used Konversation's open-log command 12:51:30 which takes a while on a large log 12:51:34 it is tailed, but to 1MB 12:51:39 which still takes a while to open 12:51:43 it does? 12:51:46 weird 12:52:25 heh, a new crop of isitchristmas.com sites 12:52:51 http://isitbirthday.com/ -> http://isitafuckingirritatingbrowser.com/ -> http://www.isbushgone.com/ 12:53:17 ais523, how long is this "while"? 12:53:26 Given the amount of lag in the IRC network and that one's own messages aren't really in a fair fight, I don't see any other way of resolving "who was first" disputes than a trusted third party, like the tunes.org logs. 12:53:30 AnMaster: maybe about 10 seconds 12:53:38 I think Konversation spends a while rendering everything in the log though 12:53:41 fizzie: er... 12:53:42 like URLs and so on 12:53:43 the whole point is 12:53:45 reaction time 12:53:46 ais523, how long does it take to load KDE? 12:53:51 how fast we can type and get it entered 12:54:03 so, we compare when we sent at -this- end 12:54:05 since 12:54:05 $ du -bsh /usr/kde/3.5/lib/libkdecore.so.4.2.0 12:54:06 2.5M /usr/kde/3.5/lib/libkdecore.so.4.2.0 12:54:14 AnMaster: probably about 90 seconds while the rest of the computer's loading, as I use Gnome by default, it's much faster if loading KDE's the only thing I'm doing 12:54:16 -b? 12:54:17 that indicates that just one library is larger than that 1 MB tail 12:54:30 ais523, ok you got a slow computer 12:54:42 I think it's rendering that's the problem, not physically loading the file 12:54:48 Deewiant, du --help 12:54:53 AnMaster: *have 12:55:06 from that I hit enter startx to KDE is fully loaded: maybe 15 seconds or so 12:55:08 on ths computer 12:55:20 KDE 3.5.x 12:55:21 AnMaster: does your computer run KDE by default? 12:55:40 ais523, I don't start X by default. but it is the default when I enter startx 12:55:42 AnMaster: so what, the actual size as opposed to the disk usage? 12:55:52 15 seconds? lol 12:55:55 Deewiant, yes that is the effect of it 12:55:58 AnMaster: I normally use ls -l to determine the size of a file 12:56:04 tusho, sure but the computer is a few years old 12:56:06 this imac takes 40-60 seconds to boot up from power button to the gui :P 12:56:10 but that's due to the use of EFI and such 12:56:15 as opposed to the BIOS 12:56:23 ais523: but then you get it in bytes and reading 13857624 isn't easy enough 12:56:28 tusho, ah well I can beat that, from grub to login prompt it takes 10 seconds 12:56:29 Deewiant: -H 12:56:34 I think 12:56:38 maybe -S 12:56:39 AnMaster: that's not fair. 12:56:41 there's an option for that anyway 12:56:46 AnMaster: i am talking about from bootup to full gui syste 12:56:46 m 12:56:47 ais523: I always want du --si which I think only du supports :-) 12:56:50 40-60 seconds 12:56:54 tusho, well bios to grub takes about 14 seconds 12:56:54 so 12:57:01 14 + 10 + 15 12:57:10 AnMaster: wanna measure that? 12:57:11 $ ls -l --si squeak.image 12:57:11 -rwxr--r-- 1 ais523 ais523 17M 2008-08-10 21:18 squeak.image 12:57:12 that includes bios 12:57:14 39 seconds 12:57:16 turn x on by default, use a stopwatch 12:57:20 tusho, I don't reboot a lot 12:57:21 and 12:57:24 i bet you can't get to a login prompt in 35 seconds. 12:57:30 tusho, I don't use kdm 12:57:34 my bootup is really slow due to all the crap I have installed 12:57:37 I don't have xdm or kdm installed tusho 12:57:39 so impossible 12:57:39 The iBook seems to take a long long long long long time to boot to OS X login screen, but usually I just wake it up from sleep. 12:57:46 login then startx is the only way on this system 12:57:49 AnMaster: then don't try and give your own measurements, because it's not a fair comparison 12:57:57 tusho, how so? 12:58:14 AnMaster: because i am talking about an automated process from the initial electrical turnon to a login screen, how long that takes 12:58:17 tusho, loading full KDE would take longer than loading xdm 12:58:20 this mac is the fastest i've ever seen 12:58:28 if we're going for unfair comparisons, sudo su takes me about 5 seconds on here, which is the time it takes me to type my sudo password 12:58:29 and it has tons of daemons and apps running at startup 12:58:47 ais523: oh yeah??? well my 'true' runs in -3ms! 12:58:52 and tusho, not everyone /has/ an automated process from initial turnon to login screen 12:58:56 tusho, well I measured time to grub (14.2 seconds) and grub to console login prompt (10.1 seconds) about 2 weeks ago 12:59:00 ais523: of course. 12:59:05 so they can't give their times :P 12:59:09 because it's an irrelevant comparison 12:59:14 tusho, so adding those you get 24.3 seconds 12:59:23 then you can add time for startx 12:59:30 AnMaster: OS X starts the full system (like KDE) before login prompt 12:59:47 so I guess for a fair comparison with a linux system you'd have to make an automatic login for the test 12:59:51 tusho, it doesn't load a lot of stuff before login 13:00:07 * ais523 wonders whether Gnome or KDE is faster 13:00:09 like battery menu when I tested 13:00:13 I'd guess KDE, based on my experiences with both 13:00:21 kde is faster, ironically 13:00:39 tusho, so in fact linux is at disadvantage here 13:00:48 AnMaster: how? 13:00:51 since my measurement will include load time to full desktop 13:00:58 and not only login prompt 13:01:02 which is a lot less code to load 13:01:19 AnMaster: okay, make 'startx' your login shell or something then 13:01:19 :P 13:01:30 then it would be fair 13:01:41 tusho, why isn't measuring each section and adding them up fair? 13:01:46 I fail to see that 13:02:07 AnMaster: because of the time taken to transition from each section 13:02:30 tusho, that is user type type time yes to enter password and such, but I don't see how that is relevant? 13:02:52 that is not what i meant. 13:03:18 tusho, then what *do* you mean? 13:03:50 what i said 13:03:57 and it makes no sense 13:04:54 and you refuse to explain it, *shrug* 13:06:28 A _true_ scotsman wouldn't need an explanation 13:06:44 tusho, and as ais523 said: 13:06:45 and tusho, not everyone /has/ an automated process from initial turnon to login screen 13:06:50 yes 13:06:55 so then they are irrelevant to the comparison. 13:07:05 tusho, and you can give relevant times by adding up all the automated sections 13:07:32 AnMaster: not valid when every second makes a difference 13:08:24 tusho, well then we can't know if your measurement is that exact either 13:08:31 so the whole thing is pointless anyway 13:08:39 well, it is. 13:08:42 because i measured it. 13:08:53 tusho, well a human isn't that exact 13:09:40 i am good at counting seconds manually, besides, i'll redo it with a stopwatch later 13:09:58 What _was_ your measurement, then? I only saw that "40-60 seconds" figure. 13:10:05 tusho, well I used a stopwatch, but even so it may be a second or so off 13:10:14 because humans aren't that exact 13:10:19 in pressing buttons either 13:10:23 fizzie: i forget, it was a while ago 13:10:33 AnMaster: no, but 1s doesn't make all that much difference 13:10:37 5s does 13:11:40 anyway my timings: 14.2 seconds from power button to grub prompt, 10.1 seconds from selection in grub to login prompt on console, 15.3 seconds from startx to "loading KDE dialog" closed 13:12:54 my grub doesn't use a timeout at all so that is irrelevant, + the all boot entries are password protected (oh yes bios is password protected too), not a lot of security, but something is better than nothing 13:13:08 yes I know bios pass is easy to crack 13:13:14 if someone has my hardware they're fucked, i figure 13:13:31 it's not hard to stick a floppy linux distro in and read from the disk 13:13:42 tusho, depends on the boot order you set 13:13:54 AnMaster: but as you said - bios password is easy to crack 13:13:55 AnMaster: I've seen a bios password cracked, the person did it by shorting out a capacitor on the motherboard temporarily 13:14:04 and the BIOS forgot what the password was 13:14:05 tusho, indeed, but it require some knowledge 13:14:20 AnMaster: true, true 13:14:28 i don't really care though, my priority is not letting it get stolen 13:14:34 or letting anyone near it who i don't want to be 13:14:44 anyway, i have autologin on and all that stuff because of the aforementioned reasons 13:15:06 also, i am hideously environmentally unfriendly because i just boot this from standby after the night 13:15:12 tusho, oh and timings on my laptop would be impossible you would say since I need to enter password for harddisk encryption at boot there 13:15:15 better than actually leaving it on, i guess 13:16:33 -!- pikhq has quit (Read error: 60 (Operation timed out)). 13:17:57 -!- KingOfKarlsruhe has joined. 13:18:35 Deewiant, I special case {0, 0} to work around the "using 0 as FPDP 0" bug in mycology now. But I hope you fix it 13:19:50 what floating point number does all-bits-zero correspond to? 13:20:16 ais523, he hopes it means 0 13:20:26 yes, I was wondering what it actually meant 13:20:31 it corresponds to 0 in IEEE-754 13:20:31 ais523, except in efunge floats from FPDP are tagged tuples 13:20:35 so that fails 13:20:41 Deewiant: i think you are correct 13:20:46 I know I am correct 13:20:48 IEEE-754 is a good standard to adhere to 13:20:50 AnMaster: like POSIX! 13:21:04 tusho, certainly, but it is undefined in FPDP 13:21:09 anyway, if you ask me FPDP should mean IEEE-754 13:21:13 so well you can't expect anything sensible 13:21:16 AnMaster: it's a mike riley fingerprint 13:21:21 i'm surprised it HAS a specification 13:21:39 well maybe, but consider efunge a Dethstation 9000 if you want 13:21:52 somehow I'm doubting Deewiant cares about dethstation 9000s :D 13:21:54 Deathfunge e^i*pi. 13:21:55 if that makes you happier 13:22:01 AnMaster: you've never seen a true Deathstation 9000, efunge is more like a Deathstation 2 by comparison 13:22:07 i don't care about deathstation 9000s 13:22:08 ais523, probably 13:22:13 -!- pikhq has joined. 13:22:22 a similar system (i.e. not literally one) - my programs won't work 13:22:24 hi pikhq 13:22:36 i assume a modern system - unix-like or not - for my sanity 13:22:49 tusho: what about gcc-bf? 13:22:59 I've expended a lot of effort on trying to make it not a Deathstation 13:23:07 but I'm not sure to what extent it's succeeded 13:23:08 ais523: if it's not too much work 13:23:11 because that is amusing 13:23:17 DOS is not 13:23:17 a deathstation 9000 funge interpreter would easily break mycology since it tries to test UNDEF stuff to see what they do 13:23:20 (I even made int 32-bits, because everyone seems to assume it is nowadays) 13:23:36 Deewiant: hmm... some of it's undefined, some's just unspecified 13:24:01 I think, for instance, you can imply from the spec that # across the right edge either hits or jumps over the left edge of the program, for instance, nothing else 13:24:54 possibly 13:26:09 Deewiant, ok not that bad. but I plan to make efunge do unusual but kind of sane stuff 13:26:30 and I did contact Mike Riley about it 13:26:43 not the IEEE bit, but the type tagged tuples bit 13:27:06 well that's just an implementation detail 13:27:20 did he specifically say that it's ok for "00A" to reflect, for instance 13:27:37 Deewiant, http://rafb.net/p/9NkK4p98.html 13:27:54 well, 00A does reflect, you need to load a fingerprint first if you want it to do something 13:28:03 ais523, :D 13:28:53 Deewiant, I can special case 00 in the pop double code, but I can hardly do it in all cases 13:29:08 yeah so he's saying "my spec sucks, do what you want" 13:29:16 why can't he just write stuff properly :-P 13:29:18 anyway the format is {double, }{double, dummy} 13:29:30 Deewiant, then I wouldn't have been able to implement it 13:29:43 that would have been fine as long as it has well-defined behaviour :-P 13:29:48 AnMaster: can you p a FPDP tuple onto the playfield, g it back, and have it still work? 13:29:53 ais523: yes 13:29:53 related: http://tusho.net/mkry/ 13:29:55 in efunge? 13:29:56 dunno if ais523's seen that 13:29:56 ais523, yes that works 13:29:59 Deewiant and AnMaster have though 13:30:00 tusho: yes I have 13:30:21 AnMaster: can you p a FPDP tuple onto the playfield, then run into it with the IP and have an appropriate command happen? 13:30:23 ais523, same for swap/dup on stack and such 13:30:25 AnMaster: what about $ in FPDP, will it pop one FPDP value or two 13:30:32 er 13:30:40 will you need one or two to pop one value* 13:30:41 ais523, no because the internal representation is undefined in the spec 13:30:55 Deewiant, it will pop one cell 13:30:59 I store it in two cells 13:31:07 just that one cell is a dummy cell 13:31:08 strictly speaking even that is UNDEF 13:31:19 Deewiant, well ccbi will pop one cell too 13:31:20 well, you could reason on the basis that if you have 2^64 different floating point numbers and p them all onto the playfield, all possible commands have to end up there somewhere 13:31:21 which again makes the FPDP spec as it currently is rather useless 13:31:32 then you could search the playfield to find the one that was y, for instance 13:31:33 Deewiant, why do you need to know the internal format of the numbers? 13:31:35 then run into it with the IP 13:31:40 the interface functions are there for a reason 13:31:47 yes, that would be ridiculous, but I don't seen any reason why it doesn't work in theory 13:31:53 AnMaster: now I'm just thinking about how to pop a single value, which is evidently impossible without invoking undef behaviour 13:32:20 Deewiant, it says two cells, so $$ will do it obviously 13:32:28 AnMaster: no it doesn't say that anywhere 13:32:29 since $ operates on cells on the stack 13:32:40 it can be one cell or 64 cells 13:32:43 Deewiant, it *used* to say it 13:33:03 Deewiant: You can use "I$", I think. 13:33:20 fizzie: ah, true. 13:33:25 Deewiant, it used to say it back at the webarchive days 13:33:26 -!- jix has joined. 13:33:32 Deewiant, I'm 99.99% sure about that 13:33:53 AnMaster: or did it say it or something like "A (ah al bh bl -- ch cl)" which makes little sense on its own :-P 13:34:11 Deewiant, well iirc it said two cells 13:34:27 I remember it having two-word things in the title at some point, like that example above 13:34:30 anyway efunge won't have FPSP since erlang only got it's "semi-IEEE" floating point 13:34:42 erlang will throw and exception on inf or nan 13:34:44 that is the main issue 13:35:00 any inf or nan 13:35:12 AnMaster: even quiet NaN? 13:35:15 if so that violates the specs 13:35:26 ais523, it doesn't claim to be conforming 13:35:30 as there are two sorts of NaNs, quiet and signaling, only the signaling one throws an exception 13:35:32 so not sure how it violates 13:35:33 and ok 13:35:42 ais523: it throws an exception on 1.0e200 + 1.0e200 13:35:46 (incidentally, NaNs can carry a payload too) 13:36:15 ais523, yes that and 1.0/0.0 also throws an exception (and no it is not integer division, that would be the "div" operator") 13:36:17 yeah, special NaNs would be the main reason why being able to mess with the bit representation directly would be handy 13:36:18 ) 13:36:59 1./0. being signaling NaN would strike me as a reasonable implementation choice 13:37:07 and so that's a similar behaviour for the wrong reason 13:38:00 ais523, any nan or inf. And well it doesn't claim to fully conform to IEEE 754 13:38:15 AnMaster: yes, I understand 13:38:30 * ais523 wonders what floatlib.i does in such cases 13:38:36 that isn't conforming fully to IEEE754 either 13:38:48 the author said that the only reason it resembles IEEE754 was that it was convenient 13:40:28 well erlang does use floating point of the system, it just checks after each operation for any of those conditions 13:40:42 ais523, also it seems to turn -0 into 0 at least in output 13:41:09 AnMaster: does it exception on underflow? 13:41:16 What's the result of 1.0e-200 / 1.0e200? 13:41:18 1> (0.0 * -1) =:= 0.0. 13:41:18 true 13:41:30 2> 1.0e-200 / 1.0e200. 13:41:30 0.0 13:41:49 ok, it's trying to do floating point like maths, I think 13:41:55 which can be a bad idea in programming 13:42:23 ais523: works well for haskell 13:42:33 ais523, well efunge is bignum. Mycology handles that, but that other test suite (Fungus) locks up on it 13:42:35 but erlang was designed by programmers 13:42:37 not mathematicians 13:42:43 haskell was designed by mathematicians 13:42:49 so erlang doing floating point like maths is probably bad 13:44:23 tusho, so the floating point in Haskell is not fully IEEE 754? 13:44:39 AnMaster: It has different types. 13:44:47 ok 13:44:48 bbl, going to make some food 13:44:49 For IEEE 754 and mathematical. 13:48:17 tusho: not without some extra libraries i think 13:48:21 hm 13:48:23 CReal 13:48:32 oh right 13:48:48 might be 13:49:07 anyway Double in ghc is IEEE 13:50:41 CReal is for the ffi, i guess 13:51:34 they're not necessarily different in practice 13:54:29 hm they are in lambdabot 13:57:12 hm wait, maybe CReal really is unbounded, that was a lot of digits for pi 14:04:03 -!- Slereah_ has joined. 14:04:04 -!- Slereah2 has quit (Read error: 104 (Connection reset by peer)). 14:04:53 hey it was discussed on #haskell just two days ago. clearly i've been away too long... 14:12:22 also, i was confusing it with CDouble and CFloat 14:34:24 CReal is in an external library 14:34:55 there's Ratio for precise fractions 14:35:13 and then there's Double and Float which are mostly IEEE 754 14:37:12 -!- puzzlet_ has joined. 14:37:25 * AnMaster decides to put efunge's FPDP aside for now until he figures out a cleaner way to code some stuff in it. 14:49:10 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 15:06:19 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 15:06:28 -!- oklofok has joined. 15:19:15 -!- Hiato has joined. 15:24:29 Deewiant, what should FIXP B (acos) do on non-valid input? 15:24:33 not reflect it seems 15:25:05 whatever, I guess you can reflect 15:25:50 Deewiant, what does CCBI do? 15:26:05 probably just casts the NaN that comes out to an integer 15:26:25 * ais523 wonders what (int)nan() is anyway 15:26:31 ais523: 0 15:26:38 makes sense 15:26:52 Deewiant, well mycology doesn't like that you reflect on nan from B in FIXP 15:27:23 does mycology test invalid B? 15:27:42 evidently 15:27:46 GOOD: T says tan(35) is 0.7002 15:27:47 BAD: aaaa***B reflects 15:27:47 BAD: B says acos(0) isn't 90 15:27:47 BAD: 01-B reflects 15:27:54 err wait 15:28:07 it doesn't test invalid B 15:28:13 now I made it push 0 on NaN: 15:28:14 GOOD: B says acos(1) is 0 15:28:14 BAD: B says acos(0) isn't 90 15:28:14 BAD: B says acos(-1) isn't 180 15:28:14 BAD: 3aaa***J reflects 15:28:18 none of that is invalid, or? 15:28:18 is it just me 15:28:26 or is the messages totally different? 15:28:31 and unrelated to the BAD ones? 15:28:44 not having matching GOOD/BAD confuses 15:28:45 aaaa***B is acos(1) 15:29:06 hm 15:29:23 for the reflections, it evidently gives the exact code 15:30:16 aaaa*** that is 10000 15:30:17 hm 15:30:26 Deewiant, but it is in degrees 15:30:28 eait 15:30:30 wait 15:30:30 wtf 15:30:43 aha 15:31:28 acos :: [-1,1] -> [0,360) for FIXP :-P 15:31:48 parentheses didn't match up they way they should 15:32:51 * oerjan hopes AnMaster is not referring to the [0,360) 15:33:48 oerjan, to my code 15:34:02 it multiplied too early 15:34:21 ok 15:34:33 -!- Slereah_ has quit (Read error: 113 (No route to host)). 15:37:06 -!- Hiato has quit ("Leaving."). 15:37:24 -!- Hiato has joined. 15:38:42 degrees are ugly 15:39:56 angles expressed on a scale from zero to random in base random with randomly created characters in a sentence written in a natlang, could this get any worse 15:40:08 i doubt it could 15:40:38 The angle is 49823y4pcnq283yn4p9cq283y5p9q235. 15:41:10 well, random base that happens to be the convention :) 15:43:00 AnMaster: i don't actually just hate physical objects artificially created for a specific purpose, like i said earlier, i also hate backwards-compatibility, and all kinds of conventions 15:43:25 err, conventions that aren't perfect, but are used because of backwards-compatibility 15:43:32 i don't hate *all* conventions 15:44:28 also i'm out of stuff to read :< 15:44:33 i mean stuff i have to read 15:44:49 not fun 15:45:54 you have to read Ulysses. now! 15:46:09 you can't make me! sadly. 15:46:50 and i only like reading computer/math related books 15:46:53 tragic, isn't it. 15:47:13 and sounds like tragedy, yes, not sure what book that is 15:47:22 -!- Hiato has quit ("Leaving."). 15:47:32 hmm 15:47:50 seems it wasn't a shakespearean masterpiece of great tragedy 15:48:10 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | yes 00 false. 15:49:34 -!- ais523 has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | MistyRoses are Red, Violets are Blue. 15:52:06 -!- AnMaster has quit (Connection timed out). 15:52:25 -!- AnMaster_ has joined. 15:54:03 I don't know what I missed 15:54:05 ok 15:54:07 oerjan, as for [) I do know what it means, though I don't know the English name for it 15:54:09 * Disconnected (). 15:54:44 i didn't get that last one. many have spoken since. 15:55:01 -!- AnMaster_ has changed nick to AnMaster. 15:55:11 half-open interval 15:56:05 or should that be semi- 15:56:51 demi-open 15:57:05 I'd say semi-, I think 15:57:55 wikipedia says half- 15:59:06 http://en.wikipedia.org/wiki/Interval_(mathematics) 15:59:24 * ais523 just received an email saying that the doors won't work again for a couple of weeks... 15:59:54 ais523, why? 16:00:01 that's just crazy 16:00:08 upgrading the computer system that validates our swipe cards 16:00:10 and where will you chat on irc from? 16:00:25 ais523, how can that take more than a few days!? 16:00:34 various other places, there are a few open-access labs I can go in sometimes 16:00:36 not weekends though 16:00:48 also wifi tends to carry, sometimes that helps when it isn't raining 16:03:04 -!- AnMaster_ has joined. 16:04:40 -!- AnMaster has quit (Nick collision from services.). 16:04:42 -!- AnMaster_ has changed nick to AnMaster. 16:05:58 this sucks 16:06:34 what 16:06:39 my connection atm 16:07:03 still ais523 how can that take more than a few days!? 16:07:09 not sure if that went through or not 16:07:10 ah yes. i think pikhq took the flyswatter, i'm afraid. 16:07:25 AnMaster: don't ask me 16:07:31 because I don't have a clue either 16:07:39 ask? 16:07:56 it's some huge bureaucratic thing 16:08:00 probably involves more than one department 16:08:10 also it's September so there are new students 16:08:13 ais523, still ask, asking doesn't hurt 16:08:24 anyway my card seems to be mysteriously working anyway 16:08:30 so with any luck it won't affect me... 16:08:35 ais523, hm at what level are you studying currently? 16:09:15 I'm a fourth-year student, MEng Electronic and Computer Engineering 16:10:19 MEng? 16:10:25 Master of Engineering 16:10:31 ah 16:10:32 a qualification that generally requires 4 years to get 16:10:43 I see 16:10:54 universities vary about whether it's a 1-year upgrade from Bachelor of Engineering, or if it's awarded all in one go 16:11:02 my course is an all-in-one-go one 16:11:11 heh 16:16:05 -!- puzzlet_ has quit (Read error: 60 (Operation timed out)). 16:17:28 -!- puzzlet has joined. 16:22:25 -!- Slereah2 has joined. 17:06:05 -!- oerjan has quit ("leaving"). 17:15:24 -!- AnMaster_ has joined. 17:18:56 -!- AnMaster has quit (Nick collision from services.). 17:18:58 -!- AnMaster_ has changed nick to AnMaster. 17:19:04 wtf is up with my connection today 17:19:08 usually it is rock solid 17:19:37 ais523, how goes gcc-bf btw? 17:19:45 I'm still doing other things 17:19:54 if someone else wants to finish the tricky parts I'd be grateful 17:19:54 right 17:20:06 ais523, I wouldn't manage it :P 17:20:10 but I need to figure out exactly what the build system is before even being able to upload it in a form that others can use 17:20:33 ais523, oh? how do you currently build it then? 17:20:42 a whole load of shell scripts 17:20:46 thar call each other 17:20:56 ais523, also I assume it is against last gcc? gcc 4.3.x 17:20:57 and rely on me having set up everything by hand first 17:21:00 or? 17:21:08 and it's against the version of the source in the Ubuntu repos 17:21:17 ais523, no clue what one that is 17:21:24 4.2.3 17:21:32 ah right 17:22:03 ais523: is that under gpl3? 17:22:07 yes 17:22:11 bah. 17:23:28 it's not like the resulting programs are GPL3, though 17:23:36 they're just a mix of LGPL and 28 different BSD-style licences 17:23:42 but i was considering contributing to gpl3 17:23:44 errrr 17:23:46 to gcc-bf 17:24:02 the part of it I haven't done isn't gpl3 17:24:05 it's currently "unspecified" 17:24:16 i mean, once it'sdone 17:24:17 and I'll decide on a licence for it later 17:24:33 the gpl3 code is gcc, and the code that goes into it 17:24:36 though allow me to suggest BSD or MIT or the Eiffel Public License 17:24:43 newlib has a crazy permissive licence 17:24:51 and bf-ld can be anything really as I wrote it all myself 17:25:03 ais523: Eiffel Public License is pretty esoteric 17:25:05 as does libbf, but that will almost certainly be BSD 17:25:10 it's like BSD or MIT, but shorter 17:28:23 ais523, what is the code that won't be gpl3? 17:28:27 library stuff? 17:28:30 yes 17:28:41 but didn't you say you would use newlib? 17:28:44 the stuff that's linked into the resulting program 17:28:50 and yes, I do 17:29:00 there's libbf as well which fills in gaps in newlib 17:29:04 like I/O and filesystem 17:29:10 which the OS normally takes care of 17:29:12 hah 17:29:23 also, there's the assembler/linker, which is an important part of it 17:29:30 I'm writing that by hand in Perl and haven't chosen a license yet 17:29:40 perl, huh? 17:29:41 why perl 17:29:46 regexen 17:30:32 also, things like hash-tables built into the language are nice for doing linking 17:30:55 damn the connection is failing again 17:30:56 hm 17:30:57 no 17:31:13 seem to still be connected 17:31:13 huge lag 17:31:26 ais523, but how will you be able to call that from inside the bf program? 17:31:33 I don't 17:31:35 that's the linker 17:31:42 ais523, *blink* 17:31:43 generally speaking you don't call the linker from inside the resulting executable 17:31:53 AnMaster thinks you are writing gcc in bf, ais523 17:32:00 either that or he doesn't know what a linker is. 17:32:09 I do know what a linker is 17:32:24 I'm not doing shared libraries if that's what you're wondering about 17:32:58 although I'm writing the code such that I could make it a bytecode compiler with a brainfuck-based VM, rather than compiling directly into brainfuck, if I wanted to 17:33:18 the second version would make it possible to compile files into executables then run the executables from inside the brainfuck program 17:33:23 which would be nice 17:35:24 -!- AnMaster_ has joined. 17:36:16 wow, I'm getting quite good at standing on one leg and balancing a laptop on my knee, whilst swiping for a door with the other hand 17:36:26 -!- AnMaster has quit (Nick collision from services.). 17:36:28 -!- AnMaster_ has changed nick to AnMaster. 17:37:00 http://rafb.net/p/Gjgh1u98.html 17:37:02 and first thing tomorrow I'm going to call the ISP and complain (they have closed the call center for the day) 17:37:37 ais523, wtf :P 17:37:37 the way it works is that I compile everything into asm, both the program and the standard libraries 17:38:00 then statically link the program and the required parts of the stdlib together 17:38:07 then assemble the result into a single brainfuck program 17:38:12 and yes, the filesystem isn't executable 17:38:44 ais523, hm and it isn't the real file system? 17:38:52 yes, it's a fake filesystem 17:39:02 the code for it is surprisingly readable as it has pretty much nothing to do with brainfuck 17:39:10 it works using malloc 17:39:15 to allocate space for the files 17:39:18 ais523, is it possible to bundle data files on it? 17:39:30 some programs need to read data or settings files and such 17:39:36 not atm, but I hope it will be eventuall 17:39:39 s/$/y/ 17:39:42 nice 17:39:50 no technical reason why not, just haven't written that part yet 17:39:56 ais523, hm how does that code work, if it is C I would like to read it 17:40:05 ais523: wow, I'm getting quite good at standing on one leg and balancing a laptop on my knee, whilst swiping for a door with the other hand <<< elaborate 17:40:19 oklofok: I often carry a laptop out of this room to get something to eat 17:40:24 the problem is then getting back into the room again 17:40:32 the door is weighted, and needs to be pulled open 17:40:41 and will only open within a few seconds of swiping a card 17:40:54 also I'm not strong enough to hold my laptop in one hand safely 17:41:20 ais523, oh? need to body build ;) or get a macbook air ;P 17:41:32 just watch out so you don't cut yourself ;) 17:42:07 so: my solution is to balance the card on my laptop, walk to the door, then stand on one leg, balance the laptop on the other leg with my left hand for support, swipe the card with my right hand, drop the card on the laptop, open the door with my right hand, then as it swings shut hold the laptop with both hands, put my left leg on the ground and hook the door with my right leg 17:42:16 ironically this is the simplest method I've found 17:42:51 ais523, you could fold the laptop, carry it under one arm 17:42:59 in the folded state 17:43:17 ais523, might disconnect you for a moment though ;P 17:43:35 AnMaster: yes, I like to do it seamlessly so you lot don't realise what's happened unless I tell you 17:43:41 haha 17:43:42 also it makes an interesting topic of conversation 17:44:01 indeed 17:44:33 how much does your laptop weigh / how weak are you? 17:45:07 oklofok: it's actually pretty heavy 17:45:38 over 2 kg 17:45:41 ? 17:45:54 AnMaster: http://code.eso-std.org/gcc-bf/libbf/libbf.c 17:45:55 oklofok: probably 17:46:15 AnMaster: that + newlib = standard library for gcc-bf 17:46:47 note that it's untested and probably buggy 17:47:46 ais523, you should allow optionally making using of PSOX! *ducks* 17:48:08 AnMaster: actually the code's designed so that's a possibility, not planning to work on it atm though 17:48:33 ais523, what's the #if PASS == 0 and such stuff for? 17:48:43 to generate lots of separate .o files from one .c 17:48:50 so the linker only links the ones you need 17:48:55 rather than all of them 17:49:01 ais523, pretty esoteric, but why not use separate C files? 17:49:06 I tried to emulate the usual semantics of UNIX linkers 17:49:29 and I just didn't think of using separate C files, also some of the functions reference each other so having them in the same file is neater 17:49:42 besides many of the functions are so short that separating them would be overkill 17:49:52 and there's some boilerplate like the headers that's the same for all of them 17:49:56 ais523, I believe glibc have more or less one function per file 17:50:03 possibly some static functions as wlel 17:50:04 well* 17:50:12 I believe glibc functions tend to be long 17:50:16 Deewiant, true 17:50:20 AnMaster: yes, but libgcc has everything in four or five files 17:50:30 ais523, large files? 17:50:36 yes 17:50:48 fun fact: my build process compiles each function in libgcc three times 17:51:02 with different word sizes 17:51:29 that way if I'm missing a function, I get not just the 8- and 16-bit versions, but the 32- and 64-bit versions too 17:51:35 ais523, extern void __brkpos; 17:51:36 wtf 17:51:48 yes I read the comment 17:51:49 AnMaster: the double underscore should warn you that something's up there 17:51:50 but still wtf 17:52:02 and void is the right data type, brkpos is literally 0 bytes long 17:52:39 by the way comp.lang.c told me that I was talking nonsense 17:52:43 but it works, so I don't care 17:52:45 ais523, isn't double underscore used for "compiler internal variables/functions" 17:52:51 AnMaster: yes, exactly 17:52:53 like gcc's __builtin_foo() 17:52:56 what do you think that is? 17:53:02 I'm writing a compiler here, after all... 17:53:05 ais523, true 17:53:20 * ais523 waits for tusho to make a snarky comment 17:53:22 ais523, but does the C standard define this reserved "namespace"? 17:53:26 yes, it does 17:53:30 ah 17:53:41 double underscore followed by anything, or single underscore followed by a capital letter 17:53:50 ais523, and one underscore? Seems to be libc stuff a lot of the time 17:54:02 ais523: Fed up of arguing with AnMaster, I wish I could /ignore him but then I'd miss out on half of #esoteric. 17:54:03 they're both defined in both standards, but the first is used in C89 more and the second is used in C99 more 17:54:10 Not a particularly good half... but a continuity-making half. 17:54:19 single underscore is not defined by the standard as such 17:54:23 * AnMaster say the same about tusho 17:54:31 AnMaster: It's "says". 17:54:32 except for capital letters 17:54:38 tusho, thanks 17:54:59 but it's become a sort of pseudonamespace that tends to be used neither by implementations nor by user programs 17:55:10 if it's in libc, though, the only legitimate reason I can think of is that it's linking to something in asm 17:55:23 ais523, so it is mostly used by libraries then? 17:55:31 the difference between C identifiers and asm identifiers on most systems is that the asm version of a C identifier has an extra _ at the start 17:55:35 or by who? 17:55:40 libraries normally 17:55:49 but really stuff like _var shouldn't be used by anyone, it's just confusing 17:55:57 a C program can use it under some situations, but why? 17:56:06 no need 17:56:10 (exception: _ is in the user namespace, and quite commonly used as a macro name, by gettext, for instance) 17:56:10 -!- KingOfKarlsruhe has quit (Remote closed the connection). 17:56:26 ais523, I think valgrind headers sometimes use triple underscore 17:56:29 let me check 17:56:52 AnMaster: in that case most likely they're interfacing with compiler internals in the asm 17:56:58 thus two underscores from the internals, one for asm 17:57:06 ais523, also one and two 17:57:13 in various places 17:57:23 well, valgrind's linking against the user program 17:57:35 ais523, indeed 17:57:36 so it uses names like __vg_replace_malloc in implementation namespace 17:57:46 bbl sorry 17:57:47 to avoid clashes with user program identifiers 17:57:49 ais523: for standards questions like extern void, you might want to ask comp.std.c 17:58:16 it's easier to check that you don't clash with any well-known compiler than it is to check with any program anyone's ever written 17:58:28 Deewiant: I know about comp.std.c, mostly they don't like questions so much 17:58:37 they prefer complaints about tricky bits in the standard 17:58:45 like asking why gets is still there, for instance 17:58:48 heh 17:58:56 whereas comp.lang.c answer questions about what's allowed in programs 18:06:59 What's more eco-friendly than keeping servers in the garden? Have you even considered the possibility of sentient tomatoes? 18:07:20 ATTAAAACK OF THE KILLER TOMATOES! 18:07:22 ATTAAAACK OF THE KILLER TOMATOES! 18:07:40 THEY'LL BEAT YOU, BASH YOU, SQUEEZE YOU, CHEW YOU UP FOR LUNCH! 18:07:50 AND FINISH YOU UP, FOR SUPPER OR LUNCH 18:07:53 look at the context, though 18:08:07 sentient tomatoes would be so much more eco-friendly than a server in the garden 18:11:34 ais523, hm I don't think any mainstream newsgroup or irc channel would like what you are doing 18:11:41 it's too esoteric 18:11:50 what, gcc-bf? 18:11:54 yes 18:11:58 AnMaster: nah, see, there are people with senses of humour 18:12:04 tusho, yes us :) 18:12:04 those people like it just fine, if amusedly 18:12:10 AnMaster: however... you're not in that set 18:12:14 as far as i can tell 18:12:20 but I know about channels like ##c and such 18:12:29 ##c is not mainstream 18:12:32 it's the bullshit fringe 18:12:39 gcc-bf isnt humorous, really 18:12:44 tusho, I *do* like gcc-bf 18:12:52 -!- Mony has joined. 18:12:54 no idea why you would think I don't 18:14:01 set = people who have a sense of humour 18:14:14 (AnMaster in set) -> false 18:14:54 ais523, would you say I have humor? 18:15:06 different people have different senses of humour 18:15:13 you have one but it's incompatible with tusho's 18:15:16 ais523, yes I agree 18:15:16 plop 18:15:16 ok, people with a _good_ sense of humour 18:15:27 just about everyone in #esoteric has one 18:15:34 hi Mony 18:15:37 tusho, well good is subjective 18:15:50 I don't like your sense of humor 18:15:58 AnMaster: since I am in #esoteric, i can objectively say that an #esoteric-esque sense of humour is a good one 18:16:01 you do not have one... 18:16:06 but I wouldn't call one is better than the other 18:16:13 s/call/say/ 18:16:49 tusho, you are just trolling, it is so pathetic 18:16:52 oh well 18:16:57 no, no I am not trolling 18:17:06 disagreeing with you != trolling 18:17:09 not liking you != trolling 18:17:14 tusho, agreed 18:17:15 accusing me of trolling without basis == trolling 18:17:23 but saying that "good" is objective 18:17:27 that is false 18:17:32 and the way you act is trolling 18:17:43 in #esoteric, it can be objectively said that an #esoteric-esque sense of humour is good 18:17:48 relative to #esoteric 18:17:51 calm down you two, you're both reasonable when you're on your own 18:17:53 which you will note you are in 18:17:59 ais523: disagreed on that point. 18:18:00 just something bad seems to happen when you end up in the same channel together 18:18:05 tusho, yes but you can't objectively say what an "#esoteric-esque sense of humour" is 18:18:15 AnMaster: yes, i can: it's the sense of humour most of #esoteric have 18:18:34 tusho, and then it isn't same as you certainly, I see lot of humor that you seem to ignore 18:18:44 probably you just don't notice it is humor 18:18:47 ignore != i didn't find it funny 18:19:01 ignore == everyone spamming the channel with 'lol' is annoying 18:19:02 tusho, but I disagree that most have same humor as you 18:19:24 lol 18:19:29 ais523, :D 18:21:05 ais523, as far as I can tell libbf.c's malloc() will experience rather bad memory fragmentation, though I'm not sure 18:21:41 well there's plenty of memory to spare 18:21:46 and not all that many files likely created 18:21:48 ais523, 16 MB you said 18:21:54 yes 18:21:56 16 MB is plenty 18:21:57 that's quite a lot really 18:22:04 I used to store all my data on floppy disks 18:22:11 so I appreciate how big a megabyte is 18:22:14 ais523, but will it be used for other stuff than file system that sbrk? 18:22:21 sbrk's used for all malloc 18:22:29 but sbrk is used by malloc 18:22:32 and things use malloc 18:22:43 generally speaking you don't sbrk stuff directly because there's no way to give it back 18:22:52 ais523, err glibc uses mmap for large allocations 18:22:59 so does openbsd's libc 18:23:02 AnMaster: this is newlib I'm talking about 18:23:07 and I checked all its dependencies 18:23:07 ais523, ah right 18:23:09 mmap wasn't in them 18:23:11 not the general case then 18:23:24 I actually hacked my linker to return all the dependencies it needed 18:24:19 ais523, one think I wonder how you solve in gcc-bf is function pointers. Do you use some global jump table? 18:24:27 like a huge outer loop 18:24:30 yes 18:24:35 actually all looping's done like that 18:25:03 and all labels, instead of being label: are more like ip=16; break; case 16: 18:25:52 ais523, btw.... I thought about what you said about pointers being slow in gcc-bf... How fast is gcc-bf generally? 18:26:05 not sure, it's vary variable 18:26:07 I know that is very hard to answer of course 18:26:09 s/vary/very/ 18:26:17 glacial, probably 18:26:29 basically addition and subtraction can be done very fast as long as it's all in registers 18:26:34 so can assignment 18:26:37 everything else is slow 18:26:49 and computational-order-slow, for that matter 18:26:55 ais523, cfunge's funge-space is quite heavy on pointers.... 18:27:00 and other parts too 18:27:10 anyway I changed the function-call interface 18:27:14 to put arguments in registers 18:27:16 it needs it, really 18:27:18 oh no! it won't run cfunge in negative time! 18:27:22 ais523: fix it immediately! 18:27:52 tusho: AnMaster is actually more intelligent and multi-track-minded than you give them credit for 18:28:03 tusho, I was just thinking since ais523 asked me about cfunge deps in relation to gcc-bf before (he asked, I didn't even consider it). 18:28:08 (not before that is) 18:28:15 it was just idle speculation 18:28:23 I'm wondering about what gcc-bf could run in theory 18:28:28 not what it can run in a reasonable time 18:28:30 but I think it may take a huge amount of time to even do hello world 18:28:30 ais523: he's annoying, that's what 18:28:31 :| 18:28:45 AnMaster: hello world has huge stdio overhead 18:28:54 if you write the POSIX version it can be done pretty quickly, I think 18:29:00 ais523, since even the setup of funge space pre-allocates a lot of more cells than really needed (20 000 by default iirc) 18:29:01 that is, using write() rather than printf() 18:29:15 oh, you mean cfunge under gcc-bf doing hello world? 18:29:19 yes, that would be insanely slkow 18:29:22 s/k// 18:29:23 ais523, yes 18:29:43 ais523, actually cfunge initially allocates #define FUNGESPACEINITIALSIZE 150000 cells 18:30:03 yes it is tuned for mycology there, yes I know tusho will make fun of it, no I don't care about him 18:30:21 actually I'm not going to make fun of it so that your sentence was a waste of typing 18:30:23 ais523, also what posix version of hello world? 18:30:23 AnMaster: the main problem I'm finding with gcc-bf is that it throws all the common knowledge about optimisation out of the window 18:30:24 huh 18:30:30 AnMaster: the one that uses write rather than printf 18:30:34 (and solely for that reason) 18:30:36 ah 18:30:48 ais523, yes I guess so 18:31:18 it would be still faster with __builtin_dot and __builtin_comma or whatever I decide to call them when I get round to writing them 18:31:26 ais523, if you do manage to compile cfunge under it (and even get it to output it's help) I would really really like to know how large the binary was 18:31:32 the other six BF commands are probably best avoided 18:31:37 also, what do you mean "binary"? 18:31:50 brainfuck programs are text... 18:31:54 ais523: __builtin_output, __builtin_input 18:31:56 ais523, true, wrong word 18:31:57 program 18:32:02 __builtin_move_left, __builtin_move_right 18:32:03 tusho, good idea 18:32:05 hm 18:32:08 __builtin_increment 18:32:11 __builtin_decrement 18:32:15 also, for the lulz: 18:32:20 __builtin_loop_start 18:32:22 __builtin_loop_end 18:32:24 tusho, that could mess up the program if you did it the wrong way 18:32:30 AnMaster: the loop ones? 18:32:30 yes 18:32:35 but __builtin_ is pretty dangerous anyway 18:32:38 also, it'd be funny 18:32:41 (incidentally, with an early version which just linked and output dummy executables, I got autoconf to configure C-INTERCAL to cross-compile to brainfuck, and it correctly identified the default output filename as a.b. I was very impressed.) 18:32:45 since they'd work kind of like setjmp 18:32:48 in their interface 18:32:55 tusho, the other ones could mess with register state or memory pointer too 18:32:56 so 18:33:01 tusho: as I said, the other 6 are probably best avoided 18:33:02 AnMaster: well yeah 18:33:04 but still 18:33:08 ais523: they're esoteric, though 18:33:13 move_left and move_right would actually be worst of all 18:33:15 tusho, ,.+- are probably the least dangerous 18:33:19 int main(void) { __builtin_increment(); __builtin_loop_start(); printf("hello world!\n"); builtin_loop_end(); return 0; } 18:33:21 :D :D :D 18:33:21 as they would basically cause all of memory to no longer exist 18:33:31 ais523: well, __builtin_ is ALWAYS dangerous territory 18:33:35 I think it's best to expose as much as possible 18:33:44 because some crazy soul will write a program that uses them and it will WORK 18:33:48 + and - would be safe, you could give it an argument saying where the pointer should be at the time 18:33:57 ais523: possibly you should have __asm__ too 18:34:03 I have __asm__ 18:34:07 read the library I linked 18:34:09 you could use the register stuff in the __asm__ syntax to avoid register clobbering 18:34:13 ais523: does it do brainfuck, though? 18:34:17 tusho: no, it does ABI 18:34:20 right 18:34:25 i mean you should have a brainfuck __asm__ 18:34:25 ais523, that reminds me, what is the syntax for that strange __asm__ 18:34:25 but ABI will probably have a literal-brainfuck opcod 18:34:27 like __bf_asm__ 18:34:29 s/$/e/ 18:34:33 ais523: ah, good 18:34:44 then you could implement __builtin_move_left yourself 18:34:45 AnMaster: it takes either 3 or 4 args, separated by colons 18:34:50 "lea (%1), (%%mark)\n" 18:34:50 "\tloloop.32 %0\n" 18:34:51 just by using the ABI thing to do "lit [" 18:34:51 like that 18:34:54 and "<" 18:34:56 and stuff like that 18:35:17 the first is the asm you want, the second describes the outputs, the third describes the input, and the fourth tells it what registers are clobbered 18:35:33 AnMaster: that's typical ABI that you're quoting there 18:35:57 ais523, also I can (from reading libbf.c) see plenty of ways to make programs that would break gcc-bf in subtle ways 18:36:05 except that's actually an ABI template, so % becomes %, and %1 and %0 are replaced 18:36:08 AnMaster: examples? 18:36:25 ais523, that signal stuff looks suspect in pass 15 for example 18:36:34 it *may* be safe, not sure how it is used 18:36:41 it's all done with newlib's simulated signals 18:36:58 so IOW it doesn't have to be reentrant or anything like that that's normally important with signals 18:37:13 because there's no way to get a signal other than raise or abort 18:37:56 -!- olsner has joined. 18:38:22 ais523, am I right to guess that in gcc-bf a program with many small functions (non-inlined, maybe because they are recursive or whatever) will be a lot slower than a program with a few large functions? 18:39:18 if recursive, yes; if not, probably not all that much because although using the call stack is moderately slow looping and goto have overhead just as function calls do 18:39:42 (incidentally, gcc translates all flow control to goto or one of three types of function call internally) 18:39:57 ais523: even if? 18:40:00 how does that work? 18:40:03 computed goto? 18:40:18 if is done by computed goto, yes 18:40:29 ais523, really? how strange 18:40:45 ais523, does gcc optimise tail recursive functions btw? 18:40:45 it's always in a conventional form, though 18:41:03 which corresponds to goto *(x ? &&label1 : &&label2) 18:41:14 AnMaster: it can do, it needs special patterns in the machine description for a sibling call though 18:41:53 ais523, hm gettimeofday() returns a constant... what should then be used for srandom()? 18:42:08 ais523, also cfunge would lockup forever if gettimeofday() never changes 18:42:13 I've been wondering about that too, about the only thing I can think of is asking the user 18:42:25 also, I've been wondering if gettimeofday should increment the time every time it's called 18:42:26 ais523, since it uses a loop to check the granularity of gettimeofday() in HRTI 18:42:29 to prevent that sort of lockup 18:42:51 simple enough, I could just use a static variable holding the fake time 18:44:12 ais523, this is what cfunge does first time HRTI is loaded http://rafb.net/p/EAxpoX15.html 18:44:37 ok, I can hack it to get that to work easily enough 18:44:46 ais523, though HRTI wouldn't work at all under gcc-bf for various other reasons 18:44:51 there is more than one possible set of bogus data to return from gettimeofday() 18:44:54 as it is time measure 18:45:09 ais523, well incrementing by one every time could work 18:46:15 ais523, " (void) tz;" 18:46:17 huh? 18:46:35 AnMaster: usual trick to tell warning-generators that you aren't using the variable 18:46:44 that particular idiom's recognised by pretty much all lintalikes 18:46:51 ais523, since this needs gcc anyway what is wrong with __attribute__((unused)) 18:47:00 AnMaster: it's a lot longer. 18:47:02 I like doing it portably, besides it's faster to type 18:47:06 plus why be unportable when it's unneeded 18:47:13 tusho: snap 18:47:19 :) 18:47:55 it's not as if (void)tz; translates into any code anyway on any sane compiler 18:48:02 indee 18:48:04 indeed* 18:48:26 gcc-bf's insane and it doesn't even translate into any code on that 18:49:21 ais523, don't "shared" parts of gcc remove it before? 18:49:41 no, I think it's probably removed in RTL 18:49:43 ais523, oh computed goto how will that work in gcc-bf? 18:49:53 you can 18:50:03 can't* just jump to a specific place in the code 18:50:03 AnMaster: the whole thing's basically a massive switch statement, so very easily 18:50:12 ais523, really? for every address? 18:50:23 for every possible break in program flow 18:50:38 ais523, what if you used computed goto to go elsewhere? 18:50:48 so the program's broken into cases at every label, if, goto, loop and function call 18:50:58 computed goto can goto any label it likes 18:51:11 void _exit(int rv) 18:51:11 { 18:51:11 (void)rv; 18:51:11 goto *(void*)0; 18:51:11 } 18:51:17 and each label is a place that program flow could potentially be transferred to 18:51:28 ais523, exit goes to the start? 18:51:35 it doesn't start at 0! 18:51:48 loops never do in brainfuck 18:52:15 but yes, that is one weird function by normal standards 18:52:19 ais523, for case 23.... isn't that true for lots of other functions too? sqrtl, tanl, sinl, cosl, asinl and so on 18:52:37 cfunge check that they exist and fall back to double variants 18:52:42 but... hm 18:52:58 AnMaster: it's to do with which functions are used by newlib, and which ones aren't 18:53:01 newlib needs fabsl to exist 18:53:17 my library is just like gcc; it implements bits of C99 but not all of them 18:53:26 ais523, case 24 says old style prototype, but I don't see that. All I see is a modern varargs prototype: "int fcntl(int fd, int cmd, ...)" 18:53:31 not oldstyle+ 18:53:35 s/+/?/ 18:53:46 to be precise, it implements the bits that newlib needs 18:53:53 also, I don't get that warning on case 24 18:54:00 but are you actually trying to compile that code? 18:54:14 ais523, no I was reading your comemnt 18:54:16 half of it doesn't make any sense on any platform other than gcc-bf 18:54:19 comment* 18:54:21 oh, yes 18:54:23 " n.b. old-style prototype as we don't know how many arguments we're getting and thus need to force an unprototyped call " 18:54:24 it was old-style once 18:54:26 but I changed it 18:54:31 ais523, yes it is varargs 18:54:33 and forgot to update the comment 18:54:43 I assumed it was using old-style argument type-punning 18:54:49 like lots of the old BSD interfaces did 18:55:05 but actually it turned out to be varargs 18:55:10 ais523, hm I don't see any calls to functions to handle varargs stuff in there 18:55:16 ironic really because I never use the third argument 18:55:17 like va_start va_end and such 18:55:43 the ... is needed though so it passes args on the stack 18:55:58 varargs calling conventions are different on most architectures from the non-varargs version 18:56:13 /usr/include/gentoo-multilib/amd64/fcntl.h:extern int fcntl (int __fd, int __cmd, ...); 18:56:26 weird to use __ in parameter list 18:56:26 yes, it's a ... in newlib's .h too 18:56:34 and not at all in a system header file 18:56:42 imagine if the user does #define fd before including it 18:56:48 ah... right 18:56:55 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 18:57:02 header files can't mention any user-namespace stuff at all other than what they're meant to be defining 18:57:12 (splint actually gives a warning about this on its strictest mode...) 18:57:29 ais523, hm does opening /dev/null work? 18:57:46 not if it doesn't exist and you don't specify O_CREAT 18:57:54 no directory structure, no special filenames 18:57:59 ais523, I mean a null device node 18:58:05 there are no device nodes 18:58:08 ah 18:58:10 stdin/out/err are special-cased 18:58:21 everything else is a regular file, all chars but NUL allowed in filenames, no directories 18:58:40 also, all files are owned by root, nosuid, noexec, permissions 644 18:58:49 ais523, am I right in my understanding that gcc-bf will have one very advanced security feature? 18:59:01 which is the inability to do anything BF can't do? 18:59:28 mandatory NX on the data and write protected code? 18:59:34 and that mprotect() can't change it 18:59:35 :D 18:59:56 ais523, you could make it sound enterprisy :) 19:00:00 mandatory NX on data, mandatory NR/NW on the code 19:00:22 annoyingly gcc requires executable stack to implement nested functions 19:00:29 sounding like a crazy esoteric code wizard who can code something like gcc-bf is sometimes better than sounding enerprisey 19:00:32 *enterprisey 19:00:32 but I decided to not implement that because they aren't part of standard C anyway 19:00:33 ais523, ah hm 19:01:01 ais523, yes. Except I have seriously considered adding JIT using llvm or similiar to cfunge 19:01:15 only thing blocking that is 1) time 2) LLVM is C++ 19:01:35 well, I may write the bytecode version some time in which the program is stored in the same memory as the data 19:01:44 and only the VM would be unreadable and unwritable 19:01:47 ais523, would be even slower :D 19:02:02 the memory would be "nonexecutable", but the VM could execute it so there wouldn't be a problem 19:02:14 also, I don't think it would be slower by a factor of more than n^2 or so 19:02:18 ais523, anyway it would be an optional cfunge feature if I did it 19:02:33 n^2.. haha 19:02:42 AnMaster: luckily gcc-bf runs in polynomial time, I think 19:02:58 hehehe 19:04:25 ais523, which column in ps aux is the memory usage that would be relevant for gcc-bf? 19:04:47 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 19:04:47 arvid 11814 0.2 0.5 18080 7948 pts/4 T 20:03 0:00 build/cfunge -S mycology/mycology.b98 19:05:02 probably all of them added together 19:05:05 apart from PID 19:05:16 and CPU and memory percent 19:05:20 well, yes 19:05:28 so VSZ + RSS? 19:05:32 I think so 19:05:38 ais523, in what units? 18080 + 7948 19:05:40 the entire OS is inside the program too 19:05:53 ais523, I'm not sure if it will fit with mycology inside 16 MB RAM 19:06:33 ais523, cfunge wasn't coded for that memory limited systems 19:06:46 16MB of ram is not memory limited. 19:06:57 well, I've fit an entire Linux distro into 16 MB disk space, 64 MB RAM 19:07:04 for a gui app running on a fully-featured OS, sure. 19:07:05 although I had to take bits out to fit Python on there 19:07:11 for an esolang interp, no, 16MB is luxury 19:07:16 tusho, fully featured? As in Linux? 19:07:24 AnMaster: Or Windows or OS X. 19:07:25 you *are* looking for a fight 19:07:50 119890 * 8 bytes for 64-bit cfunge to hold mycology 19:07:58 AnMaster: it's in kilobytes 19:08:20 so yes, 26MB is a bit too much 19:08:22 ais523, hm 19:08:27 ais523, debug info I bet 19:08:35 ais523: why can't you have infinite memory 19:08:37 well, gcc-bf doesn't support debug info 19:08:38 i.e. that of the BF host 19:08:52 tusho: it does, but you can't take pointers to stuff outside the first 16MB 19:09:02 ahh 19:09:05 which makes it pretty hard to use with regular C programs 19:09:11 ais523: perhaps have an extension thing:a 19:09:13 a composite type 19:09:15 like 19:09:20 ais523, it gets down to 17 MB without it 19:09:22 16mb + one byte 19:09:23 is 19:09:25 and this is 64-bit funge remember 19:09:30 __mem(1, 1) 19:09:42 that is 19:09:49 __mem(multiples of 16 for base offset, value) 19:09:50 AnMaster: how much of that is on the stack? 19:09:54 addresses memory at offset+value 19:10:09 ais523, most is the hash table on the heap, which have lots and lots of pointers 19:10:11 You get 16MB for the stack, and another 16MB for heap + bss + initialised data + rodata combined 19:10:19 ais523, I use a memory pool to allocate the cells from 19:10:22 also the program itself doesn't count 19:10:36 you get 16 million basic blocks there 19:10:46 which is easily enough for anything I'm likely to be able to think of 19:10:54 ais523, remember my pointers are 64 bits 19:11:03 on x86_64 19:11:03 ah yes, mine are 32 bits 19:11:11 actually they're 26 bits 19:11:16 but padded to 32 for sanity reasons 19:11:27 ais523, and only a tiny fraction of the memory is on the stack 19:11:31 generally C likes sizeof(void*) to be an integer 19:11:36 basically arguments + local variables 19:11:42 ah, pity 19:11:47 it'll be fast to access the stack, though 19:11:51 if you don't have much on it 19:12:05 ais523, well I pass pointers to stuff on the heap 19:12:14 ais523, also what about static const arrays? 19:12:23 they're in the same memory storage as the heap is 19:12:24 I use one large such to look up fingerprint function pointer in 19:13:34 ais523, actually I don't think I use all that memory, but the initial hash table size is on the large size, I found that it helped performance quite a bit in mycology 19:13:59 well maybe I can just reduce the numbers a bit, I don't think performance is likely to be very important here... 19:14:16 ais523, indeed 19:14:24 let me build a x86 build 19:14:29 doubling the speed of your program is pointless when the interpreter's making it worse by several factors of n 19:16:53 ais523, my normal build is 2.5 MB binary with debug info and 160 KB after strip, with an -Os x86_32 build I got 79 KB after strip 19:17:22 maybe I should get a buildable-by-someone-else version of gcc_bf up sometime 19:17:31 so you can have a go at running what I've done so far 19:17:32 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 19:17:33 arvid 13331 4.0 0.3 6780 5400 pts/4 T 20:17 0:00 build_32/cfunge -S mycology/mycology.b98 19:17:43 ais523, that is *without* changing the initial alloc size 19:17:54 bf-gcc -o works fine atm (and is equivalent to bf-gcc -S apart from the output filename) 19:18:05 and those numbers look tenable 19:18:11 ais523, well 32-bit pointers 19:18:15 it tells a lot doesn't it? 19:18:23 cfunge is extremely pointer heavy 19:18:31 well, 32-bit ints too 19:18:36 and it's also extremely int heavy 19:18:42 ais523, well I used that in the last 64-bit build 19:18:45 or at least native-int-size heavy 19:18:49 ah, ok 19:18:49 it didn't make a lot of difference 19:19:02 but yes, code that pointy isn't going to go well with brainfuck 19:19:07 as brainfuck doesn't like pointers or anything similar 19:19:20 ais523, well a hash library is pointy by definition kind of 19:19:49 I have tried to reduce pointers there 19:19:58 special case the hash library code 19:20:35 hmm... if I wrote a funge interp from scratch in brainfuck, I could take advantage of the infinite memory to not bother with hashing 19:20:54 ais523, from using a void* pointer in the nodes to point at the data to contain the data directly in the record 19:21:01 ais523, you said 16 MB 19:21:03 not infinite 19:21:14 yes, I was talking about brainfuck in general not gcc-fb 19:21:17 s/fb/bf/ 19:21:21 where you do have infinite memory 19:21:23 ais523, also you wouldn't want to write a befunge-98 from scratch, it is *hard* the first time 19:21:31 since there are such a lot of pitfalls 19:21:38 it was a lot easier the second time with efunge 19:21:40 gcc-bf has infinite memory but it doesn't have infinite addressable memory, so the infinite memory is a bit pointless 19:21:45 but even then I hit several of those pitfalls 19:21:49 if you don't use mycology for testing it's a lot easier ;-P 19:22:07 Deewiant, but it doesn't test everything 19:22:16 no shit? 19:22:32 kind of hard to test every possible valid befunge-98 program :-P 19:22:38 Deewiant, kk ..... k v ...... kt kq 19:22:46 Deewiant, ;P 19:22:51 oh kkk too 19:23:08 AnMaster: what does o do again? 19:23:09 Deewiant, it means you can do like MS: Rig the POSIX test 19:23:15 ais523, output to a file 19:23:16 kkkt is bad enough to think about, anyway 19:23:18 i reads from a file 19:23:26 #tkkkt 19:23:30 ais523, they are voluntary 19:23:35 Deewiant, gah 19:23:44 hm 19:23:48 Deewiant: probably worth having something on the stack beforehand 19:23:56 y#tkkkt 19:24:00 hahah 19:24:01 aargh! 19:24:05 :-D 19:24:09 what about 19:24:13 >yt 19:24:19 or something like that 19:24:53 a fork bomb for funge 19:24:54 :D 19:24:59 in fact 19:25:02 a single t is 19:25:05 or yt 19:25:25 argh 19:25:29 Deewiant: I just ran #tkkkt in debug mode in ccbi 19:25:36 ais523, oh what happened? 19:25:36 that's what I'm doing 19:25:38 sorry, y#tkkkt 19:25:39 hence the "argh" 19:25:46 it crashed :-/ 19:25:48 it went into an infinite loop at the first k 19:25:53 Deewiant, ais523: leason: Set your ulimits! 19:26:00 busyloop by the feel of it as everything else on the computer stopped responding 19:26:10 now if I only knew what caused the crash 19:26:22 Deewiant, it doesn't crash in cfunge 19:26:28 AnMaster: and it's certainly worth setting ulimits when compiling gcc-bf, several times the resulting code, which runs during the compilation, turned out to have infinite recursion 19:26:33 AnMaster: what does it do in cfunge? 19:26:35 Deewiant, all it does is hit my ulimit after about 2 seconds 19:26:53 it could be a stack overflow crash 19:27:05 AnMaster: which ulimit does it hit? 19:27:06 Deewiant, well you store the stuff on the stack? 19:27:19 ais523, -m 19:27:43 with is 256 MB 19:27:43 what does that one do? 19:27:49 I don't think I've ever used it 19:27:53 max memory size (kbytes, -m) unlimited 19:27:57 AnMaster: so what, you think I should allocate k's stack frame on the heap? :-P 19:27:57 and I don't understand the docs for it 19:28:05 wait, -m is "max resident set size" on my computer 19:28:36 Deewiant, ah right 19:28:39 Deewiant, hm 19:29:20 ais523, huh 19:29:46 and I have no idea what that means 19:29:57 ais523, wait it hit -v first actually 19:29:59 I got both set 19:30:08 -v was 300 MB 19:30:14 ah, -v is one of the ones I normally set when I have a hunch that something might hit ulimit 19:30:20 normally I set it quite low, though 19:30:34 actually what happened to be exact was: 19:30:35 Could not create IP, possibly out of memory? 19:30:35 Things may be broken now, continuing anyway. 19:30:35 Unexpected error. 19:30:57 not sure what logic I used for that 19:31:22 ais523, oh and the 25 MB, those include libraries I think 19:31:28 ais523, if I set -v low enough I get: 19:31:40 ./cfunge: error while loading shared libraries: libdl.so.2: failed to map segment from shared object: Cannot allocate memory 19:31:50 that was for 10 MB 19:31:53 on -v 19:32:06 ais523, that could explain the huge memory usage 19:32:12 ncurses and such for example 19:32:40 yes 19:32:48 actually it seems cfunge does *not* handle most errors gracefully really: 19:32:51 well, ncurses may be a lot simpler on gcc-bf 19:32:54 $ ( ulimit -v $(( 15 * 1024 )); ./cfunge -S test.b98; ) 19:32:54 cfunge: /home/arvid/src/cfunge/trunk/src/ip.c:199: ipListDuplicateIP: Assertion `index <= (*me)->top' failed. 19:33:02 ais523, it needs terminal move 19:33:05 if I get it working there at all 19:33:13 ais523, all I use from ncurses are the low level terminfo bits 19:33:26 I don't use the high level dialog functions 19:33:38 AnMaster: what happens if you try to write to /dev/full inside cfunge? 19:33:43 that's a useful device to know about 19:33:59 ais523, well using o, it should refelect 19:34:14 ais523, the issue is that it doesn't handle realloc/malloc errors gracefully all the time 19:34:21 I wonder how many people take the possibility of reflecting o into account? 19:34:23 * AnMaster tests 19:34:34 ais523, I certainly do reflect on it in some cases 19:34:36 also, handling realloc/malloc errors can often be done simply by wrapping realloc and malloc 19:34:42 ais523, also you do when you code since o is optional 19:34:44 I meant when writing Funge programs 19:34:55 ah, yes 19:34:59 ais523, you need to check with y if i and o are implemented 19:35:59 $ ( ulimit -v $(( 13 * 1024 )); ./cfunge -S test.b98; ) 19:35:59 malloc: Cannot allocate memory 19:35:59 Couldn't create funge space!?: Illegal seek 19:35:59 hah 19:36:09 or just try bouncing filenames off them to see what happens 19:36:13 ais523, I think I know what that was. :D mmap failing 19:36:46 ais523, it seems at least 11 MB alone in the 64-bit build is needed to load the libraries and the binary 19:37:09 well, the libraries and binary aren't in memory for gcc-bf 19:37:14 so there's no problem to worry about there 19:37:39 ais523, indeed and on linux the libraries will be shared with other apps 19:37:43 mapped into memory 19:37:54 whereas gcc-bf statically links everything 19:37:57 so just one copy of each libary 19:38:00 library* 19:38:00 because there is no more than one program per universe 19:38:24 ais523, right. Does ick have issues with dlopen/dlclose btw? 19:38:36 shouldn't do, it doesn't notice them itself 19:38:43 it will have no idea if you're using them or not 19:38:50 ais523, right 19:41:18 -!- Hiato has joined. 19:41:36 -!- puzzlet has quit (Remote closed the connection). 19:41:40 -!- puzzlet has joined. 19:42:22 -!- KingOfKarlsruhe has joined. 20:10:08 -!- Hiato has quit ("Leaving."). 20:13:45 ais523, I need your help with an issue 20:13:52 what is it? 20:13:57 ais523, a sec for link 20:14:18 ais523, read the comments on http://aur.archlinux.org/packages.php?ID=18937 20:14:27 ais523, I haven't got any response 20:14:33 care to sort it out? 20:14:57 ais523, the *direct* link is needed since it is a program that downloads, not a human 20:15:02 which comment? 20:15:04 but that person doesn't seem to understand it 20:15:07 the one by Claudio? 20:15:13 ais523, exactly 20:15:19 I understand his situation better than you do, probably 20:15:28 ais523, well I need *direct link to tarball* 20:15:31 nothing else works 20:15:32 there is more than one download site for c-intercal 20:15:36 he's suggesting you link to the other one 20:15:41 ais523, what one? 20:15:49 I need a direct link to the tarball again 20:16:11 ais523, it will be fetched by a program, not by a human like he seems to assume 20:16:30 http://www.intercal.ukfsn.org/download/ick-0-28.tgz and http://intercal.freeshell.org/download/ick-0-28.tgz are the two download locations for C-INTERCAL 0.28 20:16:37 ais523, select one 20:16:45 that is *permanent* 20:16:56 the problem is maybe neither of them are 20:17:06 maybe we should persuade tusho to host a permanent version 20:17:09 ais523, also it was over a month since I responded to him and he didn't reply 20:17:15 "what an arse" is my feeling 20:17:25 "what an arse" who 20:17:36 (btw if you expect C-INTERCAL download locations to be permanent, you are obviously unaware of the history; many versions were never distributed over either HTTP or FTP) 20:17:49 some were done as shars over usenet, others were distributed as patches to other versions 20:17:55 oh, AnMaster is calling Claudio an arse? 20:17:57 well fuck you too AnMaster 20:17:57 yes 20:17:58 ais523, the link will be fetched by wget basically (actually curl iirc) 20:18:09 AnMaster: what about using a redirection service? 20:18:10 ais523, so I need a link *which works for that* 20:18:12 to get a tarball 20:18:33 ais523, couldn't http://intercal.freeshell.org/download/ick-.tgz provide that? 20:18:34 I understand what you need, I'm just trying to explain you might not be able to get it 20:18:36 that seems natural 20:18:50 ais523, or you could use the sourceforge mirror system :) 20:19:00 I do that for cfunge *exactly for that reason* 20:19:01 sourceforge... now there's an idea 20:19:21 ais523, and it is the only bit I use the cfunge project on there for really 20:19:50 ais523, it should be perfect for mirror network 20:20:11 well, maybe I'll move to eso-std.org when I'm convinced that tusho won't move everything around every 10 seconds 20:20:25 ais523, sf.net seems sane to me 20:20:33 ais523: you know me. I'll move it around as soon as AnMaster updates his thing to use it 20:20:37 ais523, also why didn't he bother to respond I tried to ask what he meant? 20:20:48 AnMaster: people have lives 20:20:52 AnMaster: he tends to be busy, I think 20:21:10 ais523, yet another reason to use sf.net, I think they changed download link once the last 5 years :P 20:21:34 from dl.sourceforge.net/project/filename to download.sourceforge.net/project/filename 20:21:40 or something like that 20:21:59 ah yes http://downloads.sourceforge.net/cfunge/cfunge-0.3.2.tar.bz2 20:22:04 used to be dl subdomain 20:22:31 ais523, and that redirects to some mirror 20:22:48 AnMaster: evil idea: use Debian's version of the original source 20:22:56 ais523, um huh? 20:22:59 that's mirrored all over hte place 20:23:01 is that permanent in any way? 20:23:05 I think so 20:23:12 it's bundled in the dpkg 20:23:20 along with a Debian-specific diff 20:23:21 ais523, no way I'm extracting that 20:23:47 ais523, I do odd stuff already: http://aur.archlinux.org/packages/c-intercal/c-intercal/PKGBUILD 20:24:02 ick at least used to break at -j2 or higher 20:24:06 AnMaster: that's less than a page of odd stuff 20:24:45 in fact that looks positively sane 20:25:11 ais523, what about the gentoo version: http://bugs.gentoo.org/attachment.cgi?id=157803 20:25:30 (odd that Claudio didn't comment on http://bugs.gentoo.org/show_bug.cgi?id=228563) 20:25:39 that's better, but still too short 20:25:51 hm 20:25:54 (btw config.sh is named configure again in -1.29, you'll be glad to know) 20:28:50 "IMHO, the major.minor.major version is asking for trouble. What will happen if 20:28:50 upstream decides to add a micro version component? I think the Gentoo version 20:28:50 should follow major.minor (i.e., 28.0, even if this is boring)." 20:28:52 ais523, btw ^ 20:29:28 AnMaster: I actually have incomplete plans somewhere for a complete Debian-legal version mangling scheme 20:29:35 I even got hold of the source to dpkg to check 20:29:41 ais523, eh? 20:29:43 even 28.0 won't handle the version numbers for the alphas 20:29:55 -1.29 = alpha for 0.29 20:30:00 or possibly -1.0.29 20:30:07 or maybe even 1.-3.0.29 20:30:11 not sure yet 20:33:41 ais523, well we will just skip alphas then 20:34:00 * ais523 is tempted to release a version of C-INTERCAL with a version number like "fish" to annoy everyone 20:34:13 ais523: just make versions C-INTERCAL programs 20:34:14 I won't, though, that would be evil 20:34:17 short ones 20:34:18 one line ones 20:34:20 haha, "fish" :-D 20:35:00 hm 20:36:24 -!- Mony has quit ("À vaincre sans péril on triomphe sans gloire..."). 20:39:46 ais523, better yet: make the version fish and the *codename* 0.29 20:39:48 :D 20:39:55 heh 20:40:03 it's had various codenames at various stages 20:40:07 ais523, oh? 20:40:10 -1.29 is a good one, though, as it's pretty obvious what it means 20:40:21 it was called 1.29 at one point, because I wasn't sure if it was a bugfix release or not 20:40:23 TeX (and metafont) have that funny version numbering, where the version number approaches pi (or e for metafont) by adding one digit to the end of the version number; TeX is currently at 3.1415926. But maybe that's too user-friendly since it's just a monotonically increasing number. 20:40:42 fizzie, yes I know 20:40:57 isn't latex at 2e soon? 20:41:16 I'm sure most people know, but since the topic was version numbering... 20:43:34 ais523, also I thought it was clc that did negative? 20:43:46 yes 20:43:52 clc does negatives using decimal, though 20:43:58 which is pretty easy to translate 20:44:05 whereas C-INTERCAL is lexicographic 20:44:38 ais523, so 1.-94.-2 is? 20:44:49 0.598 20:45:26 ais523, can you contact Claudio and explain why *direct link to tarball* is needed, since he now added an offending text at the top of http://intercal.freeshell.org/download/ about that 20:45:35 ais523, I hope you can do it soon 20:45:49 or I will just give up on it, it needs a stable link 20:45:58 even if that means it has to be source forge 20:46:00 AnMaster: I think he's pretty much pointing out that a stable link is unavailable via his servers 20:46:44 ais523, well gentoo will mirror it to it's own servers if the ebuild get accepted, but they will fetch from the original 20:46:55 ais523, while archlinux won't mirror source 20:47:01 well in that case just point Arch at the Gentoo servers and you're done 20:47:29 ais523, doesn't work since old mirrored files are cleaned out when the corresponding ebuild is removed 20:47:45 so when it is updated the link will suddenly get invalid overnight 20:47:57 that's always a risk 20:48:05 ais523, well why not sf.net? 20:48:20 give me a reason *against* using them for mirroring 20:48:40 for code or website hosting sure, but their mirror system is way way more stable 20:49:24 AnMaster: you can use them for that if you like 20:49:38 ais523, you need to register the c-intercal project there then 20:49:40 however, INTERCAL was never really based on practicality 20:49:44 since you are the maintainer 20:49:51 and upload new releases 20:50:06 ais523, you don't want distributions to include packages? 20:50:09 is that correct? 20:50:14 ? 20:50:29 oh, well Debian rarely seem to have a problem, they even found some of them without hints 20:50:41 and it seems strange that distros demand a stable download link 20:50:45 ais523, well that is due to them hosting it themselves 20:50:52 couldn't you just update the link whenever it changes? 20:50:53 ais523, *source based distro* 20:51:02 AnMaster: ais523's job is to make INTERCAL as difficult as possible to work with in any way 20:51:07 that's what package managers are good at, isn't it? 20:51:10 you are asking him to do exactly the opposite 20:51:19 tusho: actually, yes, I get criticised on a.l.i if I make it too easy... 20:51:32 possibly I've gone too far letting it build without manual tinkering 20:51:33 just rot13 the tar.gz 20:51:39 ais523, I read a.l.i, it is dead basically 20:51:41 or whatever you use 20:51:49 AnMaster: lots of people read it, hardly anyone writes there though 20:51:52 nobody'll get it to work 20:52:00 ais523, dead :P 20:52:03 Deewiant: .pax.lzma, I'm thinking, with .pax.bz2 and .pax.gz versions too 20:52:06 that way anyone can read it 20:52:09 ais523: and rot13 it 20:52:21 ais523, and I don't write because I don't have access to anything but readonly newserver 20:52:26 Deewiant: INTERCAL doesn't necessarily have to be difficult, but it does have to be different 20:52:38 so using a POSIX standard format when nobody else does = win 20:52:49 Deewiant: .pax.lzma, I'm thinking, with .pax.bz2 and .pax.gz versions too <-- gentoo's unpack ebuild command handle them all 20:52:49 :P 20:52:56 the comp my irssi runs on doesn't even have pax 20:53:03 Deewiant: it's upward-compatible with tar 20:53:05 everyone has access to a write newserver 20:53:07 (google) 20:53:10 regular tar can read pax-encoded files 20:53:13 even if it doesn't know it 20:53:25 GNU tar can even create them 20:53:34 $ type pax 20:53:34 pax is /usr/bin/pax 20:53:35 i have pax on this os x system 20:53:38 ais523: what if it contains stuff like over-255-char filenames or whatever pax supports that tar doesn't? 20:53:53 it gets mapped to files with long complicated names that don't clash with anything 20:53:59 and you get a tar-suitable version instead 20:54:00 ais523, idea: use ar not tar 20:54:04 since tar is for tape 20:54:08 AnMaster: doesn't preserve directory structure 20:54:14 I looked into that when tusho suggested it, though 20:54:14 ais523, argh true 20:54:36 ais523: make an ar which contains ars which are named according to directory 20:54:44 so foo/bar/baz becomes foo.a -> bar.a -> baz.a -> files 20:54:51 interesting idea 20:54:51 haha 20:55:07 ais523, care to write an unpacker script for then ;P 20:55:11 I still think .pax is perfect, it doesn't actually require any extra effort from people but they don't realise it 20:55:20 ais523, and yes that sounds good 20:55:36 ais523, was there any comments on CREATE on a.l.i? 20:55:41 ais523: well, I think people will just try tar xf and be happy when it works :-P 20:55:55 Deewiant: I was going to tell them that that's what they should do 20:56:02 do you think they'd guess even without/ 20:56:08 ais523, nop 20:56:11 they would google 20:56:13 I think some wouldn't even notice that it's pax and not tar 20:56:28 hm? really? 20:56:44 they'll just see "XXXX.XaX.gz" and use tar xzf :-P 20:57:03 Something occurred to me on the bus today: Stereotypical black guy = valley girl | sed 's/like/motherfucker/g' 20:57:17 GregorR: what? XD 20:57:26 Fri Sep 12 17:17:02 CEST 2008 ais523@bham.ac.uk 20:57:27 Sun Sep 14 11:12:25 CEST 2008 Alex Smith 20:57:33 heh, Google is really unhelpful at determining how to unpack a pax 20:57:36 ais523, ^ what is up with those escape codes? 20:57:39 AnMaster: comments 20:57:41 nested comments. 20:57:41 AnMaster: no escapes at all 20:57:42 AnMaster: comments 20:57:42 in the darcs messages 20:57:44 he is trying to break your mailer 20:57:44 that's a valid email address 20:57:45 oh 20:57:46 right 20:57:47 it just has nested comments in 20:58:00 ais523, ah does any modern email client handle it 20:58:01 no spambot I know of is capable of handling them 20:58:08 :D 20:58:15 ais523, far from all humans too 20:58:15 AnMaster: well, Thunderbird can handle comments but not nested comments, I've heard 20:58:15 tusho: There was the world's most stereotype-conformant black guy on the bus today. It was ridiculous. It's like he went to racist websites and adopted every stupid stereotype they had. And yeah, that's the equivalence. 20:59:07 ais523, it seems darcs pull locked up 20:59:12 ofc the utility of a complicated comment syntax with nested comments and escapes for the comment delimiters in email addresses is somewhat suspect 20:59:33 ais523, protecting against spambots? 20:59:35 AnMaster: it shouldn't have 20:59:46 and yes, it's partly spambot protection, and partly just because I can 20:59:58 ais523, I pressed y for the last patch and then nothing 21:00:03 anyway the latest version the cfunge stuff is broken as I haven't redone the built process for it 21:00:16 AnMaster: try killing and restarting the connection? 21:00:23 ais523, trying... 21:00:25 same issue 21:00:38 iirc it used to have some output 21:00:47 it does once it's downloaded 21:00:55 it does that when it has network problems 21:01:10 * AnMaster tries --verbose 21:01:17 Alex Smith **20080914091817] 21:01:17 diffing dir... 21:01:19 there it stops 21:01:38 strange, I've never known it to crash there before 21:02:05 seeing as I moved everything to different places using the wrong commands I could understand if it got a bit confused, but darcs is good at that sort of thing 21:02:52 ais523, it seems to be swap trashing? 21:02:55 let me try a clean unpack myself 21:03:43 it worked for me from clean 21:04:28 heh, that's an awfully quiet bug https://bugzilla.mozilla.org/show_bug.cgi?id=147346 21:04:58 * ais523 recreates a tree 3 patches from the end, then tries pulling the last 3 21:05:03 which is what AnMaster's doing I think 21:05:13 ais523, yes 21:05:22 trying make clean and such now 21:05:39 now it worked 21:05:39 it worked fine for me 21:05:49 not sure what that was, then 21:05:54 ais523, it worked after make clean and removing cfunge build tree in there 21:06:57 it doesn't work cross-compiling yet 21:07:16 I don't know how to tell automake to build with native compiler rather than cross-compiler even in a cross-compilation build 21:07:37 ais523, hm 21:07:48 ais523, ah wait 21:07:54 there are three flags 21:08:00 --host --build --target 21:08:03 at least for gcc 21:08:06 yes, I know taht 21:08:14 I just don't know how Automake handles that situation 21:08:28 gcc isn't automake-based IIRC 21:08:32 ais523, oh? 21:08:38 just autoconf 21:08:41 weird 21:08:50 half the makefiles there seem to be generated dynamically as it is 21:08:53 you would think they would use their own stuff 21:09:06 gcc-bf even has a Perl script which edits one of the makefiles 21:09:12 it compiles once, edits the makefile and recompiles 21:09:14 ais523, haha 21:09:17 they started using autoconf and realized what crap it is before they got to automake 21:09:21 ais523, eugh why? 21:09:22 the makefile isn't even there to edit before the first compile 21:09:43 Deewiant, it is better than maintaining the files by hand 21:09:46 AnMaster: because the makers of gcc in their infinite wisdom didn't forsee that an 8-bit system would need 64-bit emulation libraries 21:09:54 stuff like cmake or scons beat both however 21:10:10 though cmake kind of sucks if you build shared libraries 21:10:14 it has issues there 21:10:33 actually I had my idea for my own make system 21:10:38 which I'll call aimake if I make it 21:10:38 ais523, haha 21:10:46 it doesn't need any input at all 21:10:51 ais523, oh? 21:10:57 runs gcc on every file in the current subdirectory? 21:10:58 it analyses all the stuff in your directory structure and works out what to do itself 21:11:06 heh 21:11:16 and does things like hook into ldd and analyse calls to open to work out dependencies 21:11:19 want to see the efunge build system? 21:11:21 it is 2 lines: 21:11:29 {['src/*'],[{outdir, ebin},warn_obsolete_guard,warn_untyped_record,warn_unused_import,warn_missing_spec_all]}. 21:11:29 {['src/fingerprints/*'],[{outdir, ebin},warn_obsolete_guard,warn_untyped_record,warn_unused_import,warn_missing_spec_all]}. 21:11:34 Emakefile 21:11:55 what about the fingerprint .spec files 21:12:01 then a Makefile wrapper of 7 lines to have a make all target and clean 21:12:09 Deewiant, not part of build system 21:12:12 they are maintainer scripts 21:12:15 coded in bash 21:12:36 and the spec files just describe the fingerprints 21:12:51 they're native build helpers 21:12:59 http://rafb.net/p/VS8txA72.html 21:13:00 like that 21:13:01 ais523, ? 21:13:07 the sort of thing that can be expressed in Automake which for some reason doesn't realise that they shouldn't be cross-compiled 21:13:20 AnMaster: that's data for a native build helper 21:13:23 ais523, ah 21:13:30 arguably idiotism.oil is the same in C-INTERCAL 21:13:35 ais523, .spec? 21:13:37 although it's quite a bit more complicated than those .spec files 21:13:39 or what do you mean? 21:13:44 yes, as .sepc 21:13:45 fingerprint specifications 21:13:48 s/ep/pe/ 21:13:48 spec* 21:13:55 at least in terms of the effect it has on the build 21:13:56 ais523, well extension reuse :P 21:14:15 AnMaster: C-INTERCAL has plain-text documentation for many of the example programs, with extension .doc 21:14:23 ais523, yes indeed 21:14:23 for some reason things keep assuming it's MS-Word files... 21:14:31 but we were here first! 21:14:51 .doc is much older than MS Word 21:15:51 Deewiant, anyway the bash scripts that process those .spec files are large 21:16:01 since they contain here documents with parts of the file 21:16:26 http://rafb.net/p/LekfKu32.html 21:16:30 to generate the fingerprint list 21:16:34 oops still says cfunge 21:16:39 it is the efunge version actually 21:16:44 I ported them to efunge :( 21:16:48 :)* 21:17:37 the cfunge ones are similiar but make use of more of the fields in the .spec files 21:22:16 Hooray, http://tusho.net/blog/ redesign launched 21:24:14 not bad 21:24:19 and is that some genuine data on your blog/ 21:25:18 ais523: 'genuine data'? 21:25:31 well, something other than testing 21:25:36 yes 21:25:37 oh crap 21:25:39 all the dates are wrong 21:25:40 :DD 21:26:16 ais523: if you refresh you will see that there has been actual posts there regularly since its startu 21:26:17 p 21:26:27 er 21:26:28 i broked it again 21:26:57 ais523: ok, if you refresh *now* 21:27:39 ok 21:28:04 ais523, http://bzr.kuonet.org/efunge/b98/files 21:28:17 I think that feature branch is ready to merge into trunk soon 21:28:18 ok, admittedly there was a 10 day gap after nazi dinosaurs 21:28:25 but nazi dinosaurs have that big of an impact, you know? 21:28:29 they count for like 10 posts on their own 21:29:03 -!- ais523 has quit (Remote closed the connection). 21:29:13 ^ a nazi dinosaur's work 21:29:47 -!- ais523 has joined. 21:29:47 hi ais523 21:30:17 Haldo. 21:31:10 hi pikhq 21:32:58 ais523, mention a mail client for linux that supports your email address please 21:33:03 or any at all 21:33:12 netcat 21:33:22 ais523, hah, mutt? pine? 21:33:33 let me try GNU mail, to see if it works 21:34:49 yep, GNU mail works just fine 21:34:57 as long as you escape the parens from bash when invoking it 21:35:13 ais523, any GUI one? 21:35:19 or at least ncruses one? 21:36:02 Evolution failed 21:36:11 ais523, mutt? 21:36:11 it managed the nested comments, but the \) fooled it 21:36:20 I don't have mutt over here 21:36:23 ais523, report a bug :) 21:36:26 ais523, pine? 21:36:38 AnMaster: presumably they'll claim that escaping \ in the To address is a feature 21:36:55 ais523, it is against the specs? 21:37:01 Delivery to the following recipients failed. 21:37:01 "ais523(524\\)(525)x)"@bham.ac.uk@adf.bham.ac.uk 21:37:10 AnMaster: you have to escape \ to put it into an email address 21:37:23 actually, that's weirder breakage than I was expecting, in that bounce message 21:37:43 the problem is I was using \ as an escape character, not as a character in the address 21:38:00 ais523, well is that allowed? 21:38:08 what do the specs say? 21:38:18 ais523, pine handle it 21:38:22 handles* 21:38:24 AnMaster: I don't think you're getting what's going on here 21:38:33 if you want to insert a literal \ in an email address you have to type it as \\ 21:38:39 ais523, ah 21:38:46 ais523, well pine handles your 21:38:46 likewise, if you want to insert a literal ) you have to type it as \) 21:39:12 ais523, I tried and as soon as I stopped editing the field it stripped the comment 21:39:13 properly 21:39:31 well done pine! 21:39:48 ais523, pine is curses based if you don't know 21:39:48 pine ftw 21:39:58 i have never cared much about liceses 21:40:00 but I assume you do 21:40:05 so pine is good for me 21:40:10 even though I use gmail.com 21:40:11 :P 21:40:17 Hm. http://en.wikipedia.org/wiki/Alpine_(e-mail_client) 21:40:22 The successor to Pine. 21:42:02 ais523, mutt fails 21:42:12 To: "524)(525)x" 21:42:21 ais523, or maybe not 21:42:24 I don't know 21:42:26 another interesting breakage... 21:42:35 actually, that may be correct 21:42:45 it's extracted the text of the comment and is using it as the realname 21:42:52 interesting thing to do with the comment, I suppose 21:43:26 ais523, if I enter the full "Alex Smith " it works 21:43:30 To: Alex Smith 21:43:39 it was when I just entered ais523(524\)(525)x)@bham.ac.uk 21:43:42 that I got the other one 21:43:46 taking the realname from the comment is quite clever, really 21:43:55 so in other words, most decent email clients succeed 21:44:06 (I tried on Outlook Web Access; it wouldn't even let me send) 21:44:23 haha 21:45:50 ais523, file a bug against evolution 21:46:07 ais523, and put yourself on CC on https://bugzilla.mozilla.org/show_bug.cgi?id=147346 21:46:13 *with that email* 21:46:15 :D 21:46:41 Bug creates legal issues according to U.S. law since e.g. a trademark in a 21:46:41 company's email address cannot be protected by the (tm) comment correctly. 21:46:52 ... 21:47:14 ais523, hehehe? 21:47:16 oh my 21:47:28 ais523: yes, that's an amusing joke 21:47:30 :P 21:47:35 $.==1 || $.==4 and print $.==1?"[[\n":"]]\n" 21:47:41 s/4/3/ 21:47:51 ais523, intercal? perl? line noise? 21:48:01 that is obviously not intercal 21:48:02 it is perl 21:48:06 Perl 21:48:10 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | my program is provably correct. 21:48:12 quite readable for Perl, too 21:48:15 haha 21:48:16 win topic is win 21:48:24 well line noise 21:48:32 hahahahahahh 21:48:32 AnMaster: have you ever /seen/ line noise? 21:48:35 you joked that perl was line noise 21:48:42 oh man, it's as funny as it was in 1990! 21:48:49 ahahahahahahahahhahahaha 21:49:12 ais523, yes, at http://esolangs.org/wiki/Perl ;) 21:49:18 and yes really 21:49:23 ahahahahahaha! you repeated the same joke! 21:49:26 seen as in on ocilocope 21:49:29 err spelling 21:49:32 The e-mail address you entered (ais523(524\)(525)x)@bham.ac.uk) didn't pass our syntax checking for a legal email address. A legal address must contain exactly one '@', and at least one '.' after the @, and may not contain any commas or spaces. It must also not contain any of these special characters: \ ( ) & < > , ; : " [ ], or any whitespace. 21:49:32 oh my, your comedy is truly the highest quality in the world 21:49:51 ais523, what website? 21:49:59 ais523, and send an email complaining 21:50:01 about the bug 21:50:04 bugzilla.mozilla.org 21:50:18 ais523, file a bug against bugzilla (use your normal email for now) 21:50:19 . 21:50:20 a 21:50:36 ais523, this will be fun :) 21:50:43 nah, I'm just going to utterly fail to be able to file the bug due to the infinite regress involved 21:50:59 ais523, revert to normal email for now? 21:51:04 AnMaster: 'normal email' 21:51:06 his email address is: 21:51:12 ais523(524\)(525)x)@bham.ac.uk 21:51:14 using another would be dishonest 21:51:18 hah 21:51:27 well, no clearly that email address is contrived 21:51:35 I may have to move to another one after a year or so anyway 21:51:36 ais523: what?! you mean that one is dishonest? 21:51:41 no, just contrived 21:51:43 I expected more from you, ais523... 21:51:49 the comments are pretty accurate for a programmer like me, after all 21:52:01 heh, I wonder what email ais523 will switch to... 21:52:05 he'd never use a hosted solution 21:52:07 ais523, well I'm going to file bugs for all websites I use, from now on I will use nested comments when I register 21:52:11 so i'll probably have to set up postfix on rutian 21:52:21 wonder what domain... 21:52:23 should it faill I will register with comment free email and file a bug 21:52:24 :) 21:52:24 probably eso-std.org 21:52:35 tusho: you never know, I have working email on Normish 21:52:36 tusho, qmail! 21:52:38 * AnMaster runs 21:52:45 ais523: now THAT is playing with fire... 21:52:55 (yes I prefer netqmail) 21:53:05 AnMaster: how does a djb know what a license is? 21:53:17 tusho, well public domain works 21:53:21 and it is good software 21:53:25 as if you would care anyway 21:53:37 AnMaster: until recently it wasn't licensed like that 21:53:45 tusho, very true 21:53:47 djb's position on licenses is fundamentally flawed and i'm not risking myself legally like that 21:53:55 tusho, and thus until recently I used postfix 21:53:58 plus on principle i don't want to support software licensed like that 21:54:09 but I had tried qmail out and noted how much better it was 21:54:13 tusho: so this is why you exclusively use programs licenced under GPL3, right? 21:54:21 :D 21:54:30 ais523: no, i use things licensed with licenses that aren't completely broken 21:54:36 i hate the gpl3, but i wouldn't argue it is completely broken 21:54:54 tusho: for ages CLC-INTERCAL's licence agreement was given in source form and had to be compiled in order for you to read it 21:55:06 that is brilliant 21:55:06 :D 21:55:09 and probably legally invalid 21:55:11 yes 21:55:15 although it's just BSD3 anyway 21:55:27 or some trivial variant of it 21:55:32 ais523, you could compile it in your head 21:55:59 AnMaster: I fear it may have been written in CLC-INTERCAL 21:56:03 which is written in itself 21:56:14 ais523, um isn't it in perl? 21:56:17 they supply a pre-compiled version in ICBM so you can get started 21:56:17 AnMaster: no 21:56:22 and the ICBM interpreter is written in Perl 21:56:24 its written in itself, 21:56:30 using its perl ffi 21:56:31 ais523, ah 21:56:33 interesting 21:56:38 CLC-INTERCAL is written in CLC-INTERCAL, and compiles to bytecode 21:56:47 The Perl programs are to interpret the resulting bytecode. 21:56:47 ais523, byte code of what? 21:56:51 of the program you compiled 21:56:55 ais523, argh 21:57:02 or of the compiler, for that matter 21:57:16 ais523, writing an intercal compiler in intercal is pretty hard I bet 21:57:22 much harder than in C 21:57:26 way way harder 21:57:30 AnMaster: it's a different set of syntax for the compilation than for the main programming 21:57:36 the compiler's nothing but CREATE statements 21:57:41 ais523, huh, that's cheating ;P 21:57:46 and the bytecode has lots of features, like COME FROM, that make it easy to compile into 21:57:49 ICBM is the compiler? 21:57:54 no, ICBM is the bytecode 22:00:04 -!- CO2Games has joined. 22:00:36 -!- tusho has quit. 22:05:48 ais523, what is the compiler then? 22:06:04 and the byte code interpreter? 22:06:06 there are various compilers 22:06:13 all of which are written in IACC 22:06:20 IACC? 22:06:25 one of the compilers itself compiles IACC into ICBM 22:06:35 and a Perl program interprets the ICBM 22:06:43 ais523, this is *worse* than C-INTERCAL 22:06:47 sorry :/ 22:06:49 I never said it wasn't! 22:07:03 basically, the IACC compiler is written in IACC and compiles IACC to ICBM. 22:07:17 The other compilers compile CLC-INTERCAL, and other related languages, to ICBM, and are written in IACC. 22:07:19 ais523, bootstrapping it must have been a hell 22:07:26 The ICBM interpreter is written in Perl. 22:07:36 and yes, that's what I think too, probably 22:07:59 ais523, they should write an ICBM -> C compiler in IACC :D 22:08:03 or something like that 22:08:09 -!- tusho has joined. 22:08:09 however compiling iacc.iacc into iacc.io (where io is the extension for ICBM) probably isn't ridiculously difficult by hand as it's all CREATE statements 22:08:26 hmm... let me type that again so tusho can see it 22:08:29 basically, the IACC compiler is written in IACC and compiles IACC to ICBM. 22:08:35 The other compilers compile CLC-INTERCAL, and other related languages, to ICBM, and are written in IACC. 22:08:38 The ICBM interpreter is written in Perl. 22:08:50 ais523: Not the best time. Sorry. 22:09:14 * ais523 wonders what the odds are that anyone but them and Claudio Calvelli really have the faintest idea of how CLC-INTERCAL works internally 22:09:37 ais523, does anyone but you understand the internals of ick? 22:09:41 I certainly don't 22:09:41 I think so 22:09:47 after all I didn't even write some of them! 22:09:51 ais523, ah true 22:10:01 and Joris keeps sending patches to various parts of it, usually the optimiser 22:10:14 ais523, did Claudio Calvelli alone write CLC? 22:10:18 I think so 22:10:28 when was clc released 22:10:31 ais523, no patches? 22:10:34 I submitted bug reports now and again 22:10:39 but they didn't come with patches 22:10:58 well, one came with a patch described in English, but Claudio had to translate it to Perl, so that doesn't count 22:11:30 ais523, do you understand the internals of clc? 22:11:35 to any degree at all 22:11:37 -!- jix has quit ("CommandQ"). 22:11:44 AnMaster: yes, to some extent 22:11:50 not nearly as well as Claudio does, though 22:12:05 ais523, and the opposite is true for ick I guess? 22:12:07 I tried to port it to DOS once but gave up 22:12:12 (he knows it somewhat) 22:12:16 ais523, haha 22:12:20 I don't know how much Claudio knows about C-INTERCAL's internals 22:12:24 ah 22:12:34 I would guess he knows a bit, but am not sure as to the extent 22:12:56 I've had to correct him on the details of CLC-INTERCAL's C-INTERCAL emulation mode from time to time, so not the details 22:13:18 ais523, does ick offer clc-emulation? 22:13:24 yes to some extent 22:13:31 some of the features are just impossible to emulate in a compiled language 22:13:35 and others I never got round to writing 22:13:44 and some of the emulation is buggy 22:13:45 right 22:13:57 but it tries 22:14:01 ais523, I the emulation is buggy the other way too? 22:14:07 almost certainly 22:14:17 and again CLC-INTERCAL doesn't support some of C-INTERCAL's newest features 22:14:39 also they use different syntax by default, but each can emulate the other's syntax more or less perfectly 22:14:47 ais523, I have an idea for how to handle memory leaks in the compiler itself. Not sure how esoteric it would be 22:14:56 "pretty strange" for ick though 22:15:07 that doesn't matter, any idea no matter how sane is esoteric when applied to the C-INTERCAL source 22:15:14 due to how you have to contort it to make it fit 22:15:15 ais523, Boehm-GC 22:15:17 :) 22:15:27 that isn't handling memory leaks! 22:15:31 that's just pretending they don't exist 22:15:32 ais523, it isn't? 22:15:36 besides, I don't think it would help 22:15:36 oh sorry 22:15:40 ais523, really? 22:15:44 the memory leaks aren't actually harmful 22:15:56 as C-INTERCAL allocates all the memory, then deallocates it all with basically no allocations involved 22:15:59 due to the way it works 22:16:12 possibly that's why fixing them's a low priority 22:16:26 the optimiser is definitely free from leaks as that's generated code, i hope 22:16:30 s/ i / I / 22:16:48 ais523, cfunge have no memory leaks or fd leaks. Some fingerprints do leave still allocated (and reachable data) and FILE and SOCK offers the ability to leave open fds around 22:17:09 bleah 22:17:15 ais523, this you can use to debug *befunge scripts* in valgrind 22:17:19 found that useful 22:17:28 found a fd leak in fungot some time ago for example 22:17:29 AnMaster: that would just add to the pipe. 22:17:30 AnMaster: just write your own befungegrind 22:17:39 ais523, heh very hard 22:17:43 :\ 22:17:50 since it is so self modifying 22:17:55 for that matter, if INTERCAL had a memory-allocation statement, simply NEXTING FROM it would let you track all the allocations and deallocations 22:18:08 IFFI doesn't have NEXT FROM gerund, though 22:18:08 ais523, and the only issues are FILE and SOCK fingerprints basically 22:18:11 maybe I should add that 22:18:13 ais523: NEXT FROM is post-come-from? 22:18:19 tusho: no 22:18:24 ais523: i mean 22:18:25 it's COME FROM but saves a return address 22:18:27 ah 22:18:29 anyway. 22:18:30 bleah 22:18:34 before the thing it comes from 22:18:43 :\ 22:18:47 so you can next from it, change things, then drop back to exactly where in the code you were 22:18:59 ais523, and yes I guess you could add it to IFFI, it is not like anyone else realistically even can implement it ;P 22:19:10 don't be so hard on yourself 22:19:12 it is very very specific to ick and patched cfunge 22:19:16 it isn't exactly all that difficult 22:19:31 ais523, really? Well I guess CLC could implement it 22:19:33 maybe I should find another C-compatible Funge-98 interp and patch that too to demonstrate 22:19:48 ais523, rc/funge is always threaded iirc 22:20:06 ais523, apart from that there aren't any good ones iirc 22:20:16 well I'll just patch a bad one then 22:20:17 ais523: ccbi would work 22:20:23 tusho: I don't know D, though 22:20:27 I'd have to learn it first 22:20:29 ais523: you wouldn't have to 22:20:33 C <-> D interface hm 22:20:34 just copypaste his fingerprints and interface to c 22:20:38 AnMaster: that's simple 22:20:40 just use extern 22:20:42 tusho: you have to insert something around the main loop 22:20:44 ais523, oh and ccbi also always concurrent 22:20:48 ais523: ok, but that wouldn't be too hard 22:20:48 so wouldn't work 22:20:55 you could figure it out by trial & error and reading what he's got 22:20:58 AnMaster: also just disabling t would likely be fine 22:21:02 D isn't taht weird 22:21:03 you could alter the code to make it reflect 22:21:04 ais523, hm 22:21:17 as long as there's only one thread it doesn't matter that the interp is threaded 22:21:30 ais523, yep, I believe ccbi use a table of function pointers 22:21:38 so simply removing the t entry should should do it 22:21:50 but ask Deewiant to be sure 22:22:21 * AnMaster ponders concurrent efunge. It would be way way more fun if it didn't have to be synced 22:22:44 Deewiant, is it possible to implement MVRS but not t i or o= 22:22:46 ? 22:23:06 oh he is sleeping 22:24:58 ais523, efunge may be not be deathstation 9000 but I'll try to make it deathstation[9|0] at least ;P 22:25:24 AnMaster: is 0 a list, or is that unusual head-tail syntax? 22:25:49 maybe it's 9 followed by an infinite number of 0s, that's easy to express in Prolog (although it sends the interp into an infinite loop if you try) 22:25:58 it's also easy to express in Haskell where it actually works 22:25:58 ais523, you would normally write [9, 0] there for the list, but you can construct lists like that yes 22:26:00 kind of compex 22:26:08 in Prolog it would be [9|[0]] 22:26:18 ais523, I believe those would do the same in erlang 22:26:18 because the thing after the | is a list itself 22:26:20 let me check 22:26:37 hm wait 22:26:40 1> [9|0]. 22:26:40 [9|0] 22:26:40 2> [9|[0]]. 22:26:40 [9,0] 22:26:46 was wrong 22:26:48 sorry 22:27:01 so lets make it deathstation{9, 0} ;) 22:27:06 or even better 22:28:17 so lets make it deathstation<<9:4/unsigned-big, 0>>. 22:28:17 ;) 22:28:23 ais523, :D 22:28:35 what are you laughing at now? 22:28:46 6> <<9:4/unsigned-big, 0>>. 22:28:46 <<144,0:4>> 22:28:52 a bitstring 22:28:55 not a binary 22:29:02 a binary must be whole bytes 22:29:13 while a bitstring can be sub-byte size 22:29:46 actually I think it 9 encoded in a nibble as unsigned big endian followed by 0 22:30:01 wait that doesn't work 22:30:13 ais523, the bit syntax is sometimes *too* powerful 22:30:26 the 4 may be bytes or bits not sure 22:30:49 no bits 22:31:16 ais523: 22:31:17 7> <<9:5/unsigned-big, 2:3/signed-little>>. 22:31:17 <<"J">> 22:31:28 J is 74 22:31:28 (no it doesn't make sense) 22:31:32 ais523, yes 22:31:34 if that helps 22:31:47 * ais523 is slightly worried that they could calculate that in their head 22:31:55 ais523, hahaha 22:32:01 you did? 22:32:02 wow 22:32:05 A is 65 22:32:09 so @ is 64 22:32:11 and J is 74 22:32:13 ais523, hm ok 22:32:20 I don't remember those details 22:32:25 and what has @ got to do with it? 22:32:30 @ comes before A 22:32:36 yes and? 22:33:04 so @ + (position of letter in alphabet) = (ASCII code for that capital letter) 22:33:20 sdfdhg 22:33:36 ais523, tell me if you think this makes sense: 15> <<9:5, -2:3>>. 22:33:36 <<"N">> 22:33:56 first is 5 bits the next is 3 bits 22:33:57 fhg 22:34:03 well, N is 78 22:34:16 which is 00101110 22:34:21 you can't do TURKEY BOMB in it 22:34:27 but almost ;) 22:34:37 -2 in 3 bits is 110 so that makes sense 22:34:52 9 in 5 bits is 01001 which makes less sense 22:35:16 so I'm not entirely sure where that N comes from 22:35:33 ais523, what would you get it to? 22:35:54 wait 22:35:54 01001110? 22:36:00 sorry, I set the wrong bit 22:36:04 if you add them after each other 22:36:04 then 22:36:06 it is 01001110='N' 22:36:06 17> 2#01001110. 22:36:06 78 22:36:10 so that's right 22:36:11 yep 22:36:17 I simply screwed up translating 'N' into binary 22:36:21 aha 22:36:33 is there a syntax for extracting individual bits too? 22:36:38 if so, write mingle, now! 22:36:41 ais523, sure I:1 22:36:50 let me show you 22:37:33 Bleh. 22:37:41 <> 22:37:44 that was easy 22:37:48 and way more readable than tusho's 22:37:58 Blearearerh. 22:38:10 assuming I've got the syntax right 22:38:15 it'll be something like that even if I haven't 22:38:17 :\ 22:39:03 -!- ais523 has quit (Remote closed the connection). 22:39:22 hm 22:39:22 1> MyBin = <<9:5/unsigned-big, -2:3/unsigned>>. 22:39:23 <<"N">> 22:39:30 2> <> = MyBin. 22:39:30 <<"N">> 22:39:36 -!- ais523 has joined. 22:39:36 3> {FirstBit, Tail}. 22:39:36 {0,<<78:7>>} 22:39:36 hi ais523 22:39:41 argh 22:39:44 1> MyBin = <<9:5/unsigned-big, -2:3/unsigned>>. 22:39:44 <<"N">> 22:39:44 2> <> = MyBin. 22:39:44 <<"N">> 22:39:44 3> {FirstBit, Tail}. 22:39:45 {0,<<78:7>>} 22:39:45 :\ 22:40:02 I was going to write a function that interated over it 22:40:04 wait a sec 22:40:18 urk 22:40:20 <> 22:40:22 AnMaster: what are you trying to do now, select? 22:40:24 5> <>. 22:40:24 ** exception error: bad argument 22:40:31 ais523, :0 doesn't work 22:40:44 ais523, also lower case = atom 22:40:44 what's the first bit called then? 22:40:54 Upper case = Variable 22:41:03 and same case syntax as Prolog I see 22:41:04 ais523, um that defines how many bits that field have 22:41:11 not the index of the bit 22:41:18 oh, how do you extract one bit then? 22:41:39 ais523, well you could so A:1, B:1, C:1 and so on, or you could do a tail recursive loop of some sort 22:41:53 I would do a tail recursive loop 22:41:57 extracting head bit every time 22:42:06 or maybe two head bits 22:42:12 then adding each to an accumulator 22:42:18 if you are trying to separate them 22:42:25 if you are building you want the reverse 22:42:38 ais523, in both cases you want a tail recursive loop 22:42:56 ais523: ha, my version is more readable then 22:43:16 ais523, you want to join them? one bit from each? 22:43:25 AnMaster: he wants to mingle. 22:43:46 tusho, I don't remember what that meant 22:43:53 AnMaster: alternate bits in the two numbers 22:44:00 ais523, right 22:44:30 ABCDEFGHIJKLMNOPQ mingle RSTUVWXYZ1234567 = RASB(etc) 22:45:31 not quite 22:45:36 you got the arguments the wrong way round 22:45:42 oh, right 22:45:43 whatever 22:45:49 ARBSCT and so on 22:47:34 -!- puzzlet_ has joined. 22:48:02 ais523, can you give me two numbers to test on and the result 22:48:05 32-bit ones please 22:48:23 -!- puzzlet has quit (Remote closed the connection). 22:48:52 65535 $ 0 = 2863311530 22:48:59 that's a nice simple one to start off with 22:49:09 ais523, input is 16 bits and output 32? 22:49:14 yes, in INTERCAL 22:49:21 although doing it with more bits gives the same answer 22:49:30 7> mingle:mingle(65535, 0). 22:49:30 2863311530 22:49:53 ais523, http://rafb.net/p/WZOfED60.html 22:49:55 64280 $ 64280 is 4294901760 IIRC 22:50:14 ais523, ok there may be a bug then: 22:50:20 wait typoed 22:50:26 but yes, that definition looks right 22:50:28 oh yes 22:50:30 9> mingle:mingle(64280, 64280). 22:50:30 62977023 22:50:32 and very Prolog-like 22:50:32 sure? 22:50:46 ugh, that answer is far too low to be correct 22:50:53 ais523, some bug then 22:51:03 ais523, need to sleep though soon 22:51:50 AnMaster: maybe it's treating the numbers as signed or something like that and getting confused? 22:51:52 -!- KingOfKarlsruhe has quit (Remote closed the connection). 22:52:34 ais523, what endian? 22:52:43 ais523, default is big endian in erlang binaries 22:52:50 not sure if it matters but... 22:53:12 it could matter if it isn't being abstracted away 22:53:28 try 0x1234 $ 0x4321 22:53:31 and give the result in hex, please 22:53:38 16#1234 22:53:41 you mean 22:53:43 yes 22:54:55 14> io:format("~.16B~n", [mingle:mingle(16#1234, 16#4321)]). 22:54:55 48B07084 22:55:19 ais523, I get different results if I put /native in the mingle/2 (the wrapper function) 22:55:28 ugh, that probably is the problem 22:55:35 let me reinstall C-INTERCAL to check what the answer should be 22:55:37 16> io:format("~.16B~n", [mingle:mingle(16#1234, 16#4321)]). 22:55:37 B0488470 22:55:40 ais523, with native 22:55:40 I uninstalled it to test the build process 22:57:15 ais523, however maybe it should in fact be /little not /native, don't have any big endian system to check on 22:57:27 my guess is /little 22:58:03 well the actual answer is 0x120d0e21 according to C-INTERCAL 22:58:14 ais523, huh 22:58:18 which makes sense, it fits in with what I know about mingling 22:58:29 ais523, so what may the issue be then? 22:58:44 19> io:format("~.2B~n", [mingle:mingle(16#1234, 16#4321)]). 22:58:44 10110000010010001000010001110000 22:58:55 ais523, give me bit pattern for icks result 22:59:25 10010000011010000111000100001 22:59:36 ais523, that makes no sensed 22:59:39 sense* 23:00:02 ais523, hey I get that using /big 23:00:12 almost 23:00:16 10010000011010000111000100001 23:00:22 22> io:format("~.2B~n", [mingle:mingle(16#1234, 16#4321)]). 23:00:22 1001000101100000111000010000100 23:00:25 is big 23:00:27 misread 23:00:27 wait, #esoteric blocks colours, doesn't it? 23:00:33 ais523: yes 23:00:34 ais523, yes 23:00:43 there it is with every other bit in bold 23:01:20 ais523, yes right, doesn't explain the result I got 23:01:34 the bold bits spell out 4321, the unbold bits spell out 1234 23:01:37 in mine 23:04:21 we can't see the bold, ais523 23:04:30 tusho: AnMaster can, I sent it to him in /msg 23:05:04 AnMaster's result is right when written backwards in middle-endian 23:05:08 which doesn't really make sense at all 23:08:59 anyway, moving back here 23:09:13 AnMaster: the problem is that the bits come out in the wrong order, backwards to be precise 23:09:19 yes 23:09:25 so just get the solution with bits backwards, then reverse the bits pairwise 23:09:28 wait 23:09:31 fully backwards? 23:09:37 pairwise backwards 23:09:37 oh pairwise 23:09:42 the first pair, then the second, then so on 23:09:51 ais523, is there a way to avoid doing it in pairs I wonder? 23:09:52 you can easily generate pairs the other way round to make it truly backwards 23:09:56 ah right 23:09:57 or just swap the arguments for that matter 23:10:03 ais523, that would be more effective 23:10:15 anyway I think you mean "efficient" not "effective" 23:10:23 lists:reverse() wonder if there is a reverse for binaries too? 23:10:27 my solution was effective (i.e. it worked) just not efficient (i.e. it wasn't fast) 23:10:40 anyway, bit-reversal is one of INTERCAL's strong points, most languages aren't nearly as good at it 23:10:49 C is decent, though, once you know the tricks 23:10:58 ais523, ah 23:11:02 I wonder... 23:11:03 what is this operator 23:11:09 (x<<1)~x 23:11:29 1010 = 1011 23:11:30 tusho: for each 1, it looks to see if there's a 1 to its left 23:11:32 and returns the result 23:11:41 yeragh 23:11:45 ais523: haha, that is great 23:11:48 any practical applications? 23:11:50 as in, you get the set of digits to the left of 1s 23:12:05 actually, arithmetic's all about this sort of thing in practice 23:12:10 what is ~ now again? bitwise not? 23:12:13 AnMaster: select 23:12:14 AnMaster: yes 23:12:16 ah 23:12:18 no ais523 23:12:20 i meant the C meaning 23:12:28 tusho: bitwise not only takes one argument, though 23:12:29 oh, wait 23:12:31 (X bsl 1) bnot X 23:12:33 ais523: ok, i mean 23:12:34 possibly 23:12:36 I assumed it was INTERCAL select because you gave it two arguments 23:12:40 ah 23:12:43 1111 ~ 0000 = 1111 23:12:48 yes that confused me too 23:12:49 1111 ~ 1010 = 0101 23:12:53 that's the operator i'm talking about 23:13:00 tusho: what happens when the first arg isn't 1111? 23:13:02 the last argument is a pattern: for every 1, that bit is NOT'd in the left argument 23:13:04 bitwise xor? 23:13:07 bitwise xnor 23:13:11 the complement of xor 23:13:12 ais523, ARGH 23:13:14 for every 1 in the second argument, the bit at the same position is NOT'd in the left argument 23:13:16 is what tusho's trying to describe 23:13:22 that is my dyadic ~ 23:13:22 ah 23:13:30 wait, no 23:13:39 that is just bitwise XOR that tusho's described 23:13:42 which is called ^ in C 23:13:46 ah 23:13:46 it has a perfectly good name already 23:13:47 oh 23:13:47 duh 23:13:48 :P 23:13:51 then 23:13:56 ok, the op is (x<<1)^x 23:13:58 (X bsl 1) bxor X 23:13:59 :) 23:14:03 what does THAT do, apart from what it says 23:14:04 in erlang 23:14:05 and (x << 1)^x is INTERCAL xor 23:14:05 I mean, anything useful 23:14:11 ais523: is it? bahhahaha 23:14:15 except that INTERCAL xor does a rotate not a select 23:14:20 s/select/shift/ 23:14:28 as in the top bit of x << 1 gets copied to the bottom bit 23:14:35 sort of a bitshift with carry 23:14:47 and it does have uses, the implementation of greater-than for instance 23:14:49 ais523, there is an x86 instruction for it iirc 23:14:55 which is one of the great triumphs of INTERCAL-72 23:14:59 ROT or something like that 23:15:01 and yes, lots of machines have rotate instructions 23:15:07 ais523: what is this 23:15:15 what is what? 23:15:22 ais523: no mainstream high level languages seem to offer it 23:15:22 wait 23:15:25 i'm making up a silly thing 23:15:26 very strange 23:15:28 x>>(x<<1) 23:15:48 tusho: destroys the sign bit and copies it from the bit above it, if signed 23:15:54 s/above/below/ 23:16:01 ais523: that is great 23:16:08 ais523, moves? 23:16:11 if unsigned it's boring, it's just x & ((1 << (bits-1))-1) 23:16:25 AnMaster: ? 23:16:31 ais523, you said copy 23:16:34 ais523: it's returning 0 for me, always 23:16:39 but doesn't it move the whole number one step? 23:16:43 tusho: whoops, I misread it 23:16:48 I calculated (x<<1)>>1 23:17:03 what you wrote always returns 0 with a positive argument 23:17:08 and is undefined with a negative argument 23:17:11 which is just stupid 23:17:20 ais523, undefined with negative? how so? 23:17:29 AnMaster: shift a negative amount 23:17:38 not to mention the overflow if the argument happens to be INT_MIN 23:19:03 ah 23:19:12 ais523, would shift the other way obviously 23:19:29 is that defined in C/ 23:19:33 ais523, nop 23:19:40 not that I know of 23:23:22 ais523, actually I was wrong, for lists access at head is more effective 23:23:36 for binaries reading at head and writing at tail is most efficient 23:24:09 s/effective/efficient/ 23:24:22 argh yes 23:24:35 effektivt in Swedish 23:24:47 which is closer to the former 23:24:53 thus the confusion 23:27:26 -!- CO2Games has left (?). 23:33:02 ais523, do you think the result was elegant btw? 23:33:07 yes, I do 23:33:10 anyway, I have to go home now 23:33:12 -!- ais523 has quit ("9"). 23:34:46 i gotta ask him about that quit message 23:34:56 the number 9 has been bugging me for weeks 23:35:06 it seems to be in my head every time i close my eyes 23:35:12 speaking of which -> 23:39:47 night 23:39:55 (as well)