Index

Show enters and exits. Hide enters and exits.

00:53:53evan$~, I hate you.
01:01:18rueHm, 70.1s for a full run
01:01:27rueBut -fa is slower than -fs o.O
01:01:48evanall that spinner awesomeness isn't free!
01:02:13rue10s worth?
01:02:27evanit's THAT awesome.
01:02:41evanit could probably use a bit of tuning
01:02:49rueI think it might have broken the awesomeness barrier
01:03:09rueOh, should probably not compile in the profiling stuff..lessee if this shaves a second or two off.
01:14:03rueWell, about 1,3s.
01:14:30rueAlmost 2% :P
01:14:41evanwithout profiling in?
01:17:41rueYes, building with RBX_NO_PROFILER
01:18:33evank
04:12:14sandalevan: 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:21sandalbrixen: thanks for your detailed response!
04:13:05sandalI'll be posting the stuff about RubySpec soonish
04:13:12sandalheadius: also thanks :)
04:14:49headiusI didn't have too much to add, but that was one important one
04:14:57headiusa hard one to cope with
04:15:19headiusthe even worse part is that there are no good tests *anywhere* for things like openssl
04:15:40sandalone thing that I can do with Unity is add a way to mark these dark spots
04:16:13sandalSort of like how on wikipedia articles, you can mark something as a stub
04:17:01sandalso 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:09sandali guess it might be hard still to find the domain efforts
04:18:19sandalbut an aggregated report of this could be useful
04:18:44sandalso that people with some domain knowledge might stumble across them on a list of 'complicated' spec topics
04:21:52headiusyeah, it would at least let us know where help is needed
04:24:28sandalI'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:38sandalrather than manually mark the dark corners
04:24:49sandal*aggregate
04:24:56sandalanyway, this is all a conversation for later
04:25:25sandalmy 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:00sandalofficial announcement will come out probably tomorrow, but for those who want to be early supporters:
04:42:04sandalhttp://pledgie.com/campaigns/4640
05:05:34rueCool
06:19:10brixensandal: cool beans
06:19:22brixenwas installing a ceiling fan
06:19:52sandalbrixen: before I disappeared the other day, did you get a chance to look at our mspec yaml changes?
06:20:05sandalI can pull it up for you if you didn't
06:20:13evangot back from Terminator
06:20:34brixensandal: ah yeah, only thing that stuck out was the use of %( instead of ""
06:20:53brixensandal: I couldn't see any reason for it so I'd like to keep consistent with ""
06:21:04brixenunless you have a good justification ;)
06:21:29sandalI doubt so, but Brad wrote it. I think I can safely just switch it
06:21:34brixenalso, some print calls used %( and some used ""
06:21:40brixenwhich was eww ;)
06:21:49evan%( ?
06:21:53evanwtf is this? perl?
06:21:53brixenfor strings
06:21:56brixenyeah
06:22:10sandalIt's likely that he used what was there, and then added his own special stuff :)
06:22:19brixenah ok
06:22:52brixenwell, put up a patch on rubyspec.org if you would
06:23:17sandalWill do, probably tomorrow
06:23:22brixenok
06:23:58sandalevan: 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:08sandalI can go either way, so it's up to you
06:24:44evanbrixen is the authority
06:24:46evanso i'm fine
06:25:14sandalgood deal. I'll roll that post tomorrow then.
06:25:32brixenevan: 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:52evan:D
06:26:00evana happy cohabitation
06:26:07brixen:)
06:26:10brixenok, bbiab..
07:06:53evanwoop!
07:07:00brixenwhat up?
07:07:10evangot enough code exposed to LLVM, and configured the right passes so that
07:07:57evanhttp://gist.github.com/122811
07:08:06evanthe top ruby method JITs to the stuff on the bottom
07:08:28evani've got enough stuff exposed that it's doing complete call frame elimination
07:08:35evanand not even bothering to setup an locals or anything
07:08:41evanit's striped it all away
07:08:44brixenvery cool
07:08:52evanleave the argument check and the return
07:08:57evanleaving
07:09:13rueExcellent
07:09:26rueDoes it hold for more complex (normal) method chains?
07:09:36evani'm about to find out
07:09:41evangotta start at the simple case first!
07:10:15rueHeh
07:10:49rueI am always surprised how reasonable the generated object code is
07:10:55evanyeah
07:11:20evanthat 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:39evanit leaves no doubt whats going on
07:12:28rueDefinitely helps to have it available, 'es
07:13:46evanooh
07:13:46evanrad
07:14:32evanwoop!
07:14:33evanhttp://gist.github.com/122814
07:14:41evanthats SOOOOO awesome
07:14:56evanit saw through all the indirection and everything
07:15:04evanand stripped everything away
07:15:17evanleaving pulling the 1st arg out of the Arguments struct and returning it
07:15:51brixenawesome
07:16:21evanthats SOO rad.
07:17:45brixenI have some Hash code that I'm eager to see how it handles
07:17:57evancool
07:18:00brixenfor example, I hand optimized #redistribute
07:18:04brixenit's very ugly
07:18:07evani'm doing the trivial cases still
07:18:13evanleaf methods
07:18:18brixenyeah
07:20:05evancleaning up "def foo; @blah; end" now
07:20:26evanwam bam thank you mam
07:20:27evandone.
07:20:28evan:D
07:20:33brixenexcellent, that I use a fair amount
07:23:46evanhm
07:23:54evanwhy would accessing an ivar raise an exception...
07:24:19evani've got the code checking the return from rbx_push_ivar for if it's an exception
07:24:23evanbut i don't think thats needed...
07:25:21brixenI can't think of a reason
07:25:30evank
07:27:36evanrad
07:27:39evanthis is so cool
07:27:55evannow that i've got the right ammount of code exposed, it's hitting it's stride
07:29:04evanponders...
08:18:25ddubstill pondering, evan?
08:37:54evanddub: had to get some info from the LLVM guys
08:51:08rueGot the ivar sorted?
08:52:06evanpretty sure
08:52:14evantrying something to see what the machine code looks like
09:05:01slavahi evan
09:05:49evanhey there
09:08:10slavai'm working on my register allocator
09:09:13evanoh? hows it going?
09:11:52slavaevan: pretty slowly
09:13:06slavaevan: I'm using the same algorithm as hotspot client now
09:13:21slavabut there's one part I haven't implemented yet
10:04:15rueslava: Which part?
10:07:41slavarue: just a technical detail called the resolve pass
10:08:19slavahttp://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:26slavait would be faster than v8 if my gc didn't suck
10:11:08rueHehe, good work still, though
10:12:10rueSo multiple passes, presumably?
10:12:23slavain the gc?
10:14:59slavathe benchmark allocaes ~120 mb of memory and the heap grows several times, and everything is copied several times
13:09:22lypanovum
13:09:23lypanovNo method 'to_description' on an instance of NilClass. (NoMethodError)
13:09:29lypanovrubinius doesn't love me :(
13:11:36lypanovany known issues with readline that might cause the above?
14:15:02ruelypanov: Yes, GCC 4.2.1 on OS X at least
14:15:30lypanovahhh k. bummer. any work around?
14:15:39ruelypanov: You can do a build:debug without problems (-O2 triggers it), or set CC to some other version
14:16:35rueAlso, RBX_LLVM=1 for the build so JIT is available
14:16:53rueThen, once built, pass in -Xjit.enabled to actually use it
14:18:07ruelypanov: It is not readline, specifically, it is the compiler. You would see the same trying to run specs etc.
15:39:43lianhello, how do i eval an sexp-object in the vm? like => eval "1+1".to_sexp ?
15:41:18lianor do i only need to 'execute' it, coz eval compiles the string anyways to a sexp?
15:44:24liani 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:54rueYes, 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:37lianthanks. is there a buildin Ruby2Ruby.translate and the reverse in rubinius?
16:06:00ddubkids today, all they ever think about is sexp
16:07:39lian;D
16:36:02brixenlian_: there is no sexp -> source translation in rubinius
17:27:50ddublets talk about sexp bay-bee, lets talk about (and you me)
17:42:52brixenddub: (and you me) ? getting lispy on us :)
17:53:08ddubI'm just scheming
17:54:21evanmornings
17:55:15ddubhellos!
17:56:54brixenmorning
17:57:07evani'm working on a crash the new JIT work created
17:57:10evanthen i'll push it
17:57:19evanand you can see the lean, svelt leaf methods
17:57:26brixenheh, sweet!
17:58:04brixenI wonder if openoffice could be written in ruby in less that 390MB
17:58:18brixennot that I'll probably ever know, but I wonder nonetheless
17:58:19ddubapparently it is going to be rewritten in java fx
17:58:24ddub;-)
17:59:15brixenohh, now how did I miss hearing about java fx
17:59:37ddubdid you miss its announcement the last two years at java one? :)
17:59:56brixenapparently
18:00:11ddubhttp://blog.devx.com/2009/06/ellison-hints-at-oracles-java.html
18:00:12brixenwell, they tout doing more with less code, so yeah
18:01:28ddubjavafx is oracle/sun's flash/air/silverlight
18:05:45boyscoutRemove cruft - 7c899d5 - Evan Phoenix
18:05:45boyscoutAllow LLVM to create svelt leaf methods - 0c52ed9 - Evan Phoenix
18:06:06evanjust to show you guys the nice progress
18:06:13evanfor the method
18:06:15evandef foo:
18:06:17evan 1
18:06:18evanand
18:06:20evandef foo
18:06:23evan 1
18:06:25evanend
18:06:34evanhttp://pastebin.com/m2df1afd1
18:06:43evanthat is unladen-swallows representation of the 1st
18:06:54evanhttp://gist.github.com/123098
18:06:56evanand rubinius of the 2nd
18:16:26brixentoo bad they don't show the asm output
18:16:38brixenevan: is that unladen after llvm opts?
18:16:52ddubI never would have thought that 'return 1' would require so many instructions
18:17:52brixenevan: you should show the disasm of a C function of the same type against the rbx jit asm
18:18:25ddubahaha http://www46.wolframalpha.com/input/?i=are+you+skynet%3F
18:18:46brixenheh, cute
18:19:34scooprhttp://www60.wolframalpha.com/input/?i=what+is+best+in+life
18:19:43evanbrixen: yes, thats after llvm opts
18:20:04brixenevan: holy crap dude
18:20:17ddubscoopr: nice!
18:21:37ddubhmph, wolfram alpha is useless
18:21:38ddubhttp://www60.wolframalpha.com/input/?i=where%27s+waldo
18:22:04brixenddub: http://www60.wolframalpha.com/input/?i=are+the+best+things+in+life+free%3F
18:22:36evanhttp://www60.wolframalpha.com/input/?i=are+you+skynet%3F
18:22:36ddubdidn't know what to do with my request
18:22:51evanprobably the best wolfram alpha page
19:45:18boyscoutFixes on the x86_64 Object::hash code - 4edff84 - Daniel Luz
19:51:50evanoops!
19:51:53evansilly translated java code.
20:09:09rueSure, blame Java
20:09:16rue(Seriously, please do)
20:09:26evanwill do.
20:09:31evani'll right a harshly worded letter
20:09:41evanwrite.
20:09:43evanUG.
20:09:46evanit must be lunch time.
20:17:40rueHuh, you are probably right, it is 19:17UTC...should probably have breakfast soon
20:29:23rueWeird. It compiles faster
21:14:54ddube.z. mob?
21:15:47ddubo0lo;'
21:16:01dduboops. On the bright side, my keyboard is now clean
21:52:54evanwow, PHP actually went forward and made \ their namespace seperator
21:53:04evanalmost like a joke
21:56:17brixena really really bad joke
21:57:24evanyeah, it's SOO unreadable!
21:57:31evanhttp://us3.php.net/manual/en/language.namespaces.rationale.php
22:02:23brixenwho woulda thunk you could take the lamest parts of perl and improve on the lame
22:02:43evanseriously.
22:10:22tarcierievan: yeah, it cracks me up
22:10:31tarcierievan: I don't understand what the unresolvable ambiguity with "::" is
22:10:52tarcieriI can see potential cases where it would clash, but why can't they just have that cause an error
22:11:00tarcierialso apparently PHP *added* goto
22:11:19tarcieriin like 5.2
22:11:20evanwhAT?
22:11:22evanhahah
22:16:43rueSweet
22:17:46rueevan: Obviously not a great test case, but only a small difference in full spec run
22:17:54evanyep
22:17:54rueThe code is *nice*, though :)
22:18:02evanyeah, i'm super happy with the output
22:18:09evanwe're moving in the right direction
22:18:12rueActually, lemme run the Prawn tests again
22:18:22evani'm fixing up Rubinius::VM.jit_info
22:19:52headiusI love \ in php
22:19:56headiusit's the cherry on top
22:20:28evanyeah
22:20:41boyscoutA little renaming - 43937df - Evan Phoenix
22:20:41boyscoutFix IRB completion bug - cd62fdb - Evan Phoenix
22:20:41boyscoutFix Rubinius::VM.jit_info - 7e6f687 - Evan Phoenix
22:22:33evanSo, Rubinius::VM.jit_info gives ya some nice stats now.
22:22:46evanfor fun, d
22:22:50evanbin/rbx -Xjit.enabled
22:23:04evanthen get a few of them to "see" the jit running in the background
22:24:39evani turned irb completetion back on
22:24:43evanand was happy to see it worked fine!
22:25:07ddubthe really disgusting PHP code is the C implementation underneath it all
22:25:09ddubvoid***'s
22:25:25evanyeah, wtf is with the void***'s
22:25:39ddubfor when a void** is just not indirect enough
22:25:40evando they really need 2 extra levels of indirection?
22:26:05evanvoid*** is really just "now, I know I put that data somewhere... <hunts around in a drawer>"
22:26:28ddubmaybe its a linked list of every object in the system?
22:26:45evanwouldn't surprise me
22:26:48evansince they have no GC
22:27:18ddubwhy 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:36evanZINGO
22:42:19ddubhow is rubinius based on ponies?
22:43:32evani write a pony
22:43:37evanand thus am ON the pony
22:43:40evanride
22:43:41evannot write.
22:43:45evanle sigh.
22:45:21headiusrite
22:46:43tarcierihow long until you replace ponies with unicorns?
22:46:55evanunicorns aren't real!
22:46:58tarcieriI have some interesting ideas for what could be done with the horn
22:46:59tarcieri:(
22:47:04ddubI thought unicorns were basically horny ponies
22:47:20evani don't get near horny horses.
22:49:46ddubhow about ponies and robots then?
22:49:54evanthat might work.
22:49:59ddubcmon, the implementation should be 'robots all the way down'
22:50:22ddubor 'I, for one welcome our new robotic ruby overlords'
22:50:29brixenit should be rubies all the way down, but someone thought turtles were more interesting
22:50:54ddubthats because the core of the VM is written in LOGO
22:52:19brixenmanaging data is such a pain, I should make this bench harness emit to an sqlite db
22:52:26ddubI find it really odd that wolfram alpha exposes all of its information as images vs. html
22:53:06ddubI assume there is a deeper reason than the web designer not knowing about <table>
22:53:40evanddub: more likely they don't want people to scrap
22:54:03brixenyeah, they want to protect all that computation
22:54:32ddubattempts to get it all in one go by searching for 'everything vs. everything else'
22:54:55brixenwow, ian curtis died on the day mt st helens erupted
22:55:03brixenthe tidbits :)
22:55:14evanhah
22:55:33ddubhow interesting that is would be directly related to where he was when he died
22:55:44ddubfor instance, I'd be less impressed if he was at Mt. St. Helens that day
22:56:12brixenit doesn't mention mt st helens
22:56:15brixenI added that part
22:56:23brixenI'm smarter than wolfram alpha :)
22:56:51brixenthinks of the att commercials for 3g internet
23:16:06runpaintDoes 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:27evanlet me check
23:17:45runpaintThank you. :-)
23:18:03evanthats a bug in 1.9
23:18:13evani'm guessing
23:18:27evanit's important that $~ be the last match performed inside the block
23:18:36evansince the block is what needs to read it
23:18:45evanoh oh
23:18:46evanwait.
23:19:04evanmatch is clobbering it
23:19:18evani've got no clue what they expected here.
23:19:55runpaint:-/ It works on 1.8, that's the thing. I'm glad I'm not the only one confused.
23:20:02evanyeah
23:20:16evanbecause sub, before it returns, sets $~ to be the match it got
23:20:25evanin 1.8
23:20:30evannot sure what the deal is in 1.9
23:21:16runpaintThanks for the help. I guess I'll bug ruby-core again. :-)
23:21:24evan:)
23:21:25evanno prob
23:22:03brixenmega fail google docs on spreadsheet export :(
23:22:21evan:(
23:22:27brixento xls it doesn't even send the formulas, just truncated computed values
23:22:43brixento ods it sends them and half-asses the cell colors
23:23:08brixenhtml is the only thing that looks right
23:23:20brixenuseful
23:25:05evanfun times
23:33:55boyscoutRefactor and fix Tuple#at optimization - 0de7c70 - Evan Phoenix
23:33:55boyscoutAdd inline version of Tuple#put - 7039aca - Evan Phoenix
23:38:25brixenhow effin ridiculous, they don't even use html that you can save to a file and view offline without messing with it
23:38:28brixengrr
23:39:45headiusevan: you asked about $~
23:40:58headiusit uses some of the --fast plumbing now
23:41:13headiusbasically flagging method names that might access or set it
23:51:19evanheadius: ok, it sees gsub in a method
23:51:23evangsub called
23:51:25evanwhats it do?
23:51:47evanit has to communicate something to gsub i'd think
23:59:14headiusevan: why?
23:59:21headiusit's just a static check right now
23:59:37evani mean
23:59:52evanwhat does gsub do the the MatchData?