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