Index

Show enters and exits. Hide enters and exits.

00:01:38rubuildiusBrian Ford: 73be3b88a; 1715 files, 5784 examples, 19679 expectations, 0 failures, 0 errors; http://rafb.net/p/3gUly518.html
00:02:48twbray_ enters the room.
00:09:06mernen enters the room.
00:09:53agile leaves the room.
00:11:35ataiar enters the room.
00:12:59olabini leaves the room.
00:14:37olabini enters the room.
00:16:29craftermhi all
00:16:40agardinerhowdy
00:16:50craftermhows it going mate?
00:16:51imajes enters the room.
00:17:05agardinernot bad. yourself?
00:17:31craftermall good mate
00:17:54agardinerthat's the way :-)
00:20:16twbray leaves the room.
00:20:45rueMan, you weird foreigners. I cannot understand a thing you say in your weird foreign languages!
00:21:10agardinerhehe
00:25:12twbray_ leaves the room.
00:30:03obvio leaves the room.
00:30:18obvio enters the room.
00:30:35macournoyer enters the room.
00:30:40imajes leaves the room.
00:31:15hoopyhash
00:31:16hoopyer
00:31:18hoopyhah*
00:32:04imajes enters the room.
00:38:38macournoyer leaves the room.
00:38:44dctanner enters the room.
00:39:14macournoyer enters the room.
00:40:27ruepot
00:40:31rueer
00:40:35rueHi*
00:42:02dc_ leaves the room.
00:43:37obvio leaves the room.
00:43:52obvio enters the room.
00:47:13eventualbuddha enters the room.
00:48:08radarek leaves the room.
00:50:12therealadam leaves the room.
00:51:05eventualbuddhaping
00:51:17eventualbuddha leaves the room.
00:51:20eventualbuddha enters the room.
00:51:38eventualbuddha leaves the room.
00:52:19ruePong?
00:53:11Administrador enters the room.
00:53:25lvmcrue, you are on?
00:54:50rueSort of, reading, what is up?
00:58:28imajes leaves the room.
00:58:34lvmc leaves the room.
00:58:46brixenI wonder if adrian would let me sign an nda so I could play with colm
00:58:57lvmc enters the room.
01:00:37imajes enters the room.
01:01:37radarek enters the room.
01:02:15obvio leaves the room.
01:02:30obvio enters the room.
01:05:33rueI could answer that but then I would have to kill you
01:05:42ezmobiuswhat is colm?
01:07:46lvmcrue, the Google Summer Code 2008 is opened.
01:09:06brixenezmobius: http://www.cs.queensu.ca/~thurston/colm/
01:10:57ezmobiuscool
01:12:33rubyconsumer enters the room.
01:12:36technomancyezmobius: enjoyed your article on Rack... looks like a sweet technology, and I may integrate it with bus scheme
01:12:46nicksieger leaves the room.
01:13:00ataiar enters the room.
01:13:25ezmobiusyeah rack is very cool. the spec just needs a small addition to support streaming imho. but im having a hard time getting the author to accept it
01:13:45nicksieger enters the room.
01:14:03technomancyezmobius: yielding line by line isn't enough?
01:14:09ezmobiusnope
01:14:43ezmobiushere is my propsed change http://pastie.caboo.se/158530
01:14:43brixenezmobius: congrats btw on the book!
01:14:49brixenneeds to read blogs more often
01:14:57ezmobiusif the body is a Proc then call it and pass in the response object
01:15:01ezmobiusotherwise just each it
01:15:05ezmobiusbrixen: thanks!
01:15:10ezmobiusfeels good to be almost done
01:15:14technomancyezmobius; oh for binaries and such
01:15:17zenspiderbrixen: got it
01:15:20brixenezmobius: very cool
01:15:47ezmobiustechnomancy: http://pastie.caboo.se/158531
01:15:50brixenzenspider: heh, I knew you would, I could sense the jaw locking
01:16:00ezmobiusto allow for stuff like that which needs tighter control pver the response objecyt
01:16:36obvio leaves the room.
01:16:48ezmobiusbasically my change gives the framework a chance to do whatever it wants with the response object, but still supports the old api as well
01:16:51obvio enters the room.
01:17:46cored leaves the room.
01:20:18rueezmobius: Hm, is chris2 giving you a reason?
01:20:33ezmobius"it break encapsulation"
01:20:46ezmobiusthen he tells me to reopen Proc and alias each to call :P
01:20:50ezmobiusas a solution
01:22:36mutle leaves the room.
01:23:15mutle enters the room.
01:23:47ezmobiusbut that still doesnt solve the problem that currently rack does not expose the response object to the framework at all
01:24:06rueYeah, he clearly is not an orthodox when it comes to approach. Bit surprised.
01:24:35ezmobiusfor now i have hacked rack adapters in merb itself
01:24:37boyscout1 commit by Ryan Davis
01:24:38boyscout * Added some pretty rude specs for Kernel#system and got them to pass.; 4ac32e4
01:24:57ezmobiusrue: rails-core people want my change as well
01:25:02ezmobiusto rack that is
01:25:06rueezmobius: I kinda see what he is saying with regard to encapsulation though
01:25:06zenspiderstupid system...
01:25:31zenspiderman that word has been used as an excuse too much lately
01:25:38zenspider"encapsulation" has it's time and place
01:25:40rueezmobius: Under the current system, that is. Aliasing each does break encapsulation but it does so from your narrower to the broader
01:25:49ezmobiusrue: sort of, but i think he's got a python attitude in this case. "there is only one way to do it" but this is ruby and we need closer to the metal access when on the proper servers
01:25:49zenspiderbut it's still just a guideline
01:26:13rueThe other way around would be broader to narrower which may have some extra considerations
01:26:13ezmobiusrue: except his change with aliasing each to call still requires changes to the rack adapters to add the response object to the env hash
01:26:37rueSure, maybe even moreso just a quest for the extreme simplicity
01:26:59ezmobiustrue, but at the cost of needed features
01:27:17rueOpening up the response object would definitely lead to a less simple usage (albeit it would still be quite trivial)
01:27:48rueezmobius: Be right back, I do think that the tack to take is to approach it as a more fundamental matter than just a small change
01:27:56ataiar leaves the room.
01:29:33ezmobiusrue: agreed. there might be a better interface, something more liek mongrel handlers #process(request, response) method
01:29:42ezmobiusrather then hash in array out
01:31:32sfaxon enters the room.
01:33:51rubuildius_ppcRyan Davis: 4ac32e4c9; 1715 files, 5788 examples, 19678 expectations, 0 failures, 12 errors; http://pastie.caboo.se/paste/158538
01:36:40rubuildiusRyan Davis: 4ac32e4c9; 1715 files, 5787 examples, 19686 expectations, 0 failures, 0 errors; http://rafb.net/p/1TC0VZ53.html
01:39:19technomancyinteresting... i can see reasons for each way; cleanliness vs usefulness is an age-old battle
01:48:15agile enters the room.
01:50:23imajes leaves the room.
01:50:36joydivider enters the room.
01:59:33joydivider leaves the room.
02:03:43MenTaLguY enters the room.
02:05:12nitay_ enters the room.
02:06:20boyscout1 commit by Ryan Davis
02:06:21boyscout * Fixed Symbol#inspect from over quoting; 7fb76f2
02:06:34zenspideris anyone working on those 12 ppc errors? anyone need a machine to poke at them?
02:07:07Defilerevan is swapping in libffi, and I think various people have decided not to touch PPC until that happens
02:07:13Defiler(I know I personally am in that group)
02:07:53drbrainDefiler: we dropped syck
02:08:06zenspiderk. then can we just remove that from the bot pool until such time?
02:10:15Defilerzenspider: Sounds good to me
02:11:26djwhittcremes is running that one
02:12:04DefilerSo.. we've got this 1.0 blocker ticket (due to RbYAML) because our version of Object#instance_variables has a different arity than ruby 1.8
02:12:13DefilerI vote that we remove our cool additional feature
02:12:20DefilerTo strip away that incompatibility
02:12:38dewd_ enters the room.
02:12:38drbrainDefiler: evan and I discussed that "feature" and came to a similar conclusion
02:12:41MenTaLguYis it the number of required arguments or the reported arity that is the issue?
02:12:42DefilerI could also fix RbYAML, but that seems like a hack
02:12:44drbrainis this the Struct problem?
02:12:49DefilerDifferent problem
02:13:11Defilerhttp://rubinius.lighthouseapp.com/projects/5089/tickets/312-bug-modify-object-instance_variables-r esults-in-wrong-compilation
02:13:33DefilerI could also fix it by changing the compiler to not pass an argument
02:13:38drbrainsomebody (like me) should go sync up RbYAML with it's main source
02:13:46drbrainmaybe I'll do that after RubyGems for a break
02:13:56drbrainanyhow, I'm out
02:14:00drbrainoff to practice
02:14:04Defilerbut if people are going to do retarded things to instance_variables, we should probably just make it work exactly the way 1.8 does
02:14:24DefilerSounds like the vote is to change instance_methods, so I will do that
02:15:20obvio leaves the room.
02:18:28technomancy leaves the room.
02:20:04rubuildius_ppcRyan Davis: 7fb76f2c4; 1715 files, 5788 examples, 19680 expectations, 0 failures, 14 errors; http://pastie.caboo.se/paste/158556
02:21:57nitay leaves the room.
02:21:58rubuildiusRyan Davis: 7fb76f2c4; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; http://rafb.net/p/6H0xAy87.html
02:23:43rueUh oh
02:25:22rueCool, 7.0-R is out
02:26:09rueAlthough there is some nice stuff coming in next Dragonfly too
02:26:40tarcieri!
02:26:49tarcieriI need to upgrade my storage server...
02:27:04tarcierialthough I'm still considering just switching to nexenta
02:27:32geekounet leaves the room.
02:27:35geekounet enters the room.
02:29:35ruehttp://leaf.dragonflybsd.org/mailarchive/kernel/2007-10/msg00006.html
02:30:42rueUnless it gets ported, I am considering switching just because of HAMMER
02:31:26tarcieriwhat's special about it?
02:32:53lvmcrue, can you submit mod_rubinius on Google Summer Code ?
02:34:07ruetarcieri: It is a better ZFS, pretty much. Transactions, volume management and checkpoint/snapshot retention policy
02:34:53rueIncidentally they are also adding checkpointing support to produce executables of a running process
02:35:12crafterm leaves the room.
02:35:19lvmc leaves the room.
02:35:24ruelvmc: I have to look into it, as I said earlier I will probably not be able to do much organization myself so I cannot commit to something like that
02:36:54lstoll leaves the room.
02:37:46gnufied_ enters the room.
02:41:55perplexes leaves the room.
02:47:13radarek leaves the room.
02:47:46VVSiz_ enters the room.
02:50:08brixenrue: tuning the start size of tuple as well as the reallocate resize calculation to be a simple *2 reduced the # of calls to Array#reallocate by 98% just loading irb
02:50:55brixenrunning ci with GC stats output doesn't seem to have a negative impact on memory usage
02:51:46_mutle enters the room.
02:52:45ezmobius leaves the room.
02:54:34jtoy enters the room.
02:54:42Defilerbrixen: Wow. 98%?
02:56:16brixenyeah, starting with a tuple size of 0 from make_array resulted in over 10,000 calls to reallocate just loading IRB
02:56:26brixenincreasing that to 8 reduced it to 168 calls
02:56:50dysinger enters the room.
02:56:52Defilerhaha what zero?
02:57:06Defilerzero doesn't sound like a good default size. I wonder how big a difference 2 would be vs. 8
02:57:25AndrewO enters the room.
02:57:46sfaxon leaves the room.
02:57:58brixenwell, I mapped from 0-8
02:58:06brixenone sec, I'll show you the #s
02:58:13agardinerbrixen, Defiler: i'm just testing some changes to the GC to fix an intermittent problem with the debugger...
02:58:18agardinerwould appreciate some extra eyes to give it a once over?
02:58:24brixen0 -> 1 cut it in 1/2
02:58:36brixenagardiner: ok
02:59:40brixenDefiler: for a full CI run, it's 83.4%
02:59:59DefilerThat sounds like an awesome optimization
03:00:01brixenso, 299,654 to 49,649
03:00:10brixenwell, it's actually quite small right now
03:00:18AndrewO leaves the room.
03:00:18brixenthere's literally millions of sends
03:00:24DefilerAah
03:00:26agardinerok, changes passed ci
03:00:26brixenso these get kind of swamped
03:00:33brixenbut it will be more important
03:00:34agardinershould i push and let you review that way?
03:00:50brixenagardiner: whichever you feel comfortable with
03:01:03brixenlooks like we have maybe 2 ci failures in head
03:01:05agardinerok, i'll push...
03:01:07brixenbut that could be just on linux
03:01:29agardineri saw 2 new failures which i think are related to the quoting change on symbols
03:01:36brixenyeah
03:02:18boyscout1 commit by Adam Gardiner
03:02:19boyscout * Prevent GC from resetting customised iseq on context; 8ce5942
03:02:34agardinerok, there it is... rationale for the changes is in the commit msg
03:03:04agardinerbackground is that i would see intermittent errors when exiting the debugger
03:03:40agardinertracked them down to the fact that the context iseq was being reset in the GC to the CompiledMethod compiled field
03:03:41brixenpulls
03:04:20Defileroh hoh
03:04:33agardinerbut this breaks the process whereby the debugger uses #set_iseq on a context to give it a custom version of the iseq to run
03:04:49agardinerso that it can switch in/out yield_debugger opcodes without impacting other threads
03:05:07agardinerDefiler: is that oh hoh aimed my way? :-)
03:05:10DefilerYes
03:05:17agardinernuts
03:05:23agardinerwhatsup?
03:05:36VVSiz leaves the room.
03:06:25DefilerI was just oh-hohing at what the problem turned out to be
03:06:43agardineroh, ok... phew! :-D
03:07:28brixenagardiner: looks sane to me, but atm I have a very rudimentary grasp of the GC
03:07:55agardinerhehe... me too, which is why i wanted to run it by some other eyes!
03:08:16brixenthe fact that our 19,600 odd expectations tend to support your assertion of correctness helps I think :)
03:08:39gnufied_ leaves the room.
03:08:54agardineryeah! ci is a tremendous help when you are not sure where a problem might crop up
03:09:13mutle leaves the room.
03:09:28GMFlash leaves the room.
03:09:32GMFlash enters the room.
03:09:34Defileragardiner: I'll dig into that changeset in a minute, and let you know if anything looks wacky
03:09:38DefilerI am sure it is fine, though
03:09:50agardinerok, thanks!
03:10:04agardineri'm just gonna duck out and grab some lunch... bbiab
03:11:08brixenzenspider: you around?
03:14:05rubuildius_ppcAdam Gardiner: 8ce59429b; 1715 files, 5788 examples, 19680 expectations, 0 failures, 14 errors; http://pastie.caboo.se/paste/158575
03:16:39rubuildiusAdam Gardiner: 8ce59429b; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; http://rafb.net/p/0uzUfF14.html
03:18:13crafterm enters the room.
03:31:34macournoyer leaves the room.
03:33:13binary42 enters the room.
03:38:17agardinerbrixen: noticed a "woot" appearing on stdout on that last ci run... :-)
03:39:06tarcieriheh
03:39:13tarcieriwishes he were seeing woots :(
03:39:35agardinertarcieri: then run mspec/ci! :-D
03:39:56agardiner* bin/mspec ci
03:40:17agardinerstill gets confused with the new way of running ci... :-S
03:44:04enebo leaves the room.
03:45:54lopex leaves the room.
03:47:01DefilerMan, our version of Binding is so much awesome-er than ruby 1.8's
03:47:13Defilertry firing up irb and typing binding.context.calling_hierarchy
03:48:38agardineryeah, its super awesome
03:49:14agardinerfirst class method contexts are also awesome
03:49:50agardiner(and make this possible)
03:50:29joydivider enters the room.
03:53:20DefilerI think do_not_reverse_lookup= is my least-favorite method name in 1.8
03:53:29Defilerdo_not_not_not_reverse_lookup=
04:02:27dancroak enters the room.
04:04:25brixenagardiner: I don't see any woots?
04:04:30macournoyer enters the room.
04:05:11agardinerlemme run it again with -V and see if I can isolate it...
04:05:57joydivider leaves the room.
04:05:57brixenwell, I see it kernel/system_spec.rb, but I didn't see it on stdout
04:06:00brixenweird
04:06:00agardineryeah, there it is - its in kernel/system_spec
04:06:21brixenI'm running it on linux
04:06:49agardinerthat's where i see it - on gutsy
04:07:05brixenheh, that's funny
04:07:09brixenno output on osx
04:08:15brixenyep, got it on gutsy too
04:08:49obiejuan leaves the room.
04:09:07brixenhappens with ruby too, not just rbx
04:10:20ruebrixen: Hm, that makes no sense
04:10:27brixenrue: which part?
04:10:47ruebrixen: A) the size was 10 or 16 I think and B) #reallocate should be where it is getting checked
04:11:18brixenrue: the size of a tuple backing array was 0 when created with make_array
04:11:22boyscout1 commit by Wilson Bilkovich
04:11:23boyscout * Remove optional argument from Object#instance_variables. (Ticket 312); 9b24966
04:11:25brixenlook at array_new in array.c
04:11:46brixenrue: B) #reallocate was doing 3 * @tuple.size / 2 + 1
04:12:05rueI blame that on evan
04:12:17brixen8 seems to be a good size
04:12:29rueYep, certainly 0 would not be
04:12:55brixenrue: but you know what we *really* need, something like dtrace for ruby code
04:13:05brixenI don't know if dtrace hooks in the vm will be sufficient
04:14:46agardinerbrixen: i spoke to evan about having a SendSite lookup function that could give you a kind of pointcut functionality...
04:15:15agardinerenable you to run some arbitrary Ruby code before/after a method call
04:15:24brixenwhat's with &> ? the system_spec seems to work find with just >
04:15:32brixenagardiner: that would be slick
04:16:13brixenwe really need a general facility like that, well integrated and useful to automate rtcg too
04:16:34agardineryeah...
04:17:08brixenI'm trying to read/find papers on how jvm implements this. I suppose I should just start reading jvm source :/
04:17:52agardinerhehe... papers are generally a whole lot more concise if you can find them
04:18:03brixentotally
04:18:21agardinerbtw, interesting read re the context threading paper
04:18:30brixenoh yeah, need to finish that
04:19:17agardinerlooks like most of the payoff comes from straight line execution, which would be really simple to implement
04:19:20brixenI've been offered to lunch with a long time (now retired) hw engineer who worked for intel and amd, I'm hoping to ask some relevant questions about pipelines and dynamic opts
04:19:34elight enters the room.
04:20:24agardinerwow! i think i'd need to study before a lunch with someone like that :-)
04:20:48brixenheh! that's exactly what I said to the guy who offered, he said, "nonsense, just talk to him"
04:20:53agardineri imagine things could get pretty deep...
04:21:54agardinerits funny, when you don't know how stuff works, it can look incredibly daunting
04:22:15agardinerbut sometimes it isn't rocket science after all
04:22:19brixenso true
04:22:32agardiner(not sure if *this* is one of those times though) :-D
04:22:38macournoyer leaves the room.
04:23:36agardineri remember way back when i was at uni doing a computer architecture course...
04:24:05agardinerwiring up a (basic) cpu out of individual nand/or gates
04:24:23rubuildius_ppcWilson Bilkovich: 9b249662e; 1715 files, 5788 examples, 19680 expectations, 0 failures, 14 errors; http://pastie.caboo.se/paste/158603
04:24:49agardinerit was incredibly frustrating trying to make sure you didn't get short circuits and whatever
04:25:27agardinerbut when you actually got the thing to work, it was luck... damn! this is so neat
04:25:39brixenheh, sounds fun
04:26:00agardineryou can do so much from such simple building blocks
04:26:10agardinerfun, i don't know
04:26:18brixenall I did in my comp arch class was write some assembly to query stuff in the CPU
04:26:23agardineri imagine they do it on some sort of simulator these days
04:26:33agardinerwould sure beat futzing around with those damn wires
04:26:35rubuildiusWilson Bilkovich: 9b249662e; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; http://rafb.net/p/ZF2PCv66.html
04:27:09crafterm leaves the room.
04:27:39brixengood lord, there's regexp and then there's "use something else"
04:28:02brixenI wonder how mri does inspecting symbols
04:28:22crafterm enters the room.
04:30:12obiejuan enters the room.
04:30:39dysinger leaves the room.
04:32:37obiejuan leaves the room.
04:32:39brixenheh, it uses rb_symname_p, defined in parser.y and uses a switch with goto's
04:32:40brixenfun
04:41:48mernen leaves the room.
04:42:22elight leaves the room.
04:43:33elight enters the room.
04:43:33elight leaves the room.
04:45:09elight enters the room.
04:59:50ttmrichter enters the room.
05:00:41lstoll enters the room.
05:02:57craftermagardiner: mate, coming to the melbourne user group meeting tonight?
05:03:14rubuildius_ppc leaves the room.
05:03:36agardinerahh... forgot it was on today
05:03:52agardineri can't make it tonight, i'm afraid
05:04:17craftermboo :)
05:04:23craftermoh well, next time is also cool
05:04:41agardineryeah, i'll definitely try and make the next one
05:04:49agardinerlast thurs each month, right?
05:04:54craftermyep
05:05:11agardinerk, i'll make a note of it
05:05:28craftermcool mate
05:05:31craftermawesome
05:05:40craftermwe can do a sprint summary at the next one then
05:06:00agardinershould be neat
05:06:11agardinerhow many melb folks are registered for the sprint?
05:07:31_ADS enters the room.
05:08:23craftermnot sure of the split actually mate, i think its more sydney folks though
05:09:57agardinerstands to reason, i guess
05:11:18agardinerooh! might have made a breakthrough here on the profiler SIGSEGV
05:12:05agardinerseems eval might be implicated
05:12:51rueHee, the melbourne shell?
05:14:27agardinershit... maybe jumping to conclusions (again)
05:14:56agardinerthought it was significant that every time i found a corrupted context, the ruby backtrace showed eval
05:15:17agardinerbut then i realised I was running shotgun with -e, so of course eval would be in the backtrace!
05:15:43agardinerduh!
05:17:06ezmobius enters the room.
05:17:07squeegy leaves the room.
05:18:11rueHehee
05:18:48rueAlso, is -e still iffy? It used to be a bit unreliable like irb
05:19:08agardineryep... another premature conclusion bites the dust
05:19:30agardinerjust reproduced the problem without using -e, and there's no eval in the bt :-(
05:22:12agardinerHmm... don't know if its iffy, but I'll steer clear for now while looking at this
05:35:32RyanTM leaves the room.
05:38:10agardinerwell, that's interesting
05:38:39agardinersampled contexts are being corrupted because they are being reused
05:39:18agardinerdespite the fact they are referenced
05:40:08nicksieger leaves the room.
05:40:34nicksieger enters the room.
05:41:42femtowin enters the room.
05:43:41benburkert leaves the room.
05:45:57cout_ enters the room.
05:51:48_ADSagardiner: have you seen any pattern in which contexts are being corrupted?
05:52:02agardinernot yet...
05:52:18agardinerbut i've just determined that the contexts are being retired, even though they are referenced
05:52:33agardinerso, subsequently, they are available for reuse
05:52:52agardineri think the retire logic is flawed, but i'm just trying to work out why
05:53:20d2dchat leaves the room.
05:53:53_ADSI noticed that _allocate_context does something different with the gc_zone if there are no locals...
05:54:05_ADSmay be entirely unrelated, though
05:54:50_ADSactually, nevermind, I read that code wrong.
05:56:26cout leaves the room.
05:59:20headiushey, where does rubinius set up the methods table
05:59:22headiusfor a given type
06:00:01sholden enters the room.
06:04:26cuppr leaves the room.
06:04:44drbraintype?
06:04:58twbray enters the room.
06:05:36sholden_ enters the room.
06:06:01brixenheadius: looks like kernel/core/module
06:06:24brixenzenspider: you back?
06:07:13headiusok
06:08:23headiusthanks
06:08:35brixensure
06:08:55headiusbleh, all primitives
06:09:24brixenwhich ones?
06:09:47ezmobius leaves the room.
06:10:45headiusmethod table
06:11:57cuppr enters the room.
06:12:32brixenkernel/core/method_table.rb isn't
06:13:52headiusall the method-finding logic is though
06:14:11headiusI wanted to see what hash settings method table uses
06:14:16boyscout3 commits by Brian Ford
06:14:17boyscout * Additional Symbol#inspect specs. Another try at making them pass.; dee531b
06:14:18boyscout * Silence 'woot' echo on ubuntu from #system specs.; 3bfb705
06:14:19boyscout * Tune start size of backing store for Array.; ede5974
06:15:36brixenheadius: ah, we're going to use LookupTable for all internal stuff soon, which will only have symbol keys
06:15:49twbray_ enters the room.
06:16:26headiusI assume it still uses some sort of hashing logic though
06:16:35brixenyeah, it will likely use the same
06:16:45headiusknow where it's set up currently?
06:16:52brixenHash?
06:21:23brixenheadius: if you're curious the algorithm, according to evan it's FNV: http://donttreadonme.co.uk/rubinius-irc/archive/2007_Feb_26.html
06:21:44headiusmore about the hash parameters
06:22:04headiusinitial size, etc
06:23:17brixensure, min size is 16
06:23:26brixenshotgun/lib/hash.c
06:23:51brixenand kernel/core/hash.rb
06:23:55brixena lot of it is in ruby
06:24:26sholden leaves the room.
06:24:45brixenit redistributes when density exceeds 0.75
06:25:36brixenone reason to use LookupTable instead of Hash is that #rehash must call #eql?, so with LookupTable and all symbol keys, we can do that easily in a primitive
06:26:42rubuildiusBrian Ford: dee531b18; 1715 files, 5787 examples, 19738 expectations, 0 failures, 0 errors; http://rafb.net/p/COPL5T27.html
06:27:00headiusso it's just using default hash settings then?
06:27:15twbray_ leaves the room.
06:27:48brixenheadius: yeah
06:27:59headiusok
06:29:16brixenby increasing min size to 16 from 8, the number of calls to redistribute during CI run was reduced from like 195,000 to 7500
06:30:36headiusyeah, ours is 12 right now
06:30:45headiusmethod table that is
06:30:48headiushash is the same as MRI
06:31:28zenspiderwhat'd I do?
06:32:14brixen18:21 rubuildius >> Ryan Davis: 7fb76f2c4; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors;
06:32:26jacenfail!
06:32:28twbray leaves the room.
06:33:03elight leaves the room.
06:33:08brixenheadius: ours has to be 2**n, what algorithm does MRI use?
06:33:24headiusbeats me
06:33:31brixenhehe
06:33:32zenspiderhuh... that's f'd up... I ran a full ci before checking in iirc
06:33:44brixenzenspider: I was indeed surprised
06:34:01brixenzenspider: using autotest?
06:34:19zenspidermaybe I missed a step inbetween
06:34:42zenspiderno, not autotest... I did an explicit rake && bin/mspec ci
06:34:43brixenit'll be nice when the buildbots report in <5 min
06:35:11zenspiderwe can set them up for incremental vs full, right?
06:35:20brixenI hope so
06:35:52brixenwe should be able to get a report from a pull + build + ci in < 3 min
06:36:02zenspiderI'm seeing my test runs hang on building the load_order file... doesn't seem to be every time.. anyone else seeing that?
06:36:06brixenalso, we need to have post-commit hook to ping the bot controller
06:36:16agardinerwell, i think i've found where the problem with this context retirement is coming from... but i don't understand it at all
06:36:36agardinerthe macro to retire a context is running even though the condition is clearly false
06:36:40zenspiderGAH
06:36:48zenspiderwe have some REALLY slow specs
06:36:59zenspiderthey're hanging for 10ish secs
06:37:11brixenzenspider: yep, and I excluded the 30sec ones
06:37:17brixenipaddr is one culprit
06:37:18agardinerthe check is if(om_on_stack(om, ctx) && (ctx >= om->context_bottom))
06:37:22zenspider101.5 seconds for a full run?
06:37:25zenspidergah
06:37:28zenspiderick
06:37:44zenspiderone of our new guys at nerd party started to bang on ipaddr
06:37:51zenspiderand found some good bugs in it
06:37:53agardinerand ctx < om->context_bottom, but it is still executing the body of the if
06:37:56zenspidermostly in the specs tho
06:38:09zenspidermy eyes glaze over when I do networky stuff that low
06:38:55brixenagardiner: what file are you in? and did you try with DEV=1?
06:39:01zenspiderwe need to be able to set a failure threshold for a spec at 1 second or something...
06:39:08agardinerthis is in object_memory.h
06:39:11brixenagardiner: curious if we've got some dangerous ops perhaps?
06:39:24agardinerthe macro is object_memory_retire_context
06:39:55zenspiderbrixen: what do you think about having raise_error take a block that lets you test further on the exception instance?
06:40:00agardinerline 102
06:40:19zenspiderproc { ... }.should raise_error(...) { |e| e.name.should == :blah } is what I'm thinking
06:40:38agardinerom_on_stack is true, but ctx >= om->context_bottom is false
06:40:38zenspiderthe begin/rescue/test/reraise thing is pretty lame
06:41:09brixenzenspider: I'm fine as long as it works with rsspec
06:41:28zenspiderwhat is that?
06:41:40brixenrspec
06:41:53_ADSagardiner: where's the call to the macro?
06:42:43agardinerits used in a few places
06:42:49_ADSobject_memory_retire_context is not really parenthesized well
06:43:02agardinerbut typically, it will come from cpu_simple_return
06:43:08zenspiderI dunno if rspec has that feature, but if it doesn't, I'll pitch it to david
06:43:53crafterm leaves the room.
06:44:41agardinerhere's a line from my run where it failed: (ctx >= om->context_bottom) = (0xb7390a34 >= 0xb7390aac) = 0
06:44:53agardinerand that is from *inside* the if check
06:45:05agardineri.e. it should never have got to that line
06:45:11benburkert enters the room.
06:45:29lstoll leaves the room.
06:46:18agardinerbah, i have to run
06:46:28agardineri'll look at this later
06:46:35agardinerbye!
06:46:38agardiner leaves the room.
06:46:41brixenzenspider: this is rspec's doc: http://rspec.info/rdoc/classes/Spec/Matchers.html#M000396
06:46:52brixenzenspider: what does the spec look like that needs the block?
06:47:12_ADSthat's odd
06:47:40wycats_ enters the room.
06:47:47zenspiderbrixen: sec... chatting w/ david
06:47:48headiusonly thing I'd say about that block form is that it gets a little long
06:50:17headiusotherwise it would be pretty useful
06:50:35wycats leaves the room.
06:50:41wifelette_ enters the room.
06:50:51wifelette leaves the room.
06:51:18brixenwell, the exception instance is pretty much a class and a message string, both of which you can match in the args to raise_error
06:51:21_ADS leaves the room.
06:53:34brixenheadius: have you run the bm's I checked in under benchmark/rubinius/numerics?
06:55:06headiusahh, hadn't looked at them yet, no
06:55:09headiusbut I love a good benchmark!
06:56:33headiusbm_add shows some awful bottleneck in bignum + float
06:57:10headiusall subsecond times except 5-6s for bignum + float or vice versa
06:57:13headiusyowsa!
06:57:41headiusgotta be something wrong with the coersion there
06:58:18DefilerTime to blog that we beat JRuby on numerics.. Quickly, to the spin machine!
06:58:29headiusheh, yeah, on that one case :)
06:58:32headiushurrah!
06:59:20Defiler"I think we can all agree that this shows some serious flaws in the JRuby performance testing methodology."
06:59:24Defiler:)
06:59:54headiusbrixen: thanks, these oughta be useful
06:59:56brixenyeah, we've got a couple coercion problems too
07:00:09brixenheadius: sure
07:00:28brixenthey're super micro, but at the same time, they should be as fast as possible
07:01:24headiusyeah
07:01:31brixenour bignum + fixnum times for example are just unacceptably slow
07:01:34headiusmost look good...something's wrong with bignum though
07:01:45brixenbut we kill MRI on most float ops
07:04:32headiusyou guys have almost all these as primitives, don't you
07:04:49brixenyeah, pretty much only way to do it
07:05:11brixenbut I reworked them all recently so e.g. float coerces in the primitive for fixnum and bignum
07:05:14headiuswhy's that
07:05:28brixenwell, how would you do a float in Ruby without going to a primitive?
07:05:29twbray enters the room.
07:06:07headiusI mean the coercion logic and whatnot
07:06:14headiusyou've moved all that out to C too
07:06:24brixenone layer of it, yes
07:06:38brixenmy position is that Float, Fixnum, Bignum are primitive types
07:06:43brixenthey'll never not be there
07:07:06headiuswhat does squeak do?
07:07:08brixenbut the logic works if you subclass Integer for instance and provide reasonable semantics
07:07:18brixengood question, dunno
07:07:24brixenI'm guessing primitives
07:08:02brixenso, e.g. float will coerce fixnum, bignum, but fail the primitive otherwise
07:08:17brixenthen the logic in Numeric kicks in and goes the normal #coerce route
07:08:51brixensort of dispatch, coerce, dispatch
07:10:00brixenif any of Fixnum, Float, Bignum weren't primitives, then I think the approach could be argued with
07:10:08zenspiderbrixen: http://rafb.net/p/U7nE3a49.html - I got approval from david to submit a patch for rspec... I can add to mspec at the same time
07:10:21brixenbut as it is, going back and forth to Ruby just to go to another primitive doesn't make sense
07:11:02brixenzenspider: k
07:11:51brixenzenspider: would you be able to look at #354?
07:12:00headiusbrixen: sure, I agree they should be primitives
07:12:08headiusjust trying to get a handle on how much code will end up in C
07:12:25zenspiderbrixen: the merb ticket?
07:12:33brixenzenspider: no, LH
07:12:38brixener, instance_eval
07:12:45brixenhttp://rubinius.lighthouseapp.com/projects/5089/tickets/354-bug-eval-instance_eval-fails-to-correc tly-modify-toplevel_binding
07:12:50zenspideroh. I was dyslexic
07:12:56zenspiderI typed 345
07:12:59brixenheh
07:13:46zenspiderI can try... you have a timeframe?
07:14:02brixenzenspider: not really, but I'm guessing it will help get rails going
07:14:16brixensince they use eval methods like they're going out of style :)
07:14:32twbray_ enters the room.
07:14:46zenspideryup
07:15:03zenspiderwe're gonna find every eval edge case through rails. :/
07:15:06brixenheadius: I don't think "end up in C" is really a concern here since these primitive have to go to machine code no matter what
07:15:38brixenheadius: this will have to be written in whatever language is converted to machine code, and isn't hard to rewrite in e.g. Garnet
07:15:42zenspideritches to finish porting ometa and cola
07:15:53brixenzenspider: porting?!!
07:15:55brixendo tell
07:16:10headiusdoes garnet exist yet?
07:16:15zenspiderI haven't gotten far...
07:16:23zenspiderbut I started to take a stab at ometa
07:16:51zenspiderand their machine code generator in coke is gloriously small
07:17:01brixenheadius: kinda, lib/compiler/garnet/
07:17:13headiusis it it being used for anything?
07:17:19brixenheadius: not yet
07:17:29aotearoa leaves the room.
07:19:05brixenheadius: do you know why the Klein project was abandoned? (according to wikipedia anyway)
07:19:09sholden_ leaves the room.
07:19:20headiusI don't know the klein project...looking
07:19:30brixenvm for Self written in Self
07:19:50headiushmm
07:20:02headiusoh, that
07:20:03brixenhttp://en.wikipedia.org/wiki/Self_programming_language
07:20:45zenspiderbrixen: ungar left sun because of funding / direction changes as I understand it... so the project just dried up
07:20:51zenspiderthat's all word of mouth tho
07:20:57brixenahh ok
07:20:57zenspiderI do loves me some ungar tho
07:21:21zenspiderwill never propose an OOPSLA talk for fear of the Ungar Question
07:21:53zenspiderwhere are the specs for raise_error ? I see specs for RaiseErrorMatcher
07:21:53headiusbrixen: I think it was partially because folks left or moved off the project
07:22:17headiusI know in the early stages they were having some problems getting it to perform well also
07:23:11zenspidersuch a freaky language... I wish I could think that way
07:23:16ezmobius enters the room.
07:23:40headiuswhat's the ungar question
07:24:17sfaxon enters the room.
07:24:29zenspiderheadius: you'll have to go to oopsla to find out
07:24:49headiusI knew you wouldn't tell me...just figured I'd ask
07:24:49olabini leaves the room.
07:26:11imajes enters the room.
07:26:24zenspiderbrixen: where do I hack this out?
07:26:32zenspiderbrixen: I don't see specs for raise_error
07:26:43brixenzenspider: if you can find a way to easily test mspec's raise_error without messing with rspecs, feel free to add them
07:27:11brixenI just spec the class, all the method does is instantiate an instance of that class
07:27:32zenspiderbrixen: what do you mean "messing with rspecs" ?
07:28:11brixenrspec provides #raise_error method resolving at the top level
07:28:33brixenif you require mspec's then it will replace rspec's
07:28:41brixenyou have to run the mspec specs with rspec
07:28:44twbray_ leaves the room.
07:30:08zenspiderah... I see. why don't they test themselves?
07:30:35zenspiderlike this: http://rafb.net/p/PxE5hX10.html
07:30:36brixenit was easier to use rspec to spec
07:30:38zenspider
07:30:45zenspiderreads pretty well imo
07:31:19brixenwhich #raise_error is that? rspec's or mspec's?
07:31:30twbray leaves the room.
07:31:38zenspiderthat's from rspec
07:31:46zenspiderI have to poke at those too. :)
07:32:03zenspiderhe wouldn't swap me feature requests... he had one for autotest. :)
07:34:34manveruheadius: you around? does jruby support ObjectSpace._id2ref ?
07:34:45headiusyou'll have to look at jruby source to find out
07:34:57headius:)
07:35:22headiusyes, we do
07:35:32manveruah, ok
07:35:47headiusI don't particularly like it, but it's there
07:35:55manveruyeah... me neither :|
07:36:17manverubut we're having a quite specific problem with passing locals into a templating engine
07:36:24headiusoh?
07:36:38manveruhttp://p.ramaze.net/668 is the solution ara suggested
07:37:04headiuswhat's this for?
07:37:38headiusI don't know what the performance of _id2ref is like
07:37:39manveruyou basically can say that you want to render a template with local variables :foo => foo, :bar => bar
07:38:31ahoward enters the room.
07:38:35headiusgod I hope you're not going to run that method_missing every time
07:38:40ahowardhowdy
07:38:47headiusor rather, the logic above that hits it
07:38:50ahowardhey charlie
07:39:15manveruwell, we're trying to get rid of method_missing :)
07:39:21headiuslocals is a list of names?
07:39:25headius:names
07:39:33manverunods
07:40:05headiuswell, you know the code you run against the binding will always have to be eval'ed too then
07:40:11headiuseval'ed code is slower
07:40:21headiusparse/execute cycle and all
07:40:32headiusand this won't work at all in 1.9, evals get their own scopes
07:40:52ahowardthe scope is specified though?
07:41:03headiusno, eval execute in a special scope under the binding
07:41:06headiusnot in the binding itself
07:41:13ahowardcrappy
07:41:42headiusall evals under a given binding share a growable scope in 1.8 and have separate scopes in 1.9
07:41:46headiusbut non-eval scopes can't grow
07:42:00ahowardi haven't played with 1.9 much - can eval take a block + binding
07:42:09ahowardhrrrm
07:42:14headiusno
07:42:19manveruyeah... eval with block would be so cool :)
07:42:21headiusit can take a proc as a binding though
07:42:33ahowardso no way to inject real locals into a binding/lambda?
07:42:44headiusnope
07:42:45rueahoward: *wave and a general thank-you for lots of great software*
07:43:17headiuswell, no way without re-evaluating code all the time
07:43:19ahowardrue: thx. see my new page: http://codeforpeople.com/donate/
07:43:21ahoward;-)
07:43:40manveruso, what speaks against ivars again?
07:43:57ahowardyou mean push/pop them?
07:44:07ahowardif defined? @var...
07:44:24manverujust defining them
07:44:29ahowardclobbers
07:44:45jptix enters the room.
07:44:49ahoward@_out_ = 42
07:45:11ahowardit's easy to restore them to previous values - but i'd hardly call that 'locals'
07:45:24zenspiderara!
07:45:38ahowardzenspider: shit - is everyone here then?
07:46:04rueahoward: All the cool kids hang out here
07:46:18rueThey let me stay if I give them quarters for the pinball machine
07:46:20zenspiderFOURTY TWO?!?
07:46:23ahowardrue: i guess so. i'm such an irc hack, ask manveru
07:46:28ezmobiuswaves
07:46:31headiusattrs are pretty fast
07:46:38ahowardhey ez
07:46:50headiusI'd be surprised if local var vs attr performance was a serious problem
07:46:51lstoll enters the room.
07:47:08headiusit's a lot slower than locals, of course
07:47:13zenspiderezmobius: I need to poke you wrt merb compatibily
07:47:19zenspidergah I can't type today at all
07:47:20ezmobiuskAworu: whats up?
07:47:25headiusyou have to consider MRI too, which implements eval scopes as a dictionary
07:47:28ezmobiuswoah auto complete gone wild
07:47:31headiusso I don't think eval's locals will be all that fast anyway
07:47:35ahowardmanveru: i have no idea what the history of locals is, why not just can it?
07:47:37zenspiderhaha
07:47:52zenspiderezmobius: where we at currently? anything I can do to help?
07:47:58zenspiderezmobius: see ticket 345
07:48:35ezmobiuscool, i had it sort of running on webrick
07:48:45ezmobiusbut rubinius was throwing some weird coersion errors
07:48:53ezmobiuslet me fire it up again and see where we are at
07:49:13zenspiderthrow any and all notes in that ticket pls
07:49:19zenspiderI'm doing 50 things at once
07:49:27ezmobiuscool
07:49:30ezmobiuswill do
07:50:06ezmobiuswhats the current status of using rubygems?
07:50:08manveruahoward: uh, don't ask me... tmm1 and kashia did the work for locals
07:50:25manveruat least darcs says so
07:50:41zenspiderezmobius: tenuous?
07:50:41ezmobiusyeah template locals are a pain in the ass
07:50:41ahowardmanveru: oh. well i'm with you - forget it and use @locals[key]
07:50:56wifelette_ leaves the room.
07:51:18ezmobiusi use method_missing for them, so they work, i just dont use them myself cuz i know they are implemented on method_missing :P
07:51:18ahowardezmobius: i was all proud of this and manveru is deflating me: http://p.ramaze.net/668
07:51:41zenspiderahoward: I was gonna ask you, how does your tagz compare with markaby in terms of speed? it reads nearly the same and I'd bet your code is a LOT more readable
07:51:54ahowardezmobius: in ramaze templates are instance_eval'd inside the controler, fast but dangerous for some things like method_missing
07:52:31ahowardzenspider: i reworked recently - http://codeforpeople.com/lib/ruby/tagz/tagz-1.0.0/lib/tagz.rb
07:52:50ahowardzenspider: it's ultra simple now - no idea on speed
07:52:50ezmobiussounds familiar ;) in merb all templates are compiled into methods in a module that is mixed into the controllers
07:53:08zenspiderNICE
07:53:22ahowardzenspider: i cut by 2/3rds on the rework
07:53:31zenspideryay!
07:53:37zenspiderI'll poke at it
07:53:50TheVoice leaves the room.
07:53:57femtowin leaves the room.
07:54:19ahowardzenspider: caching the tag_ methods *might* be a speed gain
07:54:40ahowardzenspider: i did that in xx, but it's dubious if you call something only once then ....
07:54:42wycats_ leaves the room.
07:55:22zenspiderahoward: I'll poke and see how it adds up...
07:56:05headiusahoward: if you only call once it probably won't help any
07:56:19ahowardmanveru: i think the key is: templates are instance eval'd and that means method_missing/define_method cannot work safely. it's either my locals patch or nothing. i'd aim for nothing as it's much easier to maintain ;-)
07:56:40manveru^^
07:56:40ahowardheadius: i'll trust you on that. i just try to make it read good, as you know.
07:56:56twbray enters the room.
07:56:58headiuscalling multiple times helps ruby some, but helps JRuby tremendously
07:57:01manverulikewise, i've never used that functionality... *pats his trusty instance vars*
07:57:04headiusit will actually compile to bytecode
07:57:22ahowardmanveru: okay - i'm all about deleting code.
07:57:52ahowardheadius: i've been dying to use jruby for something real. case just hasn't come up. stuck in webland.
07:57:53manveruwill consult with kashia when he comes around
07:58:11ahowardmanveru: k. i'm passing out and have to meet a client at 7am. uggh.
07:58:17headiuswell, you could use it for webland :)
07:58:41ahowardheadius: not if i keep breaking ramaze ;-)
07:58:59manveruahoward: sleep well
07:59:07ahowardmanveru: ciao.
08:04:47VVSiz_ enters the room.
08:08:13hoopy leaves the room.
08:08:13Ingmar leaves the room.
08:08:13aasmith leaves the room.
08:08:13crayz__ leaves the room.
08:08:13raggi leaves the room.
08:08:13goodney leaves the room.
08:08:13tarcieri leaves the room.
08:08:13_goodney_ leaves the room.
08:08:13djwhitt leaves the room.
08:08:13manveru leaves the room.
08:08:13Fobax_ leaves the room.
08:08:13boyscout leaves the room.
08:08:13shingara leaves the room.
08:08:13rue leaves the room.
08:08:13cout_ leaves the room.
08:08:13geekounet leaves the room.
08:08:13rudebwoy leaves the room.
08:08:13dbussink leaves the room.
08:08:13fearoffish leaves the room.
08:08:13ko1_away leaves the room.
08:08:13comboy leaves the room.
08:08:13maharg leaves the room.
08:08:13VVSiz leaves the room.
08:08:38cout_ enters the room.
08:08:38geekounet enters the room.
08:08:38hoopy enters the room.
08:08:38raggi enters the room.
08:08:38Ingmar enters the room.
08:08:38aasmith enters the room.
08:08:38djwhitt enters the room.
08:08:38rudebwoy enters the room.
08:08:38crayz__ enters the room.
08:08:38dbussink enters the room.
08:08:38goodney enters the room.
08:08:38fearoffish enters the room.
08:08:38tarcieri enters the room.
08:08:38_goodney_ enters the room.
08:08:38manveru enters the room.
08:08:38Fobax_ enters the room.
08:08:38boyscout enters the room.
08:08:38shingara enters the room.
08:08:38ko1_away enters the room.
08:08:38comboy enters the room.
08:08:38rue enters the room.
08:08:38maharg enters the room.
08:10:36geekounet leaves the room.
08:11:04geekounet enters the room.
08:14:13ezmobiushmm @@class variables are not available to singleton classes in rbx and they are in mri http://pastie.caboo.se/158642
08:14:24thehcdreamer enters the room.
08:16:50wycats enters the room.
08:17:39imajes leaves the room.
08:18:16rueSomeone made the decision to implement cvars over class ivars so those are patched kind of case-by-case to match MatzRuby
08:18:20rueeyes brixen
08:19:06ezmobiusyeah this case rails uses a lot. cattr_accessor
08:21:07brixenrue: what did I do?
08:21:14tarcieriweird, class variables aren't available in singleton scope in rbx?
08:22:24ezmobiusnot yet looks like, does direct_superclass skip over metaclasses?
08:22:57ruebrixen: I blame you for letting mae talk yourself into the cvar == civar scheme :P
08:23:14tarcieriWorks fo me
08:23:22tarcierichecks tha pastie
08:23:46tarcieriAah
08:23:57tarcieriMetaclass issues
08:23:57ezmobiusthey work if you set them in the meta class
08:24:00tarcieriwas confused
08:24:24crossblaim enters the room.
08:24:26ezmobiusseems like it walks the direct_superclass looking for cvars in the class_variables_table. i bet direct_superclass skips the metaclass
08:24:27tarcieriYeah uhhh
08:24:31tarcieriThat's almost a bad thing
08:24:52ezmobiusit may be bad but rails uses it heavily
08:25:39tarcieriHeh
08:25:54tarcieridoesn't know how to respond to "Yeah it's bad... BUT RAILS!"
08:26:04rueOm.
08:26:20rueOr mu, depending on your school.
08:26:34tarcieriprefers Haaaaaaaam
08:26:59tarcierihttp://www.youtube.com/watch?v=MzOpjBOzMqA
08:27:37wifelette enters the room.
08:27:37rueHm, one of them thar vi-day-uhs? I cannot watch those
08:28:12tarcieriyes, precious content, locked in propriteary application/x-shockwave-flash
08:28:18manveruman, for a second i thought it was a video about vi...
08:28:34manveruthen i would even have openend it :P
08:30:03rueWell, my understanding of the issue is that Vi cannot be captured on videotape
08:30:15rueDue to its magical properties
08:30:55tarcieriyou can vi tha intarwebs
08:30:57tarcieriwith vimperator
08:31:44zenspidertarcieri: gah... I actually remember that. :o
08:32:09tarcieriPickle Surprise?
08:32:22rueI need to figure out how to map vimperator to dvorak
08:32:43tarcieriheh
08:32:49tarcieriprogrammer's dvorak?
08:34:02rueNuh, just regular except a few changes--I use jkl; for <^v>
08:34:04zenspiderjust dvorak
08:34:31zenspiderI thought it was hjkl?
08:34:40zenspideryou shifted it over one?
08:34:43tarcieriyou know
08:34:46tarcierithings like vi
08:34:58ruezenspider: Yeah
08:35:01tarcieriand ^c and ^d and ^z and so forth
08:35:10tarcierithose are why I don't use dvorak
08:35:13tarcierithat and braces
08:35:43rueI dunno, those mostly work OK but I always use opposite hand for Shift and Ctrl
08:35:59rueSo ^C is <LCtrl-i> here
08:36:00zenspidertarcieri: ? what does that have to do with it?
08:36:08zenspider^c?
08:36:13tarcierione handed ^c
08:36:20tarcieriI guess you could use your right hand
08:36:21zenspiderit types just as well in dvorak
08:36:22tarcieribut uhh
08:36:23rueEw, two-handed always
08:36:25tarcieriI don't go for that
08:36:33rueNo finger gymnastics :)
08:36:36zenspidertarcieri: what are you doing with your other hand when your coding?!?
08:36:41rueHaha
08:36:42zenspiderperv
08:36:51tarcieriYou damn well better know what
08:37:06zenspiderno, apparently I don't...
08:37:11brixenezmobius: looks like a simple fix, you don't have a spec by chance do you?
08:37:12rue<Esc> is the only normal problem, lots of people map it to <CapsLock>, I map it to jj (or hh really)
08:37:22zenspiderI'm a good programmer... both hands firmly on the keyboard at all times
08:37:28ezmobiusbrixen: i just have that pastie, i can write up a little spec
08:37:45ezmobiusbrixen: where shoudl the spec go?
08:37:51zenspiderbrixen: nobody in #rspec is awake... maybe you can help me grok something?
08:37:52brixenezmobius: that's ok, I can do it
08:38:04brixenzenspider: I can try, I'm hardly awake either :P
08:38:06rue#rspec is kinda like #ror
08:38:29zenspiderrue: good to know. :)
08:39:22zenspiderbrixen: I'm adding the block to raise_error... I'm all good except one spec where I'm trying to NOT run the block in the case that it is a should_not but matches
08:39:24ezmobiusbrixen: thx
08:39:40zenspiderwhy the fuck ppl use should_not raise_error or assert_not_raised is beyond me, but it shouldn't run the block in that case
08:39:50zenspideris there a way for matched? to know that it is in the negative case?
08:39:59zenspiderthis q might not map to mspec fully... no clue
08:40:05zenspiderI'm working on rspec first
08:40:37rueHm, wait, this is not #should and not #should_not?
08:40:58zenspiderrue: you lost me
08:41:22brixenzenspider: I'm not much help in rspec internals, I try hard not to go there
08:41:24brixensorry :/
08:41:49zenspiderin the case of: proc {}.should_not raise_error(x, y) where it IS raised and DOES match
08:42:00zenspiderbrixen: wouldn't the basic structure be the same in this case?
08:42:23brixenwell, in mspec it's in mspec/expectations/should.rb
08:42:32brixenshould_not just inverts the test that should does
08:42:39zenspiderproc {}.should raise_error... raise_error creates the matcher thingy. should calls the proc and invokes the matcher
08:43:00zenspiderbut ... does the matcher know the context of the should/should not?
08:43:04zenspideror can it?
08:44:10brixenin rspec?
08:44:10rueThe flow is backwards
08:44:24zenspiderin either
08:44:44rueYou can parse #caller ;)
08:45:02zenspiderrue: yeah... I was hoping to avoid that. :)
08:45:16brixenin mspec, should_not does this: if matcher.matches?(self)
08:45:28brixenshould does: unless matcher.matches?(self)
08:45:36jptix_ enters the room.
08:45:41rueActually, what is the full example? I am assuming that there is some sane situation where you would not expect to run the block?
08:45:42brixenso, matcher doesn't know which
08:45:47brixenI guess that's what you're asking?
08:45:56zenspideryup
08:46:02zenspidercaller it is. :(
08:46:08rueshould_raise(blah) { foo } is so much better
08:46:37brixenzenspider: I'm still missing the use case on this addition, so it's hard for me to understand
08:46:45rueseconds
08:46:51zenspiderrue: I think should_raise and proc {}.should raise_error are both fine and descriptive
08:46:54rueWhat are the exact semantics?
08:47:14zenspiderI find it completely RETARDED to ever use assert_not_raised and should_not raise_error -- ever
08:47:35brixenyeah, should_not raise_error seems weird
08:47:43rueWell, true.. unless there is a bug you are speccing it is superfluous
08:47:44brixenjust do it, you fail if it raises an error
08:48:01manveru:)
08:48:07zenspiderbrixen: exactly
08:48:09brixenare we using should_not raise_error?
08:48:20zenspiderno clue
08:48:25rueBut what does the block do if we set aside the retardedness?
08:48:38brixenack says yes
08:48:50zenspiderthe block gets called passing in the exception matched
08:49:48rueAnd performs further tests?
08:49:48zenspidercompare: http://rafb.net/p/BGpq4C54.html
08:50:23zenspiderI've seen specs like the latter and wanted to punch something
08:51:03rueOK, sure--how is it different for #should_not?
08:51:08brixenlooks like all our should_not r