< 1205280357 0 :BMeph!n=chatzill@adsl-76-212-192-175.dsl.sndg02.sbcglobal.net JOIN :#esoteric < 1205280450 0 :RodgerTheGreat!n=Rodger@71.238.189.137 JOIN :#esoteric < 1205280461 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hey guys, quick question- < 1205280467 0 :Corun!n=Corun@halls-129-31-72-183.hor.ic.ac.uk JOIN :#esoteric < 1205280479 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I feel like I'm taking crazy pills, because I just *KNOW* there must be an easy way to do this: < 1205280507 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I want to take a 2d component vector and generate a unit vector representing the same angle. my approach is as follows: < 1205280520 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :double vx = blah; < 1205280528 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :double vy = blah; < 1205280541 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :double max = very close to zero, like .00001; < 1205280569 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :just divide by length < 1205280571 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :but do go on < 1205280580 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if (abs(vx) > abs(vy)) {max = vx;} else if (vy != 0) {max = vy;} < 1205280597 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :double uvx = vx/max < 1205280603 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :double uvy = vy/max < 1205280606 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :like that < 1205280620 0 :timotiis!unknown@unknown.invalid QUIT :"leaving" < 1205280625 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't get how that does it < 1205280640 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :perhaps i'm misunderstanding you < 1205280654 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :the length of that will most definately not be one < 1205280667 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :because one of those will be 1, and the other nonzero < 1205280671 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I understand that < 1205280684 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :but that works? < 1205280686 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :so "unit vector" was probably unclear < 1205280692 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1205280693 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that does essentially what I want < 1205280727 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i see :P < 1205280727 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you're using the max (L^infinity) norm... < 1205280734 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1205280751 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205280751 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :right < 1205280753 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :heh :D < 1205280760 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :but since calculating the length of one of these vectors would involve an application of the pythagorean theorem, it doesn't seem like that approach is necessarily any faster or simpler < 1205280825 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I suppose a better way to phrase this question is "is the way I'm currently doing this astoundingly stupid?" < 1205280841 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :well, as oerjan said, it's not the cartesian unit vector < 1205280842 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um what kind of length do you want to be 1 in the final vector? < 1205280849 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :so it's not stupid, it's wrong < 1205280853 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1205280867 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :or is cartesian the superset for n-norm? < 1205280872 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't really know anything. < 1205280897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also even if you did want L^inf, (cartesian = L^2) you would want to divide on abs(max), not max < 1205280925 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm. < 1205280929 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah, right < 1205280974 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :does this mean infinity is even? :D < 1205280986 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah yes, it appears I'm already doing it that way in my code. I simply forgot some abs()es in my example above < 1205281001 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(don't you need abs for odd exponent norms only) < 1205281018 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(i'm not sure about anything, and i have my math matriculation exams tomorrow :DDDDDDDDDDD) < 1205281034 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(i guess i should sleep, it's 1:16 or soemthing) < 1205281074 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: especially for 2d, you need the unit vector anyway for most things < 1205281083 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :so why not calc it < 1205281094 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I just know a modicum of trig, physics and calculus that I really absorbed during school and stumble my way through the math with a pencil and graph paper when I need to do things for games and the like < 1205281117 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :wouldn't my result be off by a constant multiple this way? < 1205281128 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :well, not really < 1205281138 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :because you could just divide by that constant otherwise < 1205281152 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :and have a non-pythagorean unit vectorizer < 1205281155 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er, your _original_ vector is off by a constant multiple < 1205281171 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er, scalar multiple < 1205281183 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1205281201 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i thought constant meant... constant < 1205281210 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and to get a unit vector you have to find that multiple (the length) and divide by it < 1205281243 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :good start, oerjan, now to confuse him with awesome math :-) < 1205281266 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :...not gonna? :< < 1205281269 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :my approach represents the correct angle, but is clearly longer than the unit vector < 1205281289 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: as was the original, ofc < 1205281305 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I follow you < 1205281312 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you only need a _canonical_ vector in the same direction, any length will be fine < 1205281338 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :so what's computationally cheaper- the pythagorean theorem, or my if-then-else? < 1205281349 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: yeah, that's why it's working for my purposes < 1205281355 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in fact it might be simpler to use L^1: abs vx + abs vy < 1205281358 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: yours, but i don't really see its point < 1205281380 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: in that case, i suggest Identity < 1205281394 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ah- that's an excellent idea < 1205281410 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: what do you need this for? < 1205281430 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: I do calculations of this form in several places for a game I'm working on < 1205281440 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :for what purpose? < 1205281453 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if you have a java compiler installed, I can show you the source < 1205281465 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: just for fun. I'm on vacation, so I'm entertaining myself < 1205281466 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :preferably tell me quickly, for i should go :P < 1205281469 0 :GregorR!n=gregor@71.237.179.105 JOIN :#esoteric < 1205281506 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: i'd say just calculate the square root, you can get a nice approximation with a constant number of steps < 1205281507 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's kinda a cancer simulation, although it's not biologically accurate at all < 1205281533 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :there are tricks for getting accuracy up to a one hundreth with just a few divisions < 1205281536 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ACTION searches < 1205281589 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm, actually i don't have any recollection where i saw that < 1205281631 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :essentially, it simulates a large pile of cells that can move around, bounce off one another and do the usual physics-engine stuff, and you control a swarm of infected cells that can capture healthy cells, all while being harassed by immune-system cells. < 1205281671 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :well, l^1 looks very *square*, in at least two meanings of that word < 1205281698 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :what do you use the unit vector for? < 1205281707 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah it's the taxicab metric < 1205281744 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :in one case, I'm positioning the nucleus of a moving cell based on its current velocity < 1205281754 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205281761 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you don't want l^1 then < 1205281773 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :(although that's actually a poor example, because there I divide by the defined terminal velocity of the cell) < 1205281786 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :because the thingie will move on a square around the cell < 1205281791 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*the nucleus < 1205281797 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I just run into this type of calculation from time to time < 1205281810 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the velocity is a vector - you don't need to turn it into a unit vector to add it to position < 1205281830 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i guess the cell can move at any speed? < 1205281840 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: just store the damn unit vector < 1205281845 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I store and manipulate vectors in unit format, not polar < 1205281849 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you'll need it for everything anyway < 1205281869 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i am talking cartesian format < 1205281872 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :polar isn't that useful for games < 1205281883 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :we're all talking cartesian < 1205281886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :new_pos = old_pos + time_diff * velocity < 1205281887 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: really depends on the game < 1205281907 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: yes, that's how I do it < 1205281908 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: if there's drawing / moving, cartesian is the way to go. < 1205281928 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I have a fairly good understanding of this stuff in an applied sense < 1205281985 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oh, god, i really need to go < 1205281994 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :but have fun with your cells! -> < 1205282007 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I < 1205282022 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'm going to have to get going myself, but thanks for the suggestions, guys < 1205282058 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1205283461 0 :Quendus!n=Quendion@145.175.adsl.brightview.com JOIN :#esoteric < 1205283465 0 :Quendus!unknown@unknown.invalid PRIVMSG #esoteric :\o/ < 1205283813 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1205285633 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1205285862 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1205285965 0 :CakeProphet!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1205290242 0 :calamari!n=calamari@ip24-255-58-177.tc.ph.cox.net JOIN :#esoteric < 1205290251 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1205294381 0 :CakeProphet!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1205295365 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: how's your os project going? < 1205295678 0 :immibis!n=immibis@125.238.252.202 JOIN :#esoteric < 1205295986 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :calamari: Going decently. < 1205295990 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Although not much has happened yet this week. . . < 1205295990 0 :ohgrfilth!n=bargavar@h41.172.88.75.ip.alltel.net JOIN :#esoteric < 1205296026 0 :ohgrfilth!unknown@unknown.invalid PART #esoteric :? < 1205296341 0 :immibis!unknown@unknown.invalid PART #esoteric :? < 1205296341 0 :immibis!n=immibis@125.238.252.202 JOIN :#esoteric < 1205296342 0 :immibis!unknown@unknown.invalid PART #esoteric :? < 1205302619 0 :adu!n=andrew@pool-71-178-14-80.washdc.fios.verizon.net JOIN :#esoteric < 1205304116 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1205308799 0 :clog!unknown@unknown.invalid QUIT :ended < 1205308800 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1205308968 0 :BMeph!unknown@unknown.invalid QUIT :"calls it a night" < 1205311399 0 :adu!unknown@unknown.invalid QUIT :Remote closed the connection < 1205314047 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1205314376 0 :slereah_!n=slereah@82.126.79.134 JOIN :#esoteric < 1205314376 0 :slereah__!unknown@unknown.invalid QUIT :Connection reset by peer < 1205314575 0 :olsner!unknown@unknown.invalid QUIT :"Leaving" < 1205314860 0 :slereah_!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1205314875 0 :slereah_!n=slereah@ANantes-252-1-53-134.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1205320928 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, changed to a hash library, no idea if it is the best one, but licence is nice and it's simple to use, still faster than ccbi at mycology though < 1205325922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also the ccbi from you, is broken it seems, it does not pass mycoterm < 1205325929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"\E[H\E[2JC was called, the screen should have cleared." < 1205325936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and no clearing < 1205325951 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :NCRS work however < 1205325955 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, the curses stuff is messed up < 1205325959 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how it should be done < 1205325970 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or rather, it doesn't use curses < 1205325975 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but the ECMA-48 CSI sequences < 1205325992 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :they worked on cygwin, I think < 1205326096 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well.... < 1205326104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you should use terminfo < 1205326107 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: btw, there's a GDC-compiled version of CCBI up at iki.fi/deewiant/ccbi < 1205326115 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how that stuff works < 1205326123 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :man 5 terminfo < 1205326139 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I just copied RC/Funge's implementation < 1205326145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and, just use curses to do it < 1205326146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1205326151 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :curses will use terminfo databse < 1205326153 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :database* < 1205326155 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that's probably the best option < 1205326169 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, not sure about that, but it is the *easiest* < 1205326187 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is some libtermcap if you want to do it yourself iirc, or maybe it was libterminfo < 1205326200 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway termcap is older name for same thing iirc < 1205326213 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :there probably aren't D bindings for that and I can't be bothered to do that since I've got working curses < 1205326230 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you need special bindings? < 1205326241 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nothing 'special', no < 1205326243 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can't just use a C header file like you can in C++? < 1205326245 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just define extern(C) function < 1205326248 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1205326254 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D doesn't use .h files < 1205326258 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :terminfo is an improved system on termcap iirc < 1205326264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, something like that < 1205326271 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: anyhoo, what are the timings like for that GDC-compiled one < 1205326275 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I never messed with terminfo/termcap other than from bash anyway < 1205326278 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just to see if PaX makes that big a difference < 1205326284 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and in bash I just use the tput command < 1205326287 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't think they are particularly backwards compatible < 1205326301 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, iirc slightly less as I told you? < 1205326308 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wasn't a big difference < 1205326311 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you haven't run that one < 1205326317 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err link then? < 1205326322 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I said it above < 1205326331 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205326333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1205326372 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hmm, I can't use curses, right < 1205326373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :real 0m1.623s < 1205326373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :user 0m0.477s < 1205326373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sys 0m0.053s < 1205326379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you can't? < 1205326384 0 :atsampson!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1205326394 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, so about 0.1 second difference < 1205326397 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: curses needs to init itself < 1205326404 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that was with GCC 4.1.2, -O3 < 1205326405 0 :atsampson!n=ats@7hw.poik.net JOIN :#esoteric < 1205326411 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but PaX markings are good anyway, because it allows things to be more secure :) < 1205326416 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when running under a hardened kernel < 1205326436 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so since curses needs to init itself, I'd have to init it for the whole program and then use curses for all output < 1205326446 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :less risk for stuff like buffer overflows and such < 1205326455 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ah ok < 1205326459 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because TERM doesn't have any "initialize" instruction, but NCRS does < 1205326540 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1205326549 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tput uses curses it seems < 1205326575 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but it doesn't clear the screen at the start or such < 1205326581 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like NCRS do < 1205326620 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :initscr() does that < 1205326633 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok, I guess tput doesn't do that part of ncurces < 1205326652 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hrm, you can't really do anything if you haven't done initscr < 1205326667 0 :oerjan!unknown@unknown.invalid QUIT :"dnorf" < 1205326675 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well it just gets terminfo stuff and outputs capability < 1205326683 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"The initscr() function also causes the first refresh operation to clear the screen." < 1205326693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well, no idea then < 1205326702 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tput doesn't clear the screen < 1205326704 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :man tput < 1205326747 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hmm, term.h < 1205326789 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :/usr/include/ncursesw/term.h ? < 1205326804 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1205326838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ diff /usr/include/term.h /usr/include/ncursesw/term.h < 1205326838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :47c47 < 1205326838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :< #include < 1205326838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :--- < 1205326838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :> #include < 1205326838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1205326888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, btw can a fingerprint be loaded several times? < 1205326892 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1205326900 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :say 1) load fingerprint 2) load some other 3) load it again < 1205326907 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and for ccbi, would that call intscr() again < 1205326908 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or even just 1) load fingerprint 2) load it again < 1205326920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for NCRS < 1205326927 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, it probably would < 1205326937 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it probably shouldn't < 1205326991 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so what should one do after endwin()? < 1205327000 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and hmm, actually it won't < 1205327012 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: since initscr() is only called when the instruction I is called < 1205327018 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nothing happens when loading NCRS < 1205327107 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notes having one malloc / cell is stupid, but, oh well < 1205327156 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's still about twice as fast as ccbi even for apps without fingerprints. < 1205327157 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1205327187 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :weird, now pasting started working in irc client again < 1205327190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shrugs < 1205327204 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, btw, does D use a garbage collector? < 1205327218 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, built-in < 1205327250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not boehm then when using gdc? < 1205327257 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no < 1205327264 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: what age are ya? < 1205327269 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: 20 < 1205327274 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :considering boehm is used for the gcj thing iirg < 1205327276 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :iirc* < 1205327301 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: math matriculation exams were just now, so i was just checking whether you happened to do that too < 1205327337 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1205327395 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :prolly not, programmers tend not to fail enough to be at high school at the age of 20 < 1205327402 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1205327414 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ACTION hopes he's not insulting too many here < 1205327511 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :is this thue-day, unlambda-day or brainfuck-day? < 1205327526 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mycotemp.tmp: ASCII text < 1205327526 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mycotmp0.tmp: DBase 3 data file (590422062 records) < 1205327533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, wtf did it write to mycotmp0.tmp < 1205327547 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh? looks like part of a funge program < 1205327548 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: just some binary < 1205327551 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1205327554 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :can't remember < 1205327568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also should mycotemp.tmp have a ending newline? < 1205327586 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know, probably not if it doesn't have one and Mycology is happy :-P < 1205327588 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mycotmp0.tmp got an ending newline, mycotemp.tmp does not < 1205327590 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :they're just tmp files < 1205327599 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, that it doesn't remove afterwards heh < 1205327607 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, because it can't be done portably < 1205327795 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :whoo down with 0.2 seconds thanks to some tricks :) < 1205327817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(not really fair to compare, as it's a trick you can do on any binary) < 1205327823 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :called prelinking < 1205327836 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait this is a debug build < 1205327895 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok down with another 0.2 now, almost as fast as with static array for fungespace < 1205327901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :real 0m0.348s < 1205327901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :user 0m0.108s < 1205327901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sys 0m0.020s < 1205327904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cfunge :) < 1205327917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to fix y instruction now < 1205327964 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: how do you do output, btw < 1205327968 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I mean just basic , < 1205327982 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :, = putchar((char)a); < 1205327988 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :. = printf("%ld ", a); < 1205328003 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I flush after each put char < 1205328007 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I probably shouldn't do that < 1205328018 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would make it faster to just flush at input or newline < 1205328022 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1205328035 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, what do you think? < 1205328035 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I need to have an if branch at each ',' because of the TRDS fingerprint < 1205328045 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that fingerprint really BURNS MY ASS < 1205328054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh? why? I don't understand what TRDS is really < 1205328057 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :stupid fool had to write the spec for it and didn't implement it even half properly < 1205328059 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :travel in time it says < 1205328061 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :aye < 1205328068 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but what does it mean < 1205328070 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so you can go back in time, say, 200 ticks < 1205328076 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then modify funge-space there so stuff happens differently < 1205328091 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205328117 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sounds like that think ais[0-9]+ (can't remember actual nick) talked about < 1205328120 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for intercal < 1205328123 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :MAYBE statement < 1205328127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that was such a mess in C < 1205328134 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using setjmp and what not < 1205328159 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, so I'm not going to implement TRDS then < 1205328162 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1205328173 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I suggest you don't < 1205328180 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's /hard/ < 1205328185 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :to get it to work properly < 1205328190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I will do null, but anyway first I'll get y correct < 1205328198 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I have 50-line comments in CCBI explaining some TRDS-related stuff < 1205328201 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and proper command line parsing < 1205328203 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and I'm still not sure I've got it right < 1205328206 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using getopt of course < 1205328215 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh, null is just the default < 1205328225 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, indeed, but I got a question < 1205328226 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :say: < 1205328256 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you load "PRINT", then load NULL, then unload NULL < 1205328267 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :should instructions now map to PRINT again < 1205328268 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1205328279 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328295 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so you need to keep some special instruction stack for each char to get loading right < 1205328301 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328319 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also, is it possible to do load PRNT, then QUUX then unload PRNT < 1205328324 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is unload out of order < 1205328335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what should happen in such cases < 1205328423 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just what you expect < 1205328434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I got no idea what would happen then < 1205328435 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if PRNT defines ABC and QUUX defines ABCDE < 1205328440 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328442 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then after that DE are bound to QUUX and ABC to PRNT < 1205328459 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and then if you unload QUUX < 1205328467 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :DE are bound to PRNT < 1205328469 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1205328471 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1205328475 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1205328480 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :go over it, draw a diagram or two if it helps < 1205328506 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1) load PRNT 2) load QUUX 3) *UN*load PRNT < 1205328518 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you must have misunderstood what I meant? < 1205328523 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no, I believe I was quite correct < 1205328526 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1205328528 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1205328533 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :PRNT defines A, B, and C < 1205328535 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328540 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :QUUX defines A, B, C, D, and E < 1205328545 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you load PRNT < 1205328552 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :A, B, C are bound to PRNT's funcs < 1205328558 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you load QUUX < 1205328559 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so far I'm with you < 1205328564 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ABCDE are bound to QUUX's funcs < 1205328568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328570 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that I got < 1205328571 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :unload PRNT < 1205328576 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so, unload ABC < 1205328583 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so DE remain bound to QUUX's funcs < 1205328591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so wait, it unloads ABC even though those are bound to something else? < 1205328601 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ABC become bound to PRNT's functions because that was what they were bound to before < 1205328607 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328607 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :i.e. < 1205328610 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :A has a stack < 1205328615 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aye < 1205328617 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :[PRNT, QUUX] < 1205328624 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :with the top on the right < 1205328629 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so you unload PRNT < 1205328630 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205328633 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you pop one off the stack < 1205328637 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you're left with [PRNT] < 1205328650 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :DE still have a stack of the form [PRNT, QUUX] < 1205328667 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because when unloading PRNT, you only popped from ABC. < 1205328673 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then the stack should end up as [, QUUX] possibly? and then getting compacted to be just [QUUX]? < 1205328703 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :following the stack of A: < 1205328704 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :[] < 1205328708 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :load PRNT: [PRNT] < 1205328712 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :load QUUX: [PRNT, QUUX] < 1205328716 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :unload PRNT: [PRNT] < 1205328727 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :unload anything that defines A: [] < 1205328730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : unload PRNT: [PRNT] <-- that is where I'm not sure you are right < 1205328739 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I am right < 1205328748 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :when you unload PRNT, what happens is essentially: < 1205328754 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"aha, PRNT defines A, B, and C" < 1205328766 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"let's go pop 1 off the instruction stack from A, B, and C" < 1205328777 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't matter whether the instruction on top of the stack is the one defined by PRNT < 1205328796 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, is that what the standard says? < 1205328797 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :we could add a third fingerprint, FOOB < 1205328800 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :which defines A < 1205328808 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so back at load QUUX: [PRNT, QUUX] < 1205328812 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :unload FOOB: [PRNT] < 1205328819 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, sorry bbl, phone < 1205328826 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and yes, that's what the spec says. < 1205329514 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, but you can't unload a non-loaded fingerprint right? < 1205329534 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure you can < 1205329543 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it should reflect then shouldn't it? < 1205329558 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1205330408 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :meh, now I'm using term.h functions and it's still not working < 1205330674 0 :Corun!n=Corun@halls-129-31-72-183.hor.ic.ac.uk JOIN :#esoteric < 1205331124 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :man, this sux. I'm going to just comment out the TERM fingerprint on Posix. < 1205331421 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, nah :/ < 1205331437 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: figure out how to make it work, I can't and won't bother. < 1205331439 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if I do TERM I will do it the right way < 1205331450 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I got other issues to fix first < 1205331452 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :what's the 'right way'? < 1205331458 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd love to know :-P < 1205331460 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, using terminfo < 1205331466 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that's what I tried < 1205331471 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I will research how tput does it < 1205331478 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1205331561 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's a part of ncurces < 1205331569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err spelling < 1205331643 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, if you want I'll wgetpaste tput's source < 1205331653 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nah, can't be bothered now < 1205331655 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/v2UBD448.html < 1205331656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there < 1205332745 0 :whice!n=whice@89.163.67.104 JOIN :#esoteric < 1205332764 0 :whice!unknown@unknown.invalid PRIVMSG #esoteric :hi all < 1205334240 0 :RedDak!n=dak@87.20.80.66 JOIN :#esoteric < 1205337664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes now cfunge is definitly faster than ccbi even when I compile to 32-bit code < 1205337766 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I realized that one thing is slowing me down by about 33% for all accesses to funge-space, and that is mini-funge < 1205337783 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because then each IP needs to keep a pointer to know what its funge-space is < 1205337794 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :instead of all using the same global < 1205337974 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and that can't really be helped without removing mini-funge entirely :-/ < 1205339163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: < 1205339165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :BAD: 0y pushes wrong stack size < 1205339169 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what exactly does that mean < 1205339224 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it called 0y and expected to find the correct stack size in the heap of stuff that y pushes < 1205339237 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I suspect that you push nothing for 0y < 1205339241 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :which would be incorrect < 1205339254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION checks, I do push things for 0y < 1205339264 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then you might be pushing the new stack size instead of the old one < 1205339293 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah very likely, I push the stack size at the point of pushing stack size < 1205339343 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : because then each IP needs to keep a pointer to know what its funge-space is < 1205339343 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : instead of all using the same global < 1205339344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1205339358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does pass fspace around a lot, but that could be fixed < 1205339366 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes I'll make it a global < 1205339369 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nice idea < 1205339370 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I tested, having them all refer to the global fungespace instead of dereferencing a pointer speeds some stuff by about 30% < 1205339446 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway another thing that will slow down 32-bit code: normal calling convention passes arguments on the stack < 1205339459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :AMD64 ABI pushes quite a few in the registers < 1205339478 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :aye < 1205339514 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and of course the function pointer thing for instructions doesn't allow them to be inlined < 1205339524 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's the biggest performance penalty < 1205339533 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :practically everything goes through a pointer < 1205339533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and y breaks all my abstractions for stackstack < 1205339559 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I need to code some way to access non-top stacks from the y code :( < 1205339561 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sighs < 1205339569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :messes up my clean interface < 1205339594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :another thing, < 1205339595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1 vector containing the least point which contains a non-space cell, relative to the origin (env) < 1205339602 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is that relative to storage offset? < 1205339609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or relative to (0,0)? < 1205339618 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure... < 1205339627 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, what does ccbi do for it? < 1205339629 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but the storage offset at that point should be (0,0) anyway < 1205339631 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and does mycology test that < 1205339635 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes of course < 1205339636 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :can't be bothered to check, and no, probably not < 1205339646 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but it is undefined in the standard? < 1205339650 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :probably not < 1205339654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders < 1205339664 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just check the spec yourself :-P < 1205339688 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I looked at them < 1205339690 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the time is 00 : 08 : 1128682830 < 1205339699 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :'woops' < 1205339704 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I wonder, why does passing a dummy value of 0 cause that < 1205339709 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I know, it's // TODO < 1205339710 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1205339727 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's still odd < 1205339811 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :probably because the befunge expects 2 values there < 1205339821 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if you're pushing only one zero that is < 1205339833 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :# 1 cell containing current ((year - 1900) * 256 * 256) + (month * 256) + (day of month) (env) < 1205339833 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :# 1 cell containing current (hour * 256 * 256) + (minute * 256) + (second) (env) < 1205339834 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1205339843 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I push one for each of those < 1205339847 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then beats me < 1205339856 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ah, no, obvious? < 1205339860 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err? < 1205339866 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or no < 1205339868 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :for the date it might have been < 1205339874 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the year is 1900 < 1205339883 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that makes sense < 1205339884 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes right, but the time I don't get < 1205339913 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :don't know, read the befunge to see what it does and figure it out :-P < 1205339921 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I'm not that mad < 1205339925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I just ask the author < 1205339940 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't care why it does that < 1205339949 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you give it incorrect values and it produces incorrect output :-P < 1205340048 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :\f1+:*/:f1+:*%\f1+:*/ < 1205340053 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :looks like the code that calculates it < 1205340207 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1205340236 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I stopped passing fungespace pointer around, no noticable speed difference < 1205340286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still around 0.5 seconds both before and after (for debug version, I guess optimized build could make a difference < 1205340478 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and around 0.3 with debug info < 1205341165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the day of the month is -244 < 1205341165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the month is -253 < 1205341165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the year is 109 < 1205341166 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1205341353 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah better < 1205341379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, a bug in mycology: < 1205341381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the environment variables are: < 1205341381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ÿÿ´ < 1205341387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is valid to run with a clean env < 1205341396 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can do it using env -i in front of the program < 1205341421 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err wait < 1205341426 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1205341442 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think mine does something strange on outputting \0 < 1205341566 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, another question: should time in y be local time or UTC= < 1205341569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :s/=/?/ < 1205341576 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :not specified, I don't think < 1205341599 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ccbi does UTC heh < 1205341604 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :easiest indeed < 1205341605 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205341610 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just time and gmtime needed then < 1205341622 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :there's a fingerprint which allows both UTC and local < 1205341626 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :TIME I think < 1205341634 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(negative year problem, turns out the result of tm is already in years since 1900....) < 1205342042 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the command-line arguments were: [ null "/home/arvid/bashfunge/trunk/mycology/mycology.b98" "./cfunge08" null ] < 1205342045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that looks wrong < 1205342048 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1205342052 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :indeed it does :-P < 1205342052 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION changes order < 1205342065 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :./cfunge08 isn't supposed to be there btw < 1205342078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh? < 1205342097 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :only mycology.b98 < 1205342120 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the command-line arguments were: [ null "./cfunge08" "/home/arvid/bashfunge/trunk/mycology/mycology.b98" null ] < 1205342123 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :slightly saner < 1205342137 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, with full path I assume? < 1205342150 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :doing path splitting would be insane < 1205342173 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because it was called with full path < 1205342184 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :with whatever it was called, I guess < 1205342200 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, no ending null? < 1205342203 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I guess the idea is that if you open the file with the given name then it should be the same file < 1205342213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the command-line arguments were: [ "/home/arvid/bashfunge/trunk/test/mycology.b98" null ] < 1205342213 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well, you've got too many nulls there :-P < 1205342216 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is from ccbi < 1205342227 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :only with env -i < 1205342237 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and I'm not going to figure out why < 1205342239 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ? < 1205342251 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :weird < 1205342259 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: if you run without an empty environment there won't be an ending null there < 1205342289 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually, depending on how D pass stuff to main() that may make sense < 1205342303 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :how's that < 1205342316 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because, both these are valid main() prototypes in C: < 1205342320 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :int main(int argc, char *argv[]) < 1205342320 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and < 1205342329 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :int main(int argc, char *argv[], char*envp[]) < 1205342335 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :uh, no < 1205342336 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not sure of name for the latter < 1205342338 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the latter is only posix < 1205342345 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if that < 1205342351 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know what it is but it's not standard C :-P < 1205342356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205342359 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well < 1205342383 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway possibly if they follow each other in memory that could mean some off by one error on the part of D < 1205342394 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D is fine, it's not that < 1205342403 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because D doesn't use null-terminated strings < 1205342417 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D arrays are (length,pointer) pairs < 1205342422 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and main is int main(char[][] args) < 1205342424 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sighs < 1205342445 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well popping and pushing 0gnirts are harder then < 1205342449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's really easy in C < 1205342458 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :not really, no < 1205342463 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or, well < 1205342466 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :harder, yes < 1205342468 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but not hard :-P < 1205342475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : for (ssize_t i = len; i >= 0; i--) < 1205342476 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : StackPush(str[i], stack); < 1205342482 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is my StackPushString < 1205342512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :void pushStringz(char[] s) { < 1205342512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : ip.stack.push(0); < 1205342512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : pushString(s); < 1205342512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :} < 1205342512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :void pushStringz(char* s) { < 1205342514 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : if (s) { < 1205342517 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : while (*s++){} < 1205342519 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : while (*s) < 1205342522 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : ip.stack.push(cast(cell)*s--); < 1205342524 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : } else < 1205342527 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : ip.stack.push(0); < 1205342529 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :} < 1205342533 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you're missing the calculation of len, which is a call to strlen < 1205342533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hum? < 1205342544 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it is passed as a argument to the function < 1205342545 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that's mine, since you were obviously asking :-P < 1205342550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to allow pushing several in one row < 1205342553 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ah < 1205342559 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :one go* < 1205342595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, and allows potential for cashing string length in case I push the same several times or such < 1205342598 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1205342612 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I only use pushStringz with fingerprints, though < 1205342621 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nowhere in the normal code < 1205342629 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1205342638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :my pop string is more complex < 1205342650 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it uses some nice fast extensible strings things from boehm-gc < 1205342666 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :mine just uses normal D strings :-P < 1205342672 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/nZCGyC10.html < 1205342687 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but hey, if you feel like more benchmarking, http://users.tkk.fi/~mniemenm/files/befunge/interpreters/ccbi/ccbi_linux.zip < 1205342701 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, what's new in that one? < 1205342702 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :CORD_ec? ew < 1205342716 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes? what about it? nice thing from boehm-gc < 1205342719 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: for one thing it has a --disable-fprints command line argument :-) < 1205342727 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: what does it mean? looks like too many abbreviations in one :-P < 1205342727 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hahaha < 1205342742 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(/* Extensible cords are strings that may be destructively appended to. */ < 1205342743 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1205342752 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the ( was mispaste < 1205342752 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :right < 1205342763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : * Cords are immutable character strings. A number of operations < 1205342763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : * on long cords are much more efficient than their strings.h counterpart. < 1205342767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from cord.h < 1205342792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, cord isn't an abbrev < 1205342806 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cord and string are both think long objects :P < 1205342811 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1205342816 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just wondering why it's called cord and not just string < 1205342823 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because it isn't a string < 1205342824 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :since, after all, "cords are [...] strings" :-P < 1205342827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's faster in some cases < 1205342842 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :they look like strings to me < 1205342850 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : * The following are reasonable applications of cords. They would perform < 1205342850 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : * unacceptably if C strings were used: < 1205342850 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : * - A compiler that produces assembly language output by repeatedly < 1205342850 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : * concatenating instructions onto a cord representing the output file. < 1205342864 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :look like D strings to me, then < 1205342865 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is such a case I do here, adding one char at a time < 1205342882 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nop < 1205342902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :typedef struct CORD_ec_struct { < 1205342902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : CORD ec_cord; < 1205342902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : char * ec_bufptr; < 1205342902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : char ec_buf[CORD_BUFSZ+1]; < 1205342902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :} CORD_ec[1]; < 1205342934 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I really don't care how they're implemented < 1205342942 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :they're convenient abstractions to avoid having to mess with strcat and co < 1205342947 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that's all I need to know :-P < 1205342949 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205342954 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and uses boehm-gc < 1205342966 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think they wouldn't work without boehm < 1205343052 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so how does the new CCBI run for you < 1205343066 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :mycology piped to dev/null takes 0.36 seconds on my laptop < 1205343139 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :real 0m1.602s < 1205343141 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :better < 1205343170 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :odd that it's that slow < 1205343310 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :how about without fingerprints? :-) < 1205343324 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :replace all ( with r? < 1205343333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :won't it fail then due to no popping? < 1205343381 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no, I mean use ccbi -P < 1205343386 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or ccbi --disable-fprints, same thing < 1205343412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :real 0m1.110s < 1205343413 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then < 1205343526 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :alright, you can do some profiling for me < 1205343545 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :iki.fi/deewiant/ccbi, run it on mycology piped to dev/null and send me gmon.out :-) < 1205343546 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why? I'm busy < 1205343556 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I want to win over you < 1205343557 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so no < 1205343559 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-D < 1205343560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not yet < 1205343563 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you've already won < 1205343568 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I can't be bothered to optimize any more < 1205343573 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :unless there's an obvious bottleneck on your machine < 1205343589 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :at this point, all I can do is remove features or make the code so fugly that it's not worth it < 1205343608 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh I'll see < 1205343663 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :thing is that there's nothing obviously slow that I can find < 1205343679 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1205343698 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's just that some things are called 300 000 times - through function pointers, even < 1205343711 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and if they take 1 microsecond each then yes, it'll take 0.3 seconds :-P < 1205343717 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION got time down for cfunge another 0.05 seconds using -fbranch-probabilities < 1205343725 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : < 1205343736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :profiled to match mycology < 1205343737 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;D < 1205343740 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1205343758 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I'm sure I can optimize hash function I use for mycology performance too < 1205343760 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think GLFunge98 was already faster than CCBI, actually < 1205343769 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: how've you implemented funge-space now? < 1205343769 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and even, my k isn't as optimized as yours is < 1205343775 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hah, k :-D < 1205343786 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :none of those extra-optimized k ones are called in mycology < 1205343792 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so it's actually a slowdown < 1205343793 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, using a hash library, key is a position struct < 1205343796 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :to have that switch case there < 1205343816 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I see < 1205343841 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I once tried that thing I was talking about, have the upper 32 bits of a 64 bit int be the y coordinate and the lower the x coordinate < 1205343850 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it was quite a bit slower than my current hash table of hash tables -thing < 1205343852 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I allocate the data for the cells (as it uses pointers for both position and data) in chunks of 512 entries < 1205343861 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :may mean some overhead but faster at load time < 1205343869 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that helps < 1205343878 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :CCBI's runtime on mycology is mostly load time < 1205343883 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :at least on my computers, don't know about yours < 1205343891 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, initial entries in hash table is set to slightly more than mycology needs < 1205343892 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :maybe PaX isn't friendly to function pointers < 1205343893 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :about 1000 more < 1205343894 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or so < 1205343904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, no clue, read about PaX on wikipedia < 1205343937 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, that is I call hash creation with initial size set to slightly more chars than is in mycology < 1205343957 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I have no control over that < 1205343967 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh, your problem < 1205343969 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D probably allocates in much smaller chunks internally < 1205343980 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well, I could argue that that's a huge waste of memory on most befunge programs < 1205344003 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :everywhere where I have constants in CCBI, they're set to 'typical' values and not 'mycology' values :-P < 1205344005 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also, mine is definitely optimized for AMD64, it is slower at x86 but not much, but parameter order is optimized to pass as many parameters as possible in the registers < 1205344057 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course, most functions can pass all parameters in the registers here :) < 1205344063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with any order < 1205344065 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep, that helps < 1205344088 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, and I use gcc __attribute(())__ sometimes < 1205344099 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mostly because it allows me to get better warnings < 1205344100 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :meh, overoptimization < 1205344114 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like __attribute__((warn_unused_result)) < 1205344115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1205344121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to ensure correct code < 1205344137 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :some other both gives better warnings and better code, like nonnull < 1205344147 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and probably allows it to optimize better < 1205344152 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as well as give good warnings < 1205344185 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well, the DMD compiler frontend sucks, so any D-specific optimization is pretty much out of the window for my code < 1205344193 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :any optimization that GCC does will be done at asm level < 1205344207 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :any significant optimization, that is < 1205344216 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hehehe < 1205344225 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you have a huge advantage there < 1205344230 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to mark some pure functions < 1205344230 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :even though we use the same backend < 1205344232 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P:P < 1205344256 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I honestly don't care < 1205344265 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway if you use gdc you would get same backend < 1205344269 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :of course, if you're performance tuning as much as you are, and writing in C, you will be faster :-P < 1205344272 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that was GDC < 1205344273 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and should get about same level of optimization < 1205344276 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: like I said, same backend < 1205344281 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but no, it's not the same level < 1205344291 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :think about stuff like const, which I suppose you use somewhere < 1205344295 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or all those __attribute__ things < 1205344301 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :they're completely lost when translated to asm < 1205344309 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm now it is faster, down at 0.9 seconds for ccbi < 1205344309 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :weird < 1205344326 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that blender render completed? ;-P < 1205344336 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, nah, that finished around noon today < 1205344358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway I do NOT use __attribute__ for gaining speed < 1205344363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I use it for correct code < 1205344367 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't matter < 1205344368 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :warn about unused results < 1205344370 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just like const < 1205344371 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that kind of stuff < 1205344380 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes doesn't D have const? < 1205344380 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :const is used for correctness of code < 1205344386 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not in the same way C does < 1205344394 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: only for compile-time constants < 1205344396 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'm using const when I can, for correct ness < 1205344401 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :correctness* < 1205344401 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but my point is < 1205344406 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you use it for correctness < 1205344410 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no idea if gcc optimize on it < 1205344413 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but of course it's a potentially big optimization help as well < 1205344430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, as is the C99 restrict keyword (that I'm not using, yet) < 1205344436 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205344448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :though not sure about correctness for restrict < 1205344651 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also, no idea if you can use out parameters in D? < 1205344654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like say: < 1205344660 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :void x(out int x) < 1205344662 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :void changemyparameter(char * foo); < 1205344668 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it opterates on the thing in place < 1205344672 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :operates* < 1205344711 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :like said above, 'out' exists < 1205344740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :out and in? or just out? < 1205344793 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :out, in, and inout < 1205344812 0 :jix!n=jix@dyndsl-080-228-180-205.ewe-ip-backbone.de JOIN :#esoteric < 1205344837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205344939 0 :jix!unknown@unknown.invalid QUIT :Client Quit < 1205344969 0 :jix!n=jix@dyndsl-080-228-180-205.ewe-ip-backbone.de JOIN :#esoteric < 1205345027 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, real 0m0.374s < 1205345028 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1205345054 0 :jix!unknown@unknown.invalid QUIT :Client Quit < 1205345054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION changes back to debug version to work on fingerprints < 1205345090 0 :jix!n=jix@host-091-096-150-176.ewe-ip-backbone.de JOIN :#esoteric < 1205345567 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, by the way my debug build takes about 0.6 seconds at mycology < 1205345659 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: got a copy of your binary? to see how fast it is here < 1205346895 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I think I know about ccbi's env -i problem < 1205346900 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or maybe rather mycologys < 1205346904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :consider the stack < 1205346918 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :with env -i, it's null null null null < 1205346918 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it would push \0\0 at the end of the environment right? < 1205346922 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1205346926 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, exactly < 1205346933 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and mycology fails to handle that < 1205346943 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :is that ambiguous, though < 1205346947 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it is < 1205346950 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because you can't know < 1205346959 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1205346966 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so complain at the spec < 1205346983 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, if you were to redesign that bit, what would you suggest? < 1205347025 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd suggest losing 0gnirts and using gnirts instead < 1205347033 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm interesting < 1205347034 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :never ambiguous < 1205347039 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and then you can have nulls in strings < 1205347040 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not backwards compatible < 1205347043 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, indeed < 1205347130 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :BAD: : on empty stack doesn't make stack size 2, says y < 1205347130 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :GOOD: \ on empty stack makes stack size 2 according to y < 1205347140 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :both push 2 according to gdb < 1205347141 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1205347152 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then y fails < 1205347165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :do you get the stack size value differently? < 1205347169 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :as usual, all I can say is trace it and find it < 1205347177 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sighs < 1205347178 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I can't remember, probably f8+y or whatever < 1205347250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you are not testing that size of stack works as it should btw < 1205347257 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it says one cell for each stack < 1205347264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just saw my code just push for the top stack < 1205347264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1205347300 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1205347307 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1205347311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the stack sizes are [ 57 ] from top to bottom < 1205347312 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1205347318 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :should be [ 0 ] < 1205347318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(though not correct either) < 1205347321 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1205347596 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, what exactly does this one mean: < 1205347597 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) < 1205347652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, btw I found a real bug in your code now < 1205347653 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the command-line arguments were: [ "mycology.b98" ] < 1205347654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the environment variables are: < 1205347654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : =/home/arvid/bashfunge/trunk/std08/interpreters/ccbi/ccbi_linux/ccbi_linux/ccbi < 1205347654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : TERM=t < 1205347660 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on env -i TERM=t < 1205347669 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mine at least does the right thing on that :) < 1205347682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the command-line arguments were: [ "/home/arvid/bashfunge/trunk/mycology/mycology.b98" ] < 1205347682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the environment variables are: < 1205347682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : TERM=t < 1205347693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, any idea about that? < 1205347745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually it does that in any case < 1205347751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the command-line arguments were: [ "mycology.b98" ] < 1205347751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : That the environment variables are: < 1205347751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : =/home/arvid/bashfunge/trunk/std08/interpreters/ccbi/ccbi_linux/ccbi_linux/ccbi < 1205347755 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1205347782 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :doesn't do that with mi < 1205347784 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :err < 1205347785 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :me < 1205347798 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :env -i ccbi mycology.b98 < 1205347801 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric : That the environment variables are: < 1205347803 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and nothing < 1205347827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1205347829 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but try setting one < 1205347835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :env -i TERM=t ccbi mycology.b98 < 1205347838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like that < 1205347838 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it goes through extern char **environ for the environment variables < 1205347840 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :see what you get < 1205347846 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I use **environ too < 1205347880 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't get that < 1205347882 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :only TERM=t < 1205347886 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, weird < 1205347888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very weird < 1205347898 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :env -i TERM=t ./ccbi mycology.b98 < 1205347901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is the exact line I used < 1205347914 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as it both are in current dir < 1205347942 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :using the exact same line, only TERM=t < 1205347955 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1205347979 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :env -i TERM=t ./ccbi mycology.b98 < 1205347984 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :TERM=t, nothing else < 1205348005 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, the binary you sent me (the last that is, will check this for earlier ones) produces that "fake" env variable, even without anything else, then the rest of the variables < 1205348050 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, however mine produce another line your doesn't: < 1205348052 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :_=./cfunge08 < 1205348054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with at _ there < 1205348063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :maybe you mess up with space and _ ? < 1205348084 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or wait you do that one too, just differently sorted < 1205348093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but mine doesn't do that empty variable name one < 1205348106 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :neither does mine, here :-P < 1205348117 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, your older ones does too < 1205348135 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :your machine is weird :-P < 1205348153 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :something is weird < 1205348265 0 :olsner!n=salparot@cust.fiber-lan.vnet.lk.85.194.50.194.stunet.se JOIN :#esoteric < 1205348287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ok you are right, something is odd, I don't get it on my other amd64 < 1205348298 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nor do I in another xterm < 1205348301 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1205348303 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-D < 1205348310 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's crazy < 1205348394 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually I do get it in another xterm, in some < 1205348394 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1205348417 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also I didn't get it before < 1205348495 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, found out about: BAD: : on empty stack doesn't make stack size 2, says y < 1205348502 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, reason is simple, very simple < 1205348505 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I peek and then push < 1205348509 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not pop and push twice < 1205348524 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and my stack dumping had a off by one in one case < 1205348529 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I thought you said gdb claims it has 2 :-P < 1205348532 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1205348556 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :however, would this difference affect any program? < 1205348574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you will always get 0 from an empty stack < 1205348587 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, right? < 1205348612 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the difference is what f8+y pushes :-) < 1205348622 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's the only way of measuring it :-P < 1205348623 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so if you say do: n: you will always get the same result, for instructions except for what y says < 1205348650 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so, does it matter really? peak and push is logically faster than pop and push < 1205348678 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the spec says : is equivalent to pop and two pushes < 1205348683 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it might matter to some fingerprints < 1205348692 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so I'll do some #ifdef for FULLY conforming vs. some slight optimizations < 1205348695 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1205348703 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, err how? < 1205348705 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you're an optimization freak < 1205348709 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't know < 1205348715 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how would it matter < 1205348734 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :they use : to quickly get the stack size up to 2 for some freakish extension that they provide which cares about that :-P < 1205348745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err whatever < 1205348762 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know, like I said < 1205348766 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but the spec says what it says < 1205348775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :extensions still won't have access to the array I use for stack < 1205348786 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so, doesn't matter < 1205348827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because it isn't a straight simple array, it's dynamically malloced in chunks, and keeps a size value and a top pointer. extends with 10 entries every time the array needs to grow, but doesn't actually ever contract < 1205348835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just moving top pointer downwards < 1205348846 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's what I do as well < 1205348984 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah this should be faster unless stack actually is empty: < 1205348986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : if (stack->top == 1) < 1205348986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : StackPush(0, stack); < 1205349001 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still not as good as just peek and push but < 1205349027 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you optimize too much :-P < 1205349046 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nah < 1205349082 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I plan to make this the fastest befunge interpreter on 64-bit when I'm done, and with a changing some values in a header it should perform well on 32-bit too < 1205349123 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's already the fastest from the sound of it < 1205349146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh, fastest with some fingerprints please :) < 1205349165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I may need to replace hash array if it turns out to be bad, but the way I coded it replacing is easy < 1205349173 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's all hidden under an abstraction < 1205349186 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that's how you should code everything, goes without saying < 1205349194 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205349210 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stack, ip and fungespace are all quite hidden under abstractions < 1205349249 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, http://rafb.net/p/Uk3wTE20.html < 1205349273 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :restrict :-P < 1205349283 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes because I had to beat you < 1205349287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1205349295 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you optimize too much, like said < 1205349299 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it really doesn't matter :-P < 1205349304 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, not really, look at memcpy < 1205349309 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it uses restrict < 1205349334 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, I am well aware of the fact that the STANDARD LIBRARY has to be well optimized < 1205349343 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but your program doesn't have to be fully micro-optimized :-P < 1205349735 0 :sebbu!n=sebbu@ADijon-152-1-75-250.w83-203.abo.wanadoo.fr JOIN :#esoteric < 1205349882 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :o/ < 1205349935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hehehe :D < 1205350010 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: where do I get libcord < 1205350038 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :doesn't come with latest stable boehm-gc < 1205350081 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, uh? 7.x? < 1205350096 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: latest stable in portage is 6.8 < 1205350125 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes I know, I think it is a mistake by portage in some way, because even for 6.8 it installs the *header files* for cord < 1205350128 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just not the library < 1205350137 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a bit confusing that < 1205350183 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I'm well aware of that my cmake checks are incomplete, and I plan to extend them < 1205350184 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I thought you said you don't run unstable packages :-P < 1205350197 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I avoid them mostly < 1205350202 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :this is a special case though < 1205350218 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I already had to get unstable bzr as well :-P < 1205350234 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh? yes I don't think there is a stable bzr in portage is there? < 1205350243 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not a 1.x one at least < 1205350245 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure, 0.17 :-) < 1205350253 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, that is so old and crappy < 1205350276 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, 1.0 was released several months ago, like November or something like that < 1205350288 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :0.17, about a year ago at least I guess < 1205350291 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not 100% sure < 1205350307 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway you could have used 0.92 :P < 1205350316 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(why you would want that I don't know) < 1205350318 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: 0.17 and 1.1 are the only two in portage < 1205350326 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, 1.1 is great < 1205350338 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: on my machine, CCBI is faster than cfunge08 in bzr < 1205350348 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :does cmake build with optimization? < 1205350355 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, two things < 1205350359 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ccmake < 1205350367 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :change build type to RELEASE < 1205350375 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that will get optimzing < 1205350381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the second (if on 32-bit) < 1205350381 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :how < 1205350387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, how what? < 1205350392 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :do I change it to RELEASE < 1205350399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ccmake . < 1205350408 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :use arrow keys to select CMAKE_BUILD_TYPE < 1205350412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pres enter to edit option < 1205350413 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :bah, GUIs... < 1205350418 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :make sure it says RELEASE < 1205350429 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you can do it with cmake, but I don't remember how! < 1205350444 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ccmake is ncurses anyway < 1205350468 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ok, second thing (if on 32-bit), open src/global.h < 1205350483 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :aye, fast32_t < 1205350495 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and change FUNGEDATATYPE and FUNGEVECTORTYPE indeed < 1205350525 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :alright, now we're talking < 1205350531 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, better speed now? < 1205350539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still got some issues with y < 1205350542 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :working on those < 1205350556 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :0.08 for cfunge08, 0.13 for CCBI < 1205350569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you get better speed than I do, for both of them < 1205350571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hehehe < 1205350599 0 :RedDak!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1205350611 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :with output, 0.10 and 0.14 < 1205350616 0 :Dagide!n=dak@87.20.80.13 JOIN :#esoteric < 1205350618 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :i.e. not piped to devnull < 1205350650 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I can accept being 50% slower for using a language which is much more fun to code in :-) < 1205350665 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :+ for supporting all kinds of crap that cfunge08 doesn't ;-) < 1205350673 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1205350681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I will add fingerprints < 1205350693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and those may be slower < 1205350699 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but the core should be faster :D < 1205350702 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I get some warnings from compiling your code, mostly stuff like %ld being used to print < 1205350718 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ah, that's related to you changing FUNGEVECTORTYPE < 1205350720 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and such < 1205350729 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, I got it even without changing them < 1205350729 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1205350749 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: warning: format '%ld' expects type 'long int', but argument has type 'int_fast64_t' < 1205350756 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: or int_fast32_t, both result in warnings < 1205350766 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you should use inttypes.h < 1205350768 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, err right, on x86 that should be long long gah < 1205350774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I use stdint! < 1205350780 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's more C < 1205350783 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1205350790 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, you should use inttypes.h instead of %ld I mean < 1205350803 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: inttypes.h has corresponding printf/scanf specifiers for stdint.h's integer types < 1205350807 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: both are C99 < 1205350835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aha < 1205350837 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :what you want is PRIdFAST64 instead of '%ld' < 1205350844 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and PRIdFAST32 for fast32_t < 1205350845 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see forgot that < 1205350845 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1205350854 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or didn't know ;-) < 1205350857 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well fast32_t is not really supported < 1205350866 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :alright, then 64, whatever < 1205350873 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :anything but hardcoded '%ld' :-) < 1205350874 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, how slow was it with 64-bit btw? < 1205350883 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I agree I should fix that indeed < 1205350887 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: 0.38, without optimizations and with 64-bit < 1205350895 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so about 2.5 times slower than CCBI < 1205350896 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1205350902 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or more like 3 times < 1205350903 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1205350908 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :since 0.39 would be 3 times < 1205350910 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, about as fast as it gets on my cpu when mine is at it's best < 1205350916 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1205350919 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1205350925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :your cpu is faster it seems < 1205350925 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: also, there are other warnings < 1205350936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I'm aware of some yes < 1205350936 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, my laptop's cpu is faster than my main computer's :-) < 1205350944 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :/home/arvid/src/cfunge08/src/interpreter.c:422: warning: function might be possible candidate for attribute 'noreturn' < 1205350945 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stuff like that < 1205350953 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hash library got a few too < 1205350962 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: comparison between signed and unsigned, cast discards qualifiers, unused params < 1205350966 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but it's third party and I haven't had time to look at it' code < 1205350984 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I had a fun idea for an esoteric programming langue. < 1205350985 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: support.c:118 has 'signed and unsigned type in conditional expression' < 1205350987 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :language < 1205351000 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I know about those yes, lib/*, the "noreturn", the one in support.c (it's a function from gnulib!) < 1205351013 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, because getline isn't portable I used the gnulib one always < 1205351015 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: alright < 1205351018 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1205351027 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and means boehm-gc too < 1205351036 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deformative, tell us! < 1205351060 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Continuation based, no return values. < 1205351062 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Functional. < 1205351081 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ew, no return values < 1205351087 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I will explain more later, I kinda wanna take a nap, < 1205351099 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deformative, interesting < 1205351111 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh and I found a bug in gdb today < 1205351112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1205351117 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I managed to do the factorial sequence. < 1205351123 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it can't print the extern **environ < 1205351128 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it just shows 0x0 for it < 1205351131 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for unknown reason < 1205351168 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't use debuggers so I can't help you with that < 1205351194 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: It is quite a bit of fun. < 1205351215 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Should theororetically be far faster too. < 1205351231 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Deformative: I want to see a spec < 1205351232 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, how do you fix bugs then? < 1205351233 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Forth might be faster. < 1205351245 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I find them and I fix them as normal. :-P < 1205351271 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I will make up a spec in the next few days maybe. < 1205351272 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: to find them - CCBI has its debugging mode which I found really handy < 1205351281 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: if that wasn't enough, liberal printf sprinkling in the code helps < 1205351285 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Maybe publish it. < 1205351328 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, heh < 1205351335 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :It is really weird at first, but the more you use it, it gets easier. < 1205351342 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :And knowing forth helps a lot. < 1205351482 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I really should learn some factor < 1205351488 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Nah,. < 1205351494 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Factor is nothing, learn forth. < 1205351496 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Forth is real. < 1205351501 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1205351512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well, to be honest, any concatenative language would be fine < 1205351526 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Forth, the origional. < 1205351551 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :on my first try with Forth I got lost somewhere around loops and recursion < 1205351561 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and the alternative stack < 1205351586 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :need to try again at some point < 1205351590 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1205351597 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I don't remember forth that much. < 1205351602 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-D < 1205351602 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :But I did finish the book, I remember that much. < 1205351635 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Joy is nice too, I hear < 1205351646 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. < 1205351651 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :But again. < 1205351653 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :It is nothing. < 1205351659 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1205351660 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : and the alternative stack < 1205351666 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well after befunge that's NOTHING < 1205351666 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1205351679 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION still thinks his stack stack code is uggly < 1205351681 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :except that befunge isn't supposed to be easy < 1205351685 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Forth has some real implementations and there has been real programs made in it. < 1205351687 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :forth is :-P < 1205351692 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Factor and joy have nothing, < 1205351709 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Forth is rather beautiful. < 1205351741 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :A colored stack language has real potential, but I don't think that moore did it right with colorforth. < 1205351761 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also if I ever implement = it will be in some unusual way, maybe running the string "under a specific shell or interpreter" as in befunge XD < 1205351769 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or doing libffi to call C functions with it < 1205351814 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deformative, colored stack!? < 1205351817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf is that < 1205351824 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :(Yay libffi) < 1205351835 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Color as part of the syntax < 1205351852 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Red does one thing blue another. < 1205351871 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deformative, err, then you load it as an image? < 1205351877 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :No. < 1205351880 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how then? < 1205351896 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :latex code using colors? < 1205351908 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :The editor puts apropriat char in plazced.' < 1205351920 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Wow, soprry trying to type with one hand. < 1205351922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you mean ANSI escape codes? < 1205351925 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Cheetos. < 1205351935 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :It can be implemented like that. < 1205351939 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I do not know how colorforth does it. < 1205351944 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's messy :/ < 1205351957 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :program source should work in mono color < 1205351962 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Colorforth is the only colored language that I know of. < 1205351964 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in black and white < 1205351968 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I am sure there are more. < 1205351978 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :I like it because it results in less characters. < 1205351982 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Less characters = better < 1205351989 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but there are downsides too < 1205351992 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Easy to read too. < 1205351998 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Unless you are colorblind. < 1205352000 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like impossible to syntax highlight automatically < 1205352015 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Why would you need syntax highlighting? < 1205352020 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deformative, impossible for color blind, won't work on non-color terminals, and several more < 1205352048 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :You can make an editor put some char in place of the color. < 1205352125 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also would need a special editor < 1205352133 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wouldn't work in your standard editor < 1205352142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :vim/emacs/kate/kdevelop/whatever < 1205352165 0 :Deformative!unknown@unknown.invalid PRIVMSG #esoteric :Some color can be evaluate, another push to stack, another comment, and maybe another can be for labels or conditional compilation. < 1205352327 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, how do you make ccbi print instructions as it executes them < 1205352361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because I found an obscure program a friend made that works in ccbi but not in cfunge < 1205352370 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/642T6v69.html < 1205352798 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it has nothing like that, only the debug mode < 1205352820 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1205352842 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the debug mode is better, just use that < 1205352916 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I can't set several breakpoints!?? < 1205352931 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: one global one and one for the current IP, so 2 at most < 1205352967 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ponders writing some interface in his for attaching an external debugger < 1205352978 0 :ais523_non-admin!n=ais523_n@147.188.254.202 JOIN :#esoteric < 1205352985 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and then the 'cbreak' which breaks the next time it hits a given char < 1205353001 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :which is global < 1205353006 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1205353013 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : cbreak < 1205353013 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Enter cell value to break on: j < 1205353013 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :'j' is invalid. < 1205353021 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :did I misunderstand you? < 1205353022 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :j isn't a value < 1205353023 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you need a number < 1205353039 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sorry, I was too lazy to implement ASCII translation < 1205353039 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh it can't convert can it, right < 1205353050 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because you do need to support arbitrary values < 1205353062 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Undefined command 'cbreak j'. See 'help'. < 1205353064 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sighs < 1205353068 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1205353078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Breaking on every cell with value 106 (0x6a), character 'j'. < 1205353079 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1205353082 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the other way you did < 1205353088 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well because that's trivial < 1205353090 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that's just cast(char) < 1205353128 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is worried that they can translate 0x6a to 'j' in their head < 1205353150 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin: what's with the non-adminness < 1205353164 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: it's my Wikipedia alternate account < 1205353170 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :for use when I'm at a public computer < 1205353177 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205353177 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :which I don't want to know any of my super-secure passwords < 1205353188 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd pick a shorter nick :-) < 1205353193 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :this is an unregistered nick < 1205353207 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :and I'm using it because I don't want to teach this client my Freenode password < 1205353233 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's still long < 1205353244 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :the reason I'm using this account, incidentally, is to use some Windows software (under Wine, as it happens) < 1205353273 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :I install software under Wine in separate accounts, because I don't trust trial-period software to not mess up my system < 1205353282 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :but running on a non-root non-wheel account, it's hard to see what could happen < 1205353308 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :I can always just wipe out the account and start afresh, and the software has no memory of previous trial periods < 1205353332 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :(the ironic thing is that the software is GPL anyway, so I just looked at the code, saw how the trial-period check was implemented, and added a workaround) < 1205353345 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :WTF? < 1205353347 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :(shareware GPL was an ingenious idea but doesn't survive contact with people like me) < 1205353361 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :(and the GPL means it's legal to remove the trial-period restruction) < 1205353363 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :That makes less than zero sense. < 1205353366 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :s/restruction/restriction/ < 1205353377 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :it's a compiler for an embedded system that's based on gcc < 1205353410 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :the people who wrote it distribute a shareware precompiled version in the knowledge that most of their customers won't even try to recompile it to remove the shareware restriction, and will pay them instead < 1205353410 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I admire the effort, but that's just sort of silly :P < 1205353447 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, actually that program I posted shows a tricky corner case related to jumping backwards with j and wrapping at the same time < 1205353448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1205353450 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think that's the way it should be done - you open your source and thus are a good guy, but you still get money from 90% of your clients < 1205353451 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :If this was the customers of a game, maybe, but I have to imagine that most programmers can figure out how to compile GCC ... < 1205353457 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, may be interesting to test in mycology < 1205353457 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :I tried to recompile it but couldn't, so I'm in the silly situation of running a GPL version of gcc under wine < 1205353463 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :(I can recompile gcc, just not their version) < 1205353479 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it tests wrapping with # and x, I can't expect that you do j differently :-P < 1205353497 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hah < 1205353640 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: for j, just save the delta, call x, move once, and reset the delta ;-) < 1205353660 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hmm, less elegant (and less performant :/) < 1205353666 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I guess you are right < 1205353684 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd argue it's more elegant, because that's essentially what x is < 1205353687 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :er, what j is < 1205353699 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's the simplest solution < 1205353734 0 :Dagide!unknown@unknown.invalid QUIT :Remote closed the connection < 1205353736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrrm < 1205353737 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :given that you have a working x of course :-P < 1205353779 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes i do < 1205353792 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :are you /sure/? ;-) < 1205353799 0 :Judofyr!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1205353800 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, the problem is how it wraps based on delta rather than jumps in j case < 1205353802 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :one thing mycology doesn't test is wrapping both edges at once < 1205353804 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and hard to avoid that < 1205353813 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm you mean double wrap? < 1205353822 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I mean wrap x and y at the same time < 1205353825 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1205353837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't test wrapping x twice in one instruction either does it? < 1205353845 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no, probably not < 1205353845 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in a VERRRY long jump < 1205353877 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, until you test those I'm fine, though wrapping x and y should work as my current copying code for non-cardinal is same as yours basically < 1205353882 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :same algorithm < 1205353891 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err wrapping not copying < 1205353894 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is tired < 1205353894 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and mine is just verbatim what the spec says :-P < 1205353919 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: it isn't possible to wrap twice round one coordinate in one instruction in Funge-98, due to the nature of Lahey-space < 1205353924 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, so if your fails at x and y at the same time, you got to fix your twice < 1205353931 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, err? < 1205353933 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :at least, that's how I understand it < 1205353937 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin: well, depends on how you think about it really < 1205353959 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :if you would jump out of bounds, instead you don't and go backwards until you would go out of bounds, then go forwards again < 1205353975 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :so if the delta is larger than the playfield width, you just get stuck at the same point for all eternity < 1205353986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrm < 1205354012 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hmm, with x that's probably right < 1205354043 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :of course, with j you can wrap round more than once < 1205354053 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :because the delta is small, but the number of steps is large < 1205354055 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes with j it's an issue < 1205354069 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :implementing j as I said above still works, though < 1205354078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway I copied both your wrapping code and your j code now and I still don't get it right < 1205354080 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the wrap doesn't change your position and then you just move as normal < 1205354081 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1205354083 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1205354111 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1205354121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you actually move with a while loop :( < 1205354127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's ineffective < 1205354137 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :? < 1205354142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : while (n--) < 1205354142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ip.move(); < 1205354146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :your j code < 1205354148 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :in j, yes < 1205354156 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :doing what I said above would be faster :-) < 1205354161 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm true < 1205354178 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but I'm not sure if it's the same < 1205354194 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, but I need to calculate how the delta should look like with j then < 1205354198 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :The j "Jump Forward" instruction pops a value off the stack, and jumps over that many spaces. < 1205354209 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wait it is current delta times jump in each dimension right? < 1205354224 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hmm, no, that is right, nevermind < 1205354234 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh? it should only work on space instructions? :P < 1205354249 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: "e.g. 2j789. would print 9 and leave an empty stack. " < 1205354251 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so no. :-) < 1205354269 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you could interpreter that sentence as it should only jump over spaces but not other instructions < 1205354270 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1205354283 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hence the example which clarifies it < 1205354287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1205354287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1205354316 0 :timotiis_!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1205354333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you won't need to same delta even I think < 1205354336 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not sure yet < 1205354341 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :s/same/save/ < 1205354343 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but you would get new delta with: < 1205354347 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and yes, you do, if that's what you do < 1205354352 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ip->delta.y *= jumps; < 1205354352 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ip->delta.x *= jumps; < 1205354353 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1205354361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then you could get old again using / < 1205354363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1205354369 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(probably slower though) < 1205354372 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well, sure, but the / slows it down :-P < 1205354373 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: as long as there wasn't integer overflow < 1205354382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah true < 1205354382 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and that < 1205354394 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :bloody corner cases :-P < 1205354422 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hmm, this is the culmination of beautiful code < 1205354424 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :void noOperation() {} < 1205354438 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm if I run a program more than once / second I get same randomness < 1205354447 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I guess time() isn't a good idea ;/ < 1205354452 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as srandom < 1205354453 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean < 1205354466 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :guess not < 1205354476 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :mersenne twister for teh win \o < 1205354481 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : hmm, this is the culmination of beautiful code < 1205354481 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : void noOperation() {} < 1205354482 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hahaha < 1205354491 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you know, some languages complains about such < 1205354493 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bash is one < 1205354499 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :screw bash, then < 1205354503 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it syntax errors on an empty function < 1205354520 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : mersenne twister for teh win \o <-- hm, does libc have that? < 1205354529 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no, probably not < 1205354545 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :screw mersenne twister, then < 1205354550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(whatever it is) < 1205354552 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1205354560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf is a "mersenne twister" < 1205354583 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just google it < 1205355006 0 :timotiis!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1205355079 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's a randomisation technique < 1205355084 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :pseudo-randomisation, that is < 1205355121 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :you'll probably get enough randomisation by using a few bytes from /dev/random as a seed (if on a POSIXish system) < 1205355131 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :with the nice properties of being really fast, really random, and having a huge period < 1205355181 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : srandom(tv.tv_sec % tv.tv_usec); < 1205355183 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about that one < 1205355185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is it a good idea < 1205355186 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1205355196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :at least it gives different results each time now < 1205355204 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyone suggest a better way for srandom? < 1205355209 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :why not just usec directly < 1205355213 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: adding is likely better than taking the modulus < 1205355225 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :or using usec directly will perform much the same < 1205355242 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :(note that x % 0 = SIGFPE on many systems) < 1205355251 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, ok, however if you run them exactly one second after each other you get issues < 1205355264 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: is anyone that accurate? < 1205355275 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, probably not when multi tasking < 1205355275 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: why is it an 'issue' that two different calls can result in the same randoms? < 1205355290 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: since you're going posix anyway, just read from /dev/random like he said :-) < 1205355295 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm < 1205355309 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :cryptographically secure random seed right there < 1205355314 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm true < 1205355320 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :note: only read a few bytes from it so as not to run the system out of entropy, and use them as a seed < 1205355322 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but very short supply of it < 1205355328 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, yes exactly < 1205355336 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :4 bytes? < 1205355341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would that be enough < 1205355341 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :whatever srandom takes < 1205355346 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1205355356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, unsigned int < 1205355361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :depends on platform then < 1205355371 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so then read sizeof(unsigned) < 1205355373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on both x86 and x86_64 it would be 4 bytes < 1205355386 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, but it will slow me down on mycology :( < 1205355391 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :opening a stream I mean < 1205355433 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: on every initialization, CCBI populates the function pointer arrays for all instructions and fingerprints < 1205355434 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you could just use open() and read() to save on stdio overhead < 1205355445 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, that is true < 1205355453 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hahaha < 1205355455 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: in addition, it initializes the randomizer by finding the current clock time, and other things < 1205355460 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, don't you have static arrays? < 1205355463 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so I wouldn't worry < 1205355486 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, I do, but I haven't bothered to do it like that < 1205355504 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION prefers his switch case < 1205355506 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :this way, the fingerprints can be removed simply by not compiling it in < 1205355511 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you don't have to modify any code < 1205355519 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just not pass the corresponding .d file on the command line < 1205355538 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: weak linking? < 1205355538 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, true, I plan to do fingerprints using some array indeed < 1205355548 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin: module constructors < 1205355647 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway I got some ideas for optimizing this app even further, they are: 1) avoid using -fpic -fpie -pie that cmake adds for some reason (means non PIE binary, not as good for hardened but slightly faster), 2) use -combine -fwhole-program < 1205355649 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1205355661 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no idea if there will be a noticeable change < 1205355664 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well, sure, using better optimization flags will speed stuff up < 1205355667 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course profiling info too < 1205355668 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :profile-guided optimization as well < 1205355671 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and whatever < 1205355682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, can't you do profiling with ccbi? < 1205355687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err D I mean < 1205355690 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1205355707 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nothing automated in the compiler for optimizing based on the resulting info, though < 1205355713 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :except maybe GDC, I don't know < 1205355731 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :like said, I can look at the results and just see that something is called 300 000 times and it takes 1 microsecond each time < 1205355735 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :can't optimize that much < 1205355752 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :gcc uses profiling data for branch predicition IIRC < 1205355776 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :so it works out which branch of an if is more likely to be taken, because not jumping is normally faster than jumping on a conditional jump instruction < 1205355809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : gcc uses profiling data for branch predicition IIRC < 1205355810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1205355814 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's what I'm doing < 1205355822 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when speed testing against ccbi < 1205355829 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :it might depend on the program you're running as a test < 1205355840 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and it does < 1205355842 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, I use same that I speed test on < 1205355843 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1205355848 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :so in fact, you could have an optimised-for-Mycology conforming Funge-98 interp, for instance < 1205355852 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so you get a program that's ultra-tuned for Mycology < 1205355855 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, exactly < 1205355856 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but sucks for everything else :-P < 1205355864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes right :D < 1205355882 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but well I can ultra-tune it for anything < 1205355890 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just rerun with profiling < 1205355892 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to get that < 1205355903 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well sure, but the idea is to have a well-rounded program for running Befunge scripts, not one which is really fast on one specific one :-P < 1205355920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, then don't compile it with profiling info < 1205355925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just normal -O < 1205355932 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you get something average < 1205355934 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :actually, any profiling info is likely to be better than no profiling info IMO < 1205355938 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: exactly, that's what I'm telling you ;-) < 1205355940 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, oh? < 1205355946 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin: you're probably right < 1205355948 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :because some of your interp will be program-independent < 1205355954 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin: but don't tell him that! ;-) < 1205355955 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, indeed < 1205355960 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's true < 1205355964 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway the source is GPL3 < 1205355974 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can compile it with any flags you want < 1205355979 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's your choice < 1205355989 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't make binaries for downloads for any program I write normally < 1205356010 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :or you could do branch prediction by hand if you're using gcc; there's some compiler-specific thing (can't remember if it's a __builtin_ or a __attribute__) that lets you specify which branch you think is more likely < 1205356021 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, yes I know about that < 1205356023 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: neither do I < 1205356037 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :even the Windows version of C-INTERCAL comes only in source form < 1205356050 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but info page notes that "programmers are notoriously bad at guessing how their programs will perform" < 1205356053 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so :P < 1205356066 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :I maintain a separate autoconf script for it and two separate shell scripts for if you can't get make to work < 1205356072 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :(one is written for bash, the other for cmd.exe) < 1205356086 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :the main autoconf script is for the POSIX build < 1205356093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, only place it is useful would be in, say, a library where you first has profiled for common usage, then you build that into the library source on "hotspots" < 1205356099 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think boehm-gc does that < 1205356149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and there is both a attribute (for hot/cold functions) in gcc 4.2 and later, and even in earlier a __builtin__ for branch prediction < 1205356196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, what irritates me is that it seems impossible to combine profiling info from several different runs :( < 1205356213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it overwrites instead < 1205356267 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway even with -ggdb -O0 my interpreter is slightly faster than your with -O < 1205356286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :D isn't good for speed is it? < 1205356289 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1205356290 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, highly-optimized C beats lowly-optimized D. < 1205356296 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :this is not news. :-P < 1205356300 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :ACTION was under the impression that -g doesn't slow down a program, only inflates its size < 1205356304 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D is good for speed, if it's highly optimized. < 1205356308 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yep indeed, however I do think D (partly) got a nice syntax < 1205356315 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not fully however < 1205356328 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :of course, given the same degree of optimization, C will be faster < 1205356329 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, yes but -O0 slows things down < 1205356335 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1205356336 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but the D will take 10% less time to write ;-) < 1205356348 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, and also technically loading the larger program will be slower < 1205356358 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :if it's only 10% better I'll stick to C for that sort of thing < 1205356360 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hum, I started at sunday and got this far < 1205356383 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you've been working on it 24/7 judging from your posting here :-D < 1205356390 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, a lie < 1205356396 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :besides, I'm writing embedded system code at the moment, where C is too high-level for some things and so I've had to resort to assembler < 1205356397 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I could have coded one in C# in about 1/3 of the time < 1205356404 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it would have been LOADS slower < 1205356407 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and larger < 1205356411 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1205356423 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you could have done the same in D, and it wouldn't have been that much slower or larger ;-) < 1205356425 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and nonportable < 1205356434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, I'd use mono not .NET < 1205356443 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so not as non-portable as it could be < 1205356447 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but not very portable still < 1205356464 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd argue .NET is more portable than Posix-only C :-P < 1205356491 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: most modern OSs are better at POSIX-C than at .NET < 1205356497 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, no because mono doesn't work on all POSIX < 1205356505 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :and I even have a sort-of-POSIX implementation for DOS < 1205356506 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and even windows can do some POSIX I bet < 1205356518 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Windows is actually POSIX-certified < 1205356519 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :given the number of machines that use Windows, Windows-only code is arguably more portable than anything else ;-) < 1205356527 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, it doesn't have fork iirc? < 1205356527 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, and Linux isn't :-) < 1205356532 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :but you have to download all sorts of weird expansions from Microsoft to get the full effect < 1205356542 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, I see < 1205356563 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes the definition of fork() on DJGPP (my POSIX-like compiler/environment for DOS) < 1205356580 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :it amounts to pid_t fork() {errno=ENOMEM; return -1;} < 1205356630 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, if you want a cfunge with a fixed j wrapping, run bzr pull < 1205356647 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, -_- < 1205356657 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, then no program will be able to run another one < 1205356670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, wait a second, you made DJGPP!? < 1205356673 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1205356707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'll always been thinking that DJGPP = cygwin gone insane < 1205356770 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :DJGPP predates cygwin, no? < 1205356778 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :maybe it does < 1205356780 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or is cygwin older than I think < 1205356785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but did ais523_non-admin actually make it? < 1205356853 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I doubt it, if he's alex smith < 1205356853 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no I didn't < 1205356859 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: what did you imply that from? < 1205356882 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it does handle system() and exec() OK < 1205356900 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, err exec would replace current process < 1205356906 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and system would lock it up < 1205356914 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :oh, I see, I was loose in my wording. I meant I used a copy often, not that I wrote it in the first place < 1205356925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aha < 1205356931 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :I had a tendency to get sh-sick when using Windows... < 1205356973 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :and DJGPP is a maintained target for C-INTERCAL, so that it runs on DOS and Windows too < 1205356986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, anyway the normal way on *nix for many programs is doing something like: vfork() if (return code from vfork whatever) { exec(whatever); } < 1205356991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and trapping SIGCHILD < 1205356997 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I know < 1205357009 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :those would not work under DJGPP < 1205357011 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :BTW, what's the difference between fork and vfork? < 1205357027 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, see man pages, but on linux, basically none iirc < 1205357034 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it may matter on some *nix < 1205357045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where vfork is faster < 1205357056 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1205357056 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as it suspends parent until it has run exec < 1205357084 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, linux got "copy on write" pages or something like that for all forks however < 1205357097 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, which is why Windows is DOG SLOW for forking < 1205357104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, vfork and setjmp are some of the few instructions that can return twice :) < 1205357104 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and multiple processes in general < 1205357129 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ridiculous that not even vista got the smart process model < 1205357136 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, heh < 1205357145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ ps aux | wc -l < 1205357146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :156 < 1205357150 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :my linux runs fine < 1205357168 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I remember it was such a issue they merged several system services in xp into a single process < 1205357172 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with different threads < 1205357174 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heheh < 1205357202 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, windows wouldn't handle 156 processes would it? < 1205357203 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, it's ridiculous < 1205357205 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I have 119 by that ps count < 1205357211 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure it could handle a billion processes < 1205357231 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :creating a process just takes a second or two < 1205357231 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :whereas on linux, it's more like a millisecond or two < 1205357231 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the only one that actually slows things down really, is virtual box when I run it < 1205357260 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mostly when I run windows under virtualbox < 1205357272 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for some reason linux and *bsd are nicer to the system < 1205357406 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, weird isn't it? < 1205357422 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :? < 1205357430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, oh btw, I got everything between 78 and 156, depending on what user I run it under < 1205357441 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :information hiding++ < 1205357442 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1205357473 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ ps aux | wc -l < 1205357474 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : 4 < 1205357476 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :su - < 1205357480 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ ps aux | wc -l < 1205357480 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : 182 < 1205357488 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods, on his freebsd server < 1205357525 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :but I thought the a meant it was irrelevant which user you were < 1205357545 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :or is it that on freebsd some users don't have permissions to determine the existence of other users' processes? < 1205357576 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :hmm... how come that su - didn't change your shell to # anyway? < 1205358258 0 :slereah_!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1205358279 0 :slereah_!n=slereah@ANantes-252-1-53-134.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1205359061 0 :slereah__!n=slereah@ANantes-252-1-53-134.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1205359065 0 :slereah_!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1205359193 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : or is it that on freebsd some users don't have permissions to determine the existence of other users' processes? < 1205359194 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1205359197 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with the right sysctl < 1205359201 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, as for $ and # < 1205359206 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it depends on the PS1 I set < 1205359209 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in my .bashrc < 1205359213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I change other things instead :) < 1205359264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, and you can do that on linux with some hardening kernel patchsets < 1205359298 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, and with the sysctl set on freebsd you can only see your own processes unless you are root < 1205359522 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, the 4 on freebsd as a user were: ssh, bash, ps and wc < 1205359523 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1205359646 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :hmm... I wonder if it's possible to use ps as an esolang, by starting and ending processes according to what it outputs? < 1205359687 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :However, that would just be using ps as a data store, unless each of the processes that was created as a result itself did something or other interesting, which would make for an interesting language where each datum is also a thread that does things < 1205360532 0 :slereah__!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1205360906 0 :slereah__!n=slereah@ANantes-252-1-53-134.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1205361222 0 :slereah_!n=slereah@ANantes-252-1-53-134.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1205361243 0 :slereah__!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1205361866 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, huh? < 1205361910 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :basically you would have processes that communicated by starting other processes (of much the same nature as themselves) and reading ps to see what data was available < 1205361920 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :it would be horrendously inefficient and tricky to program, of course < 1205361955 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523_non-admin, and, also concurrency issues < 1205361974 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :even on single cpu < 1205361984 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :programs could end before they got read and so on < 1205362000 0 :ais523_non-admin!unknown@unknown.invalid PRIVMSG #esoteric :that would just make programming it all the more interesting < 1205362011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it wouldn't work < 1205362030 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not unless threads sleep for quite some time < 1205362038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but sure, go ahead and design it < 1205362047 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there must be worse esoteric languages out there < 1205362098 0 :RedDak!n=dak@host13-80-dynamic.20-87-r.retail.telecomitalia.it JOIN :#esoteric < 1205362766 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1205362973 0 :jix!unknown@unknown.invalid QUIT :"CommandQ"