Show enters and exits. Hide enters and exits.
| 00:53:53 | evan | $~, I hate you. |
| 01:01:18 | rue | Hm, 70.1s for a full run |
| 01:01:27 | rue | But -fa is slower than -fs o.O |
| 01:01:48 | evan | all that spinner awesomeness isn't free! |
| 01:02:13 | rue | 10s worth? |
| 01:02:27 | evan | it's THAT awesome. |
| 01:02:41 | evan | it could probably use a bit of tuning |
| 01:02:49 | rue | I think it might have broken the awesomeness barrier |
| 01:03:09 | rue | Oh, should probably not compile in the profiling stuff..lessee if this shaves a second or two off. |
| 01:14:03 | rue | Well, about 1,3s. |
| 01:14:30 | rue | Almost 2% :P |
| 01:14:41 | evan | without profiling in? |
| 01:17:41 | rue | Yes, building with RBX_NO_PROFILER |
| 01:18:33 | evan | k |
| 04:12:14 | sandal | evan: I'd be happy to wait for your interview responses if you want, but if you think brixen got it pretty well sewed up, I can just use his comments. |
| 04:12:21 | sandal | brixen: thanks for your detailed response! |
| 04:13:05 | sandal | I'll be posting the stuff about RubySpec soonish |
| 04:13:12 | sandal | headius: also thanks :) |
| 04:14:49 | headius | I didn't have too much to add, but that was one important one |
| 04:14:57 | headius | a hard one to cope with |
| 04:15:19 | headius | the even worse part is that there are no good tests *anywhere* for things like openssl |
| 04:15:40 | sandal | one thing that I can do with Unity is add a way to mark these dark spots |
| 04:16:13 | sandal | Sort of like how on wikipedia articles, you can mark something as a stub |
| 04:17:01 | sandal | so if someone searches for the openssl specs through the unity app, it'll display something like "These specs are incomplete. Why not contribute?" with a link back to github |
| 04:18:09 | sandal | i guess it might be hard still to find the domain efforts |
| 04:18:19 | sandal | but an aggregated report of this could be useful |
| 04:18:44 | sandal | so that people with some domain knowledge might stumble across them on a list of 'complicated' spec topics |
| 04:21:52 | headius | yeah, it would at least let us know where help is needed |
| 04:24:28 | sandal | I'd like to data drive this a bit. If mspec has guards that warn against specs that may not be that great, I can aggegate that from the spec runs |
| 04:24:38 | sandal | rather than manually mark the dark corners |
| 04:24:49 | sandal | *aggregate |
| 04:24:56 | sandal | anyway, this is all a conversation for later |
| 04:25:25 | sandal | my prototype will go up this week and then we can maybe try to set up an irc meeting for brainstorming ideas and whatnot sometime soon |
| 04:42:00 | sandal | official announcement will come out probably tomorrow, but for those who want to be early supporters: |
| 04:42:04 | sandal | http://pledgie.com/campaigns/4640 |
| 05:05:34 | rue | Cool |
| 06:19:10 | brixen | sandal: cool beans |
| 06:19:22 | brixen | was installing a ceiling fan |
| 06:19:52 | sandal | brixen: before I disappeared the other day, did you get a chance to look at our mspec yaml changes? |
| 06:20:05 | sandal | I can pull it up for you if you didn't |
| 06:20:13 | evan | got back from Terminator |
| 06:20:34 | brixen | sandal: ah yeah, only thing that stuck out was the use of %( instead of "" |
| 06:20:53 | brixen | sandal: I couldn't see any reason for it so I'd like to keep consistent with "" |
| 06:21:04 | brixen | unless you have a good justification ;) |
| 06:21:29 | sandal | I doubt so, but Brad wrote it. I think I can safely just switch it |
| 06:21:34 | brixen | also, some print calls used %( and some used "" |
| 06:21:40 | brixen | which was eww ;) |
| 06:21:49 | evan | %( ? |
| 06:21:53 | evan | wtf is this? perl? |
| 06:21:53 | brixen | for strings |
| 06:21:56 | brixen | yeah |
| 06:22:10 | sandal | It's likely that he used what was there, and then added his own special stuff :) |
| 06:22:19 | brixen | ah ok |
| 06:22:52 | brixen | well, put up a patch on rubyspec.org if you would |
| 06:23:17 | sandal | Will do, probably tomorrow |
| 06:23:22 | brixen | ok |
| 06:23:58 | sandal | evan: I asked while you were away if you want me to wait for your response on that interview or just roll with what brixen said |
| 06:24:08 | sandal | I can go either way, so it's up to you |
| 06:24:44 | evan | brixen is the authority |
| 06:24:46 | evan | so i'm fine |
| 06:25:14 | sandal | good deal. I'll roll that post tomorrow then. |
| 06:25:32 | brixen | evan: heh, you could wax poetic about how you gave rubyspec a leg up by letting it incubate in rbx for almost a year :) |
| 06:25:52 | evan | :D |
| 06:26:00 | evan | a happy cohabitation |
| 06:26:07 | brixen | :) |
| 06:26:10 | brixen | ok, bbiab.. |
| 07:06:53 | evan | woop! |
| 07:07:00 | brixen | what up? |
| 07:07:10 | evan | got enough code exposed to LLVM, and configured the right passes so that |
| 07:07:57 | evan | http://gist.github.com/122811 |
| 07:08:06 | evan | the top ruby method JITs to the stuff on the bottom |
| 07:08:28 | evan | i've got enough stuff exposed that it's doing complete call frame elimination |
| 07:08:35 | evan | and not even bothering to setup an locals or anything |
| 07:08:41 | evan | it's striped it all away |
| 07:08:44 | brixen | very cool |
| 07:08:52 | evan | leave the argument check and the return |
| 07:08:57 | evan | leaving |
| 07:09:13 | rue | Excellent |
| 07:09:26 | rue | Does it hold for more complex (normal) method chains? |
| 07:09:36 | evan | i'm about to find out |
| 07:09:41 | evan | gotta start at the simple case first! |
| 07:10:15 | rue | Heh |
| 07:10:49 | rue | I am always surprised how reasonable the generated object code is |
| 07:10:55 | evan | yeah |
| 07:11:20 | evan | that code i've got wired up to dissassemble raw x86 is one of the best parts that came out of the hand assembler experiment |
| 07:11:39 | evan | it leaves no doubt whats going on |
| 07:12:28 | rue | Definitely helps to have it available, 'es |
| 07:13:46 | evan | ooh |
| 07:13:46 | evan | rad |
| 07:14:32 | evan | woop! |
| 07:14:33 | evan | http://gist.github.com/122814 |
| 07:14:41 | evan | thats SOOOOO awesome |
| 07:14:56 | evan | it saw through all the indirection and everything |
| 07:15:04 | evan | and stripped everything away |
| 07:15:17 | evan | leaving pulling the 1st arg out of the Arguments struct and returning it |
| 07:15:51 | brixen | awesome |
| 07:16:21 | evan | thats SOO rad. |
| 07:17:45 | brixen | I have some Hash code that I'm eager to see how it handles |
| 07:17:57 | evan | cool |
| 07:18:00 | brixen | for example, I hand optimized #redistribute |
| 07:18:04 | brixen | it's very ugly |
| 07:18:07 | evan | i'm doing the trivial cases still |
| 07:18:13 | evan | leaf methods |
| 07:18:18 | brixen | yeah |
| 07:20:05 | evan | cleaning up "def foo; @blah; end" now |
| 07:20:26 | evan | wam bam thank you mam |
| 07:20:27 | evan | done. |
| 07:20:28 | evan | :D |
| 07:20:33 | brixen | excellent, that I use a fair amount |
| 07:23:46 | evan | hm |
| 07:23:54 | evan | why would accessing an ivar raise an exception... |
| 07:24:19 | evan | i've got the code checking the return from rbx_push_ivar for if it's an exception |
| 07:24:23 | evan | but i don't think thats needed... |
| 07:25:21 | brixen | I can't think of a reason |
| 07:25:30 | evan | k |
| 07:27:36 | evan | rad |
| 07:27:39 | evan | this is so cool |
| 07:27:55 | evan | now that i've got the right ammount of code exposed, it's hitting it's stride |
| 07:29:04 | evan | ponders... |
| 08:18:25 | ddub | still pondering, evan? |
| 08:37:54 | evan | ddub: had to get some info from the LLVM guys |
| 08:51:08 | rue | Got the ivar sorted? |
| 08:52:06 | evan | pretty sure |
| 08:52:14 | evan | trying something to see what the machine code looks like |
| 09:05:01 | slava | hi evan |
| 09:05:49 | evan | hey there |
| 09:08:10 | slava | i'm working on my register allocator |
| 09:09:13 | evan | oh? hows it going? |
| 09:11:52 | slava | evan: pretty slowly |
| 09:13:06 | slava | evan: I'm using the same algorithm as hotspot client now |
| 09:13:21 | slava | but there's one part I haven't implemented yet |
| 10:04:15 | rue | slava: Which part? |
| 10:07:41 | slava | rue: just a technical detail called the resolve pass |
| 10:08:19 | slava | http://gnuvince.wordpress.com/2009/06/02/are-the-new-javascript-engines-going-to-completely-change-the-game/ <-- 2.7 seconds out of 4 are spent in gc and still factor manages to beat clojure :) |
| 10:08:26 | slava | it would be faster than v8 if my gc didn't suck |
| 10:11:08 | rue | Hehe, good work still, though |
| 10:12:10 | rue | So multiple passes, presumably? |
| 10:12:23 | slava | in the gc? |
| 10:14:59 | slava | the benchmark allocaes ~120 mb of memory and the heap grows several times, and everything is copied several times |
| 13:09:22 | lypanov | um |
| 13:09:23 | lypanov | No method 'to_description' on an instance of NilClass. (NoMethodError) |
| 13:09:29 | lypanov | rubinius doesn't love me :( |
| 13:11:36 | lypanov | any known issues with readline that might cause the above? |
| 14:15:02 | rue | lypanov: Yes, GCC 4.2.1 on OS X at least |
| 14:15:30 | lypanov | ahhh k. bummer. any work around? |
| 14:15:39 | rue | lypanov: You can do a build:debug without problems (-O2 triggers it), or set CC to some other version |
| 14:16:35 | rue | Also, RBX_LLVM=1 for the build so JIT is available |
| 14:16:53 | rue | Then, once built, pass in -Xjit.enabled to actually use it |
| 14:18:07 | rue | lypanov: It is not readline, specifically, it is the compiler. You would see the same trying to run specs etc. |
| 15:39:43 | lian | hello, how do i eval an sexp-object in the vm? like => eval "1+1".to_sexp ? |
| 15:41:18 | lian | or do i only need to 'execute' it, coz eval compiles the string anyways to a sexp? |
| 15:44:24 | lian | i want to load a sexp via json and eval it in scope of whatever vm object i like. how to do that, or its it a bad idea? |
| 16:00:54 | rue | Yes, it is kind of a bad idea; .eval works just like MRI's .eval though. To use a sexp, you need to go through the compiler directly |
| 16:02:37 | lian | thanks. is there a buildin Ruby2Ruby.translate and the reverse in rubinius? |
| 16:06:00 | ddub | kids today, all they ever think about is sexp |
| 16:07:39 | lian | ;D |
| 16:36:02 | brixen | lian_: there is no sexp -> source translation in rubinius |
| 17:27:50 | ddub | lets talk about sexp bay-bee, lets talk about (and you me) |
| 17:42:52 | brixen | ddub: (and you me) ? getting lispy on us :) |
| 17:53:08 | ddub | I'm just scheming |
| 17:54:21 | evan | mornings |
| 17:55:15 | ddub | hellos! |
| 17:56:54 | brixen | morning |
| 17:57:07 | evan | i'm working on a crash the new JIT work created |
| 17:57:10 | evan | then i'll push it |
| 17:57:19 | evan | and you can see the lean, svelt leaf methods |
| 17:57:26 | brixen | heh, sweet! |
| 17:58:04 | brixen | I wonder if openoffice could be written in ruby in less that 390MB |
| 17:58:18 | brixen | not that I'll probably ever know, but I wonder nonetheless |
| 17:58:19 | ddub | apparently it is going to be rewritten in java fx |
| 17:58:24 | ddub | ;-) |
| 17:59:15 | brixen | ohh, now how did I miss hearing about java fx |
| 17:59:37 | ddub | did you miss its announcement the last two years at java one? :) |
| 17:59:56 | brixen | apparently |
| 18:00:11 | ddub | http://blog.devx.com/2009/06/ellison-hints-at-oracles-java.html |
| 18:00:12 | brixen | well, they tout doing more with less code, so yeah |
| 18:01:28 | ddub | javafx is oracle/sun's flash/air/silverlight |
| 18:05:45 | boyscout | Remove cruft - 7c899d5 - Evan Phoenix |
| 18:05:45 | boyscout | Allow LLVM to create svelt leaf methods - 0c52ed9 - Evan Phoenix |
| 18:06:06 | evan | just to show you guys the nice progress |
| 18:06:13 | evan | for the method |
| 18:06:15 | evan | def foo: |
| 18:06:17 | evan | 1 |
| 18:06:18 | evan | and |
| 18:06:20 | evan | def foo |
| 18:06:23 | evan | 1 |
| 18:06:25 | evan | end |
| 18:06:34 | evan | http://pastebin.com/m2df1afd1 |
| 18:06:43 | evan | that is unladen-swallows representation of the 1st |
| 18:06:54 | evan | http://gist.github.com/123098 |
| 18:06:56 | evan | and rubinius of the 2nd |
| 18:16:26 | brixen | too bad they don't show the asm output |
| 18:16:38 | brixen | evan: is that unladen after llvm opts? |
| 18:16:52 | ddub | I never would have thought that 'return 1' would require so many instructions |
| 18:17:52 | brixen | evan: you should show the disasm of a C function of the same type against the rbx jit asm |
| 18:18:25 | ddub | ahaha http://www46.wolframalpha.com/input/?i=are+you+skynet%3F |
| 18:18:46 | brixen | heh, cute |
| 18:19:34 | scoopr | http://www60.wolframalpha.com/input/?i=what+is+best+in+life |
| 18:19:43 | evan | brixen: yes, thats after llvm opts |
| 18:20:04 | brixen | evan: holy crap dude |
| 18:20:17 | ddub | scoopr: nice! |
| 18:21:37 | ddub | hmph, wolfram alpha is useless |
| 18:21:38 | ddub | http://www60.wolframalpha.com/input/?i=where%27s+waldo |
| 18:22:04 | brixen | ddub: http://www60.wolframalpha.com/input/?i=are+the+best+things+in+life+free%3F |
| 18:22:36 | evan | http://www60.wolframalpha.com/input/?i=are+you+skynet%3F |
| 18:22:36 | ddub | didn't know what to do with my request |
| 18:22:51 | evan | probably the best wolfram alpha page |
| 19:45:18 | boyscout | Fixes on the x86_64 Object::hash code - 4edff84 - Daniel Luz |
| 19:51:50 | evan | oops! |
| 19:51:53 | evan | silly translated java code. |
| 20:09:09 | rue | Sure, blame Java |
| 20:09:16 | rue | (Seriously, please do) |
| 20:09:26 | evan | will do. |
| 20:09:31 | evan | i'll right a harshly worded letter |
| 20:09:41 | evan | write. |
| 20:09:43 | evan | UG. |
| 20:09:46 | evan | it must be lunch time. |
| 20:17:40 | rue | Huh, you are probably right, it is 19:17UTC...should probably have breakfast soon |
| 20:29:23 | rue | Weird. It compiles faster |
| 21:14:54 | ddub | e.z. mob? |
| 21:15:47 | ddub | o0lo;' |
| 21:16:01 | ddub | oops. On the bright side, my keyboard is now clean |
| 21:52:54 | evan | wow, PHP actually went forward and made \ their namespace seperator |
| 21:53:04 | evan | almost like a joke |
| 21:56:17 | brixen | a really really bad joke |
| 21:57:24 | evan | yeah, it's SOO unreadable! |
| 21:57:31 | evan | http://us3.php.net/manual/en/language.namespaces.rationale.php |
| 22:02:23 | brixen | who woulda thunk you could take the lamest parts of perl and improve on the lame |
| 22:02:43 | evan | seriously. |
| 22:10:22 | tarcieri | evan: yeah, it cracks me up |
| 22:10:31 | tarcieri | evan: I don't understand what the unresolvable ambiguity with "::" is |
| 22:10:52 | tarcieri | I can see potential cases where it would clash, but why can't they just have that cause an error |
| 22:11:00 | tarcieri | also apparently PHP *added* goto |
| 22:11:19 | tarcieri | in like 5.2 |
| 22:11:20 | evan | whAT? |
| 22:11:22 | evan | hahah |
| 22:16:43 | rue | Sweet |
| 22:17:46 | rue | evan: Obviously not a great test case, but only a small difference in full spec run |
| 22:17:54 | evan | yep |
| 22:17:54 | rue | The code is *nice*, though :) |
| 22:18:02 | evan | yeah, i'm super happy with the output |
| 22:18:09 | evan | we're moving in the right direction |
| 22:18:12 | rue | Actually, lemme run the Prawn tests again |
| 22:18:22 | evan | i'm fixing up Rubinius::VM.jit_info |
| 22:19:52 | headius | I love \ in php |
| 22:19:56 | headius | it's the cherry on top |
| 22:20:28 | evan | yeah |
| 22:20:41 | boyscout | A little renaming - 43937df - Evan Phoenix |
| 22:20:41 | boyscout | Fix IRB completion bug - cd62fdb - Evan Phoenix |
| 22:20:41 | boyscout | Fix Rubinius::VM.jit_info - 7e6f687 - Evan Phoenix |
| 22:22:33 | evan | So, Rubinius::VM.jit_info gives ya some nice stats now. |
| 22:22:46 | evan | for fun, d |
| 22:22:50 | evan | bin/rbx -Xjit.enabled |
| 22:23:04 | evan | then get a few of them to "see" the jit running in the background |
| 22:24:39 | evan | i turned irb completetion back on |
| 22:24:43 | evan | and was happy to see it worked fine! |
| 22:25:07 | ddub | the really disgusting PHP code is the C implementation underneath it all |
| 22:25:09 | ddub | void***'s |
| 22:25:25 | evan | yeah, wtf is with the void***'s |
| 22:25:39 | ddub | for when a void** is just not indirect enough |
| 22:25:40 | evan | do they really need 2 extra levels of indirection? |
| 22:26:05 | evan | void*** is really just "now, I know I put that data somewhere... <hunts around in a drawer>" |
| 22:26:28 | ddub | maybe its a linked list of every object in the system? |
| 22:26:45 | evan | wouldn't surprise me |
| 22:26:48 | evan | since they have no GC |
| 22:27:18 | ddub | why would you need a GC? just let the PHP impl crash, and memory is all cleaned up with the next browser request :P |
| 22:27:36 | evan | ZINGO |
| 22:42:19 | ddub | how is rubinius based on ponies? |
| 22:43:32 | evan | i write a pony |
| 22:43:37 | evan | and thus am ON the pony |
| 22:43:40 | evan | ride |
| 22:43:41 | evan | not write. |
| 22:43:45 | evan | le sigh. |
| 22:45:21 | headius | rite |
| 22:46:43 | tarcieri | how long until you replace ponies with unicorns? |
| 22:46:55 | evan | unicorns aren't real! |
| 22:46:58 | tarcieri | I have some interesting ideas for what could be done with the horn |
| 22:46:59 | tarcieri | :( |
| 22:47:04 | ddub | I thought unicorns were basically horny ponies |
| 22:47:20 | evan | i don't get near horny horses. |
| 22:49:46 | ddub | how about ponies and robots then? |
| 22:49:54 | evan | that might work. |
| 22:49:59 | ddub | cmon, the implementation should be 'robots all the way down' |
| 22:50:22 | ddub | or 'I, for one welcome our new robotic ruby overlords' |
| 22:50:29 | brixen | it should be rubies all the way down, but someone thought turtles were more interesting |
| 22:50:54 | ddub | thats because the core of the VM is written in LOGO |
| 22:52:19 | brixen | managing data is such a pain, I should make this bench harness emit to an sqlite db |
| 22:52:26 | ddub | I find it really odd that wolfram alpha exposes all of its information as images vs. html |
| 22:53:06 | ddub | I assume there is a deeper reason than the web designer not knowing about <table> |
| 22:53:40 | evan | ddub: more likely they don't want people to scrap |
| 22:54:03 | brixen | yeah, they want to protect all that computation |
| 22:54:32 | ddub | attempts to get it all in one go by searching for 'everything vs. everything else' |
| 22:54:55 | brixen | wow, ian curtis died on the day mt st helens erupted |
| 22:55:03 | brixen | the tidbits :) |
| 22:55:14 | evan | hah |
| 22:55:33 | ddub | how interesting that is would be directly related to where he was when he died |
| 22:55:44 | ddub | for instance, I'd be less impressed if he was at Mt. St. Helens that day |
| 22:56:12 | brixen | it doesn't mention mt st helens |
| 22:56:15 | brixen | I added that part |
| 22:56:23 | brixen | I'm smarter than wolfram alpha :) |
| 22:56:51 | brixen | thinks of the att commercials for 3g internet |
| 23:16:06 | runpaint | Does anybody know whether MRI 1.9 was meant to change the way $~ is restored after a #sub/#gsub block. It's causing RubySpec failures, and I'm trying to determine whether it's even possible that the new behaviour is intentional. This script illustrates the problem: http://gist.github.com/123279 . On 1.8 all conditionals are true; on 1.9 all false. :-/ |
| 23:17:27 | evan | let me check |
| 23:17:45 | runpaint | Thank you. :-) |
| 23:18:03 | evan | thats a bug in 1.9 |
| 23:18:13 | evan | i'm guessing |
| 23:18:27 | evan | it's important that $~ be the last match performed inside the block |
| 23:18:36 | evan | since the block is what needs to read it |
| 23:18:45 | evan | oh oh |
| 23:18:46 | evan | wait. |
| 23:19:04 | evan | match is clobbering it |
| 23:19:18 | evan | i've got no clue what they expected here. |
| 23:19:55 | runpaint | :-/ It works on 1.8, that's the thing. I'm glad I'm not the only one confused. |
| 23:20:02 | evan | yeah |
| 23:20:16 | evan | because sub, before it returns, sets $~ to be the match it got |
| 23:20:25 | evan | in 1.8 |
| 23:20:30 | evan | not sure what the deal is in 1.9 |
| 23:21:16 | runpaint | Thanks for the help. I guess I'll bug ruby-core again. :-) |
| 23:21:24 | evan | :) |
| 23:21:25 | evan | no prob |
| 23:22:03 | brixen | mega fail google docs on spreadsheet export :( |
| 23:22:21 | evan | :( |
| 23:22:27 | brixen | to xls it doesn't even send the formulas, just truncated computed values |
| 23:22:43 | brixen | to ods it sends them and half-asses the cell colors |
| 23:23:08 | brixen | html is the only thing that looks right |
| 23:23:20 | brixen | useful |
| 23:25:05 | evan | fun times |
| 23:33:55 | boyscout | Refactor and fix Tuple#at optimization - 0de7c70 - Evan Phoenix |
| 23:33:55 | boyscout | Add inline version of Tuple#put - 7039aca - Evan Phoenix |
| 23:38:25 | brixen | how effin ridiculous, they don't even use html that you can save to a file and view offline without messing with it |
| 23:38:28 | brixen | grr |
| 23:39:45 | headius | evan: you asked about $~ |
| 23:40:58 | headius | it uses some of the --fast plumbing now |
| 23:41:13 | headius | basically flagging method names that might access or set it |
| 23:51:19 | evan | headius: ok, it sees gsub in a method |
| 23:51:23 | evan | gsub called |
| 23:51:25 | evan | whats it do? |
| 23:51:47 | evan | it has to communicate something to gsub i'd think |
| 23:59:14 | headius | evan: why? |
| 23:59:21 | headius | it's just a static check right now |
| 23:59:37 | evan | i mean |
| 23:59:52 | evan | what does gsub do the the MatchData? |