Index

Show enters and exits. Hide enters and exits.

00:00:58antares leaves the room.
00:01:28lstoll leaves the room.
00:02:23stepheneb leaves the room.
00:04:48trythil leaves the room.
00:05:16dlee leaves the room.
00:06:20stepheneb enters the room.
00:07:54dlee enters the room.
00:11:20Skip leaves the room.
00:11:23jayWHY leaves the room.
00:11:51srbaker leaves the room.
00:13:10trythil enters the room.
00:21:57imajes enters the room.
00:25:42therealadam leaves the room.
00:26:06rueKernel#p prints nothing if it has no argument, Kernel#puts prints a newline only
00:26:19rueNo argument is not the same as nil argument
00:27:22rueOur #p is incorrect, I think. Fixing
00:27:56Maledictusconfirmed here
00:29:19gnufied_ leaves the room.
00:30:21wmoxam leaves the room.
00:33:14trythil leaves the room.
00:34:29obvio leaves the room.
00:36:51Maledictus leaves the room.
00:38:19demisonerue, Maledictus (he left) : i guess you're right about p, but what about the ArgumentError when calling (1..100).map(&:to_s) for example?
00:38:57demisonesorry, i meant "[(1..10).to_a, (1..10).to_a].map(&:to_s) "
00:39:18anteaya enters the room.
00:45:56lopex leaves the room.
00:47:30naeu leaves the room.
00:48:56stepheneb_ enters the room.
00:49:36AndrewO enters the room.
00:50:48crayz_ leaves the room.
00:51:18rueHrm
00:53:43rueWeird, I cannot seem to pin down the record separator
00:55:13drbraintry nails
00:55:15brixenperhaps a large pair of tweezers and some chloroform
00:55:36brixenor nails
00:56:05demisonechloroform is good
00:56:12demisone:)
00:59:30benstiglitz leaves the room.
01:00:17lstoll enters the room.
01:01:53ezmobius leaves the room.
01:02:59dewd leaves the room.
01:03:46stepheneb leaves the room.
01:04:20rueAh, it uses the system record separator, I think
01:04:26rueStupid-ass behaviour
01:07:18gnufied enters the room.
01:12:12peeja enters the room.
01:12:54boyscout2 commits by Eero Saynatkari
01:12:55boyscout * Fixed Kernel#p to not print anything given no arguments.; 19dc390
01:12:56boyscout * Specs for Kernel#p behaviour.; e1406b1
01:13:23demisonehmm... gonna check it out
01:13:45agardiner enters the room.
01:14:31rueMorning, agardiner
01:14:36agardinerhiya rue
01:14:39headius enters the room.
01:19:53wmoxam enters the room.
01:22:40demisone leaves the room.
01:23:30stepheneb enters the room.
01:25:11agardinerso, i hit a problem with TCPSocket last night... i dunno if its related to the MySQL problem, but i'm getting an error due to an attempt to seek on a pipe when doing a puts
01:29:10agardinerDefiler: i saw in the logs you were hitting problems with the debugger... care to elaborate?
01:29:45rubuildius_ppcEero Saynatkari: 19dc39052; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181446
01:31:06headius leaves the room.
01:31:26obiejuan leaves the room.
01:32:52headius enters the room.
01:33:12chris2 leaves the room.
01:33:37seydar enters the room.
01:35:10wdperson enters the room.
01:35:17stepheneb_ leaves the room.
01:36:40Defileragardiner: Oh, I was just saying that I hadn't had a lot of luck using it to debug this particular issue
01:37:07Defileragardiner: re: your error with puts.. do you have a reproduction? I'd like to look at t
01:37:11Defilerit
01:37:17dysinger leaves the room.
01:38:32dysinger enters the room.
01:39:58headiusbtw, bigdecimal won't be a general blocker, but it's used for DECIMAL fields in most of the DB drivers
01:40:14cored enters the room.
01:40:31DefilerI intend to have it implemented soon, so it shouldn't be a problem
01:40:55Defiler*crosses fingers*
01:41:06headiussay a little prayer
01:41:07rubuildius_ppca little prayer
01:41:16wycats_ enters the room.
01:41:22headiussay I hate running rubinius builds
01:41:22rubuildius_ppcI hate running rubinius builds
01:41:28headiusquote of the week
01:41:46DefilerOdin, send thy ravens with decimal-related inspiration
01:41:54headiuscan you just wrap libtom?
01:42:13DefilerI'm going to do it in Ruby
01:42:26headius*cough*
01:42:27headiusok
01:42:42Defilerwhich is a yes, really
01:42:56Defilersince it means I can just use bignums behind the scenes
01:43:01bricolage leaves the room.
01:43:07DefilerThat's essentially what the new decimal implementation does, and I like it
01:43:25headiusok
01:43:27DefilerUnfortunately it uses rb_ensure, which I am told is problematic to implement
01:43:51DefilerSo I can either fork the C version, or port it to ruby.. evan prefers the latter, so that's what I will do
01:46:19agardinerDefiler: hmm... i'm not getting the seek error now, since i changed my code. Let me see if i can reproduce it...
01:46:47seydarthis is is no way related to decimals, but has anyone toyed with the idea of doing optional static typing?
01:47:17headiusseydar: the power of christ compels you!
01:47:29DefilerWe don't plan on changing the language semantics, but it has been discussed here approximately 637 times.
01:47:30seydarshrinks away
01:47:38DefilerSo you are in good company. :)
01:48:13seydarok. because _my friend_ thinks it'd be cool to have the option
01:48:14headiusa longer answer is that ideally the duby type decl and inference logic could eventually be used by any ruby impl to add typing smarts, if there were such a desire
01:48:24brixenseydar: www.cs.umd.edu/~jfoster/ruby.pdf
01:48:42seydarheadius: but how does type checking really work when ruby is all about message passing?
01:48:59seydari'm about to quote someone here....
01:49:04headiustyping is just another characteristic of the message
01:49:23headiussend to X with arg types Y and Z
01:49:26Defilerhttp://portal.acm.org/citation.cfm?id=118014.117964&coll=GUIDE&dl=GUIDE&CFID=9596217&a mp;CFTOKEN=52599924
01:49:37seydarhttp://talklikeaduck.denhaven2.com/articles/2007/10/17/you-cant-judge-a-book-some-mental-traps-in- learning-ruby
01:49:42headiusbut a more important question is what you'd hope to accomplish with said typing
01:50:03agardinerDefiler: ok, i can reproduce it...
01:50:05headiusif it's performance, you would get none since you're still dynamically binding
01:50:24headiusif it's type-safety, you'd get a bit more than you have now, but not much
01:50:52DefilerI think it would be better to make a new language with the intended characteristics
01:50:55foysavas enters the room.
01:50:59DefilerRather than try to mangle Ruby into something else
01:51:11seydarwith performance, couldn't shotgun (in some future rewrite) use completely compiled mini-blocks and put the blocks together as needed?
01:51:22DefilerWe can do that without static typing
01:51:26seydarDefiler: thats probably a better idea than any in my head
01:53:40seydarwhoa! what happened to #to_sexp?
01:54:03brixenwe're too_sexp for our code
01:54:36seydarroflcopter down, send aid
01:54:56seydarso really, what happened to it?
01:55:03DefilerNothing?
01:55:03dysinger leaves the room.
01:55:06brixenheh
01:55:16seydarits not there in 'shotgun/rubinius irb'
01:55:19brixenseydar: what happened to *your* to_sexp?
01:55:32seydarits not anywhere!
01:55:38seydari cant find my to_sexp!
01:55:39Defiler"5".to_sexp works for me
01:55:45brixen"pirb(main):001:0> "p 1".to_sexp
01:55:45brixen=> [:newline, 1, "(eval)", [:fcall, :p, [:array, [:lit, 1]]]]
01:55:50brixenmine too
01:55:50headiuslimited inlining is possible without static typing, though it's harder
01:55:54seydarok its here
01:56:01headiusand you need to install guards and fallbacks all along
01:56:40DefilerYeah. You have to figure out that it's OK to optimize at runtime, and be prepared to deoptimize it when someone adds methods, etc
01:56:54wycats leaves the room.
01:57:08drbrainyay! Tinderbox works again (on MRI, at least)
01:57:15Defilerawesome
01:57:17drbrainjust in time for dinner
01:57:21evanhuzzah!
01:57:28headiushooplah!
01:57:33Defilersqueee!!
01:57:39FobaxDo methods get added so often that you can't just recompile lots of stuff when any method is added?
01:57:47DefilerYes
01:57:49chop3 enters the room.
01:57:55Fobaxand not have any of those guards most of the time?
01:58:04DefilerWhat guards?
01:58:11Fobax<headius> and you need to install guards and fallbacks all along
01:58:28DefilerOh, right. Well, we don't do this concept at all yet
01:58:34DefilerSo this is all hypothetical
01:58:55Fobaxit would make adding a method slow, and cause everything to slow down for a bit afterwards, but should be faster in general, right?
01:58:56Defilerbut you have to make sure you don't invoke the wrong method
01:59:11headiusalways need guards, or you end up stopping the world to recompile everything
01:59:21DefilerWe would have to design some benchmarks to know for sure which way makes sense
01:59:21Fobaxwhat's wrong with that?
01:59:43headiuswell, nothing, if you don't mind stopping the world fairly often :)
01:59:58Fobaxstartup time would suffer, but wouldn't runtime be much better
02:00:06headiusthe complexity arises from not knowing what limited subset you have to recompile, so you end up having to recompile almost everything
02:00:13DefilerIntuition is useless when it comes to this kind of stuff
02:00:15headiusruntime would still need to recompile because of metaprogramming, etc
02:00:38headius90% of activerecord doesn't exist at startup, for example
02:00:46headiusand may not exist until some indeterminate time in the future
02:00:49Fobaxthat's true, but after a minute, it does
02:01:01headiusuntil you hit a rarely used code path that calls a new finder
02:01:08DefilerAlso, it is potentially challenging for the VM to figure out when 'startup' is over
02:01:14headiusthere's not really any moment in time you can freeze everything easily with ruby
02:01:20DefilerIt isn't like there is a Ruby construct that says "OK done defining things now go for it"
02:01:40FobaxCould you add one?
02:01:46evanno.
02:01:50VVSiz_ enters the room.
02:01:57headiusevan and I talked about using class.freeze as an indicator once
02:01:57DefilerWell.. yes, but we won't
02:01:59stepheneb leaves the room.
02:02:16DefilerWe are not forking Ruby
02:02:19headiusanything that requires people to fundamentally change the way they use ruby would never fly
02:02:35DefilerWe would design something with fewer rough edges, if we were. :)
02:02:59jptix leaves the room.
02:03:45DefilerThis stuff is fun to talk about, but we have a huge list of basic things that need to work before we can consider such tweakery
02:04:08Defilerlike x.shift(*x) for example
02:04:25Defilerwell, s/shift/something_like_that/
02:04:47d2dchat leaves the room.
02:05:07headiusin evan we trust
02:05:57DefilerIf only he hadn't called us bitter...
02:06:08evani called you bitter?
02:06:21DefilerBad political joke
02:06:28brixenhah
02:06:46evanah.
02:07:13agardinerDefiler: ok, i've hacked up a cut-down test case showing the seek problem...
02:07:24agardinerwant me to put it in a ticket, or just pastie?
02:07:55Defilerticket please, and assign it to me if you would be so kind
02:07:59DefilerAlso, this is amazing http://www.matasano.com/log/1032/this-new-vulnerability-dowds-inhuman-flash-exploit/
02:08:00agardinernp
02:09:31VVSiz leaves the room.
02:09:34wmoxam leaves the room.
02:11:36stepheneb enters the room.
02:12:04brixenDefiler: wow
02:12:32DefilerI didn't realize that ActionScript ran on a register-based VM, actually
02:12:43brixenme neither
02:12:55headiusyeah
02:17:00brainopia leaves the room.
02:18:41evanthat guy is intense.
02:21:35agardinereww... how do you format a code block on LH?
02:21:51ruePoorly
02:22:10rue@@@\ncode\n@@@ still probably works
02:22:11agardinerhe chose... poorly!
02:22:14Defiler@@@ ruby
02:22:21Defilerand then @@@ on a line by itself to end the block
02:22:23agardinerk, thanks
02:22:25Defiler(I think)
02:22:55rueDamn it
02:23:12agardinerok, much better
02:23:22agardinerDefiler: ticket is 497
02:23:27DefilerThanks
02:24:23DefilerLooks clean. Good stuff
02:24:23rueI should probably give up on this but I keep getting drawn in. Apache and libtool both suck.
02:29:25evanrue: hows the doc coming?
02:29:50Defilerhttp://www.matasano.com/log/1038/dowds-flash-report-what-have-we-learned/
02:30:05DefilerThe follow-up article is also extremely interesting and has some good thoughts that we should probably keep in mind as we work on the VM
02:31:11DefilerHas Mark Dowd simply outclassed us? Should we pack it up and quit?
02:31:12DefilerYes. But don’t feel bad about that. You’re a human being, and he’s a remorseless killing machine.
02:31:32headiusI suppose all new VMs will have to deal with such things
02:34:15gnufied leaves the room.
02:35:46evanhehehe
02:35:49evanthats so awesome.
02:37:55agardineryeah... i'm off to take up interpretive dance! (whatever the heck that is!)
02:38:02DefilerThe reviews of his book at Amazon are awesome
02:38:05Defiler"The longer you wait to read this book, the further you will fall behind"
02:41:31brainopia enters the room.
02:42:31headiusevan: your opinion on something, if you have a moment
02:43:09evancertainly my friend
02:43:11headiushttp://pastie.org/181129
02:43:35headiusthose are two examples of backtraces generated not from Ruby frames but from cleverly-decorated Java method names by the compiler
02:43:46evanoh nice.
02:43:47headiusso it mines the Java stack trace to produce that
02:43:54evancool
02:44:07headiusI was curious what you thought of the __rescue__ etc...it could be collapsed with a little smarter mining, but I think it's kinda nice
02:44:38evanyeah, I think __rescue__ is fine
02:45:09headiusit shows up this way because in JRuby's compiler they are emitted as separate Java method bodies
02:45:18evanyeah
02:45:23evanwe've talked about that
02:45:52headiusthis is part of an attempt to take perf to the next level...to be able to reliably omit artificial call frames and still have e.g. accurate stack traces
02:46:18headiusfib, for example, is another 50% faster without call frames...twice 1.9's performance
02:46:32_VVSiz_ enters the room.
02:46:38tarcierinice
02:47:01headiusit's mostly safe now, but things like $_ are a bitch
02:47:04DefilerCool
02:47:20headiusany methods that modify those will be tagged as "frame-wanting"
02:47:24rueGoddamnit, now it cannot find main(), *sigh*
02:47:40rueevan: Alright, I ended up trying to refine my plans for the backend
02:48:23headiusanyway...as I refine the general mechanism I'll keep y'all posted. I think it would be useful for rubinius as well, to reduce per-call methodcontext cost when possible
02:48:35headiusand it will certainly help when jit enters the picture
02:48:38evanyeah
02:48:45evani HATE $~ and $_
02:49:10headiusthey're by far my least favorite of the frame escapees
02:49:13evansurely
02:49:43headiuslogically though, they're of limited impact...if you see that code may be calling methods that modify or access them, you fall back on slower paths
02:49:59headiusthe worst side effect is that you slow down unrelated calls with the same name
02:50:02DefilerTo go back to the earlier discussion.. if we were going to make significant compatibility-breaking changes to Ruby, we would for sure rip those out. Heh
02:50:14headiusthat can be ameliorated by gathering runtime information on what's *actually* compatible
02:50:17headiuser
02:50:23headiuschanged thought in mid sentence
02:50:27headius*actually* being called
02:50:36evanyeah
02:50:48evani saw Kresten's presentation on HotRuby at rubyfools
02:50:51wycats enters the room.
02:50:57evanhe's got some cool shit
02:51:00Cosmos95 enters the room.
02:51:02headiusahh yes, I only heard a bit about that
02:52:18agardinerevan: i had a question for you the other day, but i think you'd gone...
02:52:40brainopia leaves the room.
02:53:09antares enters the room.
02:53:30evanoh
02:53:33evani'm just running out
02:53:40evanit's ezmobius's birthday
02:53:59seydarhappy birhtday ezmobius
02:54:02antares leaves the room.
02:54:05antares enters the room.
02:54:19agardinerit was: is there a reason why e.g. SendSite.create takes an OBJECT instead of a SYMBOL
02:54:39antares leaves the room.
02:54:43agardiner(in the C++ code)
02:54:46antares enters the room.
02:55:12evani've since changed that
02:55:21evani'm still backproping specific types
02:55:34agardinercool then! :-)
02:55:38evanchanging OBJECT to specific OBJECT subtypes
02:55:41evanok, off i go.
02:55:42evanlaters!
02:55:47agardinerlater
02:59:47nicksieger leaves the room.
02:59:54agile enters the room.
03:02:27cored leaves the room.
03:03:29VVSiz_ leaves the room.
03:04:03headiusahh, found hotruby stuff
03:04:26headiusI love when people show benchmark numbers for early stages of Ruby...you just have to shake your head and say "they'll learn soon enough"
03:04:34agardinerhehe
03:04:38agardinergot the link handy?
03:05:10headiushttp://hotruby.accelart.jp/
03:07:26headiusI'm not sure where he got the number for JRuby in his little benchmark
03:07:45headiuson my machine it takes about 6 seconds, and that's from startup with no warmup time
03:08:21agardinerearly stages is an understatement! they've got what - 50 methods implemented, no exceptions... embryonic may be more accurate! :-)
03:08:23tarcierihaha someone wrote a YARV bytecode interpreter in ECMAScript?
03:08:24headiushis ruby 1.9 number is about what I get
03:08:24drbrain enters the room.
03:08:26tarcierithat's lolz
03:08:32drbrainoops
03:08:53headiusnot sure if this is the same thing kresten presented or not
03:09:00DefilerWow this is pretty intense
03:09:05Defilerhttp://hotruby.accelart.jp/test-web/pinball.html
03:09:25tarcieriwhoaaaaaaa
03:09:30seydarit keeps breaking on my machine. it stalls if the blocks touch certain things
03:09:34headiusyeah flash stuff
03:09:47tarcierithat's... awesome
03:10:26madsimian_ enters the room.
03:12:12rueI think his figure is pretty much JS performance
03:12:58agardinernot a bad approach, taking bytecode to execute rather than source...
03:13:11agardinersolves having to parse ruby
03:13:29headiusyeah, we have a yarv machine we want to revisit some day
03:13:35headiusthough we also wrote a compiler
03:13:58agardineris the yarv bytecode documented somewhere?
03:14:11DefilerPretty much
03:14:19tarcieriman, we've always had some douchebag working on our Flash crap who wrote totally unmaintainable monstrosities
03:14:31tarcieriif you could get full access to the Flash API in Ruby...
03:15:36headiuspseudo-ruby
03:15:44tarcieriwell yeah
03:15:50seydari want DOM acess from Ruby
03:15:57DefilerI'm trying to find the link, though, and not having a lot of luck
03:15:57tarcieriA Ruby-esque language which has full access to Flash's APIs
03:16:19agardineryeah, i didn't find anything with a quick google search...
03:16:23headiusI made a JRuby applet that had access to the DOM at one point
03:17:08seydarugh. building rubinius on 10.4 needs env MACOSX_DEPLOYMENT_TARGET to be set to 10.4
03:17:08KirinDav leaves the room.
03:17:21Defilerconfigure should do that for you
03:17:30DefilerThat used to work, at least
03:18:18seydarnot working anymore
03:21:46antares leaves the room.
03:27:39benburkert leaves the room.
03:29:39benburkert enters the room.
03:32:20benburkert_ enters the room.
03:32:20benburkert leaves the room.
03:33:33MenTaLguY enters the room.
03:34:22benburkert_ leaves the room.
03:35:38benburkert enters the room.
03:36:28benburkert leaves the room.
03:36:35MenTaLguYhey guys
03:36:46seydarhowdy
03:36:46benburkert enters the room.
03:37:41benburkert leaves the room.
03:38:00benburkert enters the room.
03:38:22headius leaves the room.
03:40:31benburkert leaves the room.
03:40:45benburkert enters the room.
03:42:12imajes leaves the room.
03:42:20KirinDav enters the room.
03:46:05benburkert leaves the room.
03:46:23benburkert enters the room.
03:46:23djwhitt enters the room.
03:48:15dysinger enters the room.
03:54:14srbaker enters the room.
03:54:30seydar leaves the room.
03:54:53fbuilesv enters the room.
04:19:29trythil enters the room.
04:19:37GMFlash leaves the room.
04:19:42GMFlash enters the room.
04:35:45wmoxam enters the room.
04:37:45chop3 leaves the room.
04:40:35srbaker leaves the room.
04:48:11KirinDav leaves the room.
04:49:12srbaker enters the room.
04:50:44headius enters the room.
04:50:58be9 enters the room.
04:54:21headius_ enters the room.
04:55:24headius leaves the room.
04:56:53srbaker leaves the room.
04:57:02d2dchat enters the room.
04:57:41srbaker enters the room.
04:58:23stepheneb leaves the room.
05:01:48KirinDav enters the room.
05:13:49tarcierihmm, if this is correct, there's a register-based virtual machine more popular than Rosetta
05:14:16MenTaLguYmm?
05:14:33Defilerturns out ActionScript is a register-based VM
05:14:37tarcieriyes
05:14:39tarcieriexactly
05:14:45tarcieri"Tamarin"
05:14:46MenTaLguYah, yeah
05:14:49headius enters the room.
05:14:54DefilerI would give a lot to see the source for it
05:15:04MenTaLguYhasn't it been released to Mozilla at this point?
05:15:14MenTaLguYit's supposed to be the basis of the next-generation Javascript stuff in Moz
05:15:14DefilerI am fascinated by the idea that that design could possibly be simpler than anything else
05:15:39Defilerhttp://www.mozilla.org/projects/tamarin/
05:15:54MenTaLguYalso some people at Adobe have asked me about porting Rubinius to Tamarin
05:16:04DefilerReally?
05:16:08tarcieriUnless they've written another ActionScript virtual machine in the meantime...
05:16:09MenTaLguYnothing official
05:16:09DefilerWhat did you say?
05:16:41MenTaLguYWell, I'll rephrase that
05:16:44srbaker leaves the room.
05:16:54MenTaLguYthey asked me about the best way to get a Ruby implementation for Tamarin
05:16:54headius_ leaves the room.
05:17:01MenTaLguYand I recommended porting the Rubinius kernel to it
05:17:15Defileraah
05:17:41MenTaLguYit is a project I'd be sort of interested in trying
05:18:30Cosmos95 leaves the room.
05:18:44MenTaLguYagain, it wasn't an official thing
05:18:54MenTaLguYso I don't know if anything will actually come of that recommendation
05:19:05DefilerStill, cool that there is even one person interested in it
05:25:16MenTaLguYfor the moment I can't really think about blue sky things like that though, I need to find time to finish fixing that actor code that got committed recently :/
05:26:54rueDevelopment-driven development
05:27:25MenTaLguYthe thing that's blocked on right now is adding an argument to send_in_milliseconds so that it can be used to send a specific object instead of only nil
05:29:56srbaker enters the room.
05:30:33trythilhmm, can someone run (1..1001).to_a.reverse.sort in irb under rubinius and let me know if they also see anomalous output near the beginning of the array?
05:31:38brixentrythil: indeed
05:31:57agardinerditto
05:31:58trythilahh, ok, so it's not just me :)
05:32:13brixenup to 81 to be exact, in my case
05:32:21trythilinterestingly, I can't trigger it using just (1..1000)
05:32:36agardineryeah, there's a tipping point reached in qsort at 1001 elements
05:32:39brixenperhaps boundary condition on the pivot
05:32:43trythilhmm
05:32:43agardineryeah
05:32:54agardineri already fixed a bug there...
05:33:10agardinerwas manifesting in the profiler
05:33:32MenTaLguYis qsort that tricky?
05:33:42brixenMenTaLguY: we have a custom version
05:33:48DefilerMRI's semantics are hard to recreate
05:33:56DefilerIt's pretty far from the textbook behavior
05:34:00brixendoes some heuristics on the pivot iiuc
05:34:18MenTaLguYI find this a little bit distressing.
05:34:19DefilerWell, that and it has to work even when people do .sort_by { -1 }
05:35:58trythilhmm
05:36:02stepheneb_ enters the room.
05:36:11trythilI wrote up a spec for enumerable that fed (1..1001).to_a.reverse to an EnumerableSpecs::Numerous instance, and that (interestingly) passed
05:36:18trythilI wonder what splat is doing there
05:36:33Defilersomething very simple, in comparison to 'sort'
05:36:48DefilerThis is surely a sort bug, it seems to me
05:37:06trythilright, but I mean
05:37:07trythilhttp://pastie.caboo.se/181530
05:37:12trythilthat passed, which makes me wonder
05:37:46trythilif I omit EnumerableSpecs::Numerous.new(*numbers) and just operate using numbers, the spec fails
05:38:01trythilI dunno, maybe this is a red herring
05:41:02srbaker leaves the room.
05:41:06DefilerMaybe we have a 'reverse' problem, actually, where it isn't duping
05:41:51brixenEnumerable#sort is doing something different from Array#sort
05:41:54brixenit takes way longer
05:41:59MenTaLguYwhere is struct ev_timer defined?
05:42:18MenTaLguYon, never mind
05:42:18MenTaLguYduh
05:42:28trythilI get similar behavior running (1..1024).map { |i| (rand*i).to_i }.sort, so I'm not sure if it's reverse
05:42:31trythil(or just reverse)
05:43:53srbaker enters the room.
05:44:13tarcieriMenTaLguY: what are you looking at? (besides libev timers)
05:44:36tarcieriMenTaLguY: I thought of a way to fix timeouts given the present Scheduler semantics, btw
05:45:05brixentrythil: Enumerable has it's own quicksort
05:45:06RyanTM leaves the room.
05:45:17MenTaLguYtarcieri: oh?
05:45:49trythilbrixen: yeah, I just passed over that one, I guess that explains why the spec using Numerous worked
05:45:49tarcieriMenTaLguY: you can process Channel messages without doing Channel#receive
05:46:06trythilit also appears to be using the first element of each subset as the pivot
05:46:07tarcieriso... have Actor.receive completely flush the channel until empty, discarding any timeout messages
05:46:10tarcierithen call Channel.receive
05:46:22tarcieri(after it matches a message)
05:47:07MenTaLguYwell, not until empty
05:47:16MenTaLguYjust until a marker object which you inserted is reached
05:47:36MenTaLguYthat should actually work I think
05:47:54tarcieriwell, until you've encountered the timeout message, or the Channel is empty...
05:48:22MenTaLguYyou can't test for an empty channel
05:48:31tarcieriare you sure?
05:48:38MenTaLguYyes.
05:48:44loincloth enters the room.
05:48:49MenTaLguYit's kind of deliberate
05:48:59MenTaLguYthere isn't really a way to do it that doesn't involve races
05:49:23crafterm enters the room.
05:49:27MenTaLguY(think about it carefully)
05:49:40KirinDav leaves the room.
05:51:38MenTaLguYyou can only safely test whether you've extracted all the messages written before a particular point in time in the frame of reference of the reading thread (by using a marker object in the manner described)
05:51:52tarcieriok, yeah that works
05:51:53loincloth leaves the room.
05:51:54MenTaLguY(although it does rely on you being the only reader, that's a safe assumption for mailbox)
05:52:25MenTaLguYI've got mixed feelings really, I think I see how to implement the modified send_in_milliseconds now
05:52:35tarcierito send an arbitrary object?
05:53:13MenTaLguYyes
05:53:16tarcierinice
05:53:23MenTaLguYit's not really that involved
05:53:28tarcieriok
05:53:36MenTaLguYthe only thing is going to be compatibility between the "frozen" kernel and the modified one
05:53:55brixenMenTaLguY: changing the semantics of a primitive?
05:54:09MenTaLguYyes.
05:54:19brixenI would suggest making a new one
05:54:26brixenand phase out the old
05:54:35MenTaLguYyeah, you have to do it gradually
05:55:12boyscout1 commit by Adam Gardiner
05:55:13boyscout * Add basic Debugger::Server class for remote debugging; 0ffd16c
05:55:25brixenagardiner: woot!
05:55:34agardinerhehe!
05:55:43agardiner*very* basic, but works
05:55:52brixenawesome
05:56:07AndrewO leaves the room.
05:57:10agardinerfirst step to getting rubinius debugger hooked into netbeans/radrails...
05:57:26brixenoh interesting
05:57:33brixendidn't realize you had that in your sights
05:57:35MenTaLguYquestion
05:57:38agardineryeah
05:57:46MenTaLguYhow are the fields of thread_info made visible to the garbage collector?
05:57:56MenTaLguYI admit I've not looked at the rbx GC stuff at all yet
05:58:11evanallo.
05:58:12wycats_ leaves the room.
05:58:13agardineri need to implement the debug_commons protocol
05:58:20evanMenTaLguY: which?
05:58:28MenTaLguYstruct thread_info
05:58:43MenTaLguYhas several OBJECT references which must be accessible from the root set somehow
05:59:08evanoh, in Channel.
05:59:20MenTaLguYcpu_event.c yes
05:59:30evanthe cpu_event_each_channel
05:59:34evanis called with a callback
05:59:42evanto let the GC see them.
05:59:56evanthats a hack thats being cleaned up in the new VM
05:59:59MenTaLguYaha
06:00:09MenTaLguYI was wondering what that was about, now I know
06:00:16evanyep.
06:00:29MenTaLguYwhat's the status of the new VM at this point?
06:00:58evangoing good
06:01:22evanif i'd been as productive as i've been the last 5 days for the last 3 weeks, it would be done.
06:01:23wycats_ enters the room.
06:01:33evanit's coming along.
06:01:39evanshould be running code by the end of the week
06:02:03MenTaLguYok
06:02:28MenTaLguYbe advised that I'm going to be poking at redoing CPU waits to be able to send specific objects, not just nil
06:02:59MenTaLguYotherwise there's no way to multiplex waits on a single channel
06:03:09MenTaLguY(since you can't distinguish which event you got)
06:03:17evanyeah, i'd planned on doing that in the new VM off the bat
06:03:20evanso if you want, you can wait.
06:03:26evanotherwise, poke away.
06:03:29MenTaLguYhm
06:03:32tarcierinice
06:04:33MenTaLguYhow is that going to work with respect to the existing primitives?
06:04:42MenTaLguYare you introducing new primitives with the new VM?
06:04:47evanno
06:05:03evanjust going to modify the existing ones
06:05:04evanwas my plan
06:05:14evanwere you thinking of adding an extra arg to all primitives?
06:05:38evanall scheduler primitives
06:06:03MenTaLguYwell, for now just send_in_milliseconds, but that's the idea
06:06:10MenTaLguYobviously I'd want to track what you're doing though
06:06:35evandon't worry about tracking.
06:06:43evanfeel free to make the change now
06:06:52evanand we'll pull stuff across when need be
06:06:58MenTaLguYokay
06:07:12MenTaLguYper earlier conversation with brixen, are there any gotchas with just changing this particular primitive directly?
06:07:35evanprimitives can't have optional args
06:07:54headiuswhy not
06:07:57MenTaLguYwasn't thinking of an optional argument in this case
06:08:02rubuildius_ppcAdam Gardiner: 0ffd16ca9; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181548
06:08:05evanheadius: because of how they're executed.
06:08:24evanMenTaLguY: then just change the call sites of send_in_milliseconds to contain the extra arg first
06:08:25MenTaLguYor did you mean using an optional argument for back-compatibility?
06:08:33jtoy enters the room.
06:08:34MenTaLguYI guess I could do that
06:08:43evanthats one option
06:08:56evani think there is just one call site of that primitive
06:09:08evanso you could abstract it behind a real ruby method to have an optional
06:09:12MenTaLguYyep.
06:09:15evanbut that doesn't help the stables
06:09:28MenTaLguYah, yes...
06:09:30evanthe main thing is that you need to change the call sites, then update the stables.
06:09:36evanthen make the change the primitive.
06:09:48evanthat way, the stables will expect the new primitive
06:09:52evanand everything will be fine.
06:10:02MenTaLguYhm
06:10:28evani'm working on some procedures for easing the pain with this
06:10:37MenTaLguYyeah...
06:10:45MenTaLguYI feel a little nervous doing this
06:10:50evanusing either MRI or an installed rbx
06:11:07tarcierilooked at the code and realized he was in way over his head :/
06:11:07evanie, a different, stable environment
06:11:11MenTaLguYI think I'll just add the capability to cpu_event for now
06:11:15evanok
06:11:31MenTaLguYfrom there it's pretty trivial to expose via the primitive, all the stable juggling notwithstanding
06:11:49wycats_ leaves the room.
06:11:51evaneah
06:11:57MenTaLguYany aesthetic considerations against using thread_info.buffer for the object to write?
06:12:11evanthats fine.
06:12:16MenTaLguYok
06:12:18evanit's unused in the time case
06:12:21MenTaLguYyes.
06:12:59MenTaLguYvaguely wondering if it ought to be renamed in that case
06:13:11MenTaLguYsince it is no longer specifically a buffer
06:13:56wycats_ enters the room.
06:14:15MenTaLguYI will leave it as buffer for now for the sake of small patches
06:14:29evanok
06:14:42evanif you look at the new c++ version of that code
06:14:50evanit's much more straightforward
06:14:51evanwhats going on
06:14:56MenTaLguYnods
06:15:59evaninkscape is C++, isn't it?
06:16:20MenTaLguYYes, though there's still a lot of C/GObjectisms left
06:16:40evanah
06:16:48evanyeah, i'm not a big fan of the gobject stuf
06:16:49evanf
06:17:00MenTaLguYC++ is a step up in a sense, but honestly I feel like it's still the wrong language for writing that kind of software at this point
06:17:25MenTaLguYwe're working on embedding the JVM for scripting now
06:17:53MenTaLguYif that works out I'm going to be tempted to just push the whole damn thing over the JVM boundary and do it in Scala or something that's sufficiently close to Java but doesn't suck like Java
06:18:24MenTaLguY(I don't think C++ is necessarily a bad choice for writing different sorts of software like, say, VMs)
06:18:36MenTaLguY(though I'm still a bit dismayed as to how large the language really is)
06:18:55MenTaLguYI've been doing C++ for about ... I dunno, 15 years at least
06:19:10MenTaLguYand I still run into new corners of the language I've never explored before every few months
06:19:18ruetrythil: Probably the stack handling; I am sure it is actually getting sorted once
06:19:37MenTaLguYPerl is the only other language that seems close in that regard
06:19:44MenTaLguYI bottom out in most other languages pretty quickly
06:20:21tarcieriwhat other languages let you implement UTMs on top of the compiler?
06:20:23MenTaLguYwell, there's also Haskell, but they have the excuse that they're actively adding research features all the time
06:20:32tarcieribesides Perl and C++
06:20:43MenTaLguYPerl doesn't really let you do that
06:20:49tarcierithere's Acme::Turing
06:20:58MenTaLguYoh, I guess it does
06:23:00MenTaLguYevan: hm. you know, as far as wait_writable goes, I think it might be sufficient to have it write the fd rather than a tag object instead of nil
06:23:23evanok
06:23:37MenTaLguYat least, I can't think of a case where you really need a tag argument at the moment
06:24:00evanthere may not be
06:24:00MenTaLguY"writable" events for the same fd aren't quite distinct in the same way that timeouts are
06:24:09evanmy idea is once the new VM is in
06:24:21evanto have the Scheduler send Scheduler::Value objects do the channels
06:24:24MenTaLguYeach individual timeout is basically its own event source, whereas an fd is a event source in its own right
06:24:30evanwhich would contain the real values
06:24:35evanthen you'd easily be able to tell
06:25:23MenTaLguYhm
06:25:28MenTaLguYmaybe
06:25:35MenTaLguYthat seems more heavyweight than necessary for simple cases though
06:25:45evanperhaps
06:26:12MenTaLguYI think a basic API which dealt in raw objects would be nice
06:26:17MenTaLguYmore or less like what we have now
06:26:23evanok
06:26:36evani'm basically completely open for comment/commit on that API
06:27:18MenTaLguYat some point I'd like to realign the Scheduler gem with whatever we do in Rubinius, or vice-versa
06:27:24MenTaLguYso that it could be supported on Rubinius
06:27:28evanon the topic of C++, yes, i don't think i'd want to write in C++ normally
06:27:38evanthere are parts of it that are making the VM better than it was in C
06:27:48evanMenTaLguY: sounds good.
06:30:49trythilrue: ah, cool
06:33:42ruetrythil: It is consistently breaking in the 550-559 segment
06:37:42thehcdreamer enters the room.
06:46:57ruetrythil: Got it
06:47:03trythilrue: ?
06:47:17trythilI've been teaching myself how to use the Rubinius debugger just for this, so I haven't really even gotten to the code yet :)
06:47:47wmoxam leaves the room.
06:51:39trythilrue: what was the bug? (or at least a hint :) )
06:52:25ruetrythil: The problem is (presumably) the threshold for the heuristic, right?
06:52:42trythilrue: yeah, that seems like a good place to begin
06:52:59rueSo debugging from when it fires would be a good place
06:53:25headiusis there a way to turn off GC currently?
06:54:01boyscout1 commit by MenTaLguY
06:54:02boyscout * add tag object argument to cpu_event_wake_channel; 42e4c4e
06:54:22MenTaLguYtarcieri: have a look at that commit; the plumbing turned out to be pretty trivial
06:54:33MenTaLguYtarcieri: there's just the small matter of the primitive transition :P
06:55:05ruetrythil: There are actually two things that could be fixed
06:55:44brixenheadius: no
06:56:26headiusdamn thee!
06:57:15evanmy feeling on that is the same as the JVM
06:57:20evanit's far too dangerous.
06:58:57headiusyou can turn it off in the JVM for experimental purposes
06:59:02headiusthat's all I'm looking for
06:59:12evanah
06:59:29evani could expose a way to turn it off
06:59:31evanwhy do you want to?
06:59:38tarcieriMenTaLguY: ok
07:00:34evantarcieri: btw, my problem with libev is that if you poll (ie, NONBLOCK), no timer events fire.
07:00:44evanit actually resets all timer events
07:00:56evanbecause the code in libev gets confused and thinks there was a time skew
07:00:56headiusI wanted to see what performance would look like with GC out of the picture, for small benchmarks
07:01:02tarcieriweird... you're busy waiting?
07:01:02headiushave you done such tests?
07:01:10evanit's in my tests
07:01:12evani want to poll
07:01:14evanthen sleep myself
07:01:16evanthen poll again
07:01:21evanand the 2nd poll should fire the timer events
07:01:45evani fixed it in libev by making it so that only one of the calls to timer_update() performs skew check
07:01:46tarcieriyeah I'm sure that confuses the hell out of libev... and may be the result of the skew I was experiencing
07:02:07tarcierierr, may be the cause...
07:02:09evanpolling it now works for timer events
07:02:41evanheadius: ah. no, not really.
07:02:57tarcieriI don't ever use ev_loop in non-blocking mode
07:03:05thehcdreamer leaves the room.
07:03:27headiusdone any profiling of memory churn? any idea of relative overhead from GC versus execution?
07:03:57evani did some a long time ago
07:04:08evanto decide that i need to add an additional way to allocate MethodContext objects
07:05:07MenTaLguYoh, speaking of GC and channels
07:05:25headiusso other than that you didn't see any gross overload in the memory/GC department eh?
07:05:30MenTaLguYit's probably going to be worth optimizing channels to store sequences of nil and single objects not to require allocations
07:05:40rubuildius_ppcMenTaLguY: 42e4c4e44; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181559
07:05:58MenTaLguYso that they can be used as semaphores and mvars without incurring GC overhead beyond what we get from the waitlist
07:06:12headiusthe reason I ask is because it occurred to me that along with normal execution work, we've gotten much of our perf gains from reducing object churn
07:06:13evanheadius: i don't think so
07:06:16MenTaLguYs/sequences of nil/sequences of all nil/
07:06:18evanbut that was a while ago.
07:06:24headiusseems like that could also be the case for rubinius
07:07:29headiushard to know what actual gain we've gotten though...perf on single-core systems has never been worse than dual-core systems, like you'd expect if GC was a bottleneck and ran in parallel
07:07:34evanMenTaLguY: not sure what ya mean
07:07:39headiusso maybe more allocation cost than collection cost
07:08:20evanheadius: could be
07:08:30MenTaLguYevan: well, in the case of using a channel as a semaphore, you're using the number of nils written as your semaphore count
07:08:38tarcieriMenTaLguY: hmmm
07:08:48evanMenTaLguY: ok
07:08:52tarcieriMenTaLguY: not sure if I'd be comfortable trying to add that to send_on_readable/send_on_writable :/
07:08:52MenTaLguYevan: if the only thing written to the channel were nil, you could optimize the internal representation to use a count rather than a list
07:08:59evanah
07:09:04evansure
07:09:15MenTaLguYtarcieri: I think it's less critical there
07:09:23tarcieriit's certainly critical there
07:09:29MenTaLguYtarcieri: though I think send_on_writable needs to be adjusted to send the fd rather than nil
07:09:36tarcierihow do you multiplex readable and writable events on a single channel?
07:09:40tarcierialong with timeouts
07:09:44evansweeeet Dazed and Confused is on
07:09:48tarcieriheh
07:09:51MenTaLguYwell, readable already sends the fd or the buffer
07:09:52tarcieriDazed and Confused rocks
07:09:57tarcieriso does writable
07:10:08MenTaLguYdoes it? it looked like writable wrote nil to me
07:10:15tarcieriit sends the fileno
07:10:27MenTaLguYstatic void _cpu_wake_channel_for_writable(EV_P_ struct ev_io *ev, int revents) {
07:10:27MenTaLguY struct thread_info *ti = (struct thread_info*)ev->data;
07:10:27MenTaLguY ti->state->pending_events--;
07:10:27MenTaLguY cpu_channel_send(ti->state, ti->c, ti->channel, Qnil);
07:10:27MenTaLguY _cpu_event_unregister_info(ti->state, ti);
07:10:28MenTaLguY}
07:10:52drbraingaaah C on my screen!
07:11:17MenTaLguYit sends nil
07:11:20MenTaLguYas implemented right now
07:11:22evandrbrain: rub some ointment on it
07:11:24tarcierireally?
07:11:25tarcieriok
07:11:29MenTaLguYsee above
07:11:39tarcieriwell I need to multiplex readable/writable events for multiple desriptors on a single channel
07:11:44tarcieridescriptors...
07:11:47drbrainamazon-ec2 disappoints me
07:11:51tarcieridrbrain: why?
07:11:53MenTaLguYoh, I see
07:11:58MenTaLguYmore than one descriptor to an fd?
07:12:11tarcierino, multiple descriptors
07:12:17tarcieri(for a Reactor)
07:12:18MenTaLguYwell, and you need to discriminate between readable and writable for the same fd regardless
07:12:23tarcieriyes
07:12:24tarcierithat too
07:12:29MenTaLguYI hadn't considered that
07:12:40drbraintarcieri: I had to write a wrapper that I'm sure has been similarly written a half dozen times
07:12:51tarcieridrbrain: for what?
07:13:20tarcieridrbrain: the whole system is aching for wrappers to do high level demand-based instance management
07:13:25tarcieriseveral already exist
07:13:31d2dchat leaves the room.
07:13:42MenTaLguYtarcieri: still thinking about the object wrapper thing btw
07:13:54tarcieriobject wrapper?
07:14:05drbrain"create my key, list keys, spawn an instance, list instances, shut down my instance"
07:14:08MenTaLguYtarcieri: I think the two issues I'm still concerned with is the lack of genericity of the object factory, and being able to actor-call arbitrary methods on the wrapped object
07:14:23drbrainthe other gems just looked like alternate implementations
07:14:26tarcierioh, that
07:15:04drbrainfor my uses, I don't need to do anything fancier than that
07:15:06MenTaLguYI think there really does need to be some discretion about which methods can be proxied as actor messages
07:15:19boyscout2 commits by Adam Gardiner
07:15:20boyscout * Fix current line number calculation when a breakpoint is hit; 77b263f
07:15:21boyscout * Fix bug with stepping to a target IP/line; dfed56b
07:15:41tarcieriMenTaLguY: ideally YourObject.call would handle that...
07:16:05tarcieriraise NameError if the remote procedure isn't valid
07:16:11MenTaLguYhm
07:16:11tarcierior something liket hat
07:16:18MenTaLguYI'll need to think about this some more
07:17:01ruetrythil: Let me know if you need any further pointers, by the way. I am semi-afk but if you find it too, you are most welcome to make the patch ;)
07:17:02anteaya leaves the room.
07:17:04mentz_ enters the room.
07:17:34trythilrue: heh, no problem :) right now I'm trying to figure out why I keep getting a VMAssertion whenever I hit a breakpoint
07:18:06trythilin cpu_channel_has_readers_p(state, dbg) (cpu_instructions.c:1382) -- I haven't dug much into the VM code, but this sort of error really seems like I'm invoking the debugger incorrectly, or my installation is just messed up
07:18:17agardinertrythil: hmmm
07:18:35agardineryou might want to pull the patches i just made to the debugger
07:18:59agardinerwhat were the debugger commands you were using?
07:19:19trythilagardiner: executed debugger in irb, then break Array#qsort!:1666
07:19:58agardinerinteresting! i've never tried running the debugger from irb! :-)
07:20:02trythilI can step into the debugger just fine, as well as set the debugger
07:20:03trythiloh, hah
07:20:10trythilhow should I be doing this? :P
07:20:47trythilif there's a link to this on rubinius' lighthouse page I'd greatly appreciate that
07:20:56agardinerif you have a file that calls code you want to debug, run it with shotgun/rubinius -debug <filename>
07:21:02trythiloh
07:21:06trythilwell that's easy
07:21:18agardineri'm not sure if there is... i need to write up some instructions
07:22:21agardinerthe assertion you were seeing means that a breakpoint has been hit, but there is no listener blocked on a read on the debug_channel
07:22:35trythilahh
07:22:45trythilhey neat, it works now :)
07:22:46trythilthanks
07:22:47agardinerthat shouldn't happen, basically
07:22:56brixenagardiner: hm, I've used the debugger in irb
07:22:59agardinerso it may be something to do with the way you were running it from irb
07:23:17agardinerok... so how are you running it from irb? let me see if i can reproduce it
07:23:41agardinertrythil: great!
07:24:41brixenagardiner: was that Q to me or trythil ?
07:24:59agardinerwell... both? :-)
07:25:03brixenheh
07:25:08trythiloh
07:25:15agardinermaybe you're doing it the same way, maybe not?!
07:25:21trythilbasically I just did rbx then typed debugger
07:25:29trythiler, sorry
07:25:29brixenwell, e.g.: class F; def f; puts 'f'; end; end ; debugger; b F#f; F.new.f
07:25:30trythilrbx -debug
07:26:18agardinerbrixen: your way should work
07:26:40agardinertrythil: not sure about that... you are setting a breakpoint at the start of irb, doing that...
07:26:51trythilagardiner: yeah, it does seem a little fishy
07:27:07agardinertrying it now...
07:27:34brixenhmm, shotgun/rubinius -debug just gives me irb prompt
07:27:45brixendebugger give me debug prompt
07:27:53brixenb Kernel#puts works fine
07:28:03brixenputs "hello" drops me into debugger
07:28:07brixenand so on
07:28:20agardineryeah, it seems to work for me too
07:28:38agardinertrythil: did the problem go away after you pull-ed?
07:28:46trythilagardiner: haven't pulled yet, I'll do that now
07:28:52brixentrythil: when you say "rbx -debug" are you running an installed version?
07:28:56trythilbrixen: yeah
07:29:05rubuildius_ppcAdam Gardiner: 77b263ff8; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181567
07:29:06brixenhm, ok, didn't try that
07:29:13agardinerme either...
07:29:15brixendoesn't install rbx
07:29:21agardinereither
07:29:23agardiner:-)
07:29:26brixenheh
07:30:24agardinertrytil: ok, it wasn't what i just fixed then...
07:30:51trythilagardiner: I guess that's ok; I think what I was doing was something bizarre
07:31:10agardineryeah, but its worth understanding...
07:31:48jennyw enters the room.
07:31:53brixenthat exception looks vaguely familiar from a long time ago
07:32:07brixenI think I saw that when it would hit a breakpoint again
07:32:28agardineryeah - that should be fixed with the recent breakpoint management cleanup
07:32:42agardinertrythil: how old was your installation?
07:32:43brixenyeah, I remember when you fixed it
07:33:03trythilagardiner: pretty recent; I can't remember exactly but no less than a couple days old
07:33:08trythiler, no more
07:33:09evanheheheh, oh Dazed and Confused...
07:33:09agardinerhmm.. ok
07:33:54agardineri think all the issues with having multiple breakpoints set at the same location should now be resolved...
07:34:00trythilI did a rake clean and rake install from 77b263ff8, so this should be newest
07:35:40agardinerok, i've got an rbx install now to test...
07:35:43wycats leaves the room.
07:35:57agardinerafter you do rbx -debug, what do you do next?
07:36:29trythilagardiner: I set the breakpoints I'm looking for, and then execute a code snippet that I think will hit those breakpoints
07:36:55agardinerwhoa there... you must be skipping some steps, i think
07:37:16agardinerrbx -debug leaves me at an irb prompt
07:37:19trythileh?
07:37:21trythilhmm
07:37:22agardinerdo you then type debugger?
07:37:47trythilwhen I type rbx -debug I get http://pastie.caboo.se/181572
07:38:54agardinerstrange... i go straight to an irb prompt
07:39:32trythilhmm
07:40:02rueCheck previously installed Rubiniuses
07:41:20trythiloh, whoa
07:41:29trythilactually, hmm
07:41:54trythilrbx -v reports it as being from revision 77b263ff8
07:42:10trythilI might have some stray files from old Rubinius installations, I can look around for those
07:50:24naeu enters the room.
07:53:48wycats enters the room.
07:54:36KirinDav enters the room.
07:59:07cypher23 enters the room.
07:59:32qwert666 enters the room.
08:04:25KirinDav leaves the room.
08:09:06stepheneb_ leaves the room.
08:13:49boyscout1 commit by MenTaLguY
08:13:50boyscout * Use a counter rather than a list until a non-nil write is enqueued.; 79cccc3
08:16:07evanMenTaLguY: nice
08:18:20thehcdreamer enters the room.
08:19:31MenTaLguYthanks
08:21:34tarcieri?
08:21:36tarcierilooks
08:22:10tarcierioh
08:22:10tarciericool
08:22:33MenTaLguYsemaphores are just channels where you don't care about the specific value written
08:22:43MenTaLguY(or alternately whose value type is unit)
08:23:34MenTaLguY(if we were in a typed language)
08:23:53tarcieri31172.31 messages per second
08:23:57tarcieribetween Actors
08:24:21agardinerhehe... glad you didn't omit the .31! :-)
08:24:32tarcieriheh
08:24:35MenTaLguYI wouldn't expect it to have a significant affect on actor messaging unless you're only sending nils between them
08:24:39MenTaLguYs/affect/effect/
08:24:41tarcieriaah
08:24:47tarcierihadn't run that benchmark in awhile
08:25:03MenTaLguY(and actually nils run afoul of the current timeout code)
08:25:09rubuildius_ppcMenTaLguY: 79cccc322; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181577
08:26:19tarcierijust for shits and grins, Erlang:
08:26:20tarcieri3391715 messages per second
08:26:21tarcieriheh
08:26:41tarcierionly two orders of magnitude to go!
08:26:45evan:)
08:27:23bricolage enters the room.
08:28:23agardinerhmm... is Thread.list not implemented?
08:33:03Maledictus enters the room.
08:33:41boyscout1 commit by MenTaLguY
08:33:42boyscout * take advantage of the semaphore optimization; 6e52ab7
08:34:30headius leaves the room.
08:35:41agardiner leaves the room.
08:37:41trythil leaves the room.
08:41:11dlee enters the room.
08:41:33kw leaves the room.
08:42:17naeu leaves the room.
08:43:16benburkert leaves the room.
08:44:10octopod enters the room.
08:45:26rubuildius_ppcMenTaLguY: 6e52ab7e1; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181582
08:48:14Skip enters the room.
08:53:46octopod leaves the room.
08:54:08octopod enters the room.
09:02:23boyscout1 commit by MenTaLguY
09:02:24boyscout * simplify and d-r-y; 35125e5
09:03:22mutle enters the room.
09:09:32Arjen_ enters the room.
09:11:52MenTaLguY leaves the room.
09:12:49scooprhm, lighthouse is all different now
09:13:08scooprperhaps somewhat faster
09:13:27drbrainit's Lighthouse 2!
09:13:38scoopryeah :)
09:13:44rubuildius_ppcMenTaLguY: 35125e5aa; 1995 files, 6512 examples, 22660 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181587
09:14:03scooprshouldn't it now have a git integration?
09:16:58drbrainno clue
09:18:23BlackEdder enters the room.
09:19:00naeu enters the room.
09:24:22rueOne would expct
09:24:40crafterm leaves the room.
09:30:18lstoll leaves the room.
09:30:20dlee leaves the room.
09:31:46zenspider leaves the room.
09:34:48antares enters the room.
09:36:52VVSiz leaves the room.
09:38:13antares leaves the room.
09:40:08jennyw leaves the room.
09:43:21antares enters the room.
09:43:46antares leaves the room.
09:48:49crafterm enters the room.
09:48:55crafterm leaves the room.
09:49:41dewd enters the room.
09:55:50demisone enters the room.
09:56:20