Index

Show enters and exits. Hide enters and exits.

00:10:24joqueonrhi all
00:10:44joqueonrI am having some trouble install rubinius with rvm on OS X 10.6
00:11:03Suttojoqueonr: not on the rubinius side, but on the rvm side - have you got a log?
00:11:25joqueonryeah
00:12:01Suttois it to do with it not being able to find rake?
00:12:07joqueonrerror: Error running '/Users/joque/.rvm/bin/ruby-1.8.7-p174 -S rake install'
00:12:10joqueonrerror mesage
00:12:16joqueonrpart of the log says
00:12:53joqueonrI think so
00:13:43joqueonrwell I got this at the tail of rake.error.log
00:13:45joqueonri686-apple-darwin10-g++-4.2.1: invalid version number `'
00:13:46joqueonrmake[3]: *** [/Users/joque/.rvm/src/rbx-1.0.1-20100603/vm/external_libs/llvm/Release/lib/LLVMHello.dylib] Error 1
00:13:59Suttocould you gist the whole log?
00:14:05joqueonrok
00:18:03joqueonrthere you go
00:18:05joqueonrhttps://gist.github.com/feff783842c905a88ff5
00:19:52Suttoany chance you can also gist rvm info?
00:19:59Suttoit's a different bug to what I was expecting
00:22:07joqueonrhttps://gist.github.com/d045a2b56db5325c8a35
00:23:24Suttojoqueonr: only thing I can think of at the moment is rm ~/.rvm/src/rbx-* ~/.rvm/archives/rubinius-*; rvm update --head; rvm reload; rvm install rbx
00:23:51joqueonrok
00:23:54joqueonrlet me try it
00:36:56joqueonrNope
00:37:00joqueonrdidn't work
00:37:09joqueonrtrying to reinstall rake and see
00:38:24Suttodoesn't look like a rake issue, looks like an issue with your system
00:38:38Suttojoqueonr: oh, looking again - what does which sed show?
00:40:33Suttolooks like it's trying to call a wrong sed (the default osx sed on my system supports -E)
00:42:02joqueonrdo you mean -e?
00:42:23Suttono, -E
00:42:31Suttowhich is in the log
00:42:55Suttoit's /usr/bin/sed for me + -E turns on extended regexps
00:43:13joqueonrlet me check my path
00:43:18joqueonrbut it should be fine
00:48:30joqueonrchanged the path to /usr/bin/sed
00:48:36joqueonrwill try again and see
01:03:00joqueonrNow it went through
01:03:10joqueonrthank a lot
01:07:02Suttonp
13:11:18goyox86Hi all!
13:17:40dbussinkg'day
13:46:06cremesevan: i want to drop you a private email about fixing up my git privileges; should i use the fallingsnow addr?
14:54:36dbussinkcremes: all code is on github, fallowsnow is not used
14:55:57cremesdbussink: i think you misinterpreted my message; i want to send evan a private email and want to use the right address
14:56:01cremeshas nothing to do with code
14:58:37dbussinkcremes: ah ok, sorry :)
14:58:59dbussinkcremes: you can check the ml to see what he uses
14:59:21cremesnp; i just discovered i have two github accounts (cremes & chuckremes); all of my projects are under the chuckremes account but my
14:59:33cremesrbx commit privileges are attached to the cremes account that i want to delete
14:59:37cremesit's a tiny mess
15:00:10cremesonce i get it worked out i am hoping to be a bit more active in contributing
15:10:35dbussinkcremes: ah, changing nicks is usually a hairy business ::
15:10:36dbussink:P
16:32:30evanrad new optimization
16:33:02evanHash#each when inlined with the block avoids creating the array the key, value are in
16:48:29dbussinkevan: cool :)
16:49:10dbussinkevan: hand crafted optimization?
16:49:22evanon this Hash#each benchmark, rbx is 1.6s, MRI is 7.1s
16:49:25evanyeah
16:49:33dbussinkevan: what was rbx before
16:49:33dbussink?
16:49:34evani'm detecting this case in the bytecode
16:49:46evani've done a bunch of optimizations
16:49:49evanlets see on 1.0.1
16:50:01dbussinki can run it here on latest master
16:50:06dbussinkif you have the bench
16:50:14evanon 1.0.1, no block inlining, it's 13s
16:50:31evanso 13s is what people would see now
16:50:39evanand it's going to bump down to 1.6s
16:50:40evan:D
16:50:58evanwith jit.inline.blocks on in 1.0.1, it's 12s
16:51:04evanbecause i've been tuning inline blocks
16:51:09evanit works quite a bit better now.
16:51:17dbussinkawesome stuff :)
16:51:30dbussinki'll run it on datamapper too then :P
16:54:34dbussinkevan: any other area's that would benefit from the optimizations?
16:54:39dbussinkor pretty hash.each specific?
16:54:49evanoh, it's not specific to Hash#each at all.
16:54:52dbussinkdunno if that bytecode recognition is generalizable?
16:55:03evanit's detecting the sequence
16:55:07evanyield [k, v]
16:55:14evanthe inside of the array can be anything actually
16:56:14evani'm testing edge cases now.
16:56:18evansince there are so many with block args.
16:59:08dbussinkevan: ah, is adding specs for stuff like this hard?
16:59:15evanyes.
17:02:40dbussinki can imagine yeah :P
17:02:50dbussinkbut otherwise i can imagine a wild array of obscure bugs
17:03:24evanright
17:03:36evanso i have to be careful with my initial testing.
17:03:45evanmuch more careful than a normal change
17:07:43dbussinkevan: yeah, can imagine
17:08:10dbussinkanything you're doing by perhaps triggering the optimization explicitly and then see if it's ok?
17:08:44evanbut if i do that
17:08:50evanthats not how it's hit for real
17:08:55evanso i'm fabricating a usage
17:09:10evanthe only real way is to run code that should use the optimization
17:09:16evanand see that I get the proper output
17:10:53evanthanks!
17:11:00brixenevan: gotta drop my bike off for maintenance
17:11:05evank
17:11:07brixenshould be back in 30
17:11:21evanbrixen: sounds good.
17:11:26brixenevan: almost have next running ensures
17:11:34evanok
17:11:37brixenI have a bunch of specs
17:11:48evank
17:11:48brixenit's a nasty lil beotch
17:12:02evanheh
17:12:17brixenbut I really needed to wade through to understand it
17:12:25brixenanyway, bbiab...
17:29:02dbussinkevan: i could hammer your changes with a bunch of stuff if you want to :)
17:30:06boyscoutAdd spec for Array#pack('M') with a multibyte set - 4e39f0a - Dirkjan Bussink
17:30:06boyscoutMake sure to encode each byte, since it might be multiple bytes if a multibyte is set - 7874be1 - Dirkjan Bussink
17:38:10boyscoutCI: rubinius: 7874be1 successful: 3456 files, 13608 examples, 41172 expectations, 0 failures, 0 errors
17:46:33dbussinkevan: that should fix those mail errors
17:46:40evancool
17:46:45evango ahead and close the ticket.
17:46:53evanoh wait, the other issue is next/ensure
17:48:37dbussinkevan: yeah, brixen is looking at that
18:06:21dbussinkevan: btw, if you're looking at yielding arrays, #374 might be interesting too
18:06:21evanit's something else
18:06:21evanbut yeah.
18:18:47brixencrosses fingers
18:18:57brixenall the language specs pass with new next behavior
18:19:04brixenrunning all specs now
18:22:10evank
18:23:09brixenwoop! just the compiler specs barfed
18:23:15brixenwhich is expected atm
18:25:36evanbrixen: i'm waiting to see how you handled tihs
18:26:13brixenI'm sure you are! :)
18:26:21brixensec, I'll give ya a gist
18:26:27evank
18:26:29brixenlest you have large worries :P
18:26:45evan:D
18:27:08brixenthinks evan thinks he will randomly break things :P
18:27:16evannah!
18:27:26evanjust curious to see which solution you went for
18:27:36brixenI'm going to try a little refactor on Next
18:27:43brixenand a couple more specs I just thought of
18:27:49brixenwell, I handled it much like you do break
18:27:57brixensince it's the same kind of deal
18:28:11brixenkey point though is slightly adjusting how the body of a loop is emitted
18:28:55brixenthe loop needs to have a post that next jumps to, instead of jumping to the "top" directly
18:29:08brixenat least, this is the only way I could get the stack to balance
18:29:19brixenbut first, a couple more spec cases...
18:29:52evanyeah
18:29:55evanthats the way to handle that.
18:30:02evandid you use lazy labels?
18:30:06brixenyes! :)
18:30:13brixenthey are da bomb
18:30:20evanyeah
18:31:03evanthey let us basically do use based peephole optimization
18:31:21brixenahh yeah
18:50:03evanspastorino: ?
18:51:20dbussinkbrixen: btw, i pushed a spec for that kcode / pack interaction, if you want to shoot at it, please go ahead :)
18:52:00brixendbussink: you mean critique it?
18:52:59dbussinkbrixen: yeah
18:53:17brixendbussink: ok, I'll take a look
18:53:23brixendbussink: thanks for working on it
18:53:56wycatsspastorino, evan: hello
18:54:09spastorinoevan: hi
18:54:11dbussinkbrixen: np, working on some totally different things is good for getting my mind in shape ;)
18:54:22brixendbussink: heh, indeed :)
18:54:22evanwycats: hello.
18:54:30brixenspastorino: hi!
18:54:36brixenwycats: hello!
18:54:37wycatsspastorino: how many rbx fails are you seeing on Rails 3 master?
18:54:38spastorinobrixen: hi!!
18:54:48spastorinolet me do a pastie
18:55:09spastorinoi'm using rbx 1.0.1
18:55:10wycatsspastorino's vaio is our CI box :(
18:55:18spastorinohahahaha
18:56:59spastorinohttp://gist.github.com/451865
18:57:24spastorino<" class=\"fancy\" onclick=\"alert('Hello World');\""> expected to be == to<" onclick=\"alert('Hello World');\" class=\"fancy\"">. this ones are easy :P
18:57:34dbussinkspastorino: has ordering dependency :)
18:57:42spastorinoyeah
18:57:53evanyeah
18:57:54evanthats easy
18:57:54dbussinkguess there are also some mixups for GMT / UTC as TZ names
18:57:56evanthats a testing bug.
18:58:00dbussinkthat should be easy too
18:58:05dbussinkor is there something tricky behind that?
18:58:53evansomeone needs to just pull that code out
18:58:58evanand see what rails is doing with it
18:59:05evani'm betting it's just a missed case of preserving the timezone
18:59:14evanactually, not even
18:59:17evansince UTC == GMT
18:59:21evanit's just a naming issue.
19:00:48spastorinoi will be out for a bit guys, i will read later and try fixes and run my CI again :P
19:00:54spastorinoseeya
19:01:20dbussinkevan: probably just silly naming yeah
19:01:43wycatsevan: it would be great if we could say the RC was 100% green on rbx
19:01:43evanspastorino: bye.
19:01:47evansure
19:01:50evani'm sure thats doable.
19:02:42wycatswe're a short bit of time away from RC :)
19:02:44dbussinkcool to see people are more and more doing it
19:03:04dbussinkit's part of our release / test process for datamapper too already :)
19:04:04wycats:-D
19:04:11wycatsdbussink: if we get solid CI going, we'll put rbx on it
19:04:21dbussinkwycats: that's a rubysoc right?
19:04:23wycatsanyone who commits to 100% green on Rails is good in my book
19:04:35wycatsunfortunately, rbx is the only alternate impl currently dedicated to that :(
19:04:50wycatsnicksieger: fix that plz?
19:04:50wycats:P
19:05:28nicksiegerwycats: so http://ci.jruby.org/view/Rails/ does not constitute a commitment?
19:05:43wycatsnicksieger: just get green
19:05:47wycatsand commit to staying green :(
19:06:03wycatsnicksieger: I don't like seeing slides where IronRuby and JRuby are like "omg only 10 fails"
19:06:05wycatsit makes me sad :(
19:06:30wycatsnicksieger: I know you guys are trying... don't mean to start something here
19:36:05evanbrixen: i'm ready to push a bunch of stuff
19:36:10evanbut i'll wait for you
19:36:14evansounds like you're almost done.
19:36:32evani'm going to grab some lunchified food stuffs.
19:37:00brixenI'm lunching sorta
19:37:07brixenpush whenever
19:37:16brixenI'm fixing up the compiler specs
19:38:42evank
19:42:30dbussinkevan: i'm curious :)
19:42:45evanpushing
19:42:48boyscoutConvert Hash to use #each_entry instead of #to_iter. @perf - f853b86 - Evan Phoenix
19:42:48boyscoutRemove extranious cast_array from bytecode - b5eff27 - Evan Phoenix
19:42:48boyscoutFix -Xjit.profile to provide JIT specific output - 8e6293d - Evan Phoenix
19:42:48boyscoutInline policy work and block inlining optimizations - d65ad57 - Evan Phoenix
19:43:08evan-Xjit.inline.blocks is still off by default
19:43:14evandbussink: run your specs with it on
19:43:17evanlet me know how it odes
19:43:18evangoes
19:43:21dbussinkevan: ok, will do :)
19:43:26evanbbiab.
19:54:06boyscoutCI: rubinius: d65ad57 successful: 3456 files, 13608 examples, 41172 expectations, 0 failures, 0 errors
20:23:48dbussinkevan: ok, looks like i've got a failure
20:24:12evanok
20:24:31dbussinkevan: let me find which commit
20:25:01evank
20:35:47brixenevan: what time do you get into sf?
20:41:00evandouble checking...
20:41:17evan6:20
20:42:33brixenok
20:42:49brixensuss said he has the evening free, so I said we reserve it :)
20:43:14brixenI don't get in till 7:40 though
20:43:23brixeny'all will have to start the party without me
20:45:24evanhah
20:45:25evanok
20:48:15evanbrixen: where's the next/rescue fix?
20:48:16evan:)
20:49:32brixencoming
20:49:39brixenare you blocked on it?
20:50:13brixenI'm cleaning up my commits since I started working on this is the middle of my pack spec work
20:50:57brixengit rb -i being the cat's meow
20:51:40evanno, not blocked.
20:51:42evanjust curious!
20:52:31evandbussink: whats the failure?
20:55:33dbussinkevan: ok, it's in the last commit
20:55:39evanok..
20:55:41evanwhats the failure?
20:55:52dbussinkAn exception occurred running /Users/dirkjan/Documents/projects/rubinius/gems/1.8/gems/rspec-1.3.0/bin/spec
20:55:52dbussink no method 'zero?' on an instance of Object. (NoMethodError)
20:55:58dbussinkthe object is 0x45 here
20:56:06evan:/
20:56:09evanobject_id?
20:56:16evanor reference?
20:56:27evanplease gist me the whole backtrace
20:57:38dbussinkevan: https://gist.github.com/607b1b49286412b1666f
20:59:39evandbussink: ok
21:00:22dbussinkevan: i outputted the object there that was passed into timeout, it showed up as Object 0x45
21:00:27dbussinkinspect that is
21:00:58evanoutput how?
21:01:05evanle sigh.
21:01:35evani'm feeling like the little errand boy today
21:03:05dbussinkevan: just a "p sec" inside lib/timeout.rb:134
21:03:12dbussinkevan: just very dumb debugging
21:03:13evanok
21:03:16evanthats all I needed to know.
21:03:26evanthe issue is whatever is passing sec to Timeout.timeout
21:03:33evanso I have to figure out the inside of rspec now
21:03:34evanYAY!
21:03:36evanO_o
21:04:05dbussinkrspec is such fun!
21:04:22dbussinkevan: at least it crashes reliable for me here
21:05:08evanthat is good.
21:05:37evanthat value comes from optparse
21:06:07dbussinkevan: the thing is that that timeout is called all the time and only at a later point it breaks
21:06:28evanright
21:06:33evani figured as much.
21:08:59evannow, how to get this to pop up...
21:10:46dbussinkevan: well, i can give you the steps to repro with the datamapper specs
21:10:50dbussinkbut that's quite a setup to do
21:11:01evango ahead
21:11:50dbussinkok, i have 1e5398267798862e4a1b641e66f91d1385b26e8c from datamapper/dm-core on github here now
21:12:25dbussinkthese are the dependencies: https://gist.github.com/559b07ae814fdda82705
21:12:43dbussinkafter those are available, just doing rake spec in the dm-core directory should give the repro
21:14:47evanhow were you running with -Xjit.inline.blocks?
21:14:50evanor were you not
21:14:56dbussinkevan: nope, no additional options
21:15:01evanfuck me.
21:15:14evan: (: (: (: :(
21:15:21dbussinkevan: what is it?
21:15:29evanthat means i broke normal operations
21:15:38evannot just block inlining weirdness
21:15:45evanwhich I hate doing.
21:16:22evandm-core won't run
21:16:26evanit complains about dm-migrations being missing.
21:16:49evando I need to have that gem installed?
21:17:06evanand if so, why is that in the gemspec dependencies?
21:17:33dbussinkevan: for now just install it
21:17:39evank, i idd.
21:17:46dbussinkevan: shouldn't be needed for in memory specs thoiugh
21:17:48dbussinkthough
21:18:20evani just ran "rbx -S rake spec"
21:18:29evanwas I supposed to run them a different way?
21:18:38dbussinkthat should be ok, it didn't start running stuff?
21:18:46evanit's running now
21:18:48dbussinkah ok
21:19:00evanseriously wtf is with pending specs?
21:19:00dbussinkonly blows up after a while for me here
21:19:09evanwhy do people write them?
21:19:28dbussinkmainly because there are a lot of shared specs that are run against different constructs
21:19:37dbussinkand m:n relations don't support everything (yet)
21:24:23dbussinkevan: any failures for you yet?
21:24:33evanyeah
21:24:34evani see it
21:24:36evanat the very end.
21:24:43evangoing to be a bitch to iterate on.
21:24:57dbussinkwell, it's not done yet at that moment even (at least not when it crashes here)
21:25:06dbussinkbut i can imagine that it's a really annoying one
21:25:14dbussinkgood case for the new debugger? ;)
21:25:48evannot really
21:25:57evanif it's a JIT bug, then the debugger will defeat the JIT.
21:26:10evanrunning with -Xint to make sure it's a JIT bug.
21:27:32dbussinkevan: ok, i'm going to head to bed now though
21:27:36dbussinkevan: you need anything more?
21:27:41dbussinkbesides this torture test? :P
21:27:55evannope
21:27:55evannite.
22:38:31fr0steis it possible to compile rubinius on windows?
22:39:52evannot at the moment, no
22:40:11evanbut i'd be happy to get some help from a windows dev on that front
22:47:45fr0stehas anything been started or documented on what it might take to get it to build on windows?
23:09:19evanfr0ste: there has been some work
23:09:34evanI need to fix loading symbols from the current process
23:16:40boyscoutGuard for returning undef from a packed object - 1e4bff0 - Evan Phoenix
23:25:00boyscoutCI: rubinius: 1e4bff0 successful: 3456 files, 13608 examples, 41172 expectations, 0 failures, 0 errors
23:35:12boyscoutBenchmarks for #pack('C<N>'). - e636024 - Brian Ford
23:35:12boyscoutEnable passing arguments via be_computed_by matcher. - 88d2c4a - Brian Ford
23:35:12boyscoutBegin fixing Array#pack specs. - 73296f3 - Brian Ford
23:35:12boyscoutSpecs for next running ensure blocks. - 44bd014 - Brian Ford
23:35:12boyscoutFixed next running ensures. - 4808eb1 - Brian Ford
23:35:34brixenevan: there ya go! check it :)
23:35:57evan:)
23:36:09evanJust added ObjectSpace.find_references
23:36:15brixensweet
23:36:30evana memory leak you say? we've got tools for that!
23:36:50brixennice!
23:37:54brixenwe should do a series of screen casts in the "there's an app for that" style of commercial
23:38:06evan:D
23:38:09brixenbut has to have really good music! :)
23:38:22brixencus that's what makes those commercials
23:38:29brixencompare M$ Zune commercials
23:38:32brixen<eye roll>
23:38:54evanok, so you moved where check_interrupts is checked?
23:39:01brixenyeah
23:39:13brixenbut it should be the same
23:39:16evank
23:39:17brixenfunctionally
23:39:20brixendouble check it
23:39:23evanso long as we're doing it once per loop.
23:39:28evani will in a sec
23:39:28brixenI didn't have to change any specs for it
23:39:31evangoing through the diff atm.
23:39:36evanok
23:39:37brixenyeah, diffs are hard
23:39:56brixenyou can just read class Next, class While, and class Ensure in lib/compiler/ast
23:40:19brixento me, it makes much more sense to have check_interrupts an integral part of loop
23:40:25brixenrather than in multiple places
23:40:34brixenbut that was a refactor
23:40:36evanyeah, i am..
23:40:46brixenthe next fix is independent of that
23:40:54evani'm curious who is consuming the stack value next puts on the stack in the loop case
23:41:07evanoh, you put the post before a pop
23:41:12brixenthe loop body
23:41:15brixenyeah
23:41:15evanso you're jump to the bottom of the loop body
23:41:21evanwhich pops, checks interrupts, and goes on.
23:41:22evanok
23:41:27brixenyes, to an epilogue as it were
23:41:38brixenthat should be computationally idempotent
23:41:45evanyeah
23:41:48evanthats no biggy.
23:41:54brixenthe problem otherwise is nested ensures
23:42:01brixenthey will make you curse
23:42:04brixenrepeatedly
23:42:39brixennote the specs for this bitch^W next w/ ensure thing
23:43:41evanok, looks good
23:43:45brixensweet!
23:43:50brixenpasses the specs too :D
23:43:56evanyeah, you just had to get the lazy local jump from the ensure to work right
23:43:57evanstack wise
23:43:58evanI suspect.
23:44:32brixenyep
23:44:40boyscoutCI: rubinius: a7e8b4b successful: 3457 files, 13653 examples, 41219 expectations, 0 failures, 0 errors
23:44:47brixenthat was the key, rearranging how the body of the loop was emitted
23:44:59brixenby body, I mean @body.bytecode(g); g.pop
23:45:15evanyay for having our bytecode compiler in ruby
23:45:21brixenthat little g.pop cause me a few hours of joy yesterday
23:45:22evanthat has paid off so many times
23:45:23evani can't count.
23:45:26brixenyep!
23:45:28brixensoo nice
23:45:37evanaah
23:45:45evanwe were blindly poping the body, gotcha.
23:45:49brixenyeah
23:46:00evanand yay again for stack locals!
23:46:06brixenoh man, so nice
23:46:12evanso nice to have some state in a method that isn't stack location bound.
23:46:16brixenyep
23:46:29brixenI was pondering a way to abstract the pattern into a utility method in generator
23:46:40brixenutility method/construct
23:46:48brixenbut anyway, they are so useful
23:47:58evanwe'll figure out a good abstraction eventually
23:48:05brixensure
23:48:26evanan object for it might be nice
23:48:26evanactually
23:48:38evansl = g.stack_local "foo"
23:48:45evanyou can then do
23:48:50evansl.push
23:48:57evanand sl.set
23:49:10brixenyeah, nice
23:49:20evanit can either capture it's g
23:49:25evanor require it to be passed in
23:49:56brixenyeah, either works pretty good
23:50:03brixenwe capture with labels, which works nice
23:50:09evanyeah
23:50:39brixenso, another thing about the bytecode compiler that I like, it's simple
23:50:54brixenthe JIT does all the weird stuff
23:50:56evanok, so you leave next's argument on the stack the whole time while the ensure code runs
23:51:09brixenso you have a rather pristine IR in a sense
23:51:16evanoh yeah, totally.
23:51:41brixenyeah, I left the arg on there
23:51:47brixenI suppose we could pop it
23:52:29brixenbasically ensures next has a value just like any loop body
23:52:54brixens/ensures/makes sure/ to avoid confusion :)
23:53:40evanthere is a funny sequence i'm trying to figure out why it happens
23:54:07evancompile http://gist.github.com/456569
23:54:22evancheck out instructions 50 and 52
23:54:27brixenk
23:54:38evanI think it's fine
23:54:43evanjust tracking it mentally.
23:56:08brixenhm
23:56:37evanthats the bottom of 'if check_next' in exceptions.rb on line 154
23:56:48evanmerging with the bottom of body_bytecode
23:57:03evani'm trying to work out a case where they don't always go the same place
23:58:51brixenhm yeah