Index

Show enters and exits. Hide enters and exits.

01:58:05haruki_zaemonevan: You around?
02:01:29wayneeseguinevan: around?
02:01:33wayneeseguinLOL
02:02:15haruki_zaemonI guess not :/
02:02:17haruki_zaemonlol
02:02:47haruki_zaemonBeen looking at LLVM code to improve tail call optimisation
02:03:07haruki_zaemonbut not sure what/how rubinius has modified LLVM
02:17:10rueIt is not modified
02:20:32haruki_zaemonrue: Ahh ok. Great. Thanks.
02:23:52haruki_zaemonI notice Rubinius never makes use of createTailCallEliminationPass()
02:23:56haruki_zaemonIs that deliberate?
02:30:57rueEssentially yes
02:31:26rueYou could see if enabling it produces any usable results
02:31:52haruki_zaemon?
02:32:02rueIf so, could add it in as an optional feature, i.e. something like -Xopts.tailcall
02:32:10haruki_zaemonahh ok
02:32:20haruki_zaemonThe reason I ask is I'm working on improving the TCO in LLVM
02:32:35haruki_zaemonwhich would ironically have no effect in rubinius
02:32:46haruki_zaemonthe original driver for me working on LLVM haha
02:32:54rueUnless enabled, you mean?
02:32:58haruki_zaemonwhich leads me to believe that the TCO In rubinius is hand-rolled
02:33:06haruki_zaemonsorry, yes, unless enabled
02:34:52rueIf you modify the TCO pass or create an alternate one, I do not see why it could not be added as an option (provided it actually can analyse our calls, i.e., works)
02:36:12haruki_zaemonindeed
02:36:18haruki_zaemonI'll keep investigating
02:36:42haruki_zaemonCould you point me where in rubinius the TCE that currently exists is done?
02:37:36rueI thought we established there is none :P
02:38:19haruki_zaemonwell there appears to be _something_
02:38:38rueWhat effect are you seeing? Maybe just inlining?
02:38:45haruki_zaemonahh perhaps thats it
02:38:58haruki_zaemonI wrote a few examples to see what, if anything, worked
02:39:05haruki_zaemoninlining would cover the simplest case
02:39:12haruki_zaemonmakes sense
02:39:27haruki_zaemonwell, a colleague and I are looking into llvm (he's a c++ guy)
02:39:44haruki_zaemonwill try enabling it in rubinius and see what happens :/
02:44:03haruki_zaemonI'm getting:
02:44:04haruki_zaemonGEN lib/compiler/opcodes.rb
02:44:04haruki_zaemonrake aborted!
02:44:04haruki_zaemonno such file to load -- ext/digest/sha1/sha1
02:44:51haruki_zaemonaoh, just noticed I was using ruby 1.9. Would that be the cause?
02:44:51rueDo a distclean and rebuild if you have not updated in a while
02:44:57haruki_zaemonahh
02:44:57rueYes, 1.8 to build
02:44:58haruki_zaemonok
02:45:09haruki_zaemonthanks (sorry for being a pita)
02:56:08rueNops
03:07:24haruki_zaemonShould I be expecting this: Date#strftime should be able to show the week number with the week starting on sunday and monday FAILED
03:07:25haruki_zaemonExpected #<Date: 4910581/2,0,2299161>
03:07:25haruki_zaemonto equal #<Date: 4910595/2,0,2299161>
03:07:25haruki_zaemonspec/ruby/library/date/strptime_spec.rb:82
03:09:23rueI think there might be some remaining issues with the year having changed, but I am not quite certain...should run the specs, but it is way past bedtime so that will have to wait. Any other errors?
03:19:34haruki_zaemonHaha no. thanks
03:19:46haruki_zaemonand I enabled TCO and no extra errors
03:19:55haruki_zaemonjust need to berify that it actually does something useful :)
03:21:06rueHopefully it will not increase compile time unduly
03:25:55haruki_zaemonindeed, if it does we can always use a switch to enable it :)
04:30:40haruki_zaemonOK so after talking to the guys on the LLVM list, LLVM already supports some very sophisticated TCO.
05:00:43haruki_zaemonSo the support is already in LLVM
05:01:06haruki_zaemonWhich means perhaps only some Ruby work to identify the call sites?
05:01:10evanhi haruki_zaemon
05:01:15evanit's not nearly that easy.
05:01:15haruki_zaemonhey evan
05:01:19haruki_zaemonoh :(
05:01:36haruki_zaemonI was afraid you'd say that ;-)
05:02:09haruki_zaemonGuess I'll go back to pushing another barrow LOL
05:02:13evanjust 2 things off hand
05:02:34evan1) TCO has to be supported in the interpreter as well
05:03:58evan2) TCO in native code only works if inlines are always use tail calls, ie, there can be nothing between the source and target method
05:04:05evaner, inline caches
05:04:45evana 3rd, LLVM's TCO is only supported if fastcc is used
05:07:25haruki_zaemon1) not sure I understand, 2) bugger 3) don't know what that is but I presume it's not used ;-)
05:07:30haruki_zaemonoh well
05:08:00haruki_zaemonStepping back, I presume there's no way to just do it in Ruby instead? :/
05:11:12evan#1 is the most important
05:11:32evanrubinius uses an interpreter to run code in addition to LLVM
05:11:49haruki_zaemonyou mean at the same time? or as an alternative?
05:11:55evanat the same time.
05:12:06evanit's a mixed mode interpreter.
05:12:12evanmixed mode VM, that is.
05:12:12haruki_zaemonahhh gotcha
05:12:16haruki_zaemonyeah
05:12:29evanunlike macruby, which compiles things to LLVM before it runs anything
05:12:30haruki_zaemonso LLVM is really used as a JIT?
05:12:32evanrubinius does not
05:12:43evanit runs code in the interpreter and learns more about it
05:13:02evanbefore it sends it out to be JIT'd by LLVM (which happens in the background)
05:13:03haruki_zaemongotcha
05:13:12haruki_zaemonyeah
05:13:30haruki_zaemonSo should I just give up? Or do you see a way?
05:14:19evanyou could work out how to do TCO in an interpreter
05:14:39haruki_zaemonThat would be fine with me :)
05:15:01haruki_zaemonAs I mentioned on te list, I have a bih incentive to get ot working
05:15:11haruki_zaemonand my job is cool with me working on it
05:15:18evani'm open to you playing with it
05:15:28evanbut i won't allow it to be automatic.
05:15:33haruki_zaemonbut I don't want to even bother trying if you think it's largely a waste of time :)
05:15:34haruki_zaemonno no
05:15:38evanthe destruction of backtraces is not acceptable
05:15:58haruki_zaemonfor the most part yes I agree
05:16:04haruki_zaemonbut if I say it's ok,, then it's ok :)
05:16:10haruki_zaemonso a switch would be fine
05:16:20evanno
05:16:22evanit would not be.
05:16:32haruki_zaemon?
05:16:45evanbecause you'll want to write a library that requires TCO
05:16:53evanand no one will be able to use it without having that switch on
05:17:05haruki_zaemonWell, yes and no
05:17:09haruki_zaemonI only need it in large cases
05:17:11haruki_zaemonbut even so
05:17:21haruki_zaemonI'm over caring how it's enabled
05:17:26haruki_zaemonexplicit in code is fine
05:17:27evanwhich means that they'll complain to me that their backtraces are wrong if they use your library
05:17:32haruki_zaemonLOL
05:17:42haruki_zaemonI understand your motivation :)
05:18:19haruki_zaemonAs I said on the list Rubinius.tailcall … is fine with me
05:18:39haruki_zaemonI have no issue with people needing to use Rubinius to use my code :D
05:19:31haruki_zaemonMy other option is is to wait for Java 7 and JRuby LOL
05:19:37haruki_zaemonIt's an internal project anyway
05:19:40evangotcha
05:19:44haruki_zaemonso it's unlikely to ever see the light of day
05:20:05evanif you can make the interpreter work, that will get you somewhere
05:20:12evanbecause you can at least run with -Xint then
05:20:21haruki_zaemongotcha
05:20:46evanonce that is working, getting the JIT to work too is more likely.
05:21:36haruki_zaemonright
05:21:58haruki_zaemonthanks for the info
05:22:12evani can think of a couple of things to overcome in the interpreter
05:22:13haruki_zaemonI realise it's low priority and no one else seems to care about it :)
05:22:30evanone is that you'll probably have to piggyback of gcc's tailcall support
05:24:20evanthe interpreter itself will probably need to be collapsed into one function, so that gcc's tailcall support can completely cleanup a frame before starting the next one
05:25:18haruki_zaemonick :/
05:34:03haruki_zaemon*sigh*
05:34:04haruki_zaemon:)
06:15:25tarcierievan: headgib @ wycats vcall bug
06:16:41evan:)
06:17:55tarcieriand uhh jeezus, you are a god for sorting that shit out
06:18:54tarciericoncurrency-related bugs ftl
06:26:51scooproh yeah, nice little wtf
06:27:09scooprI never really realized the nameerror vs nomethoderror distinction
06:42:18tarcierime either
17:12:08brixenmorning
17:23:14tenderlovebrixen: ZOMG!!!! HAPPY MONDAY MORNING TO YOU!!!
17:23:27tenderlove:-D
17:23:39brixentenderlove: HAPPY MOOOOOONDAY TO YOU, SIR!!!
17:23:49tenderlove:-D :-D :-D
17:24:34brixenheh
17:26:34evanmorning
17:28:39brixenthere is another library/date spec failing
17:28:51brixenVVSiz and I are looking at it
17:29:51evanbrixen: so, I pounded out signature support
17:29:56evani'm going to push to a branch for you to check out.
17:30:28brixenevan: ok
17:31:56evanbrixen: so, when the compiler itself is out of date
17:32:02evanshould we just print out a message?
17:32:07brixenyep
17:32:20evanoh, and by out of date, i don't mean via mtimes
17:32:20brixengraceful fail like when we can't find runtime
17:32:25brixenyes
17:32:30evani mean that compiler .rbc's have a version/signature mismatch.
17:32:36brixen*nod*
17:32:39evank
17:32:42evandoing that now.
17:32:45brixenok
17:33:38evanso, i'm also thinking that for the compiler, we should have a --rebuild-compiler option
17:33:50evanthat would actually ignore signature mismatches on the compiler
17:34:02evanand allow rubinius to at least try to recompile the compiler
17:34:57brixensure
17:35:25brixenI was thinking of an option to just force load the compiler
17:35:25evansince otherwise, i'm not sure what to tell the user.
17:35:37brixenbut maybe making that only rebuild the compiler
17:50:32rueMorning
17:50:54evanmorning
17:50:58rueAnother cheer: http://files.kittensoft.org/photos/kittens/rue_0005.png
17:54:33brixenhaha, that's what I feel like looking at these Date.strptime specs
18:02:16dbussinkevening ppl
18:02:20dbussinkevan: available for a question?
18:02:26evansure wassup.
18:03:44dbussinkevan: i was running some stuff with rspec and found a small issue with exception handling
18:04:05evanok, shoot.
18:04:07dbussinkevan: basically comes down to the fact that stuff breaks if you define a custom initialize for an exception with no parameters
18:04:18evancan you show me?
18:04:57dbussinkevan: https://gist.github.com/017d13653aff049d918e
18:05:39dbussinkevan: so, in order to fix this i used undefined in two places additionally, problem with that is that it exposes another issue
18:05:40evanah, ie you don't call super
18:05:57evanok, we've hit this many times before
18:06:01evanwith Hash for instance
18:06:08evanwhat happens when you do that?
18:06:14evanwhat wierdness do you get?
18:06:32dbussinkevan: a bunch of failures with SystemCallError and the Errno exceptions that inherit from it
18:07:01dbussinksince you have to give at least one parameter to SystemCallError, but you can raise the Errno exceptions without any parameter
18:07:16dbussinkevan: that used to work because implicitly it was passed a nil as the first parameter
18:07:22evanwhat real world code is doing this?
18:07:30evani'd like to understand that as well
18:07:31dbussinkevan: rspec
18:07:37evanbefore coming up with a solution
18:07:39evanno
18:07:41evani mean the actual code
18:07:44evannot the project.
18:07:51evanshow me in rspec where this happens.
18:08:39dbussinkevan: you mean the exception with an initialize without arguments or what my change exposes?
18:08:58evanthe original problem
18:09:16dbussinkevan: https://gist.github.com/6aaf5f4d79ebb80febc6
18:09:23dbussinkevan: pending specs in rspec use that exception
18:09:36evanthat appears to call super
18:09:42evanso i don't get what you mean
18:09:55dbussinkevan: yeah, but that fails since the initialize has no parameters
18:10:07dbussinkevan: and our raise code always passes nil as the first parameter
18:10:09evanok...
18:10:17evancould you show me a backtrace?
18:10:19evanactually
18:10:20evanfull stop
18:10:25evanplease formulate this as a proper ticket.
18:10:35evanotherwise i'm just going to keep asking you for more info
18:10:38evanbetter it's all in one place.
18:11:17dbussinkevan: this is a gist with all the changes i have locally here that make it work, but i'm not sure if it's the correct way to fix the issue
18:11:19dbussinkevan: https://gist.github.com/77b822417ef7b335c872
18:12:43evanplease make the ticket
18:12:46evanthen we'll discuss.
18:14:10dbussinkevan: problem is that this really is a two step problem
18:14:29dbussinkevan: solving the first step exposes other issues and i'm not sure how to address those
18:14:34evanthats fine
18:14:38evanlets get the original problem documented.
18:14:42evanthen we'll work on it.
18:15:13dbussinkevan: http://github.com/evanphx/rubinius/issues/#issue/144
18:15:32evandbussink: from now on
18:15:39evanplease use <pre> around preformatted text in issues
18:15:45evanotherwise i just have to go in and fix it.
18:16:06evanalso
18:16:16evanplease include the backtrace from rspec
18:16:46dbussinkevan: but this is already the distilled issue
18:17:03evanwell alright
18:17:14evani typically prefer to have the source of the problem documented as well
18:17:19dbussinkevan: the backtrace is exactly the same for rspec
18:17:33evani'm checking out the code for raise in MRI now
18:17:35evanto see what it does.
18:17:51dbussinkevan: for other projects i always prefer smaller scale repro's so i don't have to set it all up myself :)
18:17:59evani prefer both
18:18:09evanbecause sometimes the small repo is too small
18:18:19evanwe need more context to figure out why it happened
18:18:22evanso we can figure out the fix.
18:19:30evananyways
18:19:33evani see your changes
18:19:36evanwhat problem do they cause
18:20:13dbussinkevan: well, if i add the undefined to raise and Exception#exception, raising Errno exceptions breaks
18:20:27evanbreaks how
18:20:28evandoes what
18:20:50dbussinkevan: i'll show you my initial change, you can run the ci to see what breaks then
18:21:03evanok.
18:21:11evani see some changes in your diff that are probably not necessary
18:21:18evanlike moving error = ... up a line
18:22:19dbussinkevan: the nasty thing here is that raising a SystemCallError directly should throw an argumenterror if no parameters are given, but raising one of it's subclasses is allowed without parameters
18:23:54rueMan, I guess I have to start using BadgerWhale or whatever it is, Github is m o l a s s e s
18:24:02evanbrixen: the Date#strftime error is expected atm, yes?
18:24:08brixenevan: yes
18:24:18dbussinkevan: that's why there is the explicit 'raise ArgumentError, "given 0, expected 1"' in my patch suggestion
18:24:25evanrue: BadgerWhale sounds like a fun website
18:24:33evandbussink: are you going to show me your inital change?
18:24:37brixenevan: we're trying to figure out why 1.8 and 1.9 disagree parsing a date
18:25:05dbussinkevan: https://gist.github.com/16b6ee0421d83988e2dd
18:25:29evandbussink: ok, one sec.
18:25:49dbussinkevan: that change is to make sure an argument is only passed down if it's explicity passed to raise and / or Exception.exception
18:26:32evanok, i'm running the initial change now.
18:26:36evanhold on.
18:27:26evanbtw, yes, SystemCallError is a broken ass class hierarchy.
18:27:54evanfor a fun time
18:28:07evango read syserr_initialize in 1.8.7 in error.c
18:28:08dbussinkevan: that's what i realized too when diving into this :)
18:28:15evanit does
18:28:20evanRBASIC(obj)->klass = klass
18:29:12dbussinkevan: it has a comment ;)
18:29:17dbussink /* change class */
18:29:31evanyes, i'm glad we've got that completely covered.
18:29:36evan*eyeroll*
18:32:00dbussinkevan: but i want to make a rubyspec out of this exception with a custom constructor thing anyway so it's documented there too
18:32:10evanyes please.
18:33:54evandbussink: let me finish up this compiler sig change
18:33:59evanthen i'll tackle this with ya
18:34:18brixenUGH at lib/date.rb
18:34:25brixenany date experts around?
18:34:41evanyeah
18:34:45evanmega fail on date.rb
18:34:52evanthat should be a show on discovery
18:34:56brixenin 1.8 Date.strptime("2010/1", "%Y/%W").to_s gives "2010-01-10"
18:34:58evanright after mega disasters
18:34:59brixenthis can't be right
18:35:00evanmega fail
18:35:08evanor they could change the name of mega distasters to mega fail
18:35:11evanthat would be awesome.
18:35:21brixenin 1.9 it gives "2010-01-04" which makes sense
18:35:31brixenVVSiz: poke
18:35:35evanbrixen: sounds like a bug in date.rb
18:35:45evangotta love date bugs
18:35:52brixenevan: right? the 1.8 seems like it can't be right, yes?
18:35:53evanthey lay dorminant
18:36:05evanjust waiting for literally their time to strike.
18:36:07brixen1/4 (today) is week 1 of 2010
18:36:19brixenwith the week starting on Monday
18:36:24brixencorrect?
18:36:35evani'd assume so
18:39:05dbussinkbrixen: correct
18:39:13dbussinkbrixen: i work with week numbers on a daily basis ;)
18:39:28boyscoutFix Marshal'ing a tuple - fa3a8d2 - Evan Phoenix
18:39:28boyscoutRemove cruft - 5447903 - Evan Phoenix
18:39:40evanbrixen: pushed the signature branch
18:39:52evanbrixen: let me know once you'd checked it out and ok'd it.
18:41:11brixendbussink: heh, well it's your change I'm trying to fix
18:41:22dbussinkbrixen: i saw it yeah
18:41:26brixenevan: ok, one sec...
18:41:36dbussinkbrixen: but it looks like a bug in the spec or in 1.8?
18:41:44brixendbussink: yeah, it does seem to be a bug
18:41:59brixendbussink: I'm looking at -r24500 right now
18:42:14brixendbussink: oh, bug in 1.8's date.rb
18:42:42brixendbussink: but this spec is really terrible
18:42:57brixendbussink: you added this + 7 * 13 mystery math
18:43:03dbussinkbrixen: yeah, i know, it might be clearer to describe a few explicit cases
18:43:10brixenand these specs need to be against a fixed date
18:43:19brixennot some random rolling date
18:43:23dbussinkbrixen: yeah, that's probably better
18:43:29dbussinkbrixen: but it did expose a bug now ;)
18:43:43brixenif there are edge cases calculating/parsing a date, they should have their own spec
18:43:52brixenwhich is hard when we are writing the specs after the fact
18:43:57brixenbut still
18:44:49dbussinkbrixen: yeah, 2009 / 2010 is actually a good sample, since it has 53 weeks etc.
18:50:49evanhow ironic
18:51:04evani'm listening to a song where the chorus is "you're the only exception" while working on exception code!
18:51:11brixenheh
18:51:14dbussinkevan: hehe
18:51:41dbussinkbrixen: are you ok with adding cases to rubyspec that basically come from rubinius bugs?
18:51:55brixendbussink: sure
18:52:02brixendbussink: all implementations do
18:52:18brixenit's how we find edge cases in implementing ruby
18:53:12brixenevan: how do you want to handle this date.rb issue?
18:53:14brixenevan: http://redmine.ruby-lang.org/repositories/diff/ruby-19?rev=24500
18:53:19boyscoutCI: Commit 5447903 failed. http://github.com/evanphx/rubinius/commit/54479032471d232b3b1c27a5487817d83de92adb
18:53:24dbussinkevan: i've added the spec to rubyspec, want me to add it to rubinius too?
18:53:41brixenthat rev makes Date.strptime("2010/1", "%Y/%W") parse to 2010-1-4 as it should
18:53:54brixendbussink: I'm about to sync the specs
18:54:02dbussinkbrixen: ah ok
18:54:02brixendbussink: as soon as I can get this date spec fixed
18:54:29evandbussink: sure
18:54:32evanah ok
18:54:34evanwhichever.
18:54:38evani'm working on the bug now.
18:55:03evani'm making Exception.exception a true alias for .new
18:55:04dbussinkevan: how do you feel about my final patch? with the changes to SystemCallError?
18:55:11dbussinkevan: ah ok
18:55:16brixenI wish there were a way to link back from an MRI rev to a bug ticket #
18:55:25evani don't like the hardcoded Argument error message
18:55:36evani'm playing with it now.
18:55:43dbussinkevan: me neither, hence why i was asking you ;)
18:56:28dbussinkevan: one thing i noticed too is that in mri Errno::EINVAL.new => #<Errno::EINVAL: Invalid argument>
18:56:50dbussinkevan: in rubinius it has an unknown message and not the default strerror message
18:57:10evanmm
18:57:17evanyour'e change is wrong then
18:57:18evanbecause it should.
18:57:35evan.errno_error does that
18:58:44dbussinkevan: my change made it so it does that
18:58:52dbussinkevan: it didn't before my final change
18:59:02dbussinkevan: but just something i wanted to give a heads up about
18:59:07evanit did?
18:59:19evanwhat is that self::Errno thing?
18:59:38evanoh, i see.
18:59:45dbussinkevan: Errno is set on an exception if it's a subclass
18:59:46evani got it.
18:59:49evanyeah
18:59:51evani got it.
19:00:38dbussinkevan: that actually makes sure it sets the message correct too
19:02:17evandbussink: https://gist.github.com/e1ec0d7d9de26e051789
19:02:23evanthat seems to pass everything for me
19:02:32evanwithout any SystemCallError changes
19:02:46evando you have a test for some SystemCallError behavior i'm missing.
19:02:47evan?
19:03:42evanok, got one
19:03:45dbussinkevan: i might even have, let me check
19:03:46dbussinkevan: Errno::EINVAL.new
19:03:50dbussinkevan: try that one
19:03:50evanraise Errno::ENOENT
19:03:55evanthat shows the other.
19:05:15evanhrm. I kind of want to insert another ancestor in there
19:05:20evanto fix the hierarchy.
19:06:03dbussinkevan: hmm, core/exception/errno_spec.rb is empty...
19:06:18evansuper.
19:08:35brixenit "should be able to parse ..." => it "parses ..."
19:08:40brixenppl please :(
19:08:48evanactive voice!
19:09:11brixenit "on a good day with a warm sun and butterflies may effectively parse a date..."
19:09:35dbussinkbrixen: i'd love specs like that ;)
19:09:44brixendbussink: I see that :P
19:10:02brixendbussink: so, if you have to fix specs with mystery math, let's please discuss them
19:10:10brixenthere is something very likely completely broken
19:11:05dbussinkbrixen: yeah, well, basically did a quick fix since it was failing in a few days, might better have quarantined them and better review them
19:11:20brixendbussink: yes, quarantine in this case is better I think
19:12:35evandbussink: https://gist.github.com/42727795ccbadaae9e37
19:12:40evanthat seems to pass everything
19:13:41dbussinkevan: ha, an explicit argumenterror ;)
19:13:47evanalso fixes the fact that Errno subclass didn't have "Errno::" on the front
19:14:02evanyeah, all other ways of not using an explicit ArgumentError are uglier
19:14:16evani've opted for one that has a very specific error message instea
19:14:18evand
19:14:53dbussinkevan: one thing that i can think of though, if you do a raise SomeException, nil the nil isn't passed into SomeException
19:15:06evanshould it be?
19:15:20dbussinkevan: dunno, i can try and write up an example
19:15:39evanyou mean because raise is conditional on msg?
19:16:09evaneasy enough to make that use undefined
19:16:36dbussinkevan: something like this: https://gist.github.com/662dd9c4cc4eafa18281
19:16:54evanok, i'll make msg use undefined in raise
19:17:25dbussinkevan: no idea whether this is used somewhere in real life though
19:17:33evansure
19:17:39evanit's an edge case that we should just fix now
19:17:43dbussinkevan: but i guess if it's possible, someone did it at some point :P
19:17:49evanp
19:17:51evanyeah
19:18:06dbussinkthat's what i've seen with other stuff that first classified as "nah, no one ever does that"
19:20:10evanyeah
19:20:15evanwell, if the fix is trivial
19:20:21evanit's silly to not just support it now.
19:31:31evandbussink: i'm restructuring SystemCallError.new
19:31:40evanand seperating out the 2 use cases entirely
19:31:43evanto make the logic clearer
19:35:11dbussinkevan: ah, cool
19:36:01evanthis helps fix a few other edge cases
19:36:23evanlike a Errno subclass that defines a self::Errno that is invalid
19:44:44coredhi guys
19:46:16evanhi
19:47:04coredevan: i'm watching your Rubyconf 2007 Rubinius talk
19:47:12coredevan: that was fun
19:47:15evancool
19:47:16evan:)
19:50:00evanMMMM chained exceptions
19:50:01evani love you.
19:50:37brixenevan: will gdb 7 make it easier to debug through these jit frames or will we need to write some code to help it understand?
19:50:59brixenevan: it's a bitch locating these hangs when I fall into the ??? frames
19:51:09brixenand I always do it just stepping along
19:51:12evanwe'll still have to write a bunch of stuff
19:51:13brixenthen tarpit
19:51:17evanto make it work
19:51:19brixenok
19:51:22evanusing -Xint doesn't help?
19:51:39brixenwell, I get a hang running the specs then attach to process
19:51:51brixenso I don't really have the option of picking my context
19:51:56brixenif it's repeatable, sure
19:52:00evansure you do
19:52:07evanmspec -T -Xint
19:52:12brixennot when it's a random hang
19:52:20brixenif it's repeatable, sure
19:52:33evanit should never hang within a JIT frame
19:52:46evanso with luck you'll at least have a CallFrame
19:52:48evanto help isolate
19:53:20brixenyeah, but I'll be stepping along and then I hit one of them
19:53:35brixenfinish doesn't seem to help me
19:53:37brixenwhat do you do?
19:53:37evanyah, thats a pain
19:53:49evanwell
19:53:52evanyou can try doing
19:54:01evantb VMMethod::intepreter
19:54:04evanif you hit one
19:54:09evanthen do continue
19:54:19evanyou'll stop at the next interpreted method
19:54:24evanthat should at least let you skip JIT methods.
19:54:28evanbut you might skip too much.
19:54:36brixenok
19:55:08evani should add a nint to our .gdbinit
19:55:17evanfor next intepreted method
19:56:55boyscoutRedo how SystemCallError interacts with it's subclasses - 45f34bb - Evan Phoenix
19:56:59evandbussink: ^^
19:58:39dbussinkevan: cool :)
19:58:59dbussinkevan: there's a spec for the Exception.exception case, will probably come in when brixen merges rubyspec
19:59:19brixendbussink: yeah, was just about to push
19:59:36evank
20:02:44brixenevan: after pulling I get PrimitiveFailure in SystemCallError#errno returns the errno given as optional argument to new
20:03:01evanhrm.
20:03:13evangr.
20:03:19evanthose specs have shitty boundaries i'm betting.
20:03:31evani think on 32bit, they pass in a Bignum
20:03:44brixenlooks
20:04:00brixenyep
20:04:06evan*eyeroll*
20:04:10evanok, one sec.
20:05:10evanprobably need to change that spec
20:05:14evanit's going to be system dependent
20:06:40brixenhmm
20:07:03evanMRI has these icky boundary cases
20:07:13evanwhere you can pass in a Bignum that will work because it can fit into a long
20:07:20evanbut otherwise, it raises a RangeError
20:07:48evanthis happen to work before because the rubinius code only let it through to SystemCallError.errno_error if errno was a fixnum
20:07:53evani'll go ahead and put that code back into place
20:07:58evanone sec.
20:08:51brixenyeah, there are all kinds of these leaky boundaries in MRI with bignum
20:09:15brixenwe need to handle them consistently in the specs though
20:09:29brixenthey are scattered all over
20:09:34brixenhmm
20:09:36boyscoutOnly pass Fixnums through to be become Errno instances - d380d72 - Evan Phoenix
20:10:44boyscoutCI: Commit 45f34bb failed. http://github.com/evanphx/rubinius/commit/45f34bb0e5ffcedaab7fc272330339a7c89e58c6
20:14:45boyscoutDefine X86_ESI_SPEEDUP to put vmm->addresses in esi. - 2d8775d - Brian Ford
20:14:46boyscoutUpdated CI specs to RubySpec b295a3f5. - d11a930 - Brian Ford
20:14:46boyscoutFix for Date.strptime with %W from MRI r24500. - 8e28e0d - Brian Ford
20:14:46boyscoutUpdate CI tags for merged rubyspecs. - a7b2947 - Brian Ford
20:16:55dbussinkbrixen: hmm, where does that X86_ESI_SPEEDUP come frome, can't seem to find anything on google
20:17:07evaneh?
20:17:13evanhe defined it.
20:17:19evanit doesn't come from anywhere but us.
20:17:32evanlook at the commit.
20:17:33dbussinkwell, it's only checked, not defined anywhere
20:17:56evanright
20:17:59evanwe're not using that feature atm.
20:18:02evanso we're not defining it.
20:18:24boyscoutCI: rubinius: a7b2947 successful: 3022 files, 11677 examples, 35868 expectations, 0 failures, 0 errors
20:18:49dbussinkevan: ah, since __i386__ was used as a guard before
20:18:56evanright.
20:19:14evanat some future time, we can define ESI_SPEEDUP and enable it again
20:19:48brixenevan: signature branch looks good to me
20:19:57evanok, i'll merge it in.
20:20:58brixendbussink: heh, that commit msg is a directive
20:21:26brixendbussink: *You* define X86... if you want to explicitly put the addresses in esi
20:21:44brixendbussink: it was causing gcc to choke on same builds
20:23:09dbussinkbrixen: ah ok
20:24:09evanbrixen: I still have the date failure
20:24:10evanshould I?
20:27:23brixenevan: no
20:27:37evanhm.
20:27:40evanoh wait.
20:27:44evani'm a silly pants.
20:27:47evanwho needs lunch.
20:27:53evannevermind!
20:28:05evanyou can ignore my silly pants.
20:28:20brixenok
20:28:32brixenI thought it could be a 64bit thing with date
20:29:21evanno
20:29:25evani merged but didn't update first.
20:29:28evanmy sillyness only.
20:30:45brixenevan: ok n/p
20:31:49evanok, so i'm headed to lunch
20:31:54evanbut i'm putting the rc2 clamp on
20:32:06brixenok
20:32:09evanif there are things that we must get in, lets discuss them.
20:32:12brixensure
20:32:13evanotherwise, lets cut it.
20:32:18brixenlet's do it
20:32:25evank
20:32:26brixenI was still working on these requires specs
20:32:27evani'll do that post lunch
20:32:36brixenbut I can redo Requirer for rc3
20:32:39evanthey can wait though?
20:32:42brixenyes
20:32:42evanok, cool.
20:32:49brixenthe sig stuff was most important
20:32:52evani've got some fixes i want to do to
20:32:56evanbut i'm waiting til rc3
20:32:57brixenok
20:33:02brixencool
20:33:12evanretesting the signature branch
20:33:16evanok, it's good, pushing.
20:33:17brixenk
20:33:31boyscoutAdd compiler signature/version checking - 6fa3dc4 - Evan Phoenix
20:33:31boyscoutMerge branch 'signature' - 0c2b951 - Evan Phoenix
20:33:38evanbrixen: oh before lunch
20:33:39evanreal fast.
20:33:44evanthe signature checking has an out
20:34:03evanif the .rbc's version field (what we're using to store the sig) is 0, it's always accepted
20:34:16evanand if we're asked to compare a .rbc's version against 0, it's always accepted
20:34:28brixenahh ok
20:34:38evanwe can remove that eventually
20:34:42brixensure
20:34:42evanbut for now, an out is useful.
20:34:45brixenyep
20:34:57evanok, lunch time!
20:35:03brixenok, me too!
20:38:55boyscoutCI: rubinius: 0c2b951 successful: 3022 files, 11677 examples, 35868 expectations, 0 failures, 0 errors
21:45:11evanbrixen: so, i'm going to change configure slightly pre-rc2
21:45:28evanrather than using svn to get LLVM, i'm going to have it just download a llvm-2.6-source.tar.bz2
21:45:32evanfrom elle
21:52:53wayneeseguinears perk
21:53:03wayneeseguinevan: that doesn't change the interaction points at all does it ?
21:53:13wayneeseguineg it's internal to rbx installer ?
21:53:23evannope
21:53:29evanit will be the same.
21:53:31wayneeseguinok great
21:56:01brixenevan: that sounds good
21:56:09brixensvn is so damn slow usually
21:58:23evanyeah
21:58:28evanplus it has to be installed, etc
21:59:43brixenah yeah
22:00:05brixenevan: are you handling curl not being installed?
22:00:18evanwe don't use curl anymore
22:00:22evanjust using net/http
22:00:34evanso yes!
22:00:52brixenah ok cool
22:12:36evanok, testing the new llvm source build now
22:12:43evanthen on to rc2 packaging
22:17:55brixenk
22:27:41rueIt would be good form to explicitly undefine if it should not be used
22:50:28dbussinkevan: got some nice heisenbugs when running datamapper specs on rubinius now
22:50:37evansweet.
22:52:04rueTechnically they are only heisenbugs before they exist
22:52:12evancorrect!
22:52:22evanalso, if you put them in a box
22:52:24dbussinkevan: only start happening after running for a whole though
22:52:24evanthey should disappear.
22:52:29dbussinkevan: or not
22:55:29dbussinkevan: also a full spec run takes almost 10x longer on rbx
22:55:48evaninteresting.
22:55:51dbussinkevan: only with in memory objects, so no database access
22:55:58dbussinkevan: mainly churning through ruby code
22:56:04dbussinkno c parts
22:56:06evanbut meaningless because of the complexity
22:56:18evanfor all I know, we're 10x just running rspec
22:56:31dbussinkevan: true, the complexity is pretty heavy
22:57:02dbussinkevan: dunno if it's something you'd be interested in diving into
22:57:03evanif they run at all
22:57:05evanthats a success.
22:57:14evannot at the macro level you're at
22:57:15evanno
22:57:19evani'm not terribly interested.
22:57:20dbussinkevan: they run ok if i run them in smaller pieces
22:57:27evanoh?
22:57:31evansee thats the kind of info i'm interested in.
22:57:41evanperhaps there is a pathalogical slowdown.
22:57:49dbussinkevan: all failures i'm seeing run ok if i run them separately
22:58:19evanwhat about the speed
22:58:30evanis the total greater than the sum of the parts?
22:59:59dbussinkevan: i'm running some smaller subsets to compare
23:00:22dbussinkevan: one subset is 0.9 secs on mri, 7 secs on rbx
23:00:28evanis the wierdness causing exceptions or segfaults?
23:00:36dbussinkno, no segfauls or exceptions
23:00:45evanwell, thats a win. :)
23:00:48dbussinkthe specs are failing because of wrong objects
23:00:57evan"wrong objects"?
23:01:00dbussinkor sometimes assertions failing etc.
23:01:11dbussinkgetting nil back when a certain object is expected
23:01:33dbussinkseems like it's only happening after a while which makes me suspect something gc related
23:02:32dbussinkevan: although failures like this are pretty weird: https://gist.github.com/a5fe7d1f94f7c7b190c3
23:02:34evanthats possible
23:02:56evanhm, that is wierd.
23:03:12evangc bugs usually cause crashes though
23:03:14evannot just wierd behavior.
23:03:41dbussinkevan: this is also without any capi extensions
23:03:52dbussinkevan: so those don't influence it either
23:04:03evanok
23:04:03dbussinki've been trying to isolate it better, but haven't been able to yet :*
23:04:05dbussink:(
23:04:13evanok, well keep at it.
23:06:31dbussinkevan: also adding some debugging output in places makes it behave differently, and long runs also don't help in the debugging
23:06:40dbussinkevan: otherwise maybe something compiler related?
23:06:59evanwell
23:07:03evannothing points to that
23:07:17evani don't see why we'd assume that.
23:07:44evanare Threads being used?
23:08:09dbussinkevan: nope, this is single threaded afaik
23:08:25evani'd make any assumptions about it at this stage
23:08:27dbussinkonly stores some things in Thread.current
23:08:29evanclose no door.
23:10:33dbussinkbut i'm going to grab some sleep
23:10:41evansounds good
23:10:42evansleep well
23:10:43dbussinkevan: good luck with doing the rc2 :)
23:10:48evanthanks!
23:20:32boyscoutUse a tar.bz2 of llvm source rather than svn - fadeb39 - Evan Phoenix
23:21:16wayneeseguinw00t
23:21:31wayneeseguintrys installing NOW
23:22:37evanwas svn giving you a problem?
23:23:03slavayo yo evan in da house
23:23:20evanyo yo
23:23:50tarcieriheadgib @ CoffeeScript
23:23:55boyscoutCI: rubinius: fadeb39 successful: 3022 files, 11677 examples, 35868 expectations, 0 failures, 0 errors
23:26:50evantarcieri: good or bad?
23:26:52evanit's kind of cute.
23:28:00evanbrixen: the only place with the version number is in configure now
23:28:01evanright?
23:28:04tarcierievan: I'm a fan of the idea, not the syntax
23:37:00boyscoutBump version to rc2 - e8f5ae8 - Evan Phoenix
23:38:34evantarcieri: which idea is there other than the syntax?
23:38:48tarcierievan: a language less shitty than JavaScript that compiles to JavaScript
23:39:13evanaah.
23:39:19tarcieribeing a rubyfag would try to give it a Ruby-like syntax :)
23:39:30tarcieriwith blocks!
23:39:43wayneeseguin<3 blocks
23:39:44brixenheh, of course
23:40:08evanand clocks!
23:40:19evanblocks and clocks
23:40:19boyscoutCI: rubinius: e8f5ae8 successful: 3022 files, 11677 examples, 35868 expectations, 0 failures, 0 errors
23:40:30tarcieriand... docks?
23:40:48brixenwhat's a dock without a lock
23:41:12evanblock locks and clock docks!
23:41:38evanack. I think the signature stuff isn't working with install
23:41:40evanoops.
23:41:56brixenhm
23:42:16evanlooks like it didn't load the file with Signature in it.
23:42:37evanmm, yes, it's shelling out to compile to do it.
23:42:42evanthats probably why.
23:44:08brixenwhy is it shelling out?
23:44:17evanyou tell me :)
23:44:21brixenheh
23:44:23brixenI'm looking
23:44:31benschwarzmorning gents
23:44:31brixenI explicitly did not in kernel.rake
23:44:40evanbrixen: it's an easy fix
23:45:09brixenhey there benschwarz
23:45:16benschwarzhappy new year etc
23:45:23brixenlikewise
23:46:02brixenevan: you just adding a -rpath/to/signature ?
23:46:09evanno i trued that
23:46:12evanit didn't work
23:46:17evanbecause it said there was no Rubinius
23:46:21evanwhich is another easy fix
23:46:29evaninstead i'm just calling Rubinius::CompilerNG directly
23:46:35evanin install.rake
23:46:38evanrather than shelling out.
23:46:38brixenk
23:46:40evanthat fixed it.
23:46:54evani'll need to update the rc2 tag
23:47:45wayneeseguinevan: Question, I keep gettin gthis: /Users/wayne/.rvm/src/rbx-head/lib/compiler/compiled_file.rb:40:in `dump': uninitialized constant Rubinius::Signature (NameError)
23:47:57brixenwayneeseguin: evan just fixed it
23:48:00wayneeseguinlol
23:48:00wayneeseguinw00t
23:48:02wayneeseguinok
23:48:05wayneeseguinremoves and re-installs
23:48:10wayneeseguinman he's fast ;)
23:48:13brixenwayneeseguin: you have to wait for the push
23:48:14brixen;)
23:48:22evanthats what i'm fixing now.
23:48:26wayneeseguinoh
23:48:36evannot pushed yet
23:48:36wayneeseguinI thought git was able to do time travel ::grin::
23:48:38wayneeseguingit pull future master
23:48:44evanwayneeseguin: can you hold up for about 20 minutes?
23:48:46wayneeseguinwaits
23:48:48evanso you can use rc2
23:48:49wayneeseguinevan: absolutely
23:48:51wayneeseguinit's only for benchmarks
23:48:54evanwe're tagging it now.
23:48:57wayneeseguinok great
23:49:43wayneeseguinevan: will it be @ http://asset.rubini.us/rubinius-1.0.0-rc2-20100104.tar.gz
23:50:32evanyes.
23:50:57wayneeseguinupdates rvm
23:51:01tarcierinoice
23:51:15evanhrmph.
23:51:23evanthe os x package building isn't working now.
23:51:25evanhrm.
23:52:09evanhaha
23:52:11evanno, i'm wrong
23:52:17evani was looking on the wrong machine
23:52:21evani'm hilarious today.
23:52:22brixenheh
23:52:24wayneeseguinlol
23:53:12brixenit's the first monday of the year, has to have a higher than avg wtf %
23:53:42evanbrixen: of the decade!
23:53:50brixenoh snap
23:53:54brixenyou are right
23:54:08brixenthe year of the decade
23:55:02evanoh yay
23:55:05evani didn't push the rc2 tag yet.
23:56:23boyscoutFix how installed files are precompiled - 31f2d7b - Evan Phoenix
23:58:13evanok, tags are pushed and tar.gz is in place
23:58:20evangoing to build the 10.6 installer now
23:58:45brixenbuilds 10.5
23:58:55evanbrixen: build it from the tar.gz
23:58:58evannot from git.
23:59:02evanso the -v is correct
23:59:20brixenok
23:59:43boyscoutCI: rubinius: 31f2d7b successful: 3022 files, 11677 examples, 35868 expectations, 0 failures, 0 errors