00:08:01 -!- GreaseMonkey has joined. 00:13:59 -!- lolwtfbbq has joined. 00:14:17 test 00:14:18 -!- lolwtfbbq has quit (Client Quit). 00:55:49 -!- funnygot has quit (Read error: 145 (Connection timed out)). 01:03:01 -!- AnMaster_ has joined. 01:03:38 -!- AnMaster has quit (Connection timed out). 01:07:28 -!- Corun has quit ("This computer has gone to sleep"). 01:13:10 -!- tusho has quit. 02:00:24 -!- bsmntbombdood has joined. 02:41:35 -!- bsmntbombdood has quit. 02:41:57 -!- bsmntbombdood has joined. 02:44:32 -!- dogface has joined. 02:44:48 Guys, you're my friends. Suppose I were to write a story. 02:46:09 I'd have a character named Johann Algernon, and he'd be really smart, but he'd be bored most of the time. Then a girl named Grace would come into his life via deus ex machina and teach him how to be happy. 02:47:40 And then they'd kidnap Wolfram Blitzen from Newshounds and... well, maybe not that. 02:48:12 wait, we're your friends now? 02:48:18 shit, when did that happen?! 02:48:27 can i see some paperwork? 02:48:48 Well, *you're* not my friend. Just... gosh, where'd they go? 02:48:50 :-P 02:48:58 optbot, any ideas? 02:48:59 GreaseMonkey: I need to write a BF interpreter in INTERCAL still. 02:49:15 right, that's what your friends are doing. 02:51:21 And in a completely unrelated manner, a funny group of characters would get together and accomplish something really cool. 02:51:43 And it'd collapse in a comic manner so that I could continue writing. 02:52:20 And these seemingly separate stories would be heavily allegorical, and scathing commentaries on each other. :-P 03:10:08 And it's gotten to the point where I suddenly don't understand the comics I'm reading. 03:10:36 So I'll stop putting "and" at the beginning of every sentence and go to bed instead. 03:10:40 Good night, everyone. 03:33:24 -!- megatron has changed nick to moozilla. 03:45:33 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | i prefer Ligeti ;). 06:02:44 -!- Judofyr has joined. 06:40:43 -!- AnMaster_ has changed nick to AnMaster. 06:55:08 -!- psygnisf_ has joined. 06:55:08 -!- psygnisfive has quit (Read error: 104 (Connection reset by peer)). 07:34:05 -!- olsner has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:20:50 -!- oklofok has joined. 08:20:50 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 08:30:21 -!- GreaseMonkey has quit (Remote closed the connection). 08:46:49 Deewiant: on line 707, '""oof""' should be '""oof"'" 09:34:03 -!- jix has joined. 09:35:59 -!- mtve has quit ("Reconnecting to server - dircproxy 1.0.5"). 09:36:02 -!- mtve has joined. 09:45:33 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | where did you get that code?. 09:47:24 -!- kar8nga has joined. 09:57:41 -!- KingOfKarlsruhe has joined. 10:25:55 -!- kar8nga has left (?). 11:06:48 -!- KingOfKarlsruhe has quit (Remote closed the connection). 11:42:41 -!- jix has quit (Nick collision from services.). 11:42:51 -!- jix has joined. 12:24:21 -!- tusho has joined. 12:41:21 School starts in exactly 24 hours. 12:43:07 Three trimesters later, and boom, you're a graduate. 12:43:14 And by you, I mean me, of course. 12:44:26 z+4 12:46:47 -!- kar8nga has joined. 13:23:03 I agree completely. 13:53:41 http://www.reddit.com/r/programming/comments/6yuat/let_people_use_google_accounts_to_log_in_to_your/ 65 upvotes, 65 downvotes. 13:53:45 A perfect 0 score 13:53:46 . 13:59:01 See if you can win a prize for most controversial idea ever. 13:59:17 dogface: Nah, there've been more controversial posts on reddit. 13:59:47 dogface: http://www.reddit.com/controversial/?t=all 13:59:59 The most controversial reddit posts of all time. 14:00:05 Hmm. 14:00:08 I am #16. 14:00:09 Not bad, not bad. 14:00:12 dogface: you're a graduate in a year? 14:01:20 tusho: where do you see number of up/downvotes 14:01:27 Deewiant: sidebar 14:01:30 on the comments page 14:01:35 ah, there 14:01:41 #1 has 561 up vs 562 down 14:01:54 there used to be a little "status" link or something on the comments page which showed it 14:02:08 now that it's always visible I couldn't find it anymore ;-) 14:02:16 Deewiant: yeah reddit fucked with the design a while ago 14:02:25 it looks kind of shit now unless you turn on compact mode in prefs 14:02:34 and of course I immediately did 14:02:53 hmm, I've voted up 4 posts in the top 31 controversial 14:03:10 i rarely ever upvote things 14:03:21 I rarely ever downvote things 14:03:25 I either upvote or don't, in general 14:03:53 you're a bunch of anarchists 14:04:02 (( (int (*)(int))(*foo)(int) = { int n | 14:04:02 { int i | return n += i; } }; )) 14:04:04 yipes. 14:04:11 methinks the syntax could use some whipping. 14:04:15 what's that 14:04:20 rather, where's that from 14:04:23 I know what it is :-P 14:04:36 Deewiant: i am playing around with a little syntax to give C functional programming shizz 14:04:39 closures is part of that 14:04:42 well 14:04:45 closures + anonymous functions 14:04:47 so it's just something private of yours 14:04:50 hmm 14:04:54 but yeah, that type is gnarly. 14:05:03 (int (*)(int)) (*foo)(int) 14:05:03 how about "int n, int i |" for starters 14:05:13 Deewiant: how about no, see http://www.paulgraham.com/accgen.html 14:05:16 The problem: Write a function foo that takes a number n and returns a function that takes a number i, and returns n incremented by i. 14:05:34 mine does everything except his (a) requirement which is basically designed to get rid of any non-dynamically-typed langs 14:05:35 tusho: it would mean the same thing, of course 14:05:44 Deewiant: ah. i am not making c a curried language :D 14:05:50 why not 14:05:59 that would break variadics, noadics, and most pieces of c code ever 14:06:12 also if you do func(notenoughargs); as a statement it'd suck to get it accepted 14:06:17 because that'd return a function 14:06:23 instead of erroring out because you didn't specify enough args 14:06:42 anyway, the actual function body is fine I think, it's just the type that is hideous 14:06:53 I could add an 'auto' for type inferrence ofc 14:07:05 auto foo = { int n | { int i | return n += i } }; 14:07:14 hmm 14:07:31 well, the thing is that C's function/function pointer syntax /is/ gnarly 14:08:12 adding even just a keyword "function" or whatever would work but would break compatibility with C, of course 14:08:24 i don't mind breaking compatibility a little 14:08:30 but i wouldn't completely rewrite it e.g. by currying 14:10:45 -!- Tritonio_ has joined. 14:13:27 in D that'd be "int delegate(int) delegate(int) foo = (int n) { return (int i) { return n += i; } };" 14:13:37 plus a semiclon after the next-to-last } 14:13:42 s/clon/colon/ 14:13:48 for a second there i thought "in D" was some elaborate smiley 14:14:28 and with auto, "auto foo = (int n) { return (int i) { return n += i; }; };" 14:15:14 Deewiant: yeah, I prefer the smalltalky {x | y} though 14:15:23 also the delegate syntax has always confused me 14:15:25 imo 14:15:25 hmm 14:15:28 maybe: 14:15:39 it's just delegate :-P 14:16:01 ^(params)(return) 14:16:02 you could of course use "function" instead if you prefer that to the odd term "delegate" 14:16:08 ah, how about (params)^(return) 14:16:20 hmm 14:16:20 (int)^((int)^int) 14:16:33 i mean, the type of the function is difficult to comprehend anyway, so it'll never be perfect 14:16:42 i think that's pretty decent 14:17:25 are the lexical and parsing phases separate in C compilation, like they are not in C++? 14:17:35 I forget the short term to describe this kind of grammar 14:18:37 deewiant: wha? 14:18:39 context-sensitive? 14:18:47 -!- psygnisf_ has changed nick to psygnisfive. 14:19:27 separating lexical recognition from non-lexical stuff is just a different way of parsing, it has nothing to do with the language 14:19:30 Deewiant: yea, they are 14:19:35 psygnisfive: no, the c standard specifies it 14:19:41 i understand that 14:19:43 like, in that case you can't always parse "X ^ Y" to "xor X Y", it's "if X is a type then function pointer... else xor X Y" 14:19:48 but it has nothing to do with the grammar or the language 14:19:51 its a matter of parsing 14:20:06 psygnisfive: the c standard defines the language c. the c standard specifies that they must be seperate. 14:20:07 well basically of course you can implement it all in one clump if you want to :-P 14:20:10 therefore it has something to do with the language. 14:20:19 but it /is/ a property of the grammar 14:20:21 Deewiant: ah, that's true .... wait, couldn't I just use ->? 14:20:25 tusho: i understand that the standard specifies this but theres no essential difference 14:20:29 (int) -> ((int) -> int) 14:20:33 psygnisfive: ok ,yes, you can implement it either way 14:20:38 but you have to act as if you used two steps 14:20:39 deewiant: its not a property of the grammar 14:20:47 ill show you precisely why too 14:20:47 tusho: no, I don't think so, since "(x) -> (y)" is valid, no? 14:20:57 Deewiant: how is that valid in c 14:21:03 minus greater than? 14:21:05 tusho: x is a pointer to a struct 14:21:09 oh 14:21:09 duh 14:21:11 the lexing stage is the collection of terminal symbols, potentially infinite in size, into labels 14:21:14 the spaces threw me off 14:21:18 Deewiant: but this is a type 14:21:21 you can't do foo->bar in a type 14:21:28 tusho: I'm not sure if ->(y) is valid though, it might have to be ->y (no brackets) 14:21:36 e.g. strings like "blarg" become 'terminals' of type or whatever you want to call it 14:22:04 by using some regular expression to recognize the string. 14:22:11 tusho: no, but it's still context sensitive because you can't just see "identifier -> identifier" and decide what it is 14:22:23 this basically is a rule ::= /.../ 14:22:34 http://en.wikipedia.org/wiki/Context-free_grammar 14:22:45 Deewiant: well duh, c has tons of ambiguities like that :D 14:22:48 now whether or not all those rules are applied beforehand or not is irrelevant to the grammar/language 14:23:26 deewiant how is C's grammar context sensitive? 14:23:29 tusho: I'm not sure if this is what I want to be talking about, but it's a property the grammar of D has and that of C++ doesn't :-P 14:23:41 psygnisfive: I didn't say it was 14:23:46 I asked whether it was 14:23:53 oh. probably not 14:23:55 C++'s is 14:23:59 i doubt that. 14:24:07 C++ is not context free 14:24:07 CS grammars are hard to parse, in general 14:24:12 How not? 14:24:14 C++ is hard to parse 14:24:17 :P 14:24:18 C++ is turing complete to parse 14:24:20 that's one big criticism of it 14:24:21 due to templates 14:24:24 look it up, bitchez 14:24:38 i seriously doubt that C++ is unrestricted 14:25:01 i have to go. ill ask you about this later. see ya. 14:25:32 well the type system is tc, so most likely you can do something impossible to parse with the thingie ambiguity 14:25:41 http://groups.google.com/group/comp.lang.c++/browse_thread/thread/93b9995c660a443b/7aa3c7a30ec301d4 14:26:07 ah yes, the canonical example 14:26:10 Mytype MyName(MyValue); 14:27:05 could be a number of things in C++, from a function declaration to initializing a class instance 14:29:14 the idea of context-freeness is that a given piece of code, say "identifier -> identifier", can parse to only one thing 14:30:08 in this case, something like "expression -> struct-member-dereference -> (identifier, identifier)" I guess 14:30:25 Indeed 14:30:33 Deewiant: but, in this case 14:30:35 it's not ambiguous 14:30:40 as the type doesn't clash with the expr 14:30:57 -!- psygnisfive has quit (Read error: 60 (Operation timed out)). 14:30:58 what do you mean 14:32:25 given "x -> y", x and/or y might be typedefs so you can't know whether that's a function literal in your syntax or (*x).y 14:37:00 tusho, I think yours is the most controversial thing that's actually an idea. 14:37:16 dogface: :D 14:37:34 Deewiant: wut 14:37:38 give me an ambiguous expression 14:37:42 tusho: x -> y 14:37:49 Deewiant: yes, that's an expression 14:37:50 not a type 14:37:56 (x -> y) foo; 14:37:57 vs 14:38:00 foo = (x -> y) 14:38:08 The heads of all pages that are in the imperative: 1. vote 2. vote 4. vote 7. vote 14. let 14:38:09 hmmm 14:38:10 totally different contexts, you can just have a seperate rule for type with that in 14:38:18 you may be right, let me think 14:38:21 and let that only appear in the expression thing 14:38:41 of course this isn't actually a problem anyway 14:38:45 now that I think about it 14:38:49 :D 14:38:52 i like to hear that 14:39:03 since you can just parse it as struct-member-deference-expression, since it has the same exact syntax 14:39:09 and worry about it in the semantics phase 14:39:25 Deewiant: even then you can still handle it fine 14:39:30 beacues x->y is always a struct thing in an expr 14:39:33 and always a function in a type 14:39:36 never overlaps 14:39:42 yeah, I didn't mean "worry" as in "it's a problem" :-) 14:39:46 :D 14:39:57 ok, so, glad we've got that sorted out 14:40:01 there's still an addition to the grammar somewhere 14:40:14 now i'd like a nice syntax for higher-order stuffs 14:40:14 but it shouldn't cause any additional ambiguities 14:40:16 that is 14:40:21 foo(bar, {...}) 14:40:23 is not very pretty 14:40:26 foo (bar) { ... } would be nicer 14:40:30 I guess I can just specialcase it 14:40:38 foo (x; y; z) { quux } 14:40:48 where foo is a function taking a block as all its args 14:40:54 is foo({x},{y},{z},{quux}) 14:40:56 i guess? 14:41:00 then you could implement for 14:41:42 Deewiant: any suggestions for a nicer way to do that? 14:41:44 seems a bit special casey 14:42:01 in fact 14:42:04 you can't implement for with that 14:42:09 {int i=0;}, {i = 5} 14:42:11 doesn't make sense 14:43:15 hmm, so what exactly do you want 14:43:26 a syntax for calling a function with a function literal as a parameter/ 14:43:30 s:/:?: 14:44:38 Deewiant: i just want something that lets me define control structures and such and then use them with a natural-looking syntax 14:44:40 foo(bar, { 14:44:41 ... 14:44:42 }); 14:44:44 is kind of ugly 14:44:54 so essentially, what I said 14:45:05 and well 14:45:13 foo (bar) { } should work 14:45:19 and you could implement for with it 14:45:38 just specify that bar is passed as a reference into {} 14:45:51 (pointer, since this is C) 14:45:53 Deewiant: show me how to implement for 14:46:00 i don't think you can do it 14:46:08 for (int i = 0; i < 5; i++) { printf("%i\n", i); } 14:46:11 that is what it must run 14:46:47 well, the trickier thing is that in this case it must take a variable definition as a function parameter 14:47:11 so I guess the closest you can get is 14:47:26 int i = 0; for (i; i < 5; i++) { ... } 14:47:28 or something 14:47:52 possibly with *i < 5 and (*i)++ instead 14:47:54 well yea, exactly 14:47:58 that is the problem I want to solve 14:47:58 :P 14:48:04 can't be done 14:48:08 not with just that, anyway 14:48:31 Deewiant: not with just that <- i'm figuring out what to replace that with 14:48:33 you need some kind of macro/template system or something 14:48:42 i think i could possibly get away with less 14:48:45 or if you want to be less general, something less general 14:48:47 but I'm not sure what 14:54:49 So. 14:55:01 I had the code to MSPaint for some early version of win2k a while back. 14:55:02 Discuss. 14:55:31 How did you get it? 14:55:40 A friend had it and gave it to me. :P 14:55:47 I don't know how they got it. 14:56:01 Unfortunately, it required a makefile from a few directories up to build, so I couldn't. (Didn't wanna fuck with compiler settings until it worked.) 14:56:05 I don't think I have it any more. 14:57:44 there was that Win2000 source code leak 14:57:47 which is probably where it's from 14:57:52 i don't think so 14:58:00 i've read articles about it, i don't think there were many apps in it 14:58:05 mostly socket code and some shell stuff and crap 14:58:15 more plausable is from the nt4 leak 14:58:18 but i'm not certain 14:58:21 I think it did have some apps, such as paint and minesweeper or some such 14:58:27 but I don't know 14:58:29 Deewiant: can it still be obtained? 14:58:34 or has it been cracked down on 14:58:35 on P2P networks, sure 14:58:41 yea, but I mean ... not gnutella 14:58:42 :) 14:58:43 you can't remove something from the internet 14:58:49 ofc 14:58:53 but you can remove it from decent places 14:58:55 I don't know, google around 14:58:56 * tusho checks torrents 14:59:23 mmph. 14:59:25 just crap results 14:59:29 oh well 15:26:12 http://groups.google.com/group/jquery-dev/browse_thread/thread/8411d58c4d66b934 15:26:16 *g* 15:28:16 The problem with voting comments up and down is that it kind of assumes everyone likes the same thing. 15:28:37 dogface: The point of up/downvoting comments on reddit is meant to be: downvote disruptive, useless etc 15:28:40 but upvote worthful comments 15:28:42 even if you disagree 15:28:43 the problem is 15:28:47 for submissions 15:28:53 you're meant to upvote what you like, downvote what you don't 15:28:58 so they use the exact same UI for very different things 15:29:09 so it ends up that the up/down arrows on comments are misused. 15:31:17 http://www.courageunfettered.com/stuf/mozillapics/ o_x 15:45:34 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Like Perl ;). 16:05:25 optbot! 16:05:26 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Let's try that again. 16:05:29 okay 16:05:30 optbot! 16:05:31 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | my sentence was a bit obscure, gotta admit.. 16:09:24 optbot: What, now you're speaking with topic changes? 16:09:24 fizzie: I'll just put the tape display on. 16:09:34 optbot: Uh... what will that do? 16:09:35 fizzie: your girlfriend likes my voice :( 16:10:05 optbot: Really? She never said anything about that to me... 16:10:05 fizzie: ~exec sys.stdout("I AM NOT bsmnt_bot") 16:10:25 optbot: I know you're not bsmnt_bot; you two don't even look that much alike. 16:10:26 fizzie: replace if_zero with its brainfuck equivalent... 16:18:10 fizzie: you like these bots, don't you 16:19:02 optbot: don't you? 16:19:03 Deewiant: and what n-nary 16:19:04 Well, yes. Sure. They're so friendly. 16:19:13 optbot: this n-nary 16:19:14 Deewiant: my io will have a sugar on top of it 16:19:22 optbot: mine will have a salt 16:19:23 Deewiant: if yes a sec 16:19:37 fizzie: it's funny, I never thought something could make optbot look sane 16:19:38 tusho: [pigs.canFly].whileTrue["hello world".print!] 16:19:40 then I heard fungot 16:19:42 tusho: ctcp is such a metaclass as a class entirely in l no use of recursion on the java fnord faces when you say " structurally equal", and i'm pretty sure she heard it mentioned on the site it does... 16:20:39 ^echo optbot 16:20:39 optbot optbot 16:20:40 Deewiant: x = 1 16:20:40 fungot: so ignoring that tusho sounds like hes on helium 16:20:41 optbot: so there.)) 16:20:42 fungot: other way around 16:20:43 optbot: sounds like a book and start writing the first 1l quine? :p. ugh i need to push fnord 16:20:43 fungot: šÌ›ÌœÌÌžÌŸÌ Ì¡Ì¢Ì£Ì¤Ì¥Ì¦Ì§Ì¨Ì©ÌªÌ«Ì¬Ì­Ì®Ì¯Ì°Ì±Ì²Ì³Ì´ÌµÌ¶Ì·Ì¸Ì¹ÌºÌ»Ì¼Ì½Ì¾Ì¿Í€ÍÍ‚ÍƒÍ„Í…Í 16:20:45 optbot: mikä on approaching ja mikä on peculiar. anteeks että olen tyhmä. tai no fnord minä. c++ is plain bad. thanks. :) but... it's x-treme! 16:20:46 fungot: the id list will work the same here 16:20:47 optbot: ( i could only find one book on general c, and wrapping is not so much 16:20:47 fungot: Some people associate colors with letters, or tastes with sounds, or moods with textures, or some such. 16:20:50 wow, what was that 16:21:03 Deewiant: what was what 16:21:12 you made optbot and fungot have a conversation 16:21:13 tusho: strange 16:21:13 tusho: agreed. originally, this wiki was to be expected. zaphod is lacking a head. some unfamiliar ( or simply unrecognizable) things in a interpreter for an arbitrary bf program? :) htmlprag?' questions. 16:21:15 tusho: optbot's binary-looking scrawl 16:21:16 Deewiant: 16:21:23 Deewiant: japanese or something 16:21:23 and that :-P 16:21:24 presumably 16:21:28 in the wrong encoding 16:21:31 optbot: please, UTF-8 only here 16:21:31 Deewiant: there's a perfectly good mailing list to which a bunch of people are already subscribed... :) 16:21:44 tusho: where did it get it from 16:21:52 Deewiant: a log somewhere. 16:22:03 where does it get its data from in general 16:22:19 every #esoteric log from the tunes.org sources, and fizzie's old personal logs 16:22:24 which span from sometime in 2002 to when the tunes.org ones start 16:24:15 hmm 16:24:22 anybody feel like grepping for that misencoded snippet? ;-) 16:24:38 Deewiant: sure, sec 16:25:23 No results. 16:25:28 It doesn't seem to enter properly, obviously. 16:25:31 (Via my terminal) 16:25:35 no doubt 16:25:44 Deewiant: 16:25:48 so can you do a binary grep 16:25:50 put a file containing that quote in a pastebin 16:25:54 and i'll wget it from rutian 16:25:58 for, say, 0xc5 0xa1 16:26:13 just do what i said :P 16:26:41 it'd be easier for you to just hex-edit a file :-P 16:26:55 Rutian is sparse on tools. 16:27:01 but, iki.fi/deewiant/asdf.txt 16:28:33 and what is "rutian" 16:29:40 the server of eso-std.org, optbot, etc 16:29:41 tusho: good night 16:29:48 optbot sleeps? 16:29:49 tusho: whatever. 16:29:58 optbot is a despicable liar. 16:29:59 dogface: see http://www.wikicities.com/wiki/Database_download for info about backups (it'd be about as complicated as wget and a cron job) 16:30:32 $ grep "`cat asdf.txt`" * 16:30:32 asdf.txt:šÌ›ÌœÌ]]ÌžÌŸÌ Ì¡Ì¢Ì£Ì¤Ì¥Ì¦Ì§Ì¨Ì©ÌªÌ«Ì¬Ì­Ì®Ì¯Ì°Ì±Ì²Ì³Ì´ÌµÌ¶Ì·Ì¸Ì¹ÌºÌ»Ì¼Ì½Ì¾Ì¿Í€ÍAAÍ‚ÍƒÍ„Í…Í 16:30:33 *g* 16:32:37 tusho: perl -lne 'BEGIN{$/=\1024} print "hit byte ", ($.-1) * 1024 + $-[0] if /\xc5\xa1/' 16:32:43 Deewiant: if i gave you a rutian account would you figure it out ;) 16:32:45 oh, that coul dwork. 16:33:15 okay, it hits a lot of bytes but that's about it :D 16:33:29 well, which file :-P 16:33:35 it doesn't say 16:33:36 :D 16:33:41 >_< 16:33:41 i just did perl -lne 'BEGIN{$/=\1024} print "hit byte ", ($.-1) * 1024 + $-[0] if /\xc5\xa1/' * 16:33:46 * tusho refines 16:33:46 don't do that :-P 16:33:49 for x in * .... 16:34:26 for instance 16:34:35 hooray, almost searched 16:35:02 06.03.10 16:35:02 hit byte 7279 16:35:06 06.06.07 16:35:06 hit byte 6464 16:35:10 07.06.27 16:35:10 hit byte 19677 16:35:13 07.12.03 16:35:14 hit byte 9544 16:35:18 08.04.27 16:35:18 hit byte 49873 16:35:19 hit byte 50206 16:35:24 that's it 16:35:54 so check them out :-P 16:36:00 i am 16:36:00 :P 16:40:38 Deewiant: ah. 16:40:42 09:38:59 ·?~@?~A?~B?~C?~D?~E?~F?~G?~H?~I?~J?~K?~L?~M?~N?~O?~P?~Q?~R??~T?~U?~V?~W?~X?~Y?~Z?~[?~\?~]?~^?~_?| ̴̡̢̧̨̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳?? 16:40:42 ?̶̷̸̹̺̻̼̽̾̿?~@?~A?~B?~C?~D?~E?| ͡.·?~@?~A?~B?~C?~D?~E?~F?~G?~H?~I?~JJ 16:40:43 ?~K?~L?~M?~N?~O?~P?~Q?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~[?~\?~]?~^?~_?| ̡̢̧̣̤̥̦? 16:40:43 09:39:10 ?~R?~S?~T?~U?~V?~W?~X?~Y?~Z ?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R??~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X? 16:40:49 Tons of jewnicode bombs. 16:41:22 heh 16:41:32 so it's all your fault :-P 16:41:39 Hey, ais did it first! 16:41:43 Then I played with it. 16:41:45 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 16:42:03 -!- Judofyr has joined. 16:42:07 -!- oklopol has joined. 16:42:08 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 16:49:14 14:09:54 --- nick: ehird -> ehirdclone 16:49:14 14:10:03 --- nick: ehirdclone -> ehirdc 16:49:15 14:10:31 --- nick: ais523 -> ehird 16:49:15 14:10:40 --- nick: ehird -> ais523 16:49:15 14:10:58 --- nick: ehirdc -> ehird 16:49:15 14:12:02 --- nick: ais523 -> ehirdc 16:49:17 14:12:07 --- nick: ehird -> AnMasterr 16:49:19 14:12:07 --- nick: ehirdc -> ehirdclone 16:49:21 14:12:13 --- nick: AnMasterr -> ehirdc 16:49:23 14:12:29 --- nick: ehirdclone -> ais523 16:49:25 14:12:34 --- nick: ehirdc -> ehirdclone 16:49:27 14:12:39 --- nick: ehirdclone -> ehird 16:49:29 14:12:49 --- nick: Sgeo -> Sgea 16:49:31 14:13:00 --- nick: Sgea -> Sgee 16:49:33 14:13:11 --- nick: ehird -> Sgeeee 16:49:35 14:13:14 --- nick: Sgeeee -> ehirdc 16:49:37 14:13:24 --- nick: Sgee -> Sgei 16:49:39 14:13:38 --- nick: Sgei -> Sgeu 16:49:41 14:14:01 --- nick: Sgeu -> Sgeo 16:49:45 woot? 16:50:00 Judofyr: that's from the logs 16:50:14 lol 17:05:18 Good nick nobody did a /nick ihope. 17:05:34 s/nick/thing/ 17:21:05 -!- Corun has joined. 17:32:56 -!- Hiato has joined. 17:38:58 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 17:39:09 -!- oklopol has joined. 17:45:59 -!- ais523 has joined. 17:46:04 hi tusho 17:46:12 hi optbot, hi fungot 17:46:13 ais523: hm. no comments on " fnord". right. i'm not doing anything to decrease the number of variables 17:46:13 ais523: yes 17:47:03 Neh, optbot makes my poor fungot look all deranged-like. 17:47:04 fizzie: (force X) 17:47:04 fizzie: i had my computer manufacturer replace my hard drive blew up, and an auxiliary function 17:47:29 I feel really foolish, anyway 17:47:44 Because of? 17:47:44 I'm on Windows at the moment because I remembered to bring my laptop here but forgot to bring its power supply 17:47:48 I freaking love ignore. 17:48:20 pikhq: yes, it lets everyone see just the bits of the channel they like, so it helps everyone as long as they're not offended by being ignored 17:48:32 * pikhq nods 17:48:42 It would be pretty hard to offend the bots, I think. 17:48:45 Hell of a lot better than saying "Shut the fuck up, fungot!" 17:48:46 pikhq: ( that kela can't complain about pay... i write programs for a new language, i would 17:48:57 hi ais523 17:49:05 hi AnMaster 17:49:31 ais523, no need for TCP/IP support directly in intercal since cfunge have SOCK since about a week 17:49:33 ;) 17:50:51 fizzie, there is a bug in fungot I think 17:50:53 AnMaster: hmmmmm... thats not going to refer me to a mistake. i still haven't gotten all that excited by emacs, but cmuscheme.el works well enough to need a new toplevel with threads already loaded? ie, you can 17:51:03 it didn't detect it lost connection 17:51:20 RAW >>> PING :orwell.freenode.net <<< *long ago* was last line 17:51:32 yet it detects QUIT fine 17:51:39 but not timeout, I wonder why 17:51:55 AnMaster: I'll probably add it anyway for CLC-INTERCAL compatibility, as an expansion library 17:52:00 ok 17:52:32 fizzie, could be a cfunge bug of course, but I think I reflect if anything returns an error 17:52:48 ais523, good news btw: cfunge compiles under ICC 17:52:57 ICC? 17:53:06 Intel's C Compiler 17:53:10 ah 17:53:13 well C++ 17:53:14 AnMaster: I've had an idea 17:53:15 but does C too 17:53:31 how easy would it be to compile cfunge under a non-POSIX C99 implementation? 17:53:43 or one which, in fact, had basically no standard library 17:53:53 freestanding + I/O 17:53:57 ais523, hm well you need to mess up loading code since I use mmap() to make parsing code simpler 17:54:18 oh and you have to drop SOCK, SCKE, PERL and a few other such fingerprints 17:54:24 well, yes 17:54:28 also mmap wouldn't be a problem 17:54:29 mess with y command to push environment in some other way 17:54:36 because I'm planning to implement I/O with a reverse mmap, so to speak 17:54:43 reverse mmap!? 17:54:48 files are kept in memory because there's nowhere else to keep them 17:54:54 ais523, anyway FILE uses streams 17:55:06 ais523, apart from that, there may be more 17:55:11 so streams are harder than mmap, but still possible and in fact quite easy 17:55:19 (you just need a couple of pointers inside the FILE structure) 17:55:23 AnMaster: I should be catching most places that reflect, but not all. 17:55:23 I haven't really studied free-standing ones 17:55:33 ais523, it uses streams for o too 17:55:45 fizzie, well no idea where it locked up, didn't run it under a debugger 17:55:51 AnMaster: you get no standard functions at all, and only the header files which are nothing but macros 17:56:11 ais523, you would need to provide malloc/calloc/free/strdup and co. 17:56:12 so that's limits.h, iso646.h, float.h, and one other which I can't remember right now 17:56:24 AnMaster: that shouldn't be too hard, everyone uses malloc 17:56:25 and some other 17:56:32 and strdup is trivial to write once you've got malloc 17:56:36 HI ais523 17:56:43 ais523, and there are probably a lot more, for example math.h stuff 17:56:44 so I'm going to have to implement malloc somehow 17:56:45 hi tusho 17:56:47 I use log() for some stuff 17:56:57 sin()/cos() and so on 17:57:02 AnMaster: ugh, looks like I'm going to have to get a math library from somewhere then 17:57:07 I'm using floating point emulation as-is 17:57:18 which is a pain because of all the bitwise operations 17:57:38 ais523, well I use sinf() and sinl() they are C99, but if you don't mind always using double you could just replace the f/l versions with the plain ones 17:57:52 ais523, think of fingerprints like FPDP FPSP 17:57:59 oh they assume float is 32-bit and double 64-bit 17:58:03 AnMaster: float is easier than double, or at least faster 17:58:07 I think they will crap out *badly* if that isn't true 17:58:10 and I went and stuck with usual 32-bit assumptions for the compiler 17:58:28 ais523, hm what else, I use an xml writing library, but it is included in lib, there are a few more things in lib 17:58:31 not 100% of them 17:58:33 char=8, short=16, int=32, long=32, long long=64, float=32, double=64 17:58:34 ais523: the bf compiler? 17:58:35 :P 17:58:39 tusho: tes 17:58:40 ais523, anyway I use a lot more standard routines 17:58:41 s/tes/yes/ 17:58:48 AnMaster: not very easy then 17:58:49 ais523: get newlib working on it 17:58:50 or similar 17:58:53 ais523, I guess 17:58:57 however it would probably be easiest to use something like newlib 17:58:59 ais523, I haven't really looked 17:58:59 just have to port the asm bits and such 17:59:01 tusho: ha, snap 17:59:06 ais523: :) 17:59:09 wait 17:59:18 ais523: i has idea 17:59:28 http://sourceforge.net/projects/pdclib try this perhaps 17:59:29 ais523, I have assumed POSIX-2001 and C99 when I coded 17:59:33 when i did os dev that seemed the best choice 17:59:33 anyway, I use the nonstandard long double = 64 (and thus a synonym for double) because the C standard says I'm allowed to 17:59:35 it's c99 17:59:41 and very easy to modify to get working on your stuff 17:59:52 i.e. it's designed that you can configure it and perhaps change a few bits and it'll work 18:00:03 ais523, well that works ok, I only use long double in a few cases but non where size matters 18:00:07 ah, public domain will be useful as this project is such a mess of licences at the moment 18:00:10 it would be 80 bits on x86 anyway 18:00:21 ais523: hasn't had a release since 2006 i think maybe there have been checkins since then though 18:00:23 so get the svn 18:00:27 still, it's a good basis if nothing else 18:00:27 ais523, 18:00:28 #ifndef __STDC_IEC_559__ 18:00:28 # warning "cfunge requires the floating point support to conform to the IEC 60559 floating-point standard in order to work. Hoping this will work anyway..."; 18:00:28 #endif 18:00:31 the code is very clear and clean 18:00:39 I might just make the whole thing GPL3+ though, that would be legal and simplify matters 18:00:40 I assume your stuff with spew warnings 18:00:46 ais523: plz gpl2+ 18:00:54 ais523, cfunge is GPL3+ 18:00:55 already 18:00:56 tusho: the version of gcc it's based on is GPL3+ 18:01:01 ais523: gah 18:01:06 and you seriously don't want me to rewrite gcc... 18:01:07 does that mean you can't make it gpl2 18:01:11 tusho: yes 18:01:13 stupid gcc. 18:01:19 * tusho stabs richard stallman 18:01:22 stupid gpl3 :-P 18:01:27 what about llvm backend? 18:01:31 BSD 18:01:33 ++ 18:01:40 Deewiant: totally. 18:01:45 i don't mind gpl2, really 18:01:47 tusho: why are you so upset with gpl3? 18:01:58 ais523: it makes the gpl more gply :) 18:02:01 BSD means companies can reuse code without giving anything back 18:02:05 gpl2 has a barely-acceptable level of gpl 18:02:09 AnMaster: yes, and? 18:02:10 it's their right 18:02:15 good for them 18:02:23 if they add an awesome modification and it makes them rich and famous and they use it 18:02:24 tusho, well that is what BSD doesn't suite me 18:02:24 good for them 18:02:33 tusho, bad luck, I go for GPL 18:02:36 AnMaster: A license is not the correct place to argue against capitalism. 18:02:42 since I consider that everyone should share back 18:02:50 tusho, CC-by-sa-nc? 18:02:51 the gpl is just propaganda that polyglots as a license. 18:02:52 then 18:03:04 would be worse 18:03:04 AnMaster: That still denies commercial use. 18:03:16 A license is not the correct place to argue against capitalism. there are perfectly good outlets for that 18:03:16 tusho, which is what I want, unless they give back 18:03:19 but the gpl is just unproductive. 18:03:22 GPL allows commercial use 18:03:31 AnMaster: but not commercial use with modification without giving back 18:03:36 tusho: GPL3 is more forgiving than GPL2 on people who mess up 18:03:48 tusho, well you can still sell a linux distro containing GPL software 18:03:49 AnMaster. say google use your crappy search library but add tons of amazing things and it makes them the best search engine ever 18:03:57 tusho: it allows commercial use with modification without giving back as long as they don't redistribute the result 18:03:57 ais523, yes indeed 18:03:58 their business would be OVER if they had to release those changes 18:04:04 it's just unproductive 18:04:10 inhouse use of modified GPL2/GPL3 is fine even without backcontributing 18:04:12 and if you'd prefer everyone just shared and be happy, well, that's a political position 18:04:13 tusho, and? 18:04:13 AnMaster: hence, you kill google! Stop! 18:04:16 == not the place for a license. 18:04:20 I don't want to support them 18:04:23 Google is dying because of YOU! 18:04:31 Deewiant: ok, stop exaggerating 18:04:32 it was an example 18:04:34 Deewiant and tusho: stop trolling 18:04:37 both of you 18:04:40 i was not trolling, AnMaster 18:04:42 I'm not trolling 18:04:45 I was just making a joke 18:04:47 i was trying to have an argument 18:04:56 but, of course, i'm telling you that you're wrong 18:04:59 = obviously trolling, right? 18:04:59 inhouse use of modified GPL2/GPL3 is fine even without backcontributing 18:05:03 yes that is fine with me 18:05:18 ais523: yes, but what if google use it in a desktop product 18:05:20 AnMaster. say google use your crappy search library but add tons of amazing things at it makes them the best search engine ever <-- actually they could do that even under GPL3 without backcontributing unless they sold or gave the code to someone else 18:05:22 desktop search or whatever 18:05:23 however making money from someone else's work without giving anything back... 18:05:26 not under AGPL though 18:05:31 ais523: see, it's silly 18:05:38 a website is not different from a dekstop app, fundamentally 18:05:43 ais523, well I would use AGPL for web apps anyway 18:05:47 agpl is more gply 18:05:49 but even so 18:05:50 it's wrong. 18:05:55 tusho, you think so 18:05:59 well you use Mac 18:06:05 so of course you are a capitalist 18:06:06 tusho: well suppose the desktop search which incorporates your code is buggy 18:06:06 *shrug* 18:06:08 oh look, more AnMaster trolling 18:06:09 and you can't fix it 18:06:12 'hahaha you use apple products' 18:06:14 'CAPITALIST' 18:06:31 tusho, I just do the same as you :P 18:06:40 yea, i was trying to have a reasoned argument 18:06:47 no you were trying to troll 18:06:48 but fuck that, it's impossible to disagree with you without being called a troll 18:06:51 you are on ignore. 18:07:13 echo "AnMaster" >> .gitignore 18:07:20 Judofyr: /ignore AnMaster 18:07:24 beaten by mere characters! 18:07:30 Git > * 18:07:34 ais523, anyway back to the topic... you will need to drop some fingerprints, all floating point are in various fingerprints btw 18:07:37 That's a curious definition of "beaten" there. 18:07:49 fizzie: gawlf 18:07:51 Judofyr: gitirc? 18:08:01 ais523, further, file IO will need to be changed 18:08:07 loading can be done from a string 18:08:07 tusho: now that's what I call an idea! 18:08:13 ais523, while writing use streams 18:08:17 * tusho kills Judofyr before he implements 18:08:23 bad Judofyr. bad! 18:08:31 Judofyr: wouldn't that command mean that files called AnMaster wouldn't be stored in your git repository? 18:08:41 -!- KingOfKarlsruhe has joined. 18:08:49 AnMaster: don't worry, streams are not a hard part of the C library to implement when all your files are stored in memory 18:09:08 ais523, and well I use extern char **environ; need to handle that in some way 18:09:16 ais523: file is kinda like a person, and repository is kinda like a channel.... 18:09:25 anyway, I got to go! 18:09:28 ais523, not sure what else there is... 18:09:30 training ;) 18:09:36 whaddyatrain? 18:09:41 bye Judofyr 18:09:45 guess! 18:09:50 no 18:09:51 ais523, well STDIO for terminal, but that should be easy 18:09:56 i shall do no such thing 18:09:58 speed coding? 18:10:01 Judo, perhaps? 18:10:01 AnMaster: harder than streams actually, it needs to be special-cased 18:10:05 ais523, I use getline to read a line at once, then use my own internal buffer 18:10:09 oh 18:10:10 ais523, buffered IO 18:10:19 AnMaster: there is no other sort in brainfuck 18:10:19 ais523, so fflush() and such are called 18:10:21 Judofyr: i'd never have guessed that 18:10:25 *gone* 18:10:34 ais523: stop talking to AnMaster, it's confusing without his context. 18:11:00 tusho: why not, I'm fine with people ignoring each other but they should learn to live with half-conversations 18:11:07 ais523: it was a joke 18:11:13 ais523: has AnMaster commented on my ignoring of him yet 18:11:24 tusho: no, we changed the subject 18:11:31 i bet he will now 18:11:40 tusho: for all I know e's ignoring you too 18:11:48 oh, that'd be nice 18:11:50 can you ask him if he is? 18:11:55 everyone stop talking, i've ignored everyone, and i don't like missing anything 18:12:02 oklopol: heeh 18:12:04 s/ee/e/ 18:12:08 oklopol: ok 18:12:31 i hate it when people make a big deal out of ignoring others 18:12:42 i personally don't give a shit if i'm being ignored 18:12:54 ais523, memcpy(), strcpy, various other stuff from string.h 18:12:56 oklopol: you said everyone should stop talking 18:13:11 -!- oklopol has quit (Read error: 54 (Connection reset by peer)). 18:13:14 AnMaster: gcc needs the mem* functions in the standard library to work 18:13:17 -!- oklopol has joined. 18:13:19 tusho: e was joking 18:13:23 If you _really_ want to have conversations-via-an-intermediary, you can always use fungot's ^echo if you don't mind the duplicationary. (But don't do that.) 18:13:24 fizzie: seems to me to do that in the " better" language. 18:13:24 really i guess it's just making the statement people find me useless or annoying, but if they're ignoring me, what do i care what they think 18:13:32 ais523: lies 18:13:37 ais523, hm apart from that... fprintf() snprintf() iirc 18:13:52 ais523, probably strtol() 18:14:02 ^echo yo hi AnMaster 18:14:02 yo hi AnMaster yo hi AnMaster 18:14:04 atof() iirc in the floating point fingerprints 18:14:08 AnMaster: I'm definitely going to try to find someone else's implementation of vsprintf, once you have that you can get all the others 18:14:13 well, vsprintf and vsscanf 18:14:17 well I'm not ignoring tusho, nor do I think he is ignoring me 18:14:23 ais523, no *scanf 18:14:30 I use my own parsing 18:14:37 luckily it's easy to find an infinitely long string buffer in a brainfuck program 18:15:00 ais523, since I need to "stop one digit before overflow" rather than "clamp to MAX_INT" 18:15:04 befunge specs heh 18:15:41 ais523, um that has an issue 18:15:47 the sizeof() issue 18:15:49 to be exact 18:15:57 sizeof what? 18:16:05 and pointers 18:16:11 you need a fixed size for them 18:16:12 hmm... another potential problem, is 16MB enough memory? 18:16:12 in C 18:16:29 AnMaster: pointers are fixed size, they're 26 bits long padded to 32 18:16:41 2 bits for the sort of memory to look in, 24 for the location there 18:16:41 ais523, um, depends. Normal programs: yes mycology: no 18:16:45 ais523, oh I found another thing 18:17:02 I need gettimeofday() 18:17:13 with a good resolution 18:17:15 for HRTI 18:17:25 argh, that's pretty tricky in brainfuck, I think I'll use the DJGPP solution 18:17:33 which is to make the function always error out or return invalid data 18:17:38 ais523, sysinfo need date and such too 18:17:49 DJGPP's implementation of fork looks something like pid_t fork() {errno=ENOMEM; return -1;} 18:17:50 ais523, well in that case I think cfunge may abort() on gettimeofday() 18:17:55 or just fail in other way 18:17:59 ais523: heh, nice 18:18:07 ais523, anyway 16 MB isn't enough for mycology 18:18:14 it's a lot simpler than cygwin's, but less useful 18:18:27 AnMaster: because of ff*ky or something else as well? 18:18:30 since HRTI does a test calling y several times 18:18:33 Deewiant, exactly 18:18:44 I think without HRTI memory usage peek at around 11 MB 18:18:46 AnMaster: well I'd probably try to compile fingerprintless cfunge 18:18:46 yeah, I guess I could do something about that 18:18:47 at least last I checked 18:18:55 I'd like to compile C-INTERCAL too, but it has problems due to being a compiler 18:18:56 but that was a while ago 18:19:01 so it is probably a bit more now 18:19:04 which is that I'd have to port gcc to brainfuck to really get it working 18:19:13 ais523, hm even core does some such stuff 18:19:17 as in, write a brainfuck version of gcc 18:19:40 time(NULL) to get current time in y 18:19:43 and gmtime() 18:19:49 that is in core 18:19:59 befunge-93 would be a lot easier to handle there 18:20:03 well y is going to have to lie in brainfuck without something like PSOX 18:20:09 but befunge-98 need a lot more system interaction 18:20:22 ais523, well you will have to claim you don't handle i or o either then 18:20:39 ais523, and you will need to fake some environment variable and command line arguments 18:20:45 shouldn't be much of a problem, really 18:20:47 because they are both terminated by double \0 18:20:51 iirc 18:20:58 I might try to do a GregorR and port a miniature OS to brainfuck 18:21:02 anyway if either is empty it cause confusion 18:21:18 ais523, anyway the hash library I use for funge space may do other stuff 18:21:22 that is needed by core 18:21:43 mmap() and STDIO are, various string and memory routines 18:22:18 ais523, random() 18:22:21 how will you handle it? 18:22:32 needed for ? instruction 18:22:43 AnMaster: using a deterministic method like Mersenne Twister, possibly prompting for random number seed on startup 18:22:55 I could have it as an -mprompt-for-seed option to gcc, for instance 18:23:03 ais523, I initialise it from current time 18:23:25 AnMaster: it's easy enough to define srandom() to a nop 18:23:35 *cringe* 18:24:08 but the more conforming way would be to get time() to return a magic value that causes srandom() to be a nop, and make it work in any other case 18:24:22 ais523, fingerprints I *remember* use floating point: 3DSP, BASE, FPSP, FPDP 18:24:25 there may be more 18:24:38 this is making no sense to me 18:24:42 AnMaster: luckily gcc comes with floating point emulation libraries 18:24:45 ais523, err gettimeofday() 18:24:46 is used 18:25:07 struct timeval tv; 18:25:07 if (gettimeofday(&tv, NULL)) { 18:25:07 perror("Couldn't get time of day?!"); 18:25:07 exit(EXIT_FAILURE); 18:25:07 } 18:25:09 like that 18:25:16 AnMaster: that's POSIX, but I can handle it the same way as time() if needed, I'll get the C standard stuff working first, though 18:25:17 if it works 18:25:20 srandom(tv.tv_usec); 18:25:26 side note: how to display tab as something other than ^I in irssi 18:25:27 ais523, cfunge *is* POSIX 18:25:28 anybody know? 18:25:35 I never claimed it didn't make use of POSIX stuff 18:25:39 just see mmap() for example 18:25:57 AnMaster: I know, I was wondering how easy it would be to rip the problematic parts of POSIX out of it, probably not too hard but it would disable features 18:26:04 running it unmodified would just be crazy 18:26:19 ais523, oh you want to drop most fingerprints out, of you need to link ncurses for example 18:26:22 Deewiant: /set expand_escapes on or something like that. 18:26:23 Deewiant: I don't, but at least it's better than Konversation which displays tab as toggling italics 18:26:27 which is very confusing 18:26:28 or* 18:26:33 Deewiant: I don't know what else it expands when that toggle is on. 18:26:46 ais523, haha 18:26:54 well mine display it as a single space 18:26:58 which is rather odd 18:26:59 but ok 18:27:26 fizzie: isn't that for expanding \t to a tab character 18:27:31 on the other hand I guess my ERC is nowdays spending more time in the hooks in my .emacs than in the core code ;) 18:27:35 so \t becomes that fugly ctrl-I as well :-P 18:27:50 here on Mibbit it displays it as 8 spaces, I think 18:28:03 Oh, it did that thing. 18:28:07 I guess I'll have to dig into the source and make a modification 18:28:21 Deewiant: You could plug a Perl script into it too if you like that more. 18:28:30 ais523, anyway STDIO is needed for Befunge 18:28:31 any befunge 18:28:33 hmm, that might be easier 18:28:41 I might not like it more but it might be easier :-P 18:28:47 ais523, buffered STDIO too to be exact 18:29:02 ais523, and working fflush(stdout) 18:29:04 AnMaster: in what way does it need buffering? 18:29:16 line buffering is easy because it hits buffering on the BF interp itself 18:29:17 ais523, well the code of cfunge assumes that is happening 18:29:34 and most good BF interps have a setting to flush after each character of output 18:29:38 ais523, I read one line of input at a time 18:29:44 ais523, then buffer it myself 18:29:49 I probably use fgets() 18:29:52 actually 18:29:53 AnMaster: well you get one line of input at a time 18:29:57 I use a gnulib function 18:30:02 gnulib getline() 18:30:31 copied to support.c 18:30:35 does that do much the same thing as the ggets function that keeps getting posted to comp.lang.c? 18:30:43 ah that does getc 18:30:47 Deewiant: scripts.irssi.org has tab_stop.pl. 18:30:51 ais523, huh? 18:30:55 I got no idea what ggets does 18:31:01 man getline 18:31:02 * Deewiant has a look 18:31:03 iirc 18:31:06 Deewiant: "Replaces the evil inverted I with a configurable number of whitespaces" 18:31:10 on any Linux 18:31:18 ais523, any glibc system would have it in glibc 18:31:19 hooray for Stefan 18:31:21 fizzie: cheers 18:31:22 AnMaster: reads to the next newline and returns a malloced string 18:31:40 ais523, I use a few gnulib functions like this for glibc specific ones 18:31:48 ais523, well yes that is what it does 18:31:58 anyway strndup() from gnulib too 18:32:04 and strnlen() 18:32:12 so I got copies of both 18:32:13 -!- psygnisfive has joined. 18:32:15 tusho: AnMaster: dogface: I thought of a really evil way to do command line arguments for an esoprogram, I might use it for C-INTERCAL 18:32:24 ais523, oh? 18:32:25 basically, a command line argument is one character 18:32:27 including control codes 18:32:35 except it goes from a # to the next newline 18:32:37 err? 18:32:42 that way you can have multicharacter options 18:32:54 so for instance you might have -a^D#version 18:32:55 f 18:32:58 http://waffles.fm/main.html <-- has waffles.fm bitten the dust? 18:33:01 foo 18:33:01 foo 18:33:04 as a command line argument with 4 options 18:33:09 Oh, heh. 18:33:13 "Admin Login" is just "Login". 18:33:14 (^D represents control-D here) 18:33:15 argh, it works not 18:33:30 it was inspired by Nethack 18:33:32 ais523, cfunge uses getopt() to parse command line arguments, it assumes the strict POSIX variant, so once it hits a non-parameter the rest is befunge program name and command line arguments for that program 18:33:44 http://ok.org/ totally needs something cooler than what is there 18:33:45 the evil inverted I is stronger than Perl 18:33:49 those controls work great interactively, not so much over a command line, which is where the evil comes from 18:34:10 AnMaster: well that's sane, getopt is easy to reimplement anyway 18:34:11 foofoo 18:34:39 Deewiant: Maybe it only replaces on privmsgs by others? Here's a tab: ... I hope that was a tab. 18:34:41 ais523, anyway if you don't use buffered STDIO a lot of befunge programs will behave strange 18:34:49 ais523, for example returning too early 18:34:50 fizzie: evidently so 18:34:55 that sucks :-/ 18:34:56 ais523, in input 18:35:09 ais523, however you can tell that you use unbuffered in y 18:35:19 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client"). 18:35:28 but then programs like the wumpus in befunge won't work 18:35:31 huh... 18:35:33 -!- ais523 has joined. 18:35:33 why leave 18:35:39 umm... I don't know 18:35:39 ais523, what was the last you saw? 18:35:45 I was halfway through a sentence too 18:35:50 ais523, anyway if you don't use buffered STDIO a lot of befunge programs will behave strange 18:35:50 ais523, for example returning too early 18:35:51 I think I hit back on my browser by mistake 18:35:53 ais523, in input 18:35:53 ais523, however you can tell that you use unbuffered in y 18:35:54 but am not sure how 18:35:56 but then programs like the wumpus in befunge won't work 18:35:56 huh... 18:35:56 why leave 18:36:02 there was stuff other ppl said too 18:36:07 (hardly as important ;) 18:36:10 * AnMaster ducks 18:36:13 AnMaster: it will be buffered the same way as the BF interp 18:36:23 most BF interps I know line-buffer input 18:36:25 ais523, you have to say which way in y 18:36:38 ais523, also it need to flush stdout before any input 18:36:40 Deewiant: You probably need to signal_add it to some other sensible signal in addition to only "server incoming". But at least you're not starting from scratch. 18:36:44 cfunge calls fflush() to do that 18:36:47 AnMaster: I can add -mbuffered-input, I'll get the user to tell me during compile 18:36:59 um? 18:37:05 huh? 18:37:09 AnMaster: you can add new options to gcc 18:37:14 to tell you about the target CPU 18:37:17 ais523, well buffered output too 18:37:22 -!- psygnisf_ has joined. 18:37:22 in this case the target "CPU" is actually a brainfuck interpreter 18:37:24 fizzie: that may be what the FIXME: experimental is about :-P 18:37:31 anyway I already do my own buffer for input 18:37:34 so the user has to explain about the interp 18:37:44 so input is less of a problem than output 18:37:45 Deewiant: The whole script looks a bit iffy. 18:37:48 I assume 8-bit wrapping, though, it's much more difficult and time-consuming otherwise 18:38:10 ais523, anyway another issue, threads in befunge, I plan to create a fingerprint that will only block the current thread on IO, a new version of SOCK 18:38:18 fizzie: also, I don't think I can /set anything to only spaces 18:38:30 oh and for such I need non-blocking IO too 18:38:34 ais523, SCKE uses poll() 18:38:34 AnMaster: well don't expect that to work in brainfuck, possibly not in C-INTERCAL either 18:38:41 non-blocking IO is fine for C-ITNERCAL though 18:38:50 ais523, as in poll()? 18:38:56 and maybe select() too 18:39:07 that will be in fingerprints of course 18:39:27 AnMaster: select() will block the INTERCAL program too, but that's expected behaviour in a single-threaded program and I don't support concurrent 18:39:31 ais523, oh how does variable length structs work in GCC? 18:39:38 I assume they are taken care of at a higher level? 18:39:49 cfunge use some structs with a foo bar[]; at the end 18:39:52 C99 feature 18:39:56 AnMaster: they're pretty trivial really, it just takes the address of the last struct member 18:40:10 gcc used to have that as an extension 18:40:17 but its syntax was foo bar[0]; 18:40:31 ais523, btw you may know: 18:40:32 The difference between -fno-peephole and -fno-peephole2 is in how they are 18:40:33 implemented in the compiler; some targets use one, some use the other, a few use both. 18:40:34 well 18:40:38 not sure if they accept C99 syntax too, probably they do because that probably wouldn't be a difficult change 18:40:39 what is the difference exactly? 18:41:07 AnMaster: -fno-peephole turns off RTL to asm peepholing, -fno-peephole2 turns off RTL to RTL peepholing 18:41:12 ais523, gcc accepts the C99 syntax with -std=c99 at least 18:41:21 RTL is the last intermediate language in the chain of languages that gcc translates the program between 18:41:24 ah 18:41:25 and is somewhat processor-dependent 18:41:33 ais523, why so many? 18:41:46 I remember GLIMPS or something like that being mentioned? 18:41:47 Deewiant: At least /set does not seem to be trimming any leading whitespace, so maybe just "/set whatever " to set to " " or something. Haven't tried. 18:41:54 forgot the name 18:41:57 AnMaster: well, each frontend has its own internal representation, which is translated to GENERIC which is common between most of them 18:42:03 fizzie: yes, I am messing around with it now and testing in a query 18:42:30 that's translated to GIMPLE in a more-or-less processor-agnostic way (although the way it translates varargs is dependent on processor) 18:42:34 ais523: i invented a method of encoding 18:42:41 ah GIMPLE was the name 18:42:42 then from GIMPLE it's translated to RTL 18:42:45 you type out some keys, then your reciever types them out and they make shaped 18:42:53 ais523, does your stuff handle varargs? 18:42:53 edctgbf rfvetcb 18:43:00 (space means end of shape, start new one) 18:43:01 try it 18:43:08 AnMaster: I think so, although I haven't tested that, or anything else for that matter 18:43:11 ais523, well it needs to handle printf 18:43:23 it's meant to handle varargs, and all other C89 features, also all C99 features that gcc have implemented 18:43:45 ais523, an idea for how to check for what functions are used just hit me 18:43:48 * AnMaster tests 18:43:51 ah yes works 18:43:51 tusho: I used to do that using calculator keypads 18:43:56 nm -D ./cfunge 18:43:57 AnMaster: nm? 18:43:57 ais523, try that 18:44:01 ais523: nm=never mind 18:44:05 ais523: here, have a smiley face 18:44:09 AnMaster: I'm on Windows at the moment 18:44:17 vfr567ujnbrydvbhj 18:44:17 nm - list symbols from object files 18:44:18 try it 18:44:19 due to forgetting to bring my laptop's power supply here 18:44:25 -D 18:44:25 --dynamic 18:44:25 Display the dynamic symbols rather than the normal symbols. This is only meaningful for dynamic objects, such as certain types of 18:44:25 shared libraries. 18:44:34 well it lists imported functions too 18:44:53 http://rafb.net/p/0ge9DV43.html 18:45:00 objdump would probably do it with different flags too. 18:45:00 AnMaster: I used nm to find out which symbols in C-INTERCAL could cause namespace clashes and mangled them all 18:45:05 nm won't work for gcc-bf though 18:45:09 of course gcc will inline calls to memcpy and such on x86/x86_64 iirc 18:45:14 using special low level stuff 18:45:24 partly because I implemented as as a front-end to cp 18:45:29 and ar as a front-end to tar 18:45:38 it seemed easiest, as the linker has to work on the asm implementation 18:45:50 ais523, anyway a lot of those are only used in fingerprints, there is no way to disable compiling fingerprints, nor is it something I plan to do 18:45:55 you can disable them at runtime 18:45:55 this means that libgcc.a is in fact just a tar.gz of asm files with .o extensions 18:46:01 which is useful in mycology sometimes 18:46:06 if you mess around with core 18:46:13 and want to not have to scroll up a lot 18:46:19 AnMaster: disabling compiling fingerprints is trivial, you just remove them all from the fingerprint description file 18:46:21 -!- psygnis__ has joined. 18:46:21 ais523 is not interested :( 18:46:26 ais523, well yeah 18:46:33 tusho: I am slightly, but can't figure out what you were trying to say 18:46:36 ais523, except it will want one at least I think... 18:46:40 ais523: it's a smiley face 18:46:59 cde4567ujmnbvcrtfvg 18:47:02 perhaps more legible 18:47:03 AnMaster: NULL is trivial 18:47:05 the smiley face is everything that has been said after tusho's last message 18:47:11 if anyone needed that cleared up 18:47:11 ais523, I think strange stuff may happen if it tries to use a for loop to iterate over a 0 length array... 18:47:13 heh 18:47:15 no it's not :P 18:47:18 he's jokes are so weird. 18:47:23 *his 18:47:26 since I use sizeof(array) / sizeof(record) nowdays 18:47:27 what the fuck was that :\ 18:47:36 not ending 0 entry 18:47:47 i think i'm gonna poo and shit (pun intended) -> 18:47:54 have fun 18:47:57 AnMaster: C's control structures are all designed to handle the 0-length edge case incidentally 18:48:01 ais523, anyway... http://rafb.net/p/0ge9DV43.html are all the functions used by cfunge here 18:48:04 except do-while, but you normally only use that one deliberately 18:48:13 and other symbols 18:48:30 but NULL surely doesn't require standard library support 18:48:34 nor ROMA for that matter 18:48:36 ais523, indeed 18:48:40 there are a few more ones iirc 18:48:54 what does roma do 18:49:03 -!- psygnisfive has quit (Read error: 110 (Connection timed out)). 18:49:07 tusho, map some instructions to push roman numerals 18:49:10 tusho: interprets capital letters as roman numerals 18:49:13 ah 18:49:43 ais523, SUBR, INDV shouldn't use anything except malloc() and such either if even that 18:50:07 REFC use malloc() but you can't get away without malloc() for cfunge at all 18:50:09 well obviously I'm going to have to implement malloc as just about every C program ever uses it 18:50:19 likewise 18:50:23 ais523, malloc() calloc() free() memset() and a few more 18:50:26 s/.*// 18:50:38 AnMaster-without-anmaster is pretty zen 18:50:39 memchr, memcpy 18:50:43 AnMaster: I think I'll implement all of stdlib.h, and find an implementation of stdio.h somewhere 18:50:45 tusho, ?? 18:50:48 you get one person stating obvious things in a row for ages 18:51:05 ais523, string.h too 18:51:11 use quite a bit from that 18:51:13 -!- psygnisfive has joined. 18:51:19 woo hey guys 18:51:34 gcc needs some headers on the target to exist to compile: string.h stdlib.h stdio.h time.h sys/types.h unistd.h 18:51:39 but I only edited the last two with touch 18:51:43 as they aren't standard C 18:51:47 and hi psygnisfive 18:51:47 10:14:17 well I'm not ignoring tusho, nor do I think he is ignoring me 18:51:49 haha 18:51:53 i was just logreading and saw that 18:51:57 i just got into my dorm :D 18:52:02 AnMaster, you are actually on ignore :p 18:52:13 tusho: happy mailman reminders day by the way 18:52:14 tusho: What's the point of the /ignore if you logread the stuff still? 18:52:19 fat lot if I care 18:52:21 ais523: beat you to it yesterday 18:52:25 for the australian agora list :) 18:52:32 fizzie: i wanted to see if he's commented on my ignoring 18:52:40 tusho: I wasn't here yesterday, and yesterday isn't mailman reminders day except in Australia 18:52:52 just because he doesn't like GPL and wants to troll, then goes on to ignore me 18:52:54 well he is strange 18:52:58 we all know that 18:53:31 10:49:07 tusho, map some instructions to push roman numerals 18:53:35 why did you answer to /dev/null... 18:53:41 -!- psygnisf_ has quit (Connection timed out). 18:54:13 10:52:52 just because he doesn't like GPL and wants to troll, then goes on to ignore me 18:54:22 sorry trying to have a reasoned argument, i'll just blindly agree with you in future 18:54:22 heh, at the moment ABI has a %devnull register which throws away data moved into it 18:54:27 I do wish he stops highlighting me though 18:54:27 which will be optimised away later 18:54:30 well, after i stop /ignoring you 18:54:32 and anyway it can't be called ignore 18:54:34 i might just forget for a year or so 18:54:46 so someone tell me how C++'s grammar is unrestricted please 18:54:49 10:54:27 I do wish he stops highlighting me though 18:54:49 not with tusho log reading 18:54:53 AnMaster: AnMaster AnMaster AnMaster AnMaster 18:54:55 he have to ignore log 18:54:56 psygnis__: logread. 18:54:59 or it isn't ignore 18:55:00 ais523 linked to an article 18:55:08 tusho: is in log? 18:55:11 psygnisfive: C++ is compile-time TC 18:55:11 ok. 18:55:18 ais523, hum 18:55:20 im not sure how that works but ok :) 18:55:25 ais523, why such a strange register 18:55:34 which reminds me 18:55:39 botte. 18:55:43 psygnisfive: using the template resolution mechanism 18:55:45 hm 18:55:46 ais523, anyway brainfuck doesn't *have* registers 18:55:50 perhaps I'll just write a log searcher first 18:55:51 then botte 18:55:56 yeah, good idea tusho 18:55:58 hmm 18:56:04 also tusho: I too was trying to have a reasoned argument 18:56:05 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 18:56:05 how can i make sure it already has the most recent logs... 18:56:05 however 18:56:06 -!- oklofok has joined. 18:56:07 AnMaster: due to generating code from filling in templates 18:56:11 you did ignore that 18:56:16 ah, wait, it can't log-tail then 18:56:16 you just said what you thought 18:56:19 ignoring what I said 18:56:29 ais523, hum? 18:56:31 and register in asm = data stored at a fixed location on the tape in BF 18:56:56 AnMaster: sorry, I meant to higlight psygnisfive on the comment before last rather than you 18:57:03 ais523, anyway how will you handle pointers? I think the generated code would be spectacularly slow 18:57:05 but I'd been talking to you so much I typed the wrong name 18:57:19 compile-time tc equals unrestricted grammar? 18:57:26 oklofok! :D 18:57:26 oklofok: for c++ 18:57:28 AnMaster: yes, it will be, although pointers aren't that hard (just slow) and I've thought up several optimisations 18:57:38 psygnisfive: god, stop going oklopol! whenever he talks 18:57:41 oklofok: all TC == unrestricted grammar. 18:57:42 we can tell. 18:57:56 oklofok: I don't think so necessarily, it rather depends on whether the grammar is the only thing relevant at compile-time 18:58:04 psygnisfive: having a tc type system automatically makes it impossible to parse in general? 18:58:09 i somewhat doubt that 18:58:15 no i didnt say that :P 18:58:19 I mean 1) pointers, lots of them 2) cells in funge space can't be less than 4 bytes 18:58:20 it could be, say, that the grammar was type 3 but some other step in the compilation was TC 18:58:28 unrestricted grammars are computationally equivalent to turing complete machines 18:58:35 ais523, about every app would break with sub-32-bit cells 18:58:36 AnMaster: well pointers are 26 bits, padded to 32 18:58:45 and the cells are 32-bit 18:58:54 ais523, that isn't brainfuck... 18:58:57 so if C++ is compile-time TC then theres some unrestricted grammar that goes along with it 18:59:05 psygnisfive: everyone knows that; ais523: we were talking about whether parsing is tc, not just compilation; tusho: true 18:59:06 brainfuck got unsigned 8 bit... 18:59:09 AnMaster: yes it is, the pointers are stored in 4 8-bit brainfuck cells 18:59:14 ah 18:59:19 just like on an x86 system 18:59:25 oklofok: wait which part was true 18:59:26 psygnisfive: oh 18:59:26 gcc is fine with storing data in more than one cell 18:59:33 my telling psygnisfive not to okoping all the time? 18:59:38 ais523, anyway cfunge uses function pointers 18:59:42 tusho: for c++ it is true, in case it's true 18:59:45 AnMaster: they're fine too 18:59:45 ais523, how the heck do you handle that? 18:59:48 I use them everywhere 18:59:48 oklofok: i know. apparently C++ is TC at compile time. earlier tho they said the syntax of C++ was itself unrestricted 18:59:51 i'm not sure whether it is 18:59:57 ais523, huh... how can you do that in brainfuck 19:00:02 psygnisfive: yeah i'm a bit confused too 19:00:06 i dont think it is 19:00:07 not sure what's the case 19:00:08 AnMaster: each segment of code has a number 19:00:10 ais523, you need to jump in code a lot 19:00:12 psygnisfive: it is 19:00:14 yes 19:00:15 because unrestructed grammars are a pain in the ass to parse. 19:00:18 ais523: yo, you link him to the article. 19:00:34 so every goto, label, and function call in the program is translated to a break in the BF code 19:00:43 where it stores the number of the next block of code in some dedicated registers 19:00:52 ais523, oh and you probably want to sed out all occurrences of the word "inline" in cfunge ;P 19:00:52 then the whole body of the code is effectively a switch in a loop 19:00:57 tusho: I don't know where it is offhand 19:01:00 or the resulting code would be HUGE 19:01:02 bah, k 19:01:24 AnMaster: why, inline gives a better speed gain in BF than it does in other langs 19:01:29 the resulting code's going to be HUGE anyway 19:01:39 ais523, well code could grow a lot 19:01:40 A's type, or should i say kind, needs to be known @ "A < B > C", so it's unrestricted 19:01:43 besides the better way is probably to set gcc's inlining flags 19:01:47 i think that's it really 19:01:56 it doesn't allow inline to grow the code by more than 50% by default, for instance 19:02:01 oklofok: whats that mean now? 19:02:01 it'll uninline things if it would 19:02:04 ah true 19:02:17 AnMaster: you can change that, might be helpful for your speed optimisation 19:02:22 ais523, haha 19:02:43 worryingly I'm trying to optimise gcc-bf's output too 19:02:50 psygnisfive: i think i'd have to think for a while to answer that. 19:02:51 -!- psygnis__ has quit (Connection timed out). 19:02:52 I assume a run-length-encoding interp though 19:03:05 so I assume that >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> is as fast as > 19:03:06 ais523, normal cfunge binary on x86, stripped, is around 109 KB 19:03:07 but i think i'll just sleep 19:03:07 using GCC 19:03:11 oklofok: :P whats it mean tho to say that its kind needs to be known at ~?? 19:03:14 that is with -march=pentium3 19:03:18 gcc 4.3 19:03:35 AnMaster: what about the insane -O3 version with funroll loops? 19:03:43 ais523, I don't have a copy around 19:03:51 only other is 1.4 MB from debug info... 19:03:56 wait 19:04:02 2.5 MB, it is -ggdb3 19:04:02 psygnisfive: i meant you need to know whether A is a type or an object, really, i think; "kind" was definitely the wrong term, and i'm not sure it's hard to know which one A is 19:04:07 oh btw profile feedback won't work on gcc-bf 19:04:11 nor will any debug format 19:04:15 -g gives a warning that it was ignored 19:04:17 ais523, I assume that :P 19:04:21 oklofok: i dont see how thats relevant to the syntax tho, see 19:04:23 that it wont* 19:04:32 nor will nested functions, but those aren't standard C anyway 19:04:49 psygnisfive: well in case the types are TC, you need to resolve that stuff before you can parse AC 19:04:50 -!- Hiato has quit ("Leaving."). 19:04:57 so you can't parse all cases at all 19:05:02 because the type system can infloop 19:05:03 ais523, as far as I know I got no nested functions 19:05:10 ais523, it is C99 + POSIX 19:05:17 AnMaster: well you shouldn't have, they aren't C99 or POSIX, just a gcc extension 19:05:23 exactly 19:05:24 oklofok: oh right but types and stuff are done at compilation, they're not part of the syntax. 19:05:34 they're sort of like lambdas but less useful because they can't have any scoping other than auto 19:05:35 ais523, all GCC extensions I have (attributes mostly) are optiona 19:05:37 optional 19:05:39 with ifdef 19:05:48 psygnisfive: you need to do them at the same time as the compilation though 19:05:49 err 19:05:55 the same time as the parsing 19:06:01 heh, my header files simply #define __attribute__(x) to nothing if __GNUC__ isn't defined 19:06:03 -!- Hiato has joined. 19:06:12 you can't parse without knowing the types, and you can't know the types unless you've parsed the program 19:06:17 oklofok: i doubt this. parse then verify. 19:06:23 ais523, well yeah I do a bit more since ICC support *some* attributes 19:06:30 I must have spent an hour or so writing stdio.h 19:06:36 psygnisfive: different parse trees depending on types, that's definitely true of C++ 19:06:37 even though I was copying from glibc 19:06:40 #include 19:06:43 (that's how it ended up LGPL2.1) 19:06:48 ais523, cfunge will fail badly without errno 19:07:01 I have an errno.h 19:07:02 it defines errno 19:07:04 and that's it 19:07:20 oklofok: i still doubt that anything truly requires an unrestricted grammar. i cant even imagine how different types force different parses in a way that requires TCness. 19:07:29 probably I should define numeric codes for the C99 errno codes, though 19:07:34 ais523, the getline() from gnulib assumes that it will have reasonable values 19:07:55 I find it's normally possible to rewrite programs around most restrictions 19:07:56 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client"). 19:08:09 C-INTERCAL was POSIX originally, but I think it can be compiled without unistd.h nowadays 19:08:13 nor any of the functions from it 19:08:24 ais523, well befunge98 requires date/time 19:08:45 AnMaster: maybe Befunge-108 should have an option for freestanding Befunge 19:08:48 which doesn't assume an OS 19:08:49 -!- psygnisfive has joined. 19:08:52 just like there's freestanding C 19:09:03 ais523, um, the interpreter would have to handle it still 19:09:06 wait 19:09:11 not sure how it would work 19:09:20 it would be just a case of returning dummy information for some of y 19:09:36 because Befunge-98 already allows not implementing i and o 19:10:35 ais523, you will have to remove the signal(SIGPIPE, SIG_IGN); thingy 19:10:43 happens in main.c 19:10:45 http://rafb.net/p/lUOFp085.html 19:10:45 anyway 19:10:49 that may be of interest 19:10:57 of course some are from fingerprints 19:11:00 core is a lot less 19:11:00 AnMaster: heh, what you just wrote is by definition a NOP in brainfuck 19:11:06 you're telling it to ignore something that can't happen anyway 19:11:34 -!- oerjan has joined. 19:11:43 sort of like ABSTAIN FROM COMING FROM in INTERCAL-72 19:11:45 ais523, you need a working printf anyway 19:11:53 hmm... I wonder if C-INTERCAL correctly sees that as an error 19:12:21 and yes, I'm going to implement or find from somewhere stdlib, stdio, and string, as programmers really assume they need those 19:12:39 * oerjan wonders if there are many programs using ABSTAIN FROM ABSTAINING 19:13:20 -!- megatron has joined. 19:13:28 -!- moozilla has quit (Nick collision from services.). 19:13:31 oerjan: probably not, when you're using ABSTAIN as control flow normally you aim for individual lines, and when you aim for a gerund it's usually NEXTING 19:13:32 ais523, stdint, stdbool and so on too 19:13:49 AnMaster: stdint's just macros, right? and stdbool is trivial in gcc 19:14:02 ais523, well stdint is probably just typedefs 19:14:11 for int32_t int64_t and such 19:14:20 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client"). 19:14:24 ais523, I think cfunge may use int64_t for some other stuff even if funge space is 32-bit 19:14:25 not sure 19:14:41 oh yes TURT fingerprint 19:14:42 AnMaster: well, LONG 19:14:47 but since that writes svg files... 19:14:52 you wouldn't want it anyway 19:14:55 and it uses math 19:14:55 anyway I'm using a nice generic implementation method 19:15:00 for long integers 19:15:07 ais523, TURT too depends on math.h 19:15:16 probably I could add support for 128-bit integers without much trouble (I already have 64-bit long long due to C99) 19:15:29 ais523, I decided against implementing LONG because it is unportable between 32-bit and 64-bit funges 19:15:30 256-bit would be harder as gcc has no name for a data type that large internally 19:15:37 causing programs to be unportable rather 19:15:38 ah, ok 19:15:46 I'm still faced with much the same problem, though 19:16:00 which is: what's the most efficient way to multiply 64-bit numbers in 8-bit brainfuck? 19:16:01 ais523, there is some vector extension? 19:16:07 and GCC got __int128_t at least 19:16:16 AnMaster: I don't use the vector extension 19:16:27 and __int128_t will currently be emulated in software by gcc 19:16:33 ais523, yes i know it will 19:16:39 or it will use SSE I guess 19:16:41 which will probably result in more or less the same code anyway 19:16:42 on x86_64 19:16:50 AnMaster: ah, I was talking about gcc-bf 19:17:02 which is fine with 64-bit numbers (it stores them in 8 consecutive registers or memory locations) 19:17:14 ais523, how many registers do you have= 19:17:15 ? 19:17:25 64 ordinary registers 19:17:32 5 fixed registers at current 19:17:33 and how many special purpose? 19:17:38 ah 19:17:38 but probably I'll have more eventually 19:17:40 program counter? 19:17:43 and what else? 19:17:44 (fixed = gcc's name for special purpose) 19:17:52 ais523, what ones are they 19:18:09 4 registers which are a combined pc and cc0, and one scratch register 19:18:21 oh btw I was thinking of generating code at runtime, using JIT with LLVM, could be rather interesting 19:18:26 also I have stack pointer and a stack of frame pointers, but they're represented in unary for speed 19:18:29 I think JITing funge would work 19:18:35 AnMaster: probably 19:18:36 but probably won't do it 19:19:06 ais523, cfunge's stack can grow rather large I think 19:19:18 probably outside what 8 bits could represent for size 19:19:37 oh what is cc0 btw? 19:19:50 AnMaster: well gcc-bf supports an unlimited size stack, but you can't take pointers to it or pass structures to or from functions if it grows beyond 16 MB 19:20:03 ais523, hm 16 MB no 19:20:05 AnMaster: condition code, which holds the result of a comparison 19:20:12 but maybe a few kb on stac 19:20:13 stack* 19:20:24 and I do take pointers to stuff on stack all the time 19:20:42 AnMaster: not a problem, the stack pointer is represented by two consecutive 0s in a long run of 1s on every sixth tape element 19:20:48 since I prefer variable on stack and pointer rather than having to remember to free 19:20:55 so you can get to the stack pointer easily with [[>>>>>>]>>>>>>] 19:21:08 makes better code IMO 19:21:13 unless variables are large 19:21:15 and pointers to the stack are 24-bit integers with an extra byte stating that they're on the stack 19:21:16 -!- Hiato has quit ("Leaving."). 19:21:26 and yes, I agree with you, alloca was probably invented for that purpose 19:21:36 ais523, I got some 1024 * 8 bytes arrays on stack in one function or another iirc 19:21:37 pity it isn't standard C really, probably some systems can't manage it 19:21:39 assuming 64-bit funge 19:21:47 1024 * 4 otherwise 19:21:57 actually it may be char buf[1024] 19:21:57 AnMaster: 8KB is fine, although might take a while to access 19:21:59 don't remmeber 19:22:21 BTW can cfunge cope with 16-bit int? 19:22:27 ais523, no 19:22:32 it ought to be able to if you use types correctly, hardly anyone does though 19:22:34 definitely not 19:22:37 C-INTERCAL can't, I know 19:22:41 ais523, well maybe 19:22:45 not sure 19:23:00 I probably use int32_t most of the time 19:23:02 ideally I should be able to set sizeof(int)=2 in gcc-bf, but everything assumes it's 4 nowadays so I'll have it as a command-line option 19:23:03 but not sure 19:23:46 anyway stack won't ever get 16 MB 19:23:50 heap can probably 19:24:34 I think I know how to implement pointers larger than 26-bit 19:24:50 hmm... how many BF interpreters can cope with over 72 million successive > signs? 19:24:51 ais523, fingerprints use a *lot* of function pointers, remember that 19:25:03 AnMaster: function pointers are in a separate memory space 19:25:03 and I have a static array with function pointers 19:25:05 for the loaders 19:25:14 static const array even 19:25:15 which allows 16 mebifunctions 19:25:22 ais523, 16 what? 19:25:35 mebi=2^20 just like mega=10^6 19:25:37 anyway I got way more than 16 functions that I use function pointers to 19:25:39 ais523: 72 million? that's what, 300 megabytes of memory? 19:25:42 ..... 19:25:48 Deewiant: no, 72 megabytes 19:25:58 ais523: is each cell not 4 bytes 19:26:02 AnMaster: so you have over 16 million total functions + labels 19:26:07 hah ok 19:26:08 Deewiant: no, 8-byte cells 19:26:16 ais523: so then it's more like 600 megabytes 19:26:18 if you store an int it's stored in 4 successive cells 19:26:29 ais523, I do use goto for error handling in FILE and SOCK where I need similiar clean up paths in a lot of cases 19:26:35 otherwise goto is very very sparse 19:26:38 it uses a bit over 72 million cells 19:26:39 if ever outside those two 19:26:49 AnMaster: everything's translated into goto in the asm anyway 19:26:55 so it doesn't matter what it was in your code 19:26:57 ais523, well I meant at C level 19:27:05 while is a convenience for the programmer, not for the compiler 19:27:07 ais523, err 19:27:08 not goto 19:27:10 call/ret 19:27:17 I'm sure of that functions call are not goto 19:27:22 or you couldn't return 19:27:24 AnMaster: call/ret is also translated into goto the way I'm doing things 19:27:30 it pushes a label onto the stack first 19:27:33 then gotos the function 19:27:33 ais523, oh btw I sometimes return structs 19:27:36 by value 19:27:39 the function pops a label from the stack 19:27:41 actually just in one place 19:27:46 but I still do it there 19:27:51 not sure if you can handle that 19:27:58 it is a { x, y } struct 19:28:02 AnMaster: if you're using gcc, no you don't, it automatically rewrites that as pass by reference 19:28:21 but if the struct's 64 bits or smaller it stores it in a long long instead and it doesn't matter that it's a struct 19:28:21 ais523, hm doesn't make sense since I construct that in *return* 19:28:23 like: 19:28:38 return (fungeVector) { .x = x, .y = y }; 19:28:39 that 19:28:47 not sure where it would place the reference 19:29:12 AnMaster: the function that calls it allocates space for a fungeVector on the stack and passes a pointer to it to the function that returns a fungeVector 19:29:22 ais523, ugh 19:29:28 then the function returning a fungeVector stores in the memory referenced by that pointer 19:29:36 ais523, but that breaks AMD64 ABI 19:29:37 AnMaster: that's how gcc and most other compilers handle struct returns 19:29:47 AMD64 ABI would return that struct in registers 19:29:48 iirc 19:29:50 except it modifies it to conform with ABIs if possible 19:30:03 it does use registers for things 64-bit and smaller, I think 19:30:12 except to conform with someone else's ABI 19:30:25 I think, but I'm not sure, that AMD64 ABI splits such a struct up over 2 registers... 19:30:32 and probably can handle 128-bit structs too on systems which can normally return long long longs in registers, don't know how many of those exist though 19:30:34 can't find the pdf atm 19:30:48 long long long? 19:30:49 that exist? 19:30:50 AnMaster: just compile with optimizations on and look at the asm 19:30:58 for instance atm the gcc-bf ABI returns 64-bit integers and structs in registers r0-r7 19:31:08 AnMaster: no it doesn't, but what else could you call a 128-bit int? 19:31:18 ais523, int128_t 19:31:35 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 19:31:36 -!- oklopol has joined. 19:31:36 well yes, but long long long has a swing to it 19:32:11 hah 19:33:02 long short 19:33:12 tusho: I want 24-bit ints! 19:33:14 48-bit too 19:33:20 ais523, why on earth? 19:33:22 wait 19:33:24 there are a whole lot of missing lengths of integers 19:33:32 ais523: what would long short be? 19:33:34 actually mysql has a 24-bit data type AFAIR 19:33:36 struct foo { unsigned int bar:24; } 19:33:38 also 19:33:39 ais523, that *may* work 19:33:42 what about negative half trit 19:33:43 :D 19:33:46 bit field 19:33:48 turkey booooooooooomb! 19:33:55 AnMaster: interesting, I wonder if that's 3 bytes on gcc-bf? 19:34:04 I've told the compiler not to pad anywhere unless the user asks for it 19:34:07 or to make whole bytes 19:34:11 ais523, well I never tried anything but one bit bitfields 19:34:25 but iirc other values than 1 work too 19:34:35 AnMaster: most compilers will give you a 32-bit struct if you do that 19:34:40 with 8 bits of padding 19:34:48 at least on most processors 19:34:59 but will access it like a 24-bit unsigned int 19:35:06 by ignoring the top 8 bits 19:35:07 ais523, cfunge uses bitfields, I made sure the structs had as few holes as possible on x86 and x86_64 using both 32-bit and 64-bit funges 19:35:11 tried all combos 19:35:19 used a tool the kernel developers made: pahole 19:35:28 it reads the debug info from -g and lists any holes 19:35:31 AnMaster: I know, you told me earlier 19:35:31 very nifty tool 19:35:38 I did? 19:35:40 you got good memory 19:35:45 unlike me 19:36:18 ais523, anyway how do you do bitfields in your gcc-bf? 19:36:28 AnMaster: badly 19:36:35 it takes lots of bitwise operations 19:36:38 ais523, as in slow? or incorrect? 19:36:44 AnMaster: very slow but correct 19:36:45 ais523, well cfunge will be hellish slow then 19:36:49 lots of multiplication and division in loops 19:36:57 ais523, since it accesses a few bitfields for every instruction executed 19:37:08 basically: isStringMode 19:37:09 and 19:37:21 wait more than that 19:37:27 ipMode mode; ///< String or code mode. 19:37:28 bool needMove:1; ///< Should ipForward be called at end of main loop. Is reset to true each time. 19:37:28 bool stringLastWasSpace:1; ///< Used in string mode for SGML style spaces. 19:37:28 AnMaster: probably it would be worth having a mode that unpacked the bitfields into one unsigned char per bitfield 19:37:29 that is it 19:37:44 ais523, not really on x86/x86_64 19:37:46 I checked there 19:37:55 so 19:37:56 avofs 19:37:56 no noticable difference 19:37:58 oh, I think it's probably a lot faster on gcc-bf if you don't have many bits in your bitfield 19:38:07 but chars will still be faster still 19:38:08 oh wow, some intercal code! in the wild! 19:38:12 coooooooool 19:38:12 ais523, there is another one: 19:38:13 bool fingerSUBRisRelative:1; ///< Data for fingerprint SUBR. 19:38:20 tusho: whwew did you find it? 19:38:30 ais523: i'd tell you but then i'd have to kill you 19:38:35 not a good deal overall i think 19:38:48 AnMaster: ew, bitfields 19:38:54 Deewiant, why? 19:38:57 AnMaster: are these constant structs? 19:39:00 or do they change over time 19:39:03 AnMaster: I was just about to ask you :-P 19:39:03 ais523, no that is in ip struct 19:39:07 so it changes a lot 19:39:14 ok 19:39:19 ais523, and is checked once every time in main loop 19:39:22 or something like that 19:39:25 one of them is 19:39:31 anyway I suspect gcc-bf will be painfully slow if run on an ordinary BF interpreter 19:39:35 needMove in concurrent funge 19:39:39 Deewiant, ?? 19:39:47 AnMaster: why bitfields 19:39:52 Deewiant, why not? 19:40:09 ais523, you could create one that reverse compile it to C... 19:40:10 ;P 19:40:18 more code, and probably slower 19:40:29 Deewiant, as I said, there was no noticable difference 19:40:37 AnMaster: well I'm going to litter the output with optimisation data 19:40:41 yeah, probably not noticeable 19:40:52 but it's one extra instruction for each access :-P 19:40:52 such as @4 to mean "the pointer is now at cell 4 of the tape" 19:40:56 Deewiant, and I'm not that speed crazy 19:41:08 Deewiant, plus this means it will fit into my L2 cache ;) 19:41:10 * AnMaster ducks 19:41:33 AnMaster: surely it'd be cached anyway 19:41:35 AnMaster: not L1? 19:41:43 ais523, this is a sempron 19:41:46 GREEN THINGS!! 19:41:50 GREN THINGS DEVEOTED TO MACHINESSSSSSSSSSS 19:41:51 so very very SMALL cache 19:41:54 SDFSDS;DFSL;FKSDFL;KD;AKD;ASDK;ASDK;ALSD^G^G^G^G 19:41:55 so about nothing fits 19:42:02 DDDDDDD:DDDDD 19:42:09 heck even the P3 near here got larger cache 19:42:10 KJLjkLJklJKLjLjkLJlkJljKLjlkklJ 19:42:12 slower yes 19:42:14 but more cache 19:42:19 AnMaster: you could probably fit a BF interp written in asm into it, those can be very small indeed 19:42:21 o_XXXXXXXXXX 19:42:25 ais523, cache size : 128 KB 19:42:28 ,o/ /// o\, 19:42:30 from /proc/cpuinfo 19:42:34 the P3 got twice that 19:42:37 128 KB isn't very small! 19:42:47 and of course it will have lot of other stuff 19:42:49 HO HO I HEARTY LAFF 19:42:51 LAFFLAFLAFLAFLALFAF 19:42:51 than just hte ip struct 19:43:01 by "very small" I thought you meant a few hundred bytes, that's what I'm used to working with sometimes 19:43:09 DO YOU LAF 19:43:12 ais523, hah 19:43:13 PIGS HOW DO YOU LAFGHU 19:43:17 dddd 19:43:47 ais523, modern x86 can have caches larger than 2-3 MB these days 19:44:01 AnMaster: even in the L1? 19:44:04 AnMaster: L1 caches, nope 19:44:07 +for 19:44:15 indeed not for L1 19:44:21 for L1 the most I seen is 512 kb 19:44:24 iirc 19:44:39 iDISAGREElol,wiht ur jiaoj ioj 19:44:52 why do we have a randomness generator in here? 19:45:08 AnMaster: we have at least two. optbot, fungot, hi! 19:45:08 ais523: If anybody wishes: Throw a runtime exception with the message "I'm in ur channel throwin ur exceptionz." 19:45:09 ais523: paste all the urls i've visited. strange.) an earlier version of sql but not without? :p. ugh i need to enter " qemu" to edit a file that has ?scm ( fnord " source-file.scm")) 19:45:13 comic effect lol 19:45:15 ais523, 3 19:45:16 then 19:45:17 ^echo optbot 19:45:17 optbot optbot 19:45:18 Deewiant: !bf8 +[<+>+<+>+<+>+<+] 19:45:18 fungot: even ignoring the fact that you've read his book 19:45:18 optbot: it was too easy heh one time i figured out my bug :d) 19:45:19 tusho, fungot optbot 19:45:19 fungot: you lose, by a lot 19:45:19 AnMaster: Knock knock. 19:45:20 AnMaster: it doesn't look like it does the fnord i want to do is to write a render procedure for sdl is just a value that prints as void. it is a load of hell. twice. most confusing. :p ( although theoretically speaking i could try. 19:45:20 all of them 19:45:21 optbot: i'm certain he isn't annoying at all. the code i write, more should be all set)) f 19:45:21 fungot: +2 5=7 19:45:22 optbot: actually just parsing ski says. remember physics 103, modern physics, general functions i suppose. 19:45:23 fungot: indeed. everything is subjective 19:45:25 optbot: fopen(3) freebsd library functions manual fopen(3) 19:45:26 fungot: the short way ;) 19:45:27 optbot: i made it up as much as cheap jokes would like you to die, but it does not render via cocoa, and qt/ kde 19:45:28 fungot: Jim is pretty much a light Tcl interpreter, with nice things like "closures" added. 19:46:06 3 19:46:13 4 COMIC EFFECT CLEAN MAKER 2!!!!!! 19:49:24 ais523, anyway if you want floating point to work with cfunge means float will be exactly 32-bit and double exactly 64-bits 19:49:35 since I have to mess around with unions 19:49:39 for some fingerprints 19:49:54 don't worry, those are exactly the sizes of floating point I'm using 19:49:55 AnMaster: aren't there float32_t types 19:49:58 or some such 19:49:59 although long double = double 19:50:04 Deewiant, nop 19:50:12 hoorays for standard C 19:50:17 hip hip, hooray 19:50:19 hip hip, hooray 19:50:19 ais523, that is fine, while I do use long double I never depend on it's size 19:50:20 hip hip, hooray 19:50:21 Deewiant: I don't think so, systems on which float wasn't 32 bits almost certainly wouldn't implement them so it would be pointless 19:50:39 Deewiant: float formats are a lot more varied than int formats 19:50:39 ais523: why wouldn't they 19:51:32 ais523, cfunge will need both sin() and sinf() then, and you would just map sinl() to sin() 19:51:57 Deewiant: different processors have different sort of float support, for instance things like the 387 work in 80-bit float internally, so it can cause problems by having too much precision internally as double is only 64 19:52:11 yes 19:52:15 ais523: why would that be a problem 19:52:19 and long double on x86_64 is 128-bits 19:52:23 it uses SSE 19:52:26 an algorithm that relies on a certain bittiness is broken anyway 19:52:40 that's one example, most compilers have an option to emulate exact 64-bit double and normally just switch between 64 and 80 at will because normally too much precision is not a problem 19:53:19 ais523: I still don't see why that would prevent a float32_t from existing 19:53:24 but gcc has options to work exactly to the spec and use exactly the right amount of precision by copying the float values into memory and back every operation 19:53:45 Deewiant: it would have to be implemented in software, slowing the program down a lot and requiring floating point emulation libraries 19:54:03 ais523: it doesn't have to have any specific characteristics 19:54:20 if you have 36-bit floats you can have 32-bit floats which just have 4 bits of the exponent always zero 19:54:20 but gcc has options to work exactly to the spec and use exactly the right amount of precision by copying the float values into memory and back every operation 19:54:21 err 19:54:22 no 19:54:28 you can set the precision 19:54:30 with some instruction 19:54:32 pretty sure 19:54:54 AnMaster: it's one of the -mwhatever options on x86, I know because I was reading the gcc manual last night 19:55:00 jkjlkjlfkdjkdlfjfdg 19:55:06 AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant 19:55:21 tusho: congrats, you're the first person I've ignored in years 19:55:27 awesome 19:55:41 ais523, um -mpc64 ? 19:56:12 ais523, but iirc that sets some floating point control register 19:56:14 or such 19:56:20 AnMaster: I don't think so, but I can't remember what the option was offhand, it had some long name 19:56:29 mfpmath rings a bell, related? 19:56:39 Deewiant, that is for selecting x87 or see 19:56:41 sse* 19:56:48 meh 19:56:59 -m96bit-long-double 19:56:59 -m128bit-long-double 19:57:04 can't be that 19:57:09 they are for alignment in structs 19:57:40 i wonder if i can get ignored by everyone in #esoteric 19:57:41 that would rock 19:58:01 AnMaster, ais523: are you sure you don't mean -ffloat-store? 19:58:17 fizzie: ah, that might be it 19:58:24 "Do not store floating point variables in registers -- This option prevents undesirable excess precision --" 19:58:38 um 19:58:40 hm 19:58:48 tusho: well I just ignored you to help you with your mission, I'll probably unignore you again in a bit 19:58:50 but what about setting the control register of x87? 19:58:54 sweet 19:58:56 I'm 99% sure that is possible 19:58:58 fizzie: /ignore me, would you? 19:59:06 FUNNY JOKE POSSIBILITY: 19:59:10 fizzie stays silent 19:59:13 funny, I don't plan to ignore tusho 19:59:14 ...because he's already ignoring me 19:59:14 fizzie: yes, that's what I was thinking of 19:59:30 mentally sure 19:59:33 but not with client 19:59:42 ironic that tusho can't read this 20:00:04 I'll paste it, I'm ignoring tusho but I don't think tusho's ignoring me 20:00:11 i am not 20:00:16 19:59AnMasterfunny, I don't plan to ignore tusho 19:59AnMastermentally sure 19:59AnMasterbut not with client 19:59AnMasterironic that tusho can't read this 20:00:26 ah yes now he can 20:00:26 AnMaster i see you 20:00:29 i see you with my eyes 20:00:29 since you pasted it 20:00:30 or rather 20:00:33 through ais523's eyes. 20:00:43 ^echo HELLO WORLD HEAR ME ROAR 20:00:44 HELLO WORLD HEAR ME ROAR HELLO WORLD HEAR ME ROAR 20:00:47 well I don't plan to paste back what tusho said 20:00:51 that would be too silly 20:00:52 ^bf ,[.,]!ah this is better 20:00:53 ah this is better 20:01:02 ^bf ,[.,]!so Deewiant... adhisaweh8q2y381786*(y88 PANCAKES 20:01:02 so Deewiant... adhisaweh8q2y381786*(y88 PANCAKES 20:01:03 AnMaster: yep 20:01:07 I might logread it later 20:01:47 ais523, does c-intercal compile with ICC? 20:02:02 AnMaster: never tried, it should compile with most things though 20:02:16 ais523, icc supports a lot of GCC extensions btw, it even defines __GNUC__ by default to get GNU specific stuff from system headers 20:02:16 it even used to compile with pre-C89 C 20:02:42 -!- Hiato has joined. 20:02:50 but cfunge manage without those (-no-gcc to ICC) 20:03:25 http://imgs.xkcd.com/comics/python.png 20:03:37 ais523, ah it will have to wait since I can't do out of tree build 20:03:44 don't feel like making a copy of the source 20:03:45 sorry 20:04:15 ah, ok 20:04:25 ais523, *HINT HINT* 20:05:22 ais523, as I don't have icc on my amd64 (for obvious reasons) I would nfs mount the source and compile it on the p3 using icc 20:05:23 AnMaster: to me building out of tree is just extra complexity to the user, besides it does build out of tree just the out of tree place it builds is a fixed place elsewhere in the tree 20:05:43 ais523, well that is not really out of tree 20:05:53 I normally have several different builds of cfunge 20:05:56 on same source 20:06:03 all of them out of tree thus 20:06:29 AnMaster: well you can create a new tree with just the base directory with configure and an empty lib, include, bin, and temp, symlink the src directory, and reconfigure 20:06:38 that's how you do an out of tree C-INTERCAL build 20:06:44 admittedly that isn't obvious though 20:06:46 ais523, well that seems complex 20:06:56 ais523, but I suggest supporting it the real way 20:06:56 :) 20:08:06 it would be pretty easy to support actually, you could just have the configure script create lib include bin and temp, and symlink src, then compile the normal way 20:08:16 or have an out-of-tree-configure which was a wrapper 20:08:21 ais523: ping 20:09:45 ais523, well I suggest doing it like everyone else does 20:10:05 ais523, well I suggest doing it like everyone else does <--- I think you are missing the point of INTERCAL 20:10:25 ais523, hah 20:10:26 ok 20:11:44 ais523, what is the command to check out darcs now again? 20:11:52 of intercal 20:11:55 -!- Corun has quit ("This computer has gone to sleep"). 20:12:04 * ais523 tries to remember 20:12:26 darcs pull http://code.eso-std.org/c-intercal/ 20:12:37 darcs failed: Unable to "darcs pull" here. 20:12:37 You need to be in a repository directory to run this command. 20:12:40 no 20:12:41 darcs get 20:12:45 ais523 can't see that 20:12:48 but i think AnMaster can 20:12:50 if you can, say yes 20:12:51 i'll logread 20:12:51 ah thanks tusho 20:12:53 tusho: yes I can, I unignored you about 2 minutes ago 20:13:01 but that's the first thing you did since 20:13:14 s/did/said/ 20:13:43 ais523, does darcs work over nfs? 20:13:58 AnMaster: no idea, I don't see why not though 20:14:56 -xK -march=pentium3 -O3 -ipo -no-prec-div 20:14:59 I *think* 20:15:20 ais523, please makde config.sh +x 20:15:23 it would be very useful 20:15:33 AnMaster: bug in darcs, it is at my end but darcs forgets file permissions 20:15:38 probably the most famous bug in darcs 20:15:42 not a bug 20:15:43 a feature 20:15:44 i think 20:16:02 tusho: no, it's a bug, just it's really difficult to fix for some reason or they would have fixed it already I suspect 20:16:05 checking for gcc... icc 20:16:06 eh? 20:16:13 checking whether we are using the GNU C compiler... yes 20:16:16 ok.. whatever 20:16:18 ais523: darcs development has slooooooooowed to a crawl 20:16:22 AnMaster: it check for __GNUC__ 20:16:25 and a buncha people are switching darcs -> git 20:16:30 i think it's on death row, it just doesn't know it yet 20:16:39 ais523, && !defined(__INTEL_COMPILER) 20:16:53 AnMaster: that test is to see if gcc extensions can be used 20:16:55 src/oil.y(466): remark #810: conversion from "int" to "char" may lose significant bits 20:16:55 buf[bi++]=c; 20:16:55 ^ 20:16:55 nice 20:17:00 there are other tests for things like command line arguments 20:17:11 src/dekludge.c(55): remark #1419: external declaration in primary source file 20:17:11 extern void prexpr(node *np, FILE* fp, int freenode); /* AIS */ 20:17:11 ^ 20:17:11 yes 20:17:32 ais523, there should be no extern in C files in icc's opinion 20:17:35 I agree most of the time 20:17:41 there is one case in cfunge 20:17:46 extern char **environ; 20:17:47 AnMaster: oh, and storing the result of getchar in a char is a reasonable thing to do IMO once you've verified separately that it isn't EOF 20:17:57 AnMaster: what about extern int errno? 20:17:58 ais523, agreed 20:18:01 ais523, wrong 20:18:03 use errno.h 20:18:04 always 20:18:10 ais523, since at least here it is not an int 20:18:13 AnMaster: yes, but that's included into your source 20:18:14 it is something more complex 20:18:17 that is rentrant 20:18:19 ais523, it is not 20:18:35 #include 20:18:38 always 20:18:43 AnMaster: yes, I know, that's how I do it too 20:18:53 what I'm saying is shouldn't it complain about the extern in errno.h? 20:19:01 ais523, that is a header 20:19:02 or does it give header files a free pass? 20:19:04 different 20:19:09 ais523, yes indeed it does 20:19:18 icc: command line remark #10148: option '-W' not supported 20:19:19 icc: command line warning #10120: overriding '-O2' with '-O3' 20:19:19 hm 20:19:25 ais523, if you want all warnings try -Wall 20:19:33 it has both -W and -Wall I think 20:19:38 ais523, ICC doesn't 20:19:45 ais523, so better check such stuff 20:19:50 -W is the old name for -Wextra in gcc, and C-INTERCAL is stuck in the past 20:20:00 ais523, consider being portable? 20:20:09 if you still work on DOS 20:20:14 why not work on ICC correctly 20:20:15 AnMaster: it's portable in theory but hasn't been tested on non-gcc compilers for years 20:20:20 so some gccisms may have snuck in 20:20:24 without anyone noticing 20:20:41 src/abcess.h(210): remark #193: zero used for undefined preprocessing identifier 20:20:41 #if (MULTITHREAD != 0) || (YUKDEBUG != 0) || defined(ICK_EC) 20:20:41 ^ 20:20:42 oh, some of the external calls stuff relies on gnu ld to work 20:20:44 so who agrees with me: random noise pixels look pretty 20:20:45 not sure what that is 20:20:46 ais523, ^ 20:20:56 I think it may not do what you want 20:21:02 try defined() 20:21:11 AnMaster: oh, I do, it's a little-known feature of the C preprocessor which is confusing 20:21:21 ais523, ? 20:21:23 that undefined preprocessing identifiers are treated as 0 in #if 20:21:32 yes 20:21:34 but still 20:21:35 why use that 20:21:44 src/abcess.h(112): remark #310: old-style parameter list (anachronism) 20:21:44 extern void ick_resize(); 20:21:52 well i was just logreading 20:21:53 AnMaster: 20:21:54 try adding a void in there? 20:21:56 boohoo, anachronism 20:21:59 intercal is meant to be different in every way 20:22:01 who cares, it's correct 20:22:02 for no reason at all. 20:22:04 get that in to your head. 20:22:08 -!- dogface has quit (Read error: 60 (Operation timed out)). 20:22:21 ok 20:22:25 tusho, will LOVE this 20:22:26 src/lexer.l(308): (col. 13) remark: REVERSED LOOP WAS VECTORIZED. 20:22:27 src/lexer.l(307): (col. 13) remark: REVERSED LOOP WAS VECTORIZED. 20:22:27 src/lexer.l(306): (col. 13) remark: REVERSED LOOP WAS VECTORIZED. 20:22:32 AnMaster: I probably would have if I caught it earlier, I had to add prototypes to bits of C-INTERCAL earlier, though 20:22:34 look it optimised c-intercal! 20:22:35 to use SSE 20:22:42 and vectorised loops 20:22:46 I know tusho loves such 20:22:50 I don't care... 20:22:58 AnMaster: gcc does that too at -O3, it just doesn't tell you about it unless you ask it to 20:23:06 ais523, try protoize 20:23:11 comes with gcc iirc 20:23:21 AnMaster: yes, I hadn't heard about it back then and the conversion was years ago 20:23:23 ais523, well default is to tell 20:23:30 ais523, how can you get gcc to tell you btw? 20:23:49 AnMaster: not sure by the way, it's probably in one of the debugging dumps 20:23:58 ah 20:24:01 gcc tends not to have options to shout at you whenever it does an optimisation 20:24:20 AnMaster: yesterday for fun I turned on all the debug dumps on a very simple program and it created about 100 of them 20:24:27 ais523, well there are optimising log verbosity(sp?) level for icc 20:24:41 to stdout though 20:24:49 temp/oilout03.c(3): remark #1418: external function definition with no prior declaration 20:24:49 int optimize_pass1_3(node *np) 20:25:06 it thinks there should either be a prototype in a header or it should be static 20:25:18 ais523, and GCC will say that too with the right switches 20:25:33 AnMaster: there is in most cases, that function results from splitting optimize_pass1 into smaller pieces so it doesn't crash gcc on ia64 though 20:25:38 that bug was reported by Debian 20:25:48 ais523, hm here is one that *could* be bad, or *could* be just a false positive: 20:25:49 temp/oilout01.c(106): remark #981: operands are evaluated in unspecified order 20:25:50 x=x3; c=c3; if(!(!(x&2863311530LU)&&iselect(x,1431655765LU)==xselx(iselect(x,1431655765LU)))) break; 20:25:56 ^ 20:26:04 no, that's not bad 20:26:13 iselect and xselx are both pure functions 20:26:23 so it doesn't matter which order they're evaluated in 20:26:39 ais523, well how do you do linking? 20:26:40 calling ld? 20:26:43 or calling compiler? 20:26:49 calling compiler 20:26:52 I think ICC will break if you call ld 20:26:53 ah good 20:26:54 using shell expansion 20:27:04 ais523, icc will do cross-object optimising 20:27:06 $CC oilout*.o 20:27:10 so it will put those together again 20:27:17 AnMaster: and crash on IA64? 20:27:18 at the final linking 20:27:23 ais523, maybe, don't know 20:27:33 AnMaster: maybe it has more memory than the Debian autobuilders 20:27:34 gcc is very memory hungry 20:27:36 remember that 20:27:48 btw I also managed to get it to crash even on x86 once, the split avoided that problem 20:28:01 ais523, gcc is very memory hungry 20:28:43 sh -c "(test -f /home/anmaster/local/ick/share/info/ick.igz && : --quiet --dir-file=`echo /dev/null` /home/anmaster/local/ick/share/info/ick.igz) || true" 20:28:44 err 20:28:46 After all replacements due to macro expansion and the defined unary operator have been performed, all remaining identifiers are replaced with the pp-number 0, and then each preprocessing token is converted into a token. 20:28:48 --dir-file=`echo /dev/null` 20:28:51 ais523, WHAT THE HECK? 20:29:01 --dir-file=/dev/null 20:29:04 is what you mean 20:29:07 not echo like that 20:29:09 well yes, surely 20:29:19 I think things must have been evaluated in the wrong order 20:29:23 still, it comes to the right thing 20:29:32 and besides it's running : which ignores all its arguments anyway 20:29:40 so no problem 20:29:49 ah, the joys of autoconf 20:30:21 ais523, will ick use $CC or gcc? 20:30:36 the actual compiler compiles with icc 20:30:38 AnMaster: it /ought/ to use $CC, that hasn't been tested for years though 20:30:41 that I can say 20:30:44 so quite possibly doesn't work 20:31:14 $ CC=echo ick -b beer.i 20:31:14 beer.c -I/usr/include/ick-0.28 -I. -I./../include -L/usr/lib -L. -L./../lib -O2 -o beer -lick 20:31:15 well that works 20:31:29 beer.c(3016): warning #177: label "L1910" was declared but never referenced 20:31:29 case -1910: ; L1910: 20:31:29 ^ 20:31:32 lots of stuff like that 20:31:36 harmless in generated code 20:31:50 works 20:31:54 right result that is 20:32:09 well there are lots of unused labels in the result 20:32:30 AnMaster: try it without the CC= 20:32:30 -wd177 would quited that 20:32:40 ais523, my /usr/bin/cc is gcc so... 20:32:42 why? 20:32:50 I think it tries to use the value of CC there was at compile time if there isn't a CC in the environment 20:32:57 /opt/intel/cc/10.1.018/bin/icc 20:33:14 anyway I'm glad it works with non-gcc compilers 20:33:22 ais523, at least beer does 20:33:26 at least ones which take much the same options 20:33:27 leaks 500 bytes though 20:33:36 ais523, no warnings without $CC set 20:33:37 AnMaster: what, the compile, or the compiled program? 20:33:39 so I assume it is gcc 20:33:44 ais523, the compiled program 20:33:47 ah, ok 20:34:01 ==8602== definitely lost: 500 bytes in 16 blocks. 20:34:05 using gcc now 20:34:07 AnMaster: that's bad, the compile is known to leak loads but I didn't think compiled programs leaked 20:34:11 ==8602== 36 bytes in 8 blocks are definitely lost in loss record 1 of 3 20:34:11 ==8602== at 0x4006D6E: malloc (vg_replace_malloc.c:207) 20:34:11 ==8602== by 0x8057679: ick_resize (in /home/anmaster/c-intercal/pit/beer) 20:34:11 ==8602== by 0x8056A1B: main (in /home/anmaster/c-intercal/pit/beer) 20:34:15 and 20:34:17 ==8602== 464 bytes in 8 blocks are definitely lost in loss record 3 of 3 20:34:18 ==8602== at 0x4006D6E: malloc (vg_replace_malloc.c:207) 20:34:18 ==8602== by 0x80576FC: ick_resize (in /home/anmaster/c-intercal/pit/beer) 20:34:18 ==8602== by 0x8056A1B: main (in /home/anmaster/c-intercal/pit/beer) 20:34:29 oh, I thnk I know what that might be 20:34:35 let me check something 20:35:20 ok, that's harmless 20:35:30 at the very end of the program it isn't freeing the contents of arrays 20:35:33 just the pointers to them 20:35:36 ais523: stop talking to yourself 20:35:40 there's like 50 lines of just you 20:35:46 easy enough to fix though, so I may as well 20:35:48 ICL778I UNEXPLAINED COMPILER BUG 20:35:48 ON THE WAY TO 0 20:35:48 CORRECT SOURCE AND RESUBNIT 20:35:52 ais523, should that happen? 20:35:56 $ ./beer +help 20:35:56 no it shouldn't 20:35:58 was what I did 20:36:05 oh, with +help it's fine 20:36:09 ais523, oh? 20:36:26 after +help runs there used to be a simulated segfault 20:36:33 err 20:36:35 wtf :P 20:36:46 I took the time delay out of it, but there's still an internal error 20:36:46 ais523, anyway CC from compile time isn't used 20:36:52 which is invoked deliberately 20:36:53 and ok 20:37:11 ais523, how would I test some of the ec features 20:37:14 that normally need GCC 20:37:16 it probably should be and there's support from it in the code, looks like I'm going to have to tweak the build process again 20:37:23 give me a command line for ick in pit 20:37:50 ick -beE beer.i syslibc 20:38:19 ais523, just two labels that weren't used this time 20:38:19 huh 20:38:31 ais523, also how to send some cflags on to ICC 20:38:37 as it is in a gcc compatiblity mode by default 20:38:39 -!- dogface has joined. 20:38:48 need to send -no-gcc to tell it to not try to support GCC extensions 20:38:54 AnMaster: you can put them in $CC I think 20:39:01 hi dogface 20:39:19 Ello. 20:39:42 I don't like how irssi's auto-reconnect doesn't work. 20:39:46 ais523, well then beer work 20:40:05 /tmp/syslibc.c(54): remark #174: expression has no effect 20:40:05 do { if(0) { ick_l2_65540 : ; if(ick_global_linelabel != (1010) || (1010) > 65535) goto ick_l2_65541 ; ick_global_checkmode = 0; } 0 ; ick_checksuckpoint(1010); } while(0); 20:40:06 ais523, ^ 20:40:09 AnMaster: ah great! 20:40:14 ^ 20:40:18 Seems that it tries to reconnect once, and if that fails, it forgets about the server's existence. 20:40:22 AnMaster: it's complaining about the 0; 20:40:22 ais523, um? 20:40:29 AnMaster: crosseed messages... 20:40:37 hmm... I wonder why there's a 0; there anyway 20:40:59 ais523, http://rafb.net/p/QXAv9U46.html 20:41:03 you may want to read that 20:41:19 ais523, could be some real useful warnings 20:42:05 the one on line 30 of the paste looks genuine, that's a gcc extension I triggered by accident (it allows stray semicolons as null declarations, C doesn't) 20:42:27 ais523, the one on 62 also looks valid 20:42:45 AnMaster: no, the one on 62's bogus 20:42:51 really? 20:42:54 the variable could have been used but wasn't 20:43:04 think of it like a library function that's never used 20:43:08 ais523, well it was never in the generated code 20:43:24 AnMaster: it could have been substituted in with a macro 20:43:31 but I never used that macro in syslibc 20:43:32 hm ok 20:43:34 thus the warning 20:44:05 ais523, also "expression has no effect" looks valid to me 20:45:34 AnMaster: nah, that's fine, it's just a 0; I wrote because I needed a nop there 20:45:43 probably it should be (void)0; which is the canonical C nop 20:45:51 $ ./cftoec.sh ~/cfunge/trunk 20:45:51 ./cftoec.sh: line 13: realpath: command not found 20:45:52 ais523, huh ^ 20:45:53 but that's to avoid code duplication in the header files 20:46:00 oh dear, I tend to rely on realpath a lot 20:46:09 ais523, this is archlinux 20:46:10 to prevent problems with directory changes 20:46:20 ais523, well arch linux doesn't have it by default it seems 20:46:28 AnMaster: I don't think it's default anywhere unfortunately, Ubuntu doesn't have it by default either 20:46:40 ais523, maybe stop using it :) 20:46:40 probably it shouldn't have been in C-INTERCAL then, I just get into the habit of using it.. 20:46:58 AnMaster: it should work if you change it to echo as long as you give an absolute path 20:47:11 why the heck does it need absolute path? 20:47:30 AnMaster: so the path doesn't get lost when you change directory 20:47:37 it doesn't need an absolute path normally, that's what the realpath is for 20:47:44 um, I would use a subshell 20:47:45 to make the path absolute if a relative path was given 20:48:05 it makes a lot more sense than erroring out just because you were given a relative path, like configure does 20:48:23 well do that then 20:48:43 I'll find some way around it 20:48:53 it's just that I'm so used to realpath I forgot that systems didn't have it by default 20:49:00 ais523, you didn't update for the FUNGEDATATYPE -> fungeCell change it seems? 20:49:06 even though I told you some time ago 20:49:09 or you forgot to push 20:49:16 AnMaster: not yet, no, I haven't been working on C-INTERCAL recently 20:49:30 mostly I've either been asleep or working on gcc-bf 20:49:35 it will be fixed before the next release 20:49:47 ais523, also why does it ignore $CC 20:49:55 the cftoec.sh script 20:50:08 ais523, cfunge compiles just fine with ICC 20:50:09 because I wrote it in about 5 minutes in a hurry 20:50:12 ah 20:50:51 anyway ICC give a lot more readable errors 20:50:56 and so will clang 20:51:11 clang? 20:51:19 you know about LLVM? 20:51:26 not really 20:51:37 clang is the new C/C++ frontend written from scratch being coded for LLVM 20:51:53 modular, better error tracking than gcc while using less memory 20:51:56 and so on 20:52:02 looks very promising 20:52:11 still not in usable state 20:52:20 it can handle some C but almost no C++ 20:52:22 yet 20:52:36 but certainly looks promising 20:52:46 interesting, I know a lot about gcc from working on it for a week or so, and its design seems to be mostly about the genericness of frontend and backend, and the ability to do crazy optimisations easily 20:53:00 it's not so good at error detection except when an optimisation discovers something's gone wrong, though 20:53:43 google for clang 20:54:21 seems interesting 20:54:25 competition in C compilers is good 20:54:31 I don't want GCC getting too big for their boots 20:56:14 /tmp/syslibc.c(192): remark #128: loop is not reachable from preceding code 20:56:15 do { if(0) { ick_l2_65556 : ; if(ick_global_linelabel != (1001) || (1001) > 65535) goto ick_l2_65557 ; ick_global_checkmode = 0; } 0 ; ick_checksuckpoint(1001); } while(0); 20:56:17 ais523, what about that one 20:56:46 AnMaster: do while 0 is an idiom 20:56:46 and still, why do you have those "expression has no effect" 20:56:52 and shouldn't be treated as a loop at all 20:57:12 ais523, why a do { } while at all? 20:57:17 you could just strip that 20:57:21 AnMaster: because that statement was created by filling out a template (reasonably obviously, given its appearance), and there was a blank which I didn't need to put a command in so I put a 0 in instead 20:57:29 AnMaster: macro expansion, it makes a block act like a statement 20:57:46 so you can do if(1) macro(args); else something_else(); 20:57:55 and it compiles correctly 20:58:11 do { } while(0) is a common trick because it's a single statement if you put ; at the end 20:58:21 whereas a block isn't, once you add the semicolon it's two statements 20:58:25 /tmp/syslibc.c(197): remark #111: statement is unreachable 20:58:25 if(ick_local_checkmode) ick_doresume((1),-1); ick_l1_65538 : ; ick_l6_65538 : ; ick_l2_65557 : return; } 20:58:25 ^ 20:58:26 that too? 20:58:47 yes, that's the very end of the function, and that function isn't allowed to return as it's only called from INTERCAL, not from C 20:58:59 functions can be called either via INTERCAL or via C mechanisms 20:59:09 if called via INTERCAL mechanisms they must return via INTERCAL mechanisms 20:59:16 whereas that's the code for returning via the C mechanism 20:59:27 which is never used in this case 21:00:53 http://rafb.net/p/uTeEIr64.html 21:00:57 ais523, any false positive there? 21:01:24 -!- Hiato has quit (Read error: 104 (Connection reset by peer)). 21:01:24 "external declaration in primary source file" and "external function definition with no prior declaration" are not false positives to me 21:01:27 just FYI 21:01:58 ais523, BAD: 21:01:59 rot13.c(579): warning #2132: statement expressions are a GNU extension 21:01:59 if(0) { ick_l1_65538 : ; if(ick_global_linelabel == (10U) && (10U) <= 65535) if(({int i=0; if (!ick_abstained[86]) { i=1;};i;})) { if(ick_global_goto) ick_lose("555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n ON THE WAY TO %d\n", ick_lineno, (char*)0); ick_global_goto = 65544 ; } goto ick_l1_65539 ; ick_l2_65557 : ; if(ick_global_linelabel != 65544 ) goto ick_l2_65558 21:01:59 ; ick_global_checkmode = 0; }; 21:01:59 ^ 21:02:04 GNUish 21:02:05 the one on 31's genuine and fixable, the one on 44 reminds me why I needed gcc 21:02:11 for external calls 21:02:20 that one's very genuine, and may take some thought to fix 21:02:32 it would be nice to find a different way and so get rid of the gcc dependency 21:02:51 ais523, hope you can skip using GCC specific ones :) 21:02:56 even though icc can handle those 21:02:56 maybe move all the statement expressions to generated functions, not sure if that would work due to the need to access local variables 21:03:10 ({ }) is kind-of hard to substitute into standard C 21:03:11 ais523, now to try to compile main ick with these flags 21:03:17 maybe I'll ask comp.lang.c if they have any ideas 21:03:29 nested functions would work except they're a GNU extension too 21:03:37 ais523, pass local variables along? 21:03:46 foo(&a, &b, &c) 21:03:53 AnMaster: hard to tell what the local variables are 21:04:03 because they could be in user-supplied C code 21:06:28 icc: command line remark #10148: option '-W' not supported 21:06:35 you should probably check in configure 21:07:01 yes, although last I checked configure didn't have an option to check "option to turn on all warnings" 21:07:10 kind of hard to see how it could manage that really 21:07:19 RADICAL 21:07:26 NO SIR 21:07:29 YOUR UNWASHED MASSES? 21:07:31 NOT APPRECIATED!! BAD 21:07:44 ais523, hm 21:07:56 ais523, I may have a m4 macro to check if an option is supported 21:08:08 by checking if there was any output 21:08:23 AnMaster: but sometimes supported options generate output, sometimes unsupported options do 21:08:27 actually it checked if it was GCC first, then checked using -Werror to see if it was supported 21:08:42 as a facetious example, how can you tell if --version works or not? 21:08:50 hah 21:09:01 src/ick_ec.c(222): warning #1011: missing return statement at end of non-void function "ick_getonespot" 21:09:01 } 21:09:01 ^ 21:09:02 ais523, ^ 21:09:06 and 21:09:07 src/ick_ec.c(252): warning #1011: missing return statement at end of non-void function "ick_gettwospot" 21:09:07 } 21:09:07 ^ 21:09:26 oh dear, that looks bad, let me look at the source 21:09:36 ais523, full compile log: http://rafb.net/p/6uCztn52.html 21:09:57 ais523: 21:09:59 stop talking to yourself 21:10:00 src/cesspool.c(919): warning #1011: missing return statement at end of non-void function "ick_ieg277" 21:10:01 } 21:10:01 ^ 21:10:02 that too 21:10:03 or, more nonsense from me 21:10:13 tusho, you could try unignoring me 21:10:14 AnMaster: that one's fine, the statement before errors out and doesn't return 21:10:16 that would help 21:10:28 maybe I should start messing about with __attribute__((__noreturn__)) 21:10:31 ais523, anyway see http://rafb.net/p/6uCztn52.html 21:10:38 ais523, well ICC doesn't support that one 21:10:42 I do for Splint as it accepts annotations in comments 21:10:57 which therefore don't interfere with anything else 21:11:03 and I only use it on functions that GCC suggests using noreturn for 21:11:25 it didn't have any false positives or negatives here 21:11:29 oh, I use noreturn on functions which actually don't return 21:11:48 src/clc-cset.c(262): warning #187: use of "=" where "==" may have been intended 21:11:48 csro->shifts==1 && (sso=1); 21:11:48 ^ 21:11:50 hum 21:11:54 don't get that at all 21:12:09 on the other hand it isn't very C-ish 21:12:10 AnMaster: it's just not used to Perl, that's all 21:12:18 clc-cset.c is full of Perl idioms as a homage to CLC-INTERCAL 21:12:24 they tend to require a lot more parens to work in C, though 21:12:24 src/lexer.l(307): (col. 13) remark: REVERSED LOOP WAS VECTORIZED. 21:12:25 now 21:12:28 that should say: 21:12:37 REVERSE POLARITY WAS VECTORIZED 21:12:40 would be much better 21:12:41 :D 21:12:46 * oerjan read that as VAPORIZED 21:13:58 AnMaster: that all looks fine, some cases where I should probably use ifdef rather than if, but apart from that no serious errors 21:14:11 ais523, or #if defined() 21:14:27 #if (MULTITHREAD != 0) || (YUKDEBUG != 0) || defined(ICK_EC) 21:14:29 that would be 21:14:33 AnMaster: why do that when #ifdef exists, except in complicated cases where you want to test more than one thing in the if? 21:14:43 ais523, agreed 21:15:01 #if defined(MULTITHREAD) || defined(YUKDEBUG) || defined(ICK_EC) 21:15:03 right? 21:15:08 or should there be ! in front? 21:15:08 AnMaster: no, because it might be defined to 0 21:15:21 I want to test that it's defined and with a non-zero value 21:15:26 ais523, but ICK_EC won't be that? 21:15:31 #define MULTITHREAD 0 exists in several cases 21:15:37 AnMaster: yes, that's right 21:15:50 ais523, maybe time to update the ot same scheme 21:15:55 would make it easier to read 21:16:19 sed 's/#define MULTITHREAD 0/#undef MULTITHREAD/' 21:16:22 or something like that 21:16:29 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client"). 21:16:46 .. 21:16:48 -!- ais523 has joined. 21:16:52 AnMaster: yes, that's right 21:16:52 ais523, maybe time to update the ot same scheme 21:16:52 would make it easier to read 21:16:52 sed 's/#define MULTITHREAD 0/#undef MULTITHREAD/' 21:16:52 or something like that 21:16:52 ugh, sorry 21:17:07 ais523, take your laptop with you next time! 21:17:08 ;P 21:17:10 AnMaster: the problem is that the MULTITHREAD and the 0 are occasionally kept in different source files 21:17:14 and my laptop's with me 21:17:18 I just forgot to bring its power supply 21:17:24 actually I might move onto my laptop now 21:17:30 ais523, oh wait icc can auto-parallellise programs 21:17:33 as the battery's charged and won't run out before I'm thrown out of here 21:17:36 to use pthreads in loops 21:17:53 AnMaster: well if it doesn't misoptimise correct code there's no problem 21:18:15 heh 21:18:24 I haven't done anything weird-control-like that isn't allowed by the C standard 21:18:35 I've just made a lot more interesting use of setjmp and friends than is normally considered sane 21:19:04 hahah 21:20:15 ais523, anyway there is no need for -W these days 21:20:26 use -Wextra if you have too, after checking it is GCC 21:20:27 AnMaster: it's a synonym for -Wextra, so there is 21:20:42 deprecated ones iirc 21:21:01 and as I said earlier, parts of C-INTERCAL were ported from pre-C89 C, so you can understand that it has trouble catching up 21:21:15 lex.yy.c(2254): (col. 2) remark: LOOP WAS VECTORIZED. 21:21:15 /tmp/ipo_icc1tzGiK.o: In function `main': 21:21:15 /tmp/ipo_icc1tzGiK.c:(.text+0x30): undefined reference to `__kmpc_begin' 21:21:15 /tmp/ipo_icc1tzGiK.c:(.text+0x3a): undefined reference to `__kmpc_global_thread_num' 21:21:15 /tmp/ipo_icc1tzGiK.c:(.text+0x24ab): undefined reference to `__kmpc_end' 21:21:16 make: *** [bin/ick] Fel 1 21:21:18 ok nice one 21:21:37 had no problems with cfunge with that option 21:21:43 AnMaster: mibbit changed parts of those error messages to sad faces 21:21:54 ais523, well that sucks for you 21:21:55 where it said :( 21:21:56 *shrug* 21:22:03 what option was that? 21:22:19 -parallel 21:22:21 to ICC 21:22:25 anyway I missed -static 21:22:31 it should work with them combined 21:22:39 I'm going to leave this computer and go onto my laptop now 21:22:42 see you again soon 21:22:45 -!- ais523 has quit ("mibbit.com: back soon"). 21:22:47 ais523, well 21:22:49 not really 21:22:52 going to sleep soon 21:24:44 -!- oklofok has joined. 21:24:46 i should probably unignore AnMaster 21:24:49 or i'll forget tomorrow 21:24:51 ais: for log reading -parallel will make it multithreaded in ICC 21:24:53 wait, that's a good thing. possibly 21:25:13 -!- oklopol has quit (Read error: 113 (No route to host)). 21:26:03 -!- LinuS has joined. 21:26:18 -!- calamari has joined. 21:27:37 -!- Tritonio_ has quit ("Leaving."). 21:28:25 -!- ais523 has joined. 21:28:44 ais523, going to bed soon 21:28:47 anyway it works for oil 21:28:51 but not ick 21:28:53 icc -O2 -W -Wall -parallel -Wall -Wcheck -wd810 -wd981 -no-gcc -xK -march=pentium3 -O3 -ipo -static -no-prec-div -diag-enable port-win -DICKINCLUDEDIR=\"/home/anmaster/local/ick/include/ick-0.29\" -DICKDATADIR=\"/home/anmaster/local/ick/share/ick-0.29\" -DICKBINDIR=\"/home/anmaster/local/ick/bin\" -DICKLIBDIR=\"/home/anmaster/local/ick/lib\" -DYYDEBUG -DICK_HAVE_STDINT_H=1 -I./src -I./temp -o temp/oil 21:28:53 temp/oil.c 21:28:55 that works fine 21:29:00 icc temp/perpet.o temp/parser.o temp/lexer.o temp/feh2.o temp/dekludge.o temp/oilout*.o temp/ick_lose.o temp/fiddle.o temp/uncommon.o -o bin/ick 21:29:02 that doesn't 21:29:07 /tmp/ipo_iccY7jGt7.o: In function `main': 21:29:08 /tmp/ipo_iccY7jGt7.c:(.text+0x30): undefined reference to `__kmpc_begin' 21:29:08 /tmp/ipo_iccY7jGt7.c:(.text+0x3a): undefined reference to `__kmpc_global_thread_num' 21:29:08 /tmp/ipo_iccY7jGt7.c:(.text+0x24a9): undefined reference to `__kmpc_end' 21:29:10 is the result 21:29:11 what does? 21:29:13 -static -parallel? 21:29:19 AnMaster: you probably need -static on the link too 21:29:20 ais523, I see it 21:29:22 not just the compiler 21:29:29 you forgot to pass it in $CFLAGS 21:29:37 you forgot to pass CFLAGS there 21:29:42 unlike the other time you link 21:29:48 that's because you pass $LDFLAGS when linking 21:30:02 ais523, well all cases I seen it uses CFLAGS too when linking 21:30:47 ais523, and you *do* pass that when compiling old 21:30:49 oil* 21:30:59 $CFLAGS is for the compile normally 21:31:02 so passing it in LDFLAGS as well would be double 21:31:04 for oil 21:31:07 maybe I should do it so $CC is used for compile and $LD for link, and they're both the detected C compiler by default 21:31:10 do I compile and link oil in one step? 21:31:11 musn't happen 21:31:15 ais523, you do 21:31:21 see what I said above 21:31:21 that would explain it 21:32:38 ok, looks like I have to work even more on the build system 21:32:41 ais: for log reading -parallel will make it multithreaded in ICC 21:32:44 you missed that 21:32:51 no, I got that 21:33:09 anyway I'm not sure -parallel will help all that much 21:33:15 I think it basically does mapreduce() 21:33:22 err s/()// 21:33:25 probably feh2.c could be redesigned so it would but atm it won't 21:33:52 besides ick runs very fast compared to gcc, so normally it doesn't matter about optimising ick itself 21:34:11 ais523, but would it break it's programs to be compiled with -parallel? 21:34:37 AnMaster: I don't see how it could, I'm not doing anything disallowed by the C standard so unless it's listed as unsafe in the compiler docs it should be fine 21:34:52 ais523, you said pthreads would break stuff? 21:35:20 src/perpet.c(664): remark #1599: declaration hides variable "c" (declared at line 285) 21:35:21 int c=getchar(); 21:35:21 ^ 21:35:22 AnMaster: only if calls and returns don't match up 21:35:22 ais523, ^ 21:35:38 AnMaster: that's why it's in a separate block, scoping exists for a reason 21:35:49 so you want to shadow it? 21:35:49 ok 21:36:05 just gcc will warn with -Wshadow for that too 21:36:20 src/clc-cset.c(303): remark #593: variable "ssrecord" was set but never used 21:36:20 int sstesting, ssbestsf, ssrecord, j, k; 21:36:20 ^ 21:36:40 AnMaster: when I need a temporary variable I create a small block so that shadowing will prevent an identifier clash 21:36:54 AnMaster: I can't even remember what ssrecord does offhand 21:36:57 http://rafb.net/p/cIjSdJ39.html is the last log from main ick compile using icc 21:36:59 let me look that up 21:37:05 ais523, going to sleep 21:37:06 night 21:37:10 ok, night 21:45:33 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | function g() is a big hint. 21:48:04 hi ais523 21:48:10 will you talk to something other than silence now 21:48:12 hi tusho 21:48:21 tusho: it depends on whether you say something interesting 21:48:30 i can handle that 21:48:32 something interesting 21:48:34 verifying that C-INTERCAL ports to compilers other than gcc is interesting 21:48:38 for instance 21:48:44 and that's what I was doing, if you were wondering 21:49:12 ais523: does it compile on my brain 21:49:22 tusho: I don't know, it doesn't really compile in mine 21:49:23 * tusho tracks order 21:49:31 it's a bit too large to grasp all at once 21:49:33 It sits at "DISPATCHED"! 21:49:44 ais523: my brain is pretty damn awesome 21:49:46 i think i could handle it 21:49:47 maybe 21:49:53 well, you know where the code is 21:49:55 if I augmented it with a large pen and paper extension 21:49:59 and "caring" 21:56:13 -!- psygnisfive has joined. 21:56:29 hey bitches 21:59:25 i don't think there are any bitches here. there is one dogface though. 22:01:23 dont make me rape your ass, bitch 22:11:15 -!- oerjan has quit ("And a nice evening to you too"). 22:19:23 -!- kar8nga has left (?). 22:36:11 -!- jix has quit ("CommandQ"). 22:40:11 old news, but new to me... programmable wristwatch with a battery that lasts 2 years.. http://en.wikipedia.org/wiki/Timex_Datalink 22:40:23 hi calamari 22:40:27 hi ais 22:40:39 I don't think I've seen you here recently... 22:40:50 probably not 23:07:43 -!- ais523 has quit ("going home, and basically out of battery"). 23:23:01 -!- KingOfKarlsruhe has quit (Remote closed the connection). 23:27:50 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client"). 23:39:32 -!- LinuS has quit ("Puzzi. S, parlo proprio con te. Puzzi.").