Index

Show enters and exits. Hide enters and exits.

00:00:08headiuspastie
00:00:23dfg59headius: pastie the change?
00:00:32headiusno, that's for me :)
00:00:36headiuspay it no mind
00:00:37dfg59:)
00:01:06pastiehttp://pastie.org/187774 by headius.
00:01:23headiusdgtized: there's a rewritten "add" primitive and its output
00:01:41mkrauskopf leaves the room.
00:02:13wycats enters the room.
00:02:22mkrauskopf enters the room.
00:02:57vertiginous enters the room.
00:05:23wycats leaves the room.
00:07:21agardiner leaves the room.
00:07:46agardiner enters the room.
00:09:03lopex leaves the room.
00:11:32boyscout4 commits by Drew Olson
00:11:33boyscout * File#join checks the id of the current part rather than the initially passed part; d5de703
00:11:34boyscout * File#join now correctly handles recursive arrays at any level; 6cd1021
00:11:35boyscout * Array#recursively_flatten now takes an optional argument for replacing recursive ...; 671b589
00:11:36boyscout * Spec for File#join now describes correct behavior for arrays with recursive sub-arrays.; b287619
00:13:27agardiner leaves the room.
00:13:56Defileradamwiggins: There are already specs for the 'correct' behavior of defined?
00:14:09Defileradamwiggins: I haven't bothered to pass them yet, though, since nobody has ever used the return value for anything, ever.
00:14:16mkrauskopf_ enters the room.
00:14:41mkrauskopf_ leaves the room.
00:14:59mkrauskopf_ enters the room.
00:17:59AndrewO enters the room.
00:18:07mkrauskopf_ leaves the room.
00:18:59trythil enters the room.
00:21:14wycats enters the room.
00:21:51mkrauskopf leaves the room.
00:22:28fbuilesvadamwiggins: wouldn't it be a good idea to add a check (a should) to the write only pipes spec?
00:22:53rubuildius_amd64Drew Olson: d5de703d3; 2091 files, 6711 examples, 23594 expectations, 0 failures, 0 errors; http://rafb.net/p/ZL4z5M53.html
00:23:28radarek leaves the room.
00:23:30headius leaves the room.
00:26:39rubuildius_ppcDrew Olson: d5de703d3; 2091 files, 6714 examples, 23622 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/187785
00:26:55agardiner enters the room.
00:33:59dc_ leaves the room.
00:37:31rueRich_Morin_: Ordered (but mutable)
00:42:05ruedfg59: If there is a problem with the patch, something else would break etc. that is one thing. But if your patch provides new functionality/specs/whatever that was not there before, it does not need to be a full or perfect implementation so long as it does not actually break stuff
00:42:57rueSo looks like those should be fine. Then fine-tune from there (or re-implement if you come up with something better)
00:43:02dfg59rue: that's what i figured. it expands the functionality of File#join to pass several edge cases not previously in the spec. all ci specs are still passing so i've gone ahead and checked it in
00:44:24rueYeah, that is fine. One question is always whether something is actual behaviour or just an implementation detail. Strings of all kinds, error messages and so on, are usually good candidates for fixing since no-one depends on their exact format
00:45:45dfg59rue: ok, gotcha. thanks for the answer. wanted to make sure i wasn't missing some critical "last minute check". i'm assuming community members would be more clued into larger changes anyway and discussions would happen here anyway.
00:46:32Arjen_ leaves the room.
00:55:35dysinger enters the room.
00:55:38vertiginou1 enters the room.
00:57:37rueBroadly, but not on Sundays :)
01:01:50imajes enters the room.
01:03:04imajes leaves the room.
01:03:24vertiginous leaves the room.
01:04:07adamwigginsfbuilesv: check on the write-only pipe would be great, but I couldn't think of a (non-ugly) way to do it
01:04:26adamwigginsOne option would be: popen("cat > /tmp/somefile.$$") and then look for the file afterward
01:04:40dysinger leaves the room.
01:04:50adamwigginsJust feels kinda nasty though, and the truth is that the spec I wrote exposed all the problems necessary to get it working
01:04:56adamwigginsIn combination with the r+ spec working, that is.
01:06:57trythil leaves the room.
01:08:24bitbang enters the room.
01:08:28wycats leaves the room.
01:10:34dblack enters the room.
01:10:58dfg59 leaves the room.
01:15:27adamwiggins leaves the room.
01:15:57benny leaves the room.
01:16:07ezmobius enters the room.
01:21:11agardiner_ enters the room.
01:22:13bitbang leaves the room.
01:28:13cremes enters the room.
01:39:07agardiner leaves the room.
01:39:20vertiginou1 leaves the room.
01:40:46luislavena enters the room.
01:45:41ezmobius leaves the room.
01:48:01headius enters the room.
01:49:31boyscout1 commit by Luis Lavena
01:49:32boyscout * Corrected small typo on File#join specs under Windows.; 1da58bb
01:57:36rubuildius_amd64Luis Lavena: 1da58bb7f; 2091 files, 6711 examples, 23594 expectations, 0 failures, 0 errors; http://rafb.net/p/bKz2R890.html
01:59:59manveruDefiler: bugging you again about extend :)
02:01:47rubuildius_amd64 leaves the room.
02:02:36rubuildius_amd64 enters the room.
02:02:44jtoy enters the room.
02:03:28rubuildius_ppcLuis Lavena: 1da58bb7f; 2091 files, 6714 examples, 23622 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/187808
02:08:36rubuildius_amd64 leaves the room.
02:16:49lstoll leaves the room.
02:23:42benburkert_ leaves the room.
02:24:13VVSiz_ enters the room.
02:38:23benny enters the room.
02:38:39brapse enters the room.
02:40:22headiusdoes rubinius do any compiler peephole optimizations?
02:41:29agardinernot yet
02:41:51headiusI'm looking at doing a round of compiler improvements in JRuby, looking for strategies
02:41:52VVSiz leaves the room.
02:42:09headiusright now just comparing output with javac, which does a lot of peephole opts and whatnot
02:42:12rueYeah, Rubinius should totally "optimize" some "peepholes" if you know what I mean
02:44:42xmlhacker leaves the room.
02:45:22obvio leaves the room.
02:46:54xmlhacker enters the room.
02:48:24obvio enters the room.
03:09:24marnen enters the room.
03:09:49marnenquestion about spec organization, if anyone's around...
03:10:51MenTaLguY enters the room.
03:11:19RyanTM_ leaves the room.
03:12:16RyanTM_ enters the room.
03:14:49hornbeck leaves the room.
03:17:35xhanjian enters the room.
03:17:45trythil enters the room.
03:18:40marnendo protected methods get their own specfiles like public ones?
03:19:05benburkert enters the room.
03:22:25rueEach method should have its own file
03:29:13anteaya leaves the room.
03:29:13marnen leaves the room.
03:31:48brapse leaves the room.
03:31:59RyanTM_ leaves the room.
03:33:02rubuildius_ppc leaves the room.
03:33:04rubuildius_ppc enters the room.
03:34:56trythil leaves the room.
03:37:30Rich_MorinI'm trying to understand some CompiledMethod information, as detailed in http://pastie.caboo.se/187856. Help?
03:48:29rubuildius_ppcLuis Lavena: 1da58bb7f; 2091 files, 6714 examples, 23622 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/187862
03:58:53jtoyhmmh!?!? no more ruby in ruby?!?! http://headius.blogspot.com/2008/04/promise-and-peril-for-alternative-ruby.html
03:59:34luislavena leaves the room.
03:59:54headiusit's still the goal
03:59:59headiusbut it's not the case right now
04:01:31jtoyheadius: that was a real downer article, haha, but nice summary of the landscape
04:01:48headiushmm, most folks told me it was pretty fair
04:01:53headiusbut I haven't heard from everyone yet
04:02:20jtoyyeah, it was fair, it was just a downer to see rubinius not doing as well as i thought
04:02:55headiuswell, it's still early
04:03:39headiusjust don't expect to deploy rails on rubinius this summer or something :)
04:05:39jtoyheadius ive been using java again lately because of android, too bad i cant run jruby on there, writing plain java isnt very fun for me
04:06:04headiusthere's a few folks likely to look at JRuby on ME/Android this summer
04:06:10headiusit has been done before
04:06:22headiusbut not in a sustainable way (used an older version of JRuby)
04:07:35be9 enters the room.
04:09:04yugui enters the room.
04:09:06yugui leaves the room.
04:09:08jtoyit would be nice if macruby could be used for the iphone!
04:17:00headiusahh yeah, that's a scenario I didn't think of
04:26:40rueNothing stopping that.
04:36:27GMFlash leaves the room.
04:36:37GMFlash enters the room.
04:36:54twbray enters the room.
04:40:16twbraypoking around rubinius source looking for how a VM in an MVM situation receives a message. Anyone have a pointer to save me some time?
04:40:49MenTaLguYRubinius::VM#<<
04:40:56MenTaLguYoh, that's send
04:41:13MenTaLguYreceive is Rubinius::VM.get_message, Rubinius::VM.poll_message, or Rubinius::VM.each_message
04:41:39MenTaLguYI believe you can also use Rubinus::VM.send_message to send to a VM based on its id (obtained via Rubinius::VM#id)
04:41:46ruetwbray: You already implementing MVM? :)
04:42:06rueCorrect on last
04:42:23rueThen there is the VMActor abstraction
04:42:30MenTaLguYthat's a layer on top though
04:43:41twbrayThinking of Erlang "receive"
04:44:13MenTaLguYget_message is basically half a receive
04:44:34MenTaLguYin the VMActor case, the VMActor stuff provides the other half of the infrastructure
04:44:49MenTaLguYfiltering, and setting unmatched messages aside in a mailbox for future receives
04:45:21jtoyMenTaLguY: is revactor still alive? it seems dead
04:45:37MenTaLguYit's still alive
04:45:49MenTaLguYtony's just been distracted with Rubinius stuff lately
04:45:56foysavas leaves the room.
04:46:34MenTaLguYtwbray: is there something more specific you've got in mind?
04:46:36foysavas enters the room.
04:47:39twbrayWell, I was reading the implementors' summit, and the description of the Rubinius MVM message API had me thinking about Erlang. Seems to me that the Erlang messaging API is very good. It'd be nice to steal lots of it for Ruby.
04:48:37MenTaLguYyeah, that's pretty much what tony and I are on about
04:48:48MenTaLguYactors aren't really necessary at the lowest levels though
04:49:12MenTaLguYfor the most part they can be built as a higher-level API
04:49:24rueI think the last consensus was that we can /almost/ get to the Erlang model due to some fundamental incompatibilities
04:49:54MenTaLguYas of right now I basically have the whole model implemented in Actor, for intra-VM actors
04:50:15MenTaLguYinter-VM actors is not a huge technical leap from there
04:50:32MenTaLguYthe main thing is sorting out message serialization details
04:50:51MenTaLguY(particularly around actor references)
04:51:10AndrewO leaves the room.
04:51:24MenTaLguYthe main difference is that actor death (due to linking, etc) only happens at specific points
04:51:34jtoybut it all required 1.9+ currently?
04:51:36MenTaLguYsetting/clearing trap_exit, receives, and one other thing I forget
04:51:46jtoyrequires
04:51:53MenTaLguYwhich is probably desirable in a language like Ruby with side-effects
04:51:58MenTaLguYum, no?
04:52:06MenTaLguYit works today, in Rubinius
04:52:09twbraywell, you shouldn't have side-effects form one vm to another
04:52:11MenTaLguYrequire 'actor'
04:52:14twbrays/form/from/
04:52:38MenTaLguYtwbray: that's what's implied by actor linking, which is important for supervision trees, etc.
04:52:53MenTaLguYtwbray: that being the case, the side-effects have to be carefully controlled when the language otherwise permits side-effects
04:53:04twbrayErlang has zero global data plus slick message passing. Seems to me that the MVM API might be able to deliver similar framework.
04:53:06MenTaLguYtwbray: erlang's relatively pure-functional nature limits the damage
04:53:26twbrayBecause, no cross-VM global data, right?
04:53:41MenTaLguYup to a point
04:54:16twbrayHypothesis is that Erlang message-passing goodness is beneficial even if your language isn't rigorously functional like Erlang.
04:54:31MenTaLguYyes
04:54:57MenTaLguYperhaps we're talking past each other somehow?
04:55:11twbraySo, Erlang messaging API is well-understood and well-debugged. Why not steal it for Ruby? That's not a rhetorical question, I really wonder if it's possible.
04:55:42MenTaLguYmaybe you need to look more closely at what Tony and I have been doing :)
04:56:21twbraySure. Pointer? But it seems to me that it's the MVM scenario where it's really interesting precisely because you don't think of globals or side-effects.
04:56:36MenTaLguYhave a look at the Actor class in lib/actor.rb
04:56:46MenTaLguYand agreed
04:57:45lstoll enters the room.
04:58:44MenTaLguYFWIW, the plan is basically that out-of-VM actors will be represented by proxy objects which duck-type similarly to Actor
04:59:07MenTaLguYI think the main difficulty is that a Rubinius VM is significantly more heavy-weight than an Erlang process
04:59:12MenTaLguY(it's hard to beat 300 bytes :o)
05:00:52MenTaLguYso there's a tradeoff between memory usage and containment of side-effects
05:01:16MenTaLguYbetween plain Actor and VMActor I'm hoping we can let people chose the proportions which suit them best
05:11:24headiuswhat does erlang use at a low-level for communicating between processes
05:12:00headiustony made some assertions about erlang being able to send so many more messages than a similar app in Java, which didn't make sense to me
05:15:52trythil enters the room.
05:15:53MenTaLguYwell, versus Java the main reason is that Erlang message delivery usually doesn't require a native thread context switch
05:15:57MenTaLguYthat really adds up
05:17:42MenTaLguYErlang is ***extremely*** lightweight with respect to transfer of control between processes
05:17:50MenTaLguYwhich is very closely tied up with message passing performance
05:19:26headiusmmm, I see
05:21:35twbrayMenTaLguY: sorry, distracted. Based on the Wide Finder work, I lost some respect for lightweight Erlang processes. Winning Perl & Python programs used ordinary processes, and so did the fastest Erlang implementation.
05:21:46aotearoa leaves the room.
05:22:28MenTaLguYhm, that's right
05:22:37MenTaLguYI remember that surprised me a lot at the time when you wrote it up
05:23:09MenTaLguYI never sat down and looked/thought about their designs
05:23:42MenTaLguYOne possibility would be that they had fewer participants in a more pipelined configuration
05:23:50twbrayI'm relaunching in a couple of weeks with an internet-facing T2000 that I'll give anyone an account on. Looking forward to it
05:26:32MenTaLguYneat
05:30:03lstoll leaves the room.
05:30:19headiusperhaps the value of erlang is really only when you get into hundreds or thousands of processes
05:30:27trythil leaves the room.
05:30:54headiusfor any lower values pipelined systems will perform as well or better
05:31:02headiusit's a theory anyway
05:31:48headiusso perhaps it wasn't "wide enough" or perhaps erlang's relatively poor execution performance kept it from coming out ahead
05:31:50twbrayPerhaps the value of erlang is that reduces the global-data temptation to zero, and reduces the pain by a really intuitive messaging API.
05:32:14MenTaLguYthe thousands of processes thing doesn't hurt
05:32:34twbraySo... what problems really *need* hundreds or thousands of processes? (I don't claim to know the answer).
05:32:38MenTaLguYit also reduces the temptation to make things overly stateful
05:33:21MenTaLguYwell, remember Erlang's original environment, telephony
05:33:34MenTaLguYit's not unreasonable to have at least an actor per active call or something
05:33:44MenTaLguYand in reality probably more
05:33:48headiusyeah
05:33:58headiusfor telephony it's pretty obvious
05:34:02headiusyou want a process per call
05:34:12headiusor per node perhaps
05:34:14headiusbut lots anyway
05:34:40twbrayI understand the big switches typically have 10k+ processes. Not hundreds of thousands, but lots.
05:34:56foysavas leaves the room.
05:35:03headiushere's a use case for ya
05:35:05headiussecond life :)
05:35:36headiusbazillions of processes, for every active or scripted object in the system
05:35:36foysavas enters the room.
05:36:12twbraySo the thinking is... you get a nice MVM interchange API, and maybe it's interesting to extend it across multiple machines.
05:36:47twbrayTo support this, Erlang has ultra-slick exception handling too, on the assumption that procs are gonna blow up routinely.
05:37:05twbraylocal or remote
05:41:03MenTaLguYnods
05:41:40rueThe problem with ultra-slick is that it is hard to grasp
05:41:49MenTaLguYI think you'd actually want to use an actor API rather than the raw MVM API
05:41:55MenTaLguYbut it certainly applies
05:42:08MenTaLguYI did replicate Erlang's trap/exit exception stuff
05:49:09MenTaLguYI don't think linked actors are especially hard to grasp, actually
05:53:11mentz_ enters the room.
05:55:04yugui enters the room.
06:08:19lstoll enters the room.
06:09:21obvio leaves the room.
06:17:31yipstar leaves the room.
06:18:01marnen_ enters the room.
06:22:43yugui_ enters the room.
06:22:48yugui leaves the room.
06:25:40boyscout1 commit by Marnen Laibow-Koser
06:25:41boyscout * Correct implementation of BigDecimal#+ and #-. There's still a lot of repetition ...; dc93d06
06:26:15marnen__ enters the room.
06:28:20joachimm enters the room.
06:28:59marnen__ leaves the room.
06:29:09marnen__ enters the room.
06:29:34brixendgtized: ping
06:31:59benburkert leaves the room.
06:32:00marnen<vent>wow, this BigDecimal stuff is starting to be a pain in the neck...we're gettin' there, though!</vent>
06:32:34Defilermarnen: You're doing a great job.
06:32:39marnenthx
06:32:55DefilerI mean, other than the code and the specs :)
06:33:04marnenI'm just hoping my implementation performs acceptably
06:33:32marnenI'm building as much of it on top of Bignum as possible.
06:33:37marnenso that should help
06:34:08marnenbut there's a lot of to_s.to_i.to_s.to_i that's making me go cross-eyed
06:34:42DefilerIt looks like it will be fine. Or, stated another way, if we can't make Ruby code like that perform, we are screwed anyway
06:35:52marnenOK. Low-level performance optimization is not a strong point of mine, so I'm just hoping I don't come up with something that is logically correct but unusably slow. So far, the tests are not taking any unreasonable length of time, but I haven't tried any real benchmarks yet.
06:36:11Defilercorrect first, fast after
06:36:19marnenyeah, that's how I'm approaching it
06:36:44marnen(says the guy who implemented a cubic-order algorithm, then wondered why his code was hanging...not on this project, though!)
06:38:06marnenaddition made me go pretty cross-eyed...I'm thinking multiplication and division will be worse
06:38:37marnen_ leaves the room.
06:38:59marnenI'll just implement multiplication as iterated addition :D
06:39:26marnenand perhaps do the whole thing in EBCDIC for speed ;D
06:39:32Defilerheh
06:40:22rubuildius_ppcMarnen Laibow-Koser: dc93d0616; 2091 files, 6715 examples, 23629 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/187918
06:40:27marnenthe weird thing is that, for the past week, I've been doing this by day and playing piano in West Side Story by night...talk about mental overdrive
06:40:47marnenthat's a hard score...this is a hard class...I must be nuts
06:40:51rueThe benefit of avoiding low-level is that you have at least a slightly better algorithmic overview
06:40:55marnenyup
06:40:57MenTaLguYthat's the kind of life I want to live
06:41:19marnen:)
06:41:35marnenI wish I could do that all the time, although my head would probably explode if I did
06:44:47rubuildius_amd64 enters the room.
06:45:28Defilermarnen: Brutal. I remember learning to play that
06:45:45manveruDefiler: ping :)
06:45:52rueYou could probably make a fortune if your head exploded and you could still play the piano
06:45:55marnenwhat, WSS? Cool.
06:45:58marnenrue: lol
06:45:59DefilerYeah
06:46:05MenTaLguYthis is one of the things I like about Ruby culture
06:46:30MenTaLguYI don't see conversations like this, at least not to the same degree, in other programming language groups
06:46:37marnenreally interesting production, too, with totally new choreography -- http://www.pacetheater.com/index.cfm/product/69/west-side-story.cfm
06:46:42MenTaLguYRuby seems to be practically bursting with extremely interdisciplinary people
06:46:43Defilermanveru: Not ignoring you, just waiting for you to talk :)
06:46:58manveruDefiler: uh, oh, erm, anything new about extend?
06:47:04marnenMenTaLguY: I guess its Lisp background is showing
06:47:14Defilermanveru: No, but we're getting closer.
06:47:19manveruheh
06:47:32Defilermanveru: Ruled out a bunch of things over the weekend
06:47:35MenTaLguYmaybe
06:47:43MenTaLguYit seems to lack a lot of the annoying things about Lisp culture though
06:47:54manveruwants shoes on rubinius
06:48:10DefilerHas anyone read any of these books? (stand by)
06:48:15manverui hate when gtk just crashes and takes down the whole thing...
06:48:16marnenmental: (perhaps (right? (you are)))
06:48:24Defilerhttp://www.amazon.com/Parsing-Techniques-Practical-Monographs-Computer/dp/038720248X/
06:48:25MenTaLguYI have a partial pure-Ruby port of shoes that I want to get back to some day
06:48:41Defilerhttp://www.amazon.com/Compiler-Design-Handbook-Optimizations-Generation/dp/084931240X/
06:48:56manveruMenTaLguY: now that would be delicious... as good as shoes can taste anyway
06:49:00Defilerhttp://www.amazon.com/Optimizing-Compilers-Modern-Architectures-Dependence-based/dp/1558602860/
06:49:11marnenno, but they're going on my programming wish list now
06:49:53manveruhmm
06:50:06manverui tried 100_000_000 ** 100_000_000 in 1.8.6 today...
06:50:21manverugave me some silly warning about right hand side being too big
06:50:25jicksta enters the room.
06:50:25Defilerhaha
06:53:17marnenso would Shoes on Rubinius be Sandalius or something?
06:55:19marnenmanveru: what? it can't handle 1e800_000_000?
06:55:34marnenActually, I'm thinking BigDecimal probably can handle that...checking
06:55:55manverumarnen: it results in Infinity
06:56:12marnenI was kind of joking
06:56:15DefilerCantor would spit out his drink if he saw that
06:56:28marnenbut as it turns out, BigDecimal *can* handle a number that big *bounce*
06:56:36manveru^^
06:56:47Defilernice
06:56:51marnenalthough God knows if one could do any useful calculations with it...one second
06:57:53marneneek, I just ran into the exponent overflow issue
06:58:05manveruyou can thank me later ;)
06:58:09marnenthanks
06:58:58manverugets back wearing his shoes
06:59:08marnensee, right now, I've got BigDecimal storing both the mantissa and the exponent as Bignums if necessary, but BigDecimal#exponent returns 0 if the exponent overflows Fixnum.MAX, just like it does in MRI.
06:59:25marnenand most of the methods use #exponent.
07:00:12marnenIf I were to change things so as not to copy that MRI (bug|mistake), I think I could add a couple of numbers that size and get a correct result.
07:00:49DefilerI don't have a problem with us supporting larger number than MRI, personally
07:01:02Defileras long as any valid input that MRI would accept is also supported
07:01:16joachimm leaves the room.
07:01:30marnenRight. But if some part of MRI compatibility relies on #exponent overflowing to 0, then...well, you see where I'm going with this.
07:01:45manveruuh oh
07:01:59marnenOf course, I could also use a different method internally for calculations, so that we could have our sushi and eat it too...
07:02:30manveruRubinius.bug_free!
07:03:26marnenhmmm...return fix_silly_MRI_bugs? ?@exponent : 0
07:03:51marnener, s/\?@/\? @/
07:03:57DefilerI say we go with it and wait for a 'bug' report or some failing code in the wild
07:04:07Defilerbut I guess I'm a 'cowboy'
07:04:10marnenme2
07:04:25marnenI just don't want to be an overly stupid cowboy. :)
07:04:38thehcdreamer leaves the room.
07:04:59marnenalthough it's hard to imagine that anything relies on that behavior.
07:05:07marnenAhhh, what the heck. I'll go for broke.
07:07:24Somebee enters the room.
07:07:31marnenDone. And now:
07:07:41marnenx = BigDecimal("1e800_000_000")
07:07:58marneny = BigDecimal("5e800_000_300")
07:08:30marnen(x + y).to_s => "0.50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000001E800000001"
07:08:39marnenI love arbitrary-precision arithmetic
07:09:18DefilerThat is boss
07:10:31marnenAt the moment, it would crap out if I did something like x + BigDecimal("1"), but it's a start.
07:11:29marnenBasically, addition takes more memory the greater the difference in exponents.
07:14:08yugui enters the room.
07:14:49boyscout1 commit by Marnen Laibow-Koser
07:14:50boyscout * Make BigDecimal#exponent return Bignums as necessary, not just Fixnums.; 2172e2a
07:15:09marnenMRI, eat your heart out
07:16:39marnenmanveru: there you go.
07:16:52marnenWell, except that I haven't written BigDecimal#** yet...
07:17:32manverumarnen: thanks :)
07:19:31manveruoh, does anyone know whether IO is still blocking on win32?
07:19:55DefilerYou mean when running the specs under MRI?
07:20:15marnenok, gotta sleep
07:20:33marnen"a number like that/could kill your brother/stick to your own base"...
07:21:23DefilerYou could burn yourself, exponentiating like that
07:22:12yugui leaves the room.
07:22:18manverumarnen: sleep well
07:22:19rubuildius_amd64Marnen Laibow-Koser: 2172e2ac2; 2091 files, 6712 examples, 23601 expectations, 0 failures, 0 errors; http://rafb.net/p/OCrjdA10.html
07:22:33marnenyou too
07:22:35manveruDefiler: in MRI, in general...
07:22:48manveruDefiler: reading from file and writing to socket
07:23:05Defileraha. I don't know for sure
07:23:09manveruhave no win machine to test with, but i seem to remember problems
07:23:29marnenDefiler: I'm thinking it is a bug after all. Certainly http://www.ruby-doc.org/stdlib/libdoc/bigdecimal/rdoc/index.html says nothing about #exponent overflowing to 0. So I think I did the right thing.
07:23:36DefilerIf you write a test I will run it on a win machine for you
07:23:39Defilerif you want
07:24:51marnen"I like to be a BigDecimal/OK by me with big exponent"......I think I'm getting punchy now...good night!
07:25:29manveruDefiler: no worries... it's a bit more complicated and you'd have to get latest shoes
07:26:56manverui'll get a coworker to run this later today
07:27:05Defilerk
07:27:29marnen leaves the room.
07:27:45rubuildius_ppcMarnen Laibow-Koser: 2172e2ac2; 2091 files, 6714 examples, 23627 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/187927
07:34:00twbray leaves the room.
07:41:02Somebee leaves the room.
07:41:11benburkert enters the room.
07:43:11agardinerhmm.. hit a parsing bug in rubinius
07:44:22agardinere = b + listsize -1
07:44:40agardinercomplains about unexpected tUMINUS
07:44:51manveruthat's e = b + listsize(-1)
07:45:11agardinerMRI doesn't have a problem with it though
07:45:22agardiner(this is from ruby-debug)
07:45:46manveruhm?
07:45:57agardineri wonder if this was handled sometime between 1.8.2 and 1.8.6...
07:45:59manveruirb gives me
07:46:00manveru(irb):12: syntax error, unexpected tUMINUS_NUM, expecting kDO or '{' or '('
07:46:17agardinerhuh, that's strange
07:46:26manveruthat's on 1.8.6
07:46:33agardineri wonder why i dont get this error running ruby-debug under MRI then?
07:47:09manveruwell, don't run ruby-debug then? :)
07:47:22manveruor run ruby-debug under rubinius
07:47:52agardinerhehe
07:48:36agardinerit must be taking a path in rubinius it doesn't take under MRI...
07:48:48agardinerwhich is not surprising
07:49:02agardinerok, thanks - i guess its a bug in ruby-debug
07:49:19brixenagardiner: is it misunderstanding 'b' in debug?
07:49:32brixenlike thinking it's a b[reak] ?
07:49:47agardinerno, i'm just starting rdebug, and it was erroring on the line i showed above, which comes from the list command?!?
07:50:04brixenhmm
07:50:23agardineroh, ok i know why
07:50:28agardinerwe error on compilation
07:50:46agardinerso at startup, rdebug calls load_commands, which loads list.rb
07:51:04agardinerwhen we try to compile it we get that error
07:52:55agardinerweirder and weirder...
07:53:09agardinermanveru: that does not seem to error for me on MRI
07:53:13agardinerwhat version do you have?
07:53:39nkpart leaves the room.
07:54:54manveruagardiner: some custom build from 07-09-12
07:55:22agardinerhmm.. so perhaps it is a quite recent fix?
07:55:31manverulemme try p114
07:55:58manveruyou could grep svn for changes to that error
07:56:49manveruwhat would you expect does that result in anyway?
07:57:18agardinerhehe, i think i'll just post a fix for ruby-debug... might be easier, since this does appear to be incorrect usage
07:57:38manveruwell, same error in p114
07:57:48agardinerthere are lines above that have the correct spacing
07:59:29DefilerI'm going to buy myself one book from this list.. anyone have a vote on which should be first?
07:59:32Defilerhttp://www.amazon.com/gp/registry/wishlist/3RB3KX2PIHTWE
08:00:42mkrauskopf enters the room.
08:13:03Somebee enters the room.
08:17:13thehcdreamer enters the room.
08:18:20twbray enters the room.
08:38:18headiusDefiler: they all look so thrilling
08:38:39headiusParsing Techniques is my idea of hell
08:39:05headiusget that $100 compiler book
08:42:13agardiner leaves the room.
08:43:14Maledictus enters the room.
08:50:34twbray leaves the room.
08:52:11octopod enters the room.
08:52:44headius leaves the room.
08:53:04headius enters the room.
08:53:40d2dchat leaves the room.
09:02:16VVSizsimple mention of word "compiler" adds at least $50 to the book cost, it seems
09:24:56headiusit's an expensive word
09:28:36headius leaves the room.
09:29:06headius enters the room.
09:29:59lstoll leaves the room.
09:30:02benburkert leaves the room.
09:32:48qwert666 enters the room.
09:41:18Arjen_ enters the room.
10:30:03kw leaves the room.
10:46:06xhanjian leaves the room.
10:52:01chris2 enters the room.
10:54:47maduyb__ enters the room.
10:55:04maduyb__ leaves the room.
10:58:41lstoll enters the room.
11:16:09Fullmoon enters the room.
11:21:22yugui_ leaves the room.
11:24:22JimMc enters the room.
11:26:11olabini enters the room.
11:30:29jtoy leaves the room.
11:32:49yaroslav enters the room.
11:34:48mkrauskopf leaves the room.
11:35:04mkrauskopf enters the room.
11:50:51webmat enters the room.
11:53:49imajes enters the room.
12:00:08imajes leaves the room.
12:29:47wvdschel enters the room.
12:34:00wvdschel leaves the room.
12:35:25radarek enters the room.
12:38:55RyanTM enters the room.
12:40:13ctennis leaves the room.
12:40:36ctennis enters the room.
12:41:13ctennis leaves the room.
12:52:31Fullmoon leaves the room.
12:52:33chris2 leaves the room.
13:03:34obvio enters the room.
13:09:17ctennis enters the room.
13:11:15Fullmoon enters the room.
13:18:25hornbeck enters the room.
13:20:24dodecaphonic enters the room.
13:25:08RyanTM leaves the room.
13:25:22RyanTM_ enters the room.
13:27:58dodecaphonic leaves the room.
13:32:04qwert666 leaves the room.
13:32:20qwert666 enters the room.
13:33:13RyanTM enters the room.
13:33:17RyanTM_ leaves the room.
14:00:36lstoll leaves the room.
14:09:46qwert666_ enters the room.
14:14:03lstoll enters the room.
14:15:48AndrewO enters the room.
14:15:49trythil enters the room.
14:17:37wmoxam enters the room.
14:23:31RyanTM leaves the room.
14:28:18agile leaves the room.
14:29:01qwert666 leaves the room.
14:31:49moofbong enters the room.
14:39:47macournoyer enters the room.
14:39:58moofbong leaves the room.
14:42:13smparke1 leaves the room.
14:58:37d2dchat enters the room.
14:59:49moofbong enters the room.
15:01:11trythil leaves the room.
15:03:14NoKarma enters the room.
15:06:15NoKarma leaves the room.
15:13:10fbuilesv enters the room.
15:14:28yugui enters the room.
15:14:37lstoll leaves the room.
15:17:10lstoll enters the room.
15:20:57lstoll leaves the room.
15:22:28headiushey guys
15:22:35headiuscheck this out: http://pastie.org/188061
15:22:40headiuslook at 1.9's ivar get speed
15:23:43marnen enters the room.
15:25:00srbaker leaves the room.
15:25:08probablycorey enters the room.
15:26:54benstiglitz enters the room.
15:28:32DefilerThe plot thickens
15:31:31headius leaves the room.
15:31:36headius enters the room.
15:31:36Fullmoon leaves the room.
15:32:08headius leaves the room.
15:32:12headius enters the room.
15:32:59headius_ enters the room.
15:33:02headius leaves the room.
15:33:53headius enters the room.
15:39:16yaroslav leaves the room.
15:42:17Fullmoon enters the room.
15:46:35srbaker enters the room.
15:47:12jtoy enters the room.
15:47:44agile enters the room.
15:48:17qwert666_ enters the room.
15:48:40jtoy leaves the room.
15:49:01jtoy enters the room.
15:50:20headiusDefiler: seems to be a peephole optimization
15:50:38headiussequences of same ivar accesses getting reduced to a single access
15:50:45headiusbenchmark optimizations :)
15:51:08headius_ leaves the room.
15:51:18Defilerheadius: hah
15:51:46DefilerOh well; it isn't like I don't have sympathy for the difficulty level of implementing Ruby
15:51:48headiusprobably similar optimizations for sequences of other variables, so my benchmarks will be useless
15:52:34DefilerSounds like you need a get/set random ivar benchmark
15:56:05dblack leaves the room.
15:56:53yipstar enters the room.
15:59:43srbaker leaves the room.
16:01:21enebo enters the room.
16:05:45qwert666 leaves the room.
16:09:56boyscout1 commit by Marnen Laibow-Koser
16:09:57boyscout * Factor out some repetition.; 6c811f8
16:11:14twbray enters the room.
16:14:11smparke1 enters the room.
16:16:18marnen_ enters the room.
16:17:06marnenI guess my connection is that flaky. :)
16:17:18rubuildius_amd64Marnen Laibow-Koser: 6c811f8a9; 2091 files, 6712 examples, 23601 expectations, 0 failures, 0 errors; http://rafb.net/p/3OwcZb84.html
16:19:37nicksieger leaves the room.
16:22:43Illocution leaves the room.
16:23:18rubuildius_ppcMarnen Laibow-Koser: 6c811f8a9; 2091 files, 6714 examples, 23627 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/188089
16:24:41marnen leaves the room.
16:30:14twbray leaves the room.
16:31:11Illocution enters the room.
16:34:31jtoy leaves the room.
16:34:50benstiglitzG'morning.
16:35:02benstiglitzCould someone apply the patch from #497? I don’t see outbound SSH ever working from this location =(
16:35:19dblack enters the room.
16:36:31GMFlash leaves the room.
16:36:40GMFlash enters the room.
16:41:19Defilerbenstiglitz: I can as soon as I switch locations. Just aboiut to move
16:41:29yugui leaves the room.
16:41:30benstiglitzSure, thanks.
16:41:40benstiglitzSo annoying to not be able to do it myself.
16:42:30lopex enters the room.
16:42:36Defilersomeone should make an offline internet :)
16:44:37dgtizedbrixen: ping
16:44:51dgtizedevan: ping
16:45:17brixendgtized: hey
16:46:40brixendgtized: it seemed that DRb spec was failing because more than one process was trying to open port 9001
16:46:47lstoll enters the room.
16:47:22brixendgtized: regardless of whether DRb has a bug, that spec shouldn't use a hardwired port, because it is very reasonable to expect more than one spec process to run concurrently, and maybe hit that spec
16:47:37brixendgtized: also, I'd like you to discuss something before reverting it
16:53:00dgtizedbrixen: sorry about reverting without asking, but it actually did not fix the problem on my machine, the spec still failed
16:53:10nicksieger enters the room.
16:53:36dgtizedbrixen: it's a combination problem, you are correct that if multiple spec runners were going that would cause an issue, but it's also just that the previous spec doesn't release the port
16:54:07dgtizedbrixen: and so you used Process.pid to fix it, when that doesn't actually change anything if it's still in process
16:54:30brixendgtized: well, it will fix it for multiple processes
16:54:43dgtizedbrixen: yes, but it still fails on the default case
16:54:46brixenso, please check that back in and we can document/work on the other case
16:55:03brixenthere's no reason to confound the two cases
16:56:22dgtizedwhy, I view running specs concurrently as an edge case, just running the spec in a single run and not releasing the socket is not
16:57:10dgtizedsecondly, what exactly should we do about the actual bug in DRb or Rubinius or wherever it is
16:57:29brixendgtized: does my commit prevent an issue when running the specs concurrently?
16:57:43brixendgtized: in other words, as I've clarified that case, is the spec incorrect?
16:58:50dgtizedbrixen: I also note that the same fix was not applied to any of the TCPServer specs, so they will currently fail under the same issue
16:59:19brixendgtized: so what, apply it then
16:59:32brixendon't confuse the different issues
16:59:35dgtizedbrixen: so it seems to me that you checked in that patch to fix the apparent spec failure and it worked because sometimes it doesn't fail because of the race condition
16:59:40brixenwe can work on the bug separately
16:59:53brixendgtized: stop!
16:59:55dgtizedbrixen: ok, I will add a spec for the bug
17:00:11brixenis the change I checked in wrong in and of itself?
17:00:26dgtizedbrixen: but I didn't realize we were actually fixing things to do concurrent results so in that sense, yes it is
17:00:35brixenyes it is wrong?
17:01:18dgtizedbrixen: because it was targeting to fix the spec failure, except the spec failure wasn't fixed -- if we actually want the specs to be concurrent then we need to patch a whole load of other things
17:01:42brixenyes, we want the specs to be sane running concurrently
17:01:45dgtizedbrixen: since it was targeting that spec failure it is wrong because it fails to fix the problem
17:02:04brixenit was targeting *my estimation of the spec failure*
17:02:25brixenwhich was different than yours
17:02:26dgtizedbrixen: but that style of fixing is more apt to mask problems
17:02:35brixenwhy?
17:02:55dgtizedbecause if you fix the spec to work around a bug then what use is the spec
17:03:04brixenwrite a spec for the bug
17:03:07NoKarma enters the room.
17:03:09brixenyou are stuck on this work around thing
17:03:20brixenit's *not* trying to work around anything
17:04:48dgtizedbrixen: I will write a spec for the bug, but yes your spec fix was an attempt to fix a bug that you perceived to be in the spec
17:05:18dgtizedbrixen: the reason this showed up, is because at some point our timing changed so it caused the bug more frequently, in all other cases we would have just tagged the spec as failing
17:06:50dgtizedbrixen: if you are actually worried about concurrent runs, please go and submit a patch for all of Socket
17:07:05brixenexcuse me?
17:07:15dgtizedbrixen: all of socket will fail on concurrent runs
17:07:18brixenso, if I don't fix everything, I fix nothing?
17:07:32dgtizedbrixen: so I am curious why you singled out this spec for concurrency?
17:07:40fbuilesv leaves the room.
17:07:48brixenbecause it was failing, with a hardcoded port
17:07:55brixenbecause I just added a concurrent mode to mspec
17:08:01brixenbecause headius and I have talked about this issue
17:08:06brixenbecause I felt like it?
17:08:20brixenseriously, my only point is that my commit did not make an incorrect spec
17:08:23dgtizedcan you run the concurrent mode on Socket?
17:08:28brixenthe issue of a bug is a *separate matter*
17:08:50joachimm enters the room.
17:09:29dgtizedbrixen: I will acknowledge that it did not actually make it incorrect, but in light of the fact that we don't have a bug spec, it did mask the bug, so your fix should have been applied concurrently with a patch to spec the bug, which I will do, but as a single checkin it attempts to fix the wrong thing
17:09:39dgtizedand as a result would leave a bug in place
17:09:46dgtizedwhich is what was so dangerous about it
17:10:06brixensorry, that's a completely untenable criterion
17:10:10brixenwe write specs in pieces
17:10:28brixenwe don't always know the full behavior when we write a spec for part of it
17:10:34brixenit's an iterative process
17:10:54brixenidentify a bug, write a spec *for* that bug
17:11:04brixendon't depend on a spec to fail for a collateral reason
17:13:11dgtizedyes, but if you patch a spec that is acting strange make sure you don't mask a bug it did happen to reveal without including a spec for that as well
17:14:40evanmorning
17:14:41benny leaves the room.
17:14:49dbussinkevan: morning
17:14:51dbussinkhad a fun weekend?
17:15:31RyanTM enters the room.
17:15:38dgtizedevan: cpp vm is missing the gen directory so can't test it
17:15:46evandgtized: mkdir gen
17:15:55dgtizedevan: did that but you have code in it
17:16:11evanit's autogenerated by running instructions.rb in vm/
17:16:22dgtizedgen/iseq_instruction_names.hpp
17:16:26evangen/ would be a silly name if the code weren't autogenerated.
17:16:27dgtizedis that in the rakefile then?
17:16:32evanit's all in instructions.rb
17:16:35evancreation wise.
17:16:45dgtizedbut does instructions.rb get called from the rakefile?
17:17:41dgtizedok that does fix it it looks like, it's just tricky to follow like that when it's not in the rake file
17:20:10loincloth enters the room.
17:24:37evandgtized: could be an oversight
17:30:44dgtizedbrixen: so what is the suggested way to make concurrent specs run cleanly for this type of thing?
17:31:01dgtizedbrixen: because if I try incrementing the port from each run they will collide
17:31:22brixendgtized: what's wrong with the way I did it?
17:31:53dgtizedbrixen: it's not what's wrong with it alone, it's what is also necessary to get a new port between specs
17:32:16Somebee leaves the room.
17:32:23dgtizedbrixen: namely that I have to increment the port number
17:32:47moofbong leaves the room.
17:32:47dgtizedbrixen: so if you use 9001 + Process.pid & 7 then it's still likely it will collide
17:32:57Somebee enters the room.
17:33:37headiusmorning gents
17:34:00Somebee leaves the room.
17:34:35Somebee enters the room.
17:34:46dgtizedbrixen: http://www.pastie.org/188117
17:35:28twbray enters the room.
17:35:49Somebee_ enters the room.
17:35:58dgtizedthe port collision problem is that the socket is not getting freed inside that single process not multiple ones
17:36:50dgtizedsecondly I really don't like the idea of randomly pulling ports out of a hat for specs based on the process.pid
17:37:01dgtizedbecause we are still going to get concurrent collisions with something that way
17:37:49dgtizedalso what are you doing about the linking/unlinking specs?
17:38:07thehcdreamer leaves the room.
17:39:34brixendgtized: the 9001 + .. thing is unlikely to collide
17:39:53dgtizedbrixen: even if there are 7 different DRb spec files that each use it?
17:39:59brixendgtized: the lower order digits likely to be distinct on multiple runs
17:40:06brixendgtized: 7?
17:40:23yaroslav enters the room.
17:40:23dgtizedack, I misread the & as a %
17:40:47brixendgtized: what's the linking/unlinking spec?
17:41:20dgtizedthe file existance / deletion specs, I don't know if we actually have them but presumably they need to be run in a set order
17:41:29dgtizedand if they use the same filename
17:41:40brapse enters the room.
17:42:33dgtizedbrixen: http://git.rubini.us/?p=code;a=blob;f=spec/ruby/1.8/library/socket/fixtures/classes.rb;h=3c55328c3 2d5a7b4851e8cf6c03c3b831fbdb14c;hb=refs/heads/master
17:45:31dgtizedbrixen: http://git.rubini.us/?p=code;a=blob;f=spec/ruby/1.8/core/file/shared/unlink.rb;h=37f5d9e7bc59a1ab2 c4b6937627c7c8a9b4ed79e;hb=refs/heads/master
17:45:42dgtizedbrixen: that is shared so presumably more then one unlinking spec uses it
17:45:43RyanTM leaves the room.
17:46:54brixendgtized: we can write helpers like #tmp for any of these cases
17:47:07brixenmspec/lib/mspec/helpers/tmp.rb
17:47:57brixendgtized: there is probably not a "perfect" way to get uniqueness for these, but we can reduce the likelihood of a clash to statistically insignificant numbers
17:51:25dgtizedbrixen: I really don't feel like thinking about concurrent spec runs it's a painful problem to worry about -- so I will checkin my pseudo fix for DRb and then I would advise you deal with making sure it doesn't clash with Socket or anything else that uses port numbers
17:52:48Somebee leaves the room.
17:55:26NoKarmaheya all
17:57:15evanARG
17:57:22evansome fucking spammer is putting my email in the From header
18:01:54evanis there anything I can do about this?
18:02:28TheProkrammerNope. :(
18:02:55djwhittnot totally true
18:03:08djwhittyou can make sure you have spf setup and hope that other mail servers honor it
18:03:42djwhitthttp://www.openspf.org/Introduction
18:04:42boyscout3 commits by Charles Comstock
18:04:43boyscout * hack to fix DRb.start_service spec to at least test start_service; f3f94c9
18:04:44boyscout * spec for DRb.stop_service to see if it clears the socket correctly; 4c8d6d9
18:04:45boyscout * Revert "Revert "Made DRb spec depend partially on PID so multiple runs don't clash.""; 03cb539
18:05:32TheProkrammerAnd there's other things other server's should check (from domain vs sender domain for example), but you can't stop someone from spoofing the From header.
18:05:39octopod leaves the room.
18:05:44dgtizedbrixen: happy?
18:11:15brixendgtized: we'll figure out something to better insulate the specs from false failures. it's an evolving process
18:11:58benny enters the room.
18:12:19rubuildius_amd64Charles Comstock: f3f94c9b5; 2091 files, 6713 examples, 23606 expectations, 0 failures, 0 errors; http://rafb.net/p/oRdcWt83.html
18:12:24dysinger enters the room.
18:15:38dysinger leaves the room.
18:17:45Ingmar leaves the room.
18:17:56rubuildius_ppcCharles Comstock: f3f94c9b5; 2091 files, 6715 examples, 23632 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/188136
18:20:09probablycorey leaves the room.
18:21:02jp_tixso anyone know what this maglev thing is? are they creating a commercial, smalltalkish Ruby VM?
18:21:29Ingmar enters the room.
18:22:02dysinger enters the room.
18:28:27probablycorey enters the room.
18:30:05dambalah enters the room.
18:31:03danlucraft enters the room.
18:34:13joachimm leaves the room.
18:40:39moofbong enters the room.
18:41:05imajes leaves the room.
18:49:41bitbang enters the room.
18:50:09marnen_ leaves the room.
18:52:35brapse leaves the room.
18:54:48TheVoice enters the room.
18:54:53headiusgood response evan
18:55:09evanthanks.
18:55:30headiusthe "ruby in ruby" thing is more a religious or opinionated discussion...we'll just have to agree to disagree there
18:55:36evansure
18:55:40headiusI wouldn't even have bothered if you didn't use it to put other impls in a bad light
18:55:45imajes enters the room.
18:55:51headiusthat whole "JRuby is Ruby for Java developers" thing
18:55:57evani did open the door
18:56:03evanwith my "hard hitting" slides.
18:56:04evan:)
18:56:13headiushow about I start saying "Rubinius is for Ruby developers who think Ruby's too darn fast"
18:56:23headiusI've been pulling punches til now
18:56:30tarcierihaha headius
18:56:45evanso you're taking the gloves off now?
18:56:48headiusnah
18:56:59headiusI just thought I'd toss one grenade out there and see what happens
18:57:10headiusI'll be as publicly polite as ever
18:57:13headius:)
18:57:22headiusand you know I DID warn you about the eval order thing
18:57:26evanyou have a funny definition of public polite.
18:57:28headiusand give you examples of why it was broken
18:57:32evani'm sure you did.
18:57:43dodecaphonic enters the room.
18:58:08evanI worry you're putting me in a light of a guy who's turning Rubinius into something completely different
18:58:15evana not Ruby.
18:58:25evanesp. since you used the work frequently
18:58:28headiusI didn't mean to give that impression
18:58:29evanas though it happens daily.
18:58:36imajes leaves the room.
18:59:01brixenheadius: it's disingenuous for you to say "ruby in ruby" meme must die and then advocate for use to develop the core libs so more impl can use them
18:59:08brixens/use/us/
18:59:26brixenwe should be promoting "ruby in ruby" meme for everyone
18:59:30headiusthe "ruby in ruby" meme wouldn't have to die then
19:00:07headiusif it were used entirely for positive reasons, such as to promote more folks helping to spec and write ruby impls of core classes and extensions, it wouldn't be a problem
19:00:14headiusbut using it as a club...well, that's asking for it
19:00:37brixenheadius: well, it's used as a differentiator for sure
19:00:40brixenand it's quite true
19:00:48brixentrue enough for you to get snarky about it often
19:00:51headiushigh road, gents...you've got enough glass in your house that you should avoid throwing those stones
19:01:06brixenheh
19:01:12headiusand there have been plenty more of them lobbed at JRuby publicly than at Rubinius
19:01:29evanheadius: you should consider giving some context to your objection to the RiR meme
19:01:40brixenohh nice RiR
19:01:51brixenour RiR can beat up your RoR
19:01:54evanheadius: ie, my RubyConf 2007 presentation
19:02:05evanit's too far back for people to recall without prompting.
19:02:05headiusand subsequent presentations
19:02:12headiusyou love to call us out on LOC
19:02:13evanwhen?
19:02:14VVSizhides behind the bushes...
19:02:23evani haven't talked about it since RC07
19:02:27wycats enters the room.
19:02:32evanmainly because it's just a stupid point.
19:02:38evanwell, not stupid.
19:02:43evanbut it's not helping anyone
19:03:01evanI talk about how the Rubinius kernel is written in Ruby
19:03:01brixenheadius: with 180k loc java, our 12-22k loc of C++/C isn't really something to laugh at
19:03:05evanthats the extent of it.
19:03:05brixenor get upset about
19:03:28headiusbrixen: with performance better than 1.8, sometimes better than 1.9, and almost all Ruby apps working, our 180kloc of Java isn't really something to insult
19:03:44brixenheadius: how does RiR insult jruby?
19:03:55enebobrixen: 180k?
19:03:57brixenI think you're perceiving an insult that might not be there
19:04:07brixenenebo: rough numbers, you tell me
19:04:17evanwhen I talk about the Rubinius kernel, it's not a dig at anyone else
19:04:21brixenenebo: find src -name '*.java' | xargs wc -l
19:04:24eneboI think like 140k, but that also includes things like the parser
19:04:24wycatsheadius: the fact is that the vast majority of the kernel actually is in Ruby
19:04:28headiusI consider it an insult to claim rubinius is better solely because JRuby is written in "not ruby"
19:04:34wycatswhich means that most stack traces end in Ruby
19:04:48evanheadius: other than RC07, when have I implied that?
19:04:59brixenheadius: well, from me personally, it's not an insult
19:05:11enebobrixen: That command only gives me 143k
19:05:14brixenheadius: unless you take me saying "this is a more sensible way to do it" as insulting :P
19:05:24headiusthat's an opinion
19:05:32headiustoo often presented as fact
19:05:34brixenenebo: dunno, just did svn update and that command
19:05:40bitbang leaves the room.
19:05:43evanheadius: if you want us to take the high ground, then you must as well.
19:05:48enebohmm, I have trunk checked out...weird
19:05:58eneboAs you would expect me to :)
19:06:00headiusevan: when have I not, other than this post?
19:06:29evanwell, you see to be harboring illwill
19:06:30brixenenebo: http://pastie.org/188160
19:06:47evanabout some continuing RiR slight
19:06:53evanwhich I can tell you is not there.
19:07:06enebobrixen: so same number then
19:07:08brixenheadius: we simply like our way better :P
19:07:14headiusI'm sure you do :)
19:07:21brixenenebo: heh, misread, sorry
19:07:27enebono problem
19:07:31brixenenebo: it was having to parse all those digits
19:07:34brixen:D
19:07:42enebobrixen: You guys still use MRI parser?
19:07:47TheProkrammerbah, the beauty of rubinius is if the base libraries are written in pure ruby, and base the specs, all impls can partake of the joyusness.
19:07:50brixenenebo: yeah
19:08:04eneboadd several k to your lines of code
19:08:11eneboof subtract ours
19:08:19enebo(just being mildly pedantic)
19:09:00headiusand I'd be interested in knowing how many of your 150 contributors have done more than a commit the past month
19:09:02headiusor even one commit
19:09:13headiusyou put those numbers out there like you've got an army of contributors
19:09:34headiusyou misrepresent the truth
19:09:41eneboevan: Actually that one wrankled me a bit....Most committers seem to do near 100% spec work from what I have seen
19:09:46headiusthere's where a lot of the ill will comes from
19:09:47wycatsheadius: that's not quite true
19:10:19eneboAt least from my RSS feed of rubinius check ins
19:10:25brixenenebo: find shotgun/lib/ -type f -name '*.[ch]' | xargs wc -l => 34383
19:10:31brixenenebo: parser is in that, so...
19:10:36enebooh ok
19:10:37evanheadius: In presentation, I typically indicate that we have 100+ project committers, with 20+ actives at a time
19:10:52eneboI was not sure if it was...and that is after generation of bison file?
19:10:55evani skipped that in my post for the sake of brevity
19:11:10brixenenebo: yeah, I imagine
19:11:17enebook
19:11:18brixenenebo: it's from a built co
19:11:22evanheadius: but again, it's not a dig. i'm not trying to say that we're better, it's just the way it is.
19:11:27headiustracking non-spec changes, rubinius is no more active than JRuby...so I think there's a bit of bluster there
19:11:34brixenenebo: naive surely, but it's still a comparison
19:11:38evanheadius: in the same way I don't consider it a slight when you constantly talk about using the best VM in the universe
19:11:46imajes enters the room.
19:11:50evanor that you have first class java integration
19:11:57headius*one of* the best :)
19:11:57tarcierievan: did you see I compiled the Mongrel parser with your Ragel patch?
19:12:02evantarcieri: i did!
19:12:12evanheadius: but you need to consider other points of view here
19:12:16enebobrixen: It is tough too since we have quite a few optional pieces in our codebase which are not neccesary for 1.8 (like YARV, Rubinius, Optional parser)
19:12:20evanheadius: i think you're getting bent out of shape for nothing
19:12:21tarcierievan: there's one place I think you need a newline that you don't have one
19:12:25evantarcieri: ack.
19:12:27tarcierievan: on one of the Rubinius.asm blocks
19:12:29headiusno, it's not nothing
19:12:41VVSizbtw, amount of non-commenting Java source code lines in JRuby: 88068 :)
19:12:51brixenenebo: ok, I'm not here to tell you your numbers, but subtract all that, I'm guess more java than ruby, and more java than our C/C++ :)
19:12:54enebobrixen: and a more complete 1.8 impl (at this point in time)
19:12:55tarcierievan: the generated code was something to the effect of "Rubinius.asm { ... } begin"
19:13:12enebobrixen: yeah...we have a higher ratio
19:13:18imajes leaves the room.
19:13:26evanstop with the LOC comparison.
19:13:27evanplease.
19:13:32headiusbrixen: and an interpreter, and a rubinius bytecode engine, and a yarv bytecode engine, and a JIT
19:13:35evanwe all know LOC is bullshit anyway.
19:13:37imajes enters the room.
19:13:38headiusso yeah, that's pointless
19:13:44headiusthere's a lot more *in* JRuby
19:13:46headiusso there's more code
19:14:11