Show enters and exits. Hide enters and exits.
| 00:01:38 | rubuildius | Brian Ford: 73be3b88a; 1715 files, 5784 examples, 19679 expectations, 0 failures, 0 errors; http://rafb.net/p/3gUly518.html |
| 00:02:48 | twbray_ enters the room. | |
| 00:09:06 | mernen enters the room. | |
| 00:09:53 | agile leaves the room. | |
| 00:11:35 | ataiar enters the room. | |
| 00:12:59 | olabini leaves the room. | |
| 00:14:37 | olabini enters the room. | |
| 00:16:29 | crafterm | hi all |
| 00:16:40 | agardiner | howdy |
| 00:16:50 | crafterm | hows it going mate? |
| 00:16:51 | imajes enters the room. | |
| 00:17:05 | agardiner | not bad. yourself? |
| 00:17:31 | crafterm | all good mate |
| 00:17:54 | agardiner | that's the way :-) |
| 00:20:16 | twbray leaves the room. | |
| 00:20:45 | rue | Man, you weird foreigners. I cannot understand a thing you say in your weird foreign languages! |
| 00:21:10 | agardiner | hehe |
| 00:25:12 | twbray_ leaves the room. | |
| 00:30:03 | obvio leaves the room. | |
| 00:30:18 | obvio enters the room. | |
| 00:30:35 | macournoyer enters the room. | |
| 00:30:40 | imajes leaves the room. | |
| 00:31:15 | hoopy | hash |
| 00:31:16 | hoopy | er |
| 00:31:18 | hoopy | hah* |
| 00:32:04 | imajes enters the room. | |
| 00:38:38 | macournoyer leaves the room. | |
| 00:38:44 | dctanner enters the room. | |
| 00:39:14 | macournoyer enters the room. | |
| 00:40:27 | rue | pot |
| 00:40:31 | rue | er |
| 00:40:35 | rue | Hi* |
| 00:42:02 | dc_ leaves the room. | |
| 00:43:37 | obvio leaves the room. | |
| 00:43:52 | obvio enters the room. | |
| 00:47:13 | eventualbuddha enters the room. | |
| 00:48:08 | radarek leaves the room. | |
| 00:50:12 | therealadam leaves the room. | |
| 00:51:05 | eventualbuddha | ping |
| 00:51:17 | eventualbuddha leaves the room. | |
| 00:51:20 | eventualbuddha enters the room. | |
| 00:51:38 | eventualbuddha leaves the room. | |
| 00:52:19 | rue | Pong? |
| 00:53:11 | Administrador enters the room. | |
| 00:53:25 | lvmc | rue, you are on? |
| 00:54:50 | rue | Sort of, reading, what is up? |
| 00:58:28 | imajes leaves the room. | |
| 00:58:34 | lvmc leaves the room. | |
| 00:58:46 | brixen | I wonder if adrian would let me sign an nda so I could play with colm |
| 00:58:57 | lvmc enters the room. | |
| 01:00:37 | imajes enters the room. | |
| 01:01:37 | radarek enters the room. | |
| 01:02:15 | obvio leaves the room. | |
| 01:02:30 | obvio enters the room. | |
| 01:05:33 | rue | I could answer that but then I would have to kill you |
| 01:05:42 | ezmobius | what is colm? |
| 01:07:46 | lvmc | rue, the Google Summer Code 2008 is opened. |
| 01:09:06 | brixen | ezmobius: http://www.cs.queensu.ca/~thurston/colm/ |
| 01:10:57 | ezmobius | cool |
| 01:12:33 | rubyconsumer enters the room. | |
| 01:12:36 | technomancy | ezmobius: enjoyed your article on Rack... looks like a sweet technology, and I may integrate it with bus scheme |
| 01:12:46 | nicksieger leaves the room. | |
| 01:13:00 | ataiar enters the room. | |
| 01:13:25 | ezmobius | yeah 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:45 | nicksieger enters the room. | |
| 01:14:03 | technomancy | ezmobius: yielding line by line isn't enough? |
| 01:14:09 | ezmobius | nope |
| 01:14:43 | ezmobius | here is my propsed change http://pastie.caboo.se/158530 |
| 01:14:43 | brixen | ezmobius: congrats btw on the book! |
| 01:14:49 | brixen | needs to read blogs more often |
| 01:14:57 | ezmobius | if the body is a Proc then call it and pass in the response object |
| 01:15:01 | ezmobius | otherwise just each it |
| 01:15:05 | ezmobius | brixen: thanks! |
| 01:15:10 | ezmobius | feels good to be almost done |
| 01:15:14 | technomancy | ezmobius; oh for binaries and such |
| 01:15:17 | zenspider | brixen: got it |
| 01:15:20 | brixen | ezmobius: very cool |
| 01:15:47 | ezmobius | technomancy: http://pastie.caboo.se/158531 |
| 01:15:50 | brixen | zenspider: heh, I knew you would, I could sense the jaw locking |
| 01:16:00 | ezmobius | to allow for stuff like that which needs tighter control pver the response objecyt |
| 01:16:36 | obvio leaves the room. | |
| 01:16:48 | ezmobius | basically 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:51 | obvio enters the room. | |
| 01:17:46 | cored leaves the room. | |
| 01:20:18 | rue | ezmobius: Hm, is chris2 giving you a reason? |
| 01:20:33 | ezmobius | "it break encapsulation" |
| 01:20:46 | ezmobius | then he tells me to reopen Proc and alias each to call :P |
| 01:20:50 | ezmobius | as a solution |
| 01:22:36 | mutle leaves the room. | |
| 01:23:15 | mutle enters the room. | |
| 01:23:47 | ezmobius | but that still doesnt solve the problem that currently rack does not expose the response object to the framework at all |
| 01:24:06 | rue | Yeah, he clearly is not an orthodox when it comes to approach. Bit surprised. |
| 01:24:35 | ezmobius | for now i have hacked rack adapters in merb itself |
| 01:24:37 | boyscout | 1 commit by Ryan Davis |
| 01:24:38 | boyscout | * Added some pretty rude specs for Kernel#system and got them to pass.; 4ac32e4 |
| 01:24:57 | ezmobius | rue: rails-core people want my change as well |
| 01:25:02 | ezmobius | to rack that is |
| 01:25:06 | rue | ezmobius: I kinda see what he is saying with regard to encapsulation though |
| 01:25:06 | zenspider | stupid system... |
| 01:25:31 | zenspider | man that word has been used as an excuse too much lately |
| 01:25:38 | zenspider | "encapsulation" has it's time and place |
| 01:25:40 | rue | ezmobius: Under the current system, that is. Aliasing each does break encapsulation but it does so from your narrower to the broader |
| 01:25:49 | ezmobius | rue: 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:49 | zenspider | but it's still just a guideline |
| 01:26:13 | rue | The other way around would be broader to narrower which may have some extra considerations |
| 01:26:13 | ezmobius | rue: 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:37 | rue | Sure, maybe even moreso just a quest for the extreme simplicity |
| 01:26:59 | ezmobius | true, but at the cost of needed features |
| 01:27:17 | rue | Opening up the response object would definitely lead to a less simple usage (albeit it would still be quite trivial) |
| 01:27:48 | rue | ezmobius: 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:56 | ataiar leaves the room. | |
| 01:29:33 | ezmobius | rue: agreed. there might be a better interface, something more liek mongrel handlers #process(request, response) method |
| 01:29:42 | ezmobius | rather then hash in array out |
| 01:31:32 | sfaxon enters the room. | |
| 01:33:51 | rubuildius_ppc | Ryan Davis: 4ac32e4c9; 1715 files, 5788 examples, 19678 expectations, 0 failures, 12 errors; http://pastie.caboo.se/paste/158538 |
| 01:36:40 | rubuildius | Ryan Davis: 4ac32e4c9; 1715 files, 5787 examples, 19686 expectations, 0 failures, 0 errors; http://rafb.net/p/1TC0VZ53.html |
| 01:39:19 | technomancy | interesting... i can see reasons for each way; cleanliness vs usefulness is an age-old battle |
| 01:48:15 | agile enters the room. | |
| 01:50:23 | imajes leaves the room. | |
| 01:50:36 | joydivider enters the room. | |
| 01:59:33 | joydivider leaves the room. | |
| 02:03:43 | MenTaLguY enters the room. | |
| 02:05:12 | nitay_ enters the room. | |
| 02:06:20 | boyscout | 1 commit by Ryan Davis |
| 02:06:21 | boyscout | * Fixed Symbol#inspect from over quoting; 7fb76f2 |
| 02:06:34 | zenspider | is anyone working on those 12 ppc errors? anyone need a machine to poke at them? |
| 02:07:07 | Defiler | evan is swapping in libffi, and I think various people have decided not to touch PPC until that happens |
| 02:07:13 | Defiler | (I know I personally am in that group) |
| 02:07:53 | drbrain | Defiler: we dropped syck |
| 02:08:06 | zenspider | k. then can we just remove that from the bot pool until such time? |
| 02:10:15 | Defiler | zenspider: Sounds good to me |
| 02:11:26 | djwhitt | cremes is running that one |
| 02:12:04 | Defiler | So.. 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:13 | Defiler | I vote that we remove our cool additional feature |
| 02:12:20 | Defiler | To strip away that incompatibility |
| 02:12:38 | dewd_ enters the room. | |
| 02:12:38 | drbrain | Defiler: evan and I discussed that "feature" and came to a similar conclusion |
| 02:12:41 | MenTaLguY | is it the number of required arguments or the reported arity that is the issue? |
| 02:12:42 | Defiler | I could also fix RbYAML, but that seems like a hack |
| 02:12:44 | drbrain | is this the Struct problem? |
| 02:12:49 | Defiler | Different problem |
| 02:13:11 | Defiler | http://rubinius.lighthouseapp.com/projects/5089/tickets/312-bug-modify-object-instance_variables-r esults-in-wrong-compilation |
| 02:13:33 | Defiler | I could also fix it by changing the compiler to not pass an argument |
| 02:13:38 | drbrain | somebody (like me) should go sync up RbYAML with it's main source |
| 02:13:46 | drbrain | maybe I'll do that after RubyGems for a break |
| 02:13:56 | drbrain | anyhow, I'm out |
| 02:14:00 | drbrain | off to practice |
| 02:14:04 | Defiler | but 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:24 | Defiler | Sounds like the vote is to change instance_methods, so I will do that |
| 02:15:20 | obvio leaves the room. | |
| 02:18:28 | technomancy leaves the room. | |
| 02:20:04 | rubuildius_ppc | Ryan Davis: 7fb76f2c4; 1715 files, 5788 examples, 19680 expectations, 0 failures, 14 errors; http://pastie.caboo.se/paste/158556 |
| 02:21:57 | nitay leaves the room. | |
| 02:21:58 | rubuildius | Ryan Davis: 7fb76f2c4; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; http://rafb.net/p/6H0xAy87.html |
| 02:23:43 | rue | Uh oh |
| 02:25:22 | rue | Cool, 7.0-R is out |
| 02:26:09 | rue | Although there is some nice stuff coming in next Dragonfly too |
| 02:26:40 | tarcieri | ! |
| 02:26:49 | tarcieri | I need to upgrade my storage server... |
| 02:27:04 | tarcieri | although I'm still considering just switching to nexenta |
| 02:27:32 | geekounet leaves the room. | |
| 02:27:35 | geekounet enters the room. | |
| 02:29:35 | rue | http://leaf.dragonflybsd.org/mailarchive/kernel/2007-10/msg00006.html |
| 02:30:42 | rue | Unless it gets ported, I am considering switching just because of HAMMER |
| 02:31:26 | tarcieri | what's special about it? |
| 02:32:53 | lvmc | rue, can you submit mod_rubinius on Google Summer Code ? |
| 02:34:07 | rue | tarcieri: It is a better ZFS, pretty much. Transactions, volume management and checkpoint/snapshot retention policy |
| 02:34:53 | rue | Incidentally they are also adding checkpointing support to produce executables of a running process |
| 02:35:12 | crafterm leaves the room. | |
| 02:35:19 | lvmc leaves the room. | |
| 02:35:24 | rue | lvmc: 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:54 | lstoll leaves the room. | |
| 02:37:46 | gnufied_ enters the room. | |
| 02:41:55 | perplexes leaves the room. | |
| 02:47:13 | radarek leaves the room. | |
| 02:47:46 | VVSiz_ enters the room. | |
| 02:50:08 | brixen | rue: 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:55 | brixen | running 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:45 | ezmobius leaves the room. | |
| 02:54:34 | jtoy enters the room. | |
| 02:54:42 | Defiler | brixen: Wow. 98%? |
| 02:56:16 | brixen | yeah, starting with a tuple size of 0 from make_array resulted in over 10,000 calls to reallocate just loading IRB |
| 02:56:26 | brixen | increasing that to 8 reduced it to 168 calls |
| 02:56:50 | dysinger enters the room. | |
| 02:56:52 | Defiler | haha what zero? |
| 02:57:06 | Defiler | zero doesn't sound like a good default size. I wonder how big a difference 2 would be vs. 8 |
| 02:57:25 | AndrewO enters the room. | |
| 02:57:46 | sfaxon leaves the room. | |
| 02:57:58 | brixen | well, I mapped from 0-8 |
| 02:58:06 | brixen | one sec, I'll show you the #s |
| 02:58:13 | agardiner | brixen, Defiler: i'm just testing some changes to the GC to fix an intermittent problem with the debugger... |
| 02:58:18 | agardiner | would appreciate some extra eyes to give it a once over? |
| 02:58:24 | brixen | 0 -> 1 cut it in 1/2 |
| 02:58:36 | brixen | agardiner: ok |
| 02:59:40 | brixen | Defiler: for a full CI run, it's 83.4% |
| 02:59:59 | Defiler | That sounds like an awesome optimization |
| 03:00:01 | brixen | so, 299,654 to 49,649 |
| 03:00:10 | brixen | well, it's actually quite small right now |
| 03:00:18 | AndrewO leaves the room. | |
| 03:00:18 | brixen | there's literally millions of sends |
| 03:00:24 | Defiler | Aah |
| 03:00:26 | agardiner | ok, changes passed ci |
| 03:00:26 | brixen | so these get kind of swamped |
| 03:00:33 | brixen | but it will be more important |
| 03:00:34 | agardiner | should i push and let you review that way? |
| 03:00:50 | brixen | agardiner: whichever you feel comfortable with |
| 03:01:03 | brixen | looks like we have maybe 2 ci failures in head |
| 03:01:05 | agardiner | ok, i'll push... |
| 03:01:07 | brixen | but that could be just on linux |
| 03:01:29 | agardiner | i saw 2 new failures which i think are related to the quoting change on symbols |
| 03:01:36 | brixen | yeah |
| 03:02:18 | boyscout | 1 commit by Adam Gardiner |
| 03:02:19 | boyscout | * Prevent GC from resetting customised iseq on context; 8ce5942 |
| 03:02:34 | agardiner | ok, there it is... rationale for the changes is in the commit msg |
| 03:03:04 | agardiner | background is that i would see intermittent errors when exiting the debugger |
| 03:03:40 | agardiner | tracked them down to the fact that the context iseq was being reset in the GC to the CompiledMethod compiled field |
| 03:03:41 | brixen | pulls |
| 03:04:20 | Defiler | oh hoh |
| 03:04:33 | agardiner | but 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:49 | agardiner | so that it can switch in/out yield_debugger opcodes without impacting other threads |
| 03:05:07 | agardiner | Defiler: is that oh hoh aimed my way? :-) |
| 03:05:10 | Defiler | Yes |
| 03:05:17 | agardiner | nuts |
| 03:05:23 | agardiner | whatsup? |
| 03:05:36 | VVSiz leaves the room. | |
| 03:06:25 | Defiler | I was just oh-hohing at what the problem turned out to be |
| 03:06:43 | agardiner | oh, ok... phew! :-D |
| 03:07:28 | brixen | agardiner: looks sane to me, but atm I have a very rudimentary grasp of the GC |
| 03:07:55 | agardiner | hehe... me too, which is why i wanted to run it by some other eyes! |
| 03:08:16 | brixen | the fact that our 19,600 odd expectations tend to support your assertion of correctness helps I think :) |
| 03:08:39 | gnufied_ leaves the room. | |
| 03:08:54 | agardiner | yeah! ci is a tremendous help when you are not sure where a problem might crop up |
| 03:09:13 | mutle leaves the room. | |
| 03:09:28 | GMFlash leaves the room. | |
| 03:09:32 | GMFlash enters the room. | |
| 03:09:34 | Defiler | agardiner: I'll dig into that changeset in a minute, and let you know if anything looks wacky |
| 03:09:38 | Defiler | I am sure it is fine, though |
| 03:09:50 | agardiner | ok, thanks! |
| 03:10:04 | agardiner | i'm just gonna duck out and grab some lunch... bbiab |
| 03:11:08 | brixen | zenspider: you around? |
| 03:14:05 | rubuildius_ppc | Adam Gardiner: 8ce59429b; 1715 files, 5788 examples, 19680 expectations, 0 failures, 14 errors; http://pastie.caboo.se/paste/158575 |
| 03:16:39 | rubuildius | Adam Gardiner: 8ce59429b; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; http://rafb.net/p/0uzUfF14.html |
| 03:18:13 | crafterm enters the room. | |
| 03:31:34 | macournoyer leaves the room. | |
| 03:33:13 | binary42 enters the room. | |
| 03:38:17 | agardiner | brixen: noticed a "woot" appearing on stdout on that last ci run... :-) |
| 03:39:06 | tarcieri | heh |
| 03:39:13 | tarcieri | wishes he were seeing woots :( |
| 03:39:35 | agardiner | tarcieri: then run mspec/ci! :-D |
| 03:39:56 | agardiner | * bin/mspec ci |
| 03:40:17 | agardiner | still gets confused with the new way of running ci... :-S |
| 03:44:04 | enebo leaves the room. | |
| 03:45:54 | lopex leaves the room. | |
| 03:47:01 | Defiler | Man, our version of Binding is so much awesome-er than ruby 1.8's |
| 03:47:13 | Defiler | try firing up irb and typing binding.context.calling_hierarchy |
| 03:48:38 | agardiner | yeah, its super awesome |
| 03:49:14 | agardiner | first class method contexts are also awesome |
| 03:49:50 | agardiner | (and make this possible) |
| 03:50:29 | joydivider enters the room. | |
| 03:53:20 | Defiler | I think do_not_reverse_lookup= is my least-favorite method name in 1.8 |
| 03:53:29 | Defiler | do_not_not_not_reverse_lookup= |
| 04:02:27 | dancroak enters the room. | |
| 04:04:25 | brixen | agardiner: I don't see any woots? |
| 04:04:30 | macournoyer enters the room. | |
| 04:05:11 | agardiner | lemme run it again with -V and see if I can isolate it... |
| 04:05:57 | joydivider leaves the room. | |
| 04:05:57 | brixen | well, I see it kernel/system_spec.rb, but I didn't see it on stdout |
| 04:06:00 | brixen | weird |
| 04:06:00 | agardiner | yeah, there it is - its in kernel/system_spec |
| 04:06:21 | brixen | I'm running it on linux |
| 04:06:49 | agardiner | that's where i see it - on gutsy |
| 04:07:05 | brixen | heh, that's funny |
| 04:07:09 | brixen | no output on osx |
| 04:08:15 | brixen | yep, got it on gutsy too |
| 04:08:49 | obiejuan leaves the room. | |
| 04:09:07 | brixen | happens with ruby too, not just rbx |
| 04:10:20 | rue | brixen: Hm, that makes no sense |
| 04:10:27 | brixen | rue: which part? |
| 04:10:47 | rue | brixen: A) the size was 10 or 16 I think and B) #reallocate should be where it is getting checked |
| 04:11:18 | brixen | rue: the size of a tuple backing array was 0 when created with make_array |
| 04:11:22 | boyscout | 1 commit by Wilson Bilkovich |
| 04:11:23 | boyscout | * Remove optional argument from Object#instance_variables. (Ticket 312); 9b24966 |
| 04:11:25 | brixen | look at array_new in array.c |
| 04:11:46 | brixen | rue: B) #reallocate was doing 3 * @tuple.size / 2 + 1 |
| 04:12:05 | rue | I blame that on evan |
| 04:12:17 | brixen | 8 seems to be a good size |
| 04:12:29 | rue | Yep, certainly 0 would not be |
| 04:12:55 | brixen | rue: but you know what we *really* need, something like dtrace for ruby code |
| 04:13:05 | brixen | I don't know if dtrace hooks in the vm will be sufficient |
| 04:14:46 | agardiner | brixen: i spoke to evan about having a SendSite lookup function that could give you a kind of pointcut functionality... |
| 04:15:15 | agardiner | enable you to run some arbitrary Ruby code before/after a method call |
| 04:15:24 | brixen | what's with &> ? the system_spec seems to work find with just > |
| 04:15:32 | brixen | agardiner: that would be slick |
| 04:16:13 | brixen | we really need a general facility like that, well integrated and useful to automate rtcg too |
| 04:16:34 | agardiner | yeah... |
| 04:17:08 | brixen | I'm trying to read/find papers on how jvm implements this. I suppose I should just start reading jvm source :/ |
| 04:17:52 | agardiner | hehe... papers are generally a whole lot more concise if you can find them |
| 04:18:03 | brixen | totally |
| 04:18:21 | agardiner | btw, interesting read re the context threading paper |
| 04:18:30 | brixen | oh yeah, need to finish that |
| 04:19:17 | agardiner | looks like most of the payoff comes from straight line execution, which would be really simple to implement |
| 04:19:20 | brixen | I'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:34 | elight enters the room. | |
| 04:20:24 | agardiner | wow! i think i'd need to study before a lunch with someone like that :-) |
| 04:20:48 | brixen | heh! that's exactly what I said to the guy who offered, he said, "nonsense, just talk to him" |
| 04:20:53 | agardiner | i imagine things could get pretty deep... |
| 04:21:54 | agardiner | its funny, when you don't know how stuff works, it can look incredibly daunting |
| 04:22:15 | agardiner | but sometimes it isn't rocket science after all |
| 04:22:19 | brixen | so true |
| 04:22:32 | agardiner | (not sure if *this* is one of those times though) :-D |
| 04:22:38 | macournoyer leaves the room. | |
| 04:23:36 | agardiner | i remember way back when i was at uni doing a computer architecture course... |
| 04:24:05 | agardiner | wiring up a (basic) cpu out of individual nand/or gates |
| 04:24:23 | rubuildius_ppc | Wilson Bilkovich: 9b249662e; 1715 files, 5788 examples, 19680 expectations, 0 failures, 14 errors; http://pastie.caboo.se/paste/158603 |
| 04:24:49 | agardiner | it was incredibly frustrating trying to make sure you didn't get short circuits and whatever |
| 04:25:27 | agardiner | but when you actually got the thing to work, it was luck... damn! this is so neat |
| 04:25:39 | brixen | heh, sounds fun |
| 04:26:00 | agardiner | you can do so much from such simple building blocks |
| 04:26:10 | agardiner | fun, i don't know |
| 04:26:18 | brixen | all I did in my comp arch class was write some assembly to query stuff in the CPU |
| 04:26:23 | agardiner | i imagine they do it on some sort of simulator these days |
| 04:26:33 | agardiner | would sure beat futzing around with those damn wires |
| 04:26:35 | rubuildius | Wilson Bilkovich: 9b249662e; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; http://rafb.net/p/ZF2PCv66.html |
| 04:27:09 | crafterm leaves the room. | |
| 04:27:39 | brixen | good lord, there's regexp and then there's "use something else" |
| 04:28:02 | brixen | I wonder how mri does inspecting symbols |
| 04:28:22 | crafterm enters the room. | |
| 04:30:12 | obiejuan enters the room. | |
| 04:30:39 | dysinger leaves the room. | |
| 04:32:37 | obiejuan leaves the room. | |
| 04:32:39 | brixen | heh, it uses rb_symname_p, defined in parser.y and uses a switch with goto's |
| 04:32:40 | brixen | fun |
| 04:41:48 | mernen leaves the room. | |
| 04:42:22 | elight leaves the room. | |
| 04:43:33 | elight enters the room. | |
| 04:43:33 | elight leaves the room. | |
| 04:45:09 | elight enters the room. | |
| 04:59:50 | ttmrichter enters the room. | |
| 05:00:41 | lstoll enters the room. | |
| 05:02:57 | crafterm | agardiner: mate, coming to the melbourne user group meeting tonight? |
| 05:03:14 | rubuildius_ppc leaves the room. | |
| 05:03:36 | agardiner | ahh... forgot it was on today |
| 05:03:52 | agardiner | i can't make it tonight, i'm afraid |
| 05:04:17 | crafterm | boo :) |
| 05:04:23 | crafterm | oh well, next time is also cool |
| 05:04:41 | agardiner | yeah, i'll definitely try and make the next one |
| 05:04:49 | agardiner | last thurs each month, right? |
| 05:04:54 | crafterm | yep |
| 05:05:11 | agardiner | k, i'll make a note of it |
| 05:05:28 | crafterm | cool mate |
| 05:05:31 | crafterm | awesome |
| 05:05:40 | crafterm | we can do a sprint summary at the next one then |
| 05:06:00 | agardiner | should be neat |
| 05:06:11 | agardiner | how many melb folks are registered for the sprint? |
| 05:07:31 | _ADS enters the room. | |
| 05:08:23 | crafterm | not sure of the split actually mate, i think its more sydney folks though |
| 05:09:57 | agardiner | stands to reason, i guess |
| 05:11:18 | agardiner | ooh! might have made a breakthrough here on the profiler SIGSEGV |
| 05:12:05 | agardiner | seems eval might be implicated |
| 05:12:51 | rue | Hee, the melbourne shell? |
| 05:14:27 | agardiner | shit... maybe jumping to conclusions (again) |
| 05:14:56 | agardiner | thought it was significant that every time i found a corrupted context, the ruby backtrace showed eval |
| 05:15:17 | agardiner | but then i realised I was running shotgun with -e, so of course eval would be in the backtrace! |
| 05:15:43 | agardiner | duh! |
| 05:17:06 | ezmobius enters the room. | |
| 05:17:07 | squeegy leaves the room. | |
| 05:18:11 | rue | Hehee |
| 05:18:48 | rue | Also, is -e still iffy? It used to be a bit unreliable like irb |
| 05:19:08 | agardiner | yep... another premature conclusion bites the dust |
| 05:19:30 | agardiner | just reproduced the problem without using -e, and there's no eval in the bt :-( |
| 05:22:12 | agardiner | Hmm... don't know if its iffy, but I'll steer clear for now while looking at this |
| 05:35:32 | RyanTM leaves the room. | |
| 05:38:10 | agardiner | well, that's interesting |
| 05:38:39 | agardiner | sampled contexts are being corrupted because they are being reused |
| 05:39:18 | agardiner | despite the fact they are referenced |
| 05:40:08 | nicksieger leaves the room. | |
| 05:40:34 | nicksieger enters the room. | |
| 05:41:42 | femtowin enters the room. | |
| 05:43:41 | benburkert leaves the room. | |
| 05:45:57 | cout_ enters the room. | |
| 05:51:48 | _ADS | agardiner: have you seen any pattern in which contexts are being corrupted? |
| 05:52:02 | agardiner | not yet... |
| 05:52:18 | agardiner | but i've just determined that the contexts are being retired, even though they are referenced |
| 05:52:33 | agardiner | so, subsequently, they are available for reuse |
| 05:52:52 | agardiner | i think the retire logic is flawed, but i'm just trying to work out why |
| 05:53:20 | d2dchat leaves the room. | |
| 05:53:53 | _ADS | I noticed that _allocate_context does something different with the gc_zone if there are no locals... |
| 05:54:05 | _ADS | may be entirely unrelated, though |
| 05:54:50 | _ADS | actually, nevermind, I read that code wrong. |
| 05:56:26 | cout leaves the room. | |
| 05:59:20 | headius | hey, where does rubinius set up the methods table |
| 05:59:22 | headius | for a given type |
| 06:00:01 | sholden enters the room. | |
| 06:04:26 | cuppr leaves the room. | |
| 06:04:44 | drbrain | type? |
| 06:04:58 | twbray enters the room. | |
| 06:05:36 | sholden_ enters the room. | |
| 06:06:01 | brixen | headius: looks like kernel/core/module |
| 06:06:24 | brixen | zenspider: you back? |
| 06:07:13 | headius | ok |
| 06:08:23 | headius | thanks |
| 06:08:35 | brixen | sure |
| 06:08:55 | headius | bleh, all primitives |
| 06:09:24 | brixen | which ones? |
| 06:09:47 | ezmobius leaves the room. | |
| 06:10:45 | headius | method table |
| 06:11:57 | cuppr enters the room. | |
| 06:12:32 | brixen | kernel/core/method_table.rb isn't |
| 06:13:52 | headius | all the method-finding logic is though |
| 06:14:11 | headius | I wanted to see what hash settings method table uses |
| 06:14:16 | boyscout | 3 commits by Brian Ford |
| 06:14:17 | boyscout | * Additional Symbol#inspect specs. Another try at making them pass.; dee531b |
| 06:14:18 | boyscout | * Silence 'woot' echo on ubuntu from #system specs.; 3bfb705 |
| 06:14:19 | boyscout | * Tune start size of backing store for Array.; ede5974 |
| 06:15:36 | brixen | headius: ah, we're going to use LookupTable for all internal stuff soon, which will only have symbol keys |
| 06:15:49 | twbray_ enters the room. | |
| 06:16:26 | headius | I assume it still uses some sort of hashing logic though |
| 06:16:35 | brixen | yeah, it will likely use the same |
| 06:16:45 | headius | know where it's set up currently? |
| 06:16:52 | brixen | Hash? |
| 06:21:23 | brixen | headius: 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:44 | headius | more about the hash parameters |
| 06:22:04 | headius | initial size, etc |
| 06:23:17 | brixen | sure, min size is 16 |
| 06:23:26 | brixen | shotgun/lib/hash.c |
| 06:23:51 | brixen | and kernel/core/hash.rb |
| 06:23:55 | brixen | a lot of it is in ruby |
| 06:24:26 | sholden leaves the room. | |
| 06:24:45 | brixen | it redistributes when density exceeds 0.75 |
| 06:25:36 | brixen | one 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:42 | rubuildius | Brian Ford: dee531b18; 1715 files, 5787 examples, 19738 expectations, 0 failures, 0 errors; http://rafb.net/p/COPL5T27.html |
| 06:27:00 | headius | so it's just using default hash settings then? |
| 06:27:15 | twbray_ leaves the room. | |
| 06:27:48 | brixen | headius: yeah |
| 06:27:59 | headius | ok |
| 06:29:16 | brixen | by 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:36 | headius | yeah, ours is 12 right now |
| 06:30:45 | headius | method table that is |
| 06:30:48 | headius | hash is the same as MRI |
| 06:31:28 | zenspider | what'd I do? |
| 06:32:14 | brixen | 18:21 rubuildius >> Ryan Davis: 7fb76f2c4; 1715 files, 5787 examples, 19688 expectations, 0 failures, 2 errors; |
| 06:32:26 | jacen | fail! |
| 06:32:28 | twbray leaves the room. | |
| 06:33:03 | elight leaves the room. | |
| 06:33:08 | brixen | headius: ours has to be 2**n, what algorithm does MRI use? |
| 06:33:24 | headius | beats me |
| 06:33:31 | brixen | hehe |
| 06:33:32 | zenspider | huh... that's f'd up... I ran a full ci before checking in iirc |
| 06:33:44 | brixen | zenspider: I was indeed surprised |
| 06:34:01 | brixen | zenspider: using autotest? |
| 06:34:19 | zenspider | maybe I missed a step inbetween |
| 06:34:42 | zenspider | no, not autotest... I did an explicit rake && bin/mspec ci |
| 06:34:43 | brixen | it'll be nice when the buildbots report in <5 min |
| 06:35:11 | zenspider | we can set them up for incremental vs full, right? |
| 06:35:20 | brixen | I hope so |
| 06:35:52 | brixen | we should be able to get a report from a pull + build + ci in < 3 min |
| 06:36:02 | zenspider | I'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:06 | brixen | also, we need to have post-commit hook to ping the bot controller |
| 06:36:16 | agardiner | well, 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:36 | agardiner | the macro to retire a context is running even though the condition is clearly false |
| 06:36:40 | zenspider | GAH |
| 06:36:48 | zenspider | we have some REALLY slow specs |
| 06:36:59 | zenspider | they're hanging for 10ish secs |
| 06:37:11 | brixen | zenspider: yep, and I excluded the 30sec ones |
| 06:37:17 | brixen | ipaddr is one culprit |
| 06:37:18 | agardiner | the check is if(om_on_stack(om, ctx) && (ctx >= om->context_bottom)) |
| 06:37:22 | zenspider | 101.5 seconds for a full run? |
| 06:37:25 | zenspider | gah |
| 06:37:28 | zenspider | ick |
| 06:37:44 | zenspider | one of our new guys at nerd party started to bang on ipaddr |
| 06:37:51 | zenspider | and found some good bugs in it |
| 06:37:53 | agardiner | and ctx < om->context_bottom, but it is still executing the body of the if |
| 06:37:56 | zenspider | mostly in the specs tho |
| 06:38:09 | zenspider | my eyes glaze over when I do networky stuff that low |
| 06:38:55 | brixen | agardiner: what file are you in? and did you try with DEV=1? |
| 06:39:01 | zenspider | we need to be able to set a failure threshold for a spec at 1 second or something... |
| 06:39:08 | agardiner | this is in object_memory.h |
| 06:39:11 | brixen | agardiner: curious if we've got some dangerous ops perhaps? |
| 06:39:24 | agardiner | the macro is object_memory_retire_context |
| 06:39:55 | zenspider | brixen: what do you think about having raise_error take a block that lets you test further on the exception instance? |
| 06:40:00 | agardiner | line 102 |
| 06:40:19 | zenspider | proc { ... }.should raise_error(...) { |e| e.name.should == :blah } is what I'm thinking |
| 06:40:38 | agardiner | om_on_stack is true, but ctx >= om->context_bottom is false |
| 06:40:38 | zenspider | the begin/rescue/test/reraise thing is pretty lame |
| 06:41:09 | brixen | zenspider: I'm fine as long as it works with rsspec |
| 06:41:28 | zenspider | what is that? |
| 06:41:40 | brixen | rspec |
| 06:41:53 | _ADS | agardiner: where's the call to the macro? |
| 06:42:43 | agardiner | its used in a few places |
| 06:42:49 | _ADS | object_memory_retire_context is not really parenthesized well |
| 06:43:02 | agardiner | but typically, it will come from cpu_simple_return |
| 06:43:08 | zenspider | I dunno if rspec has that feature, but if it doesn't, I'll pitch it to david |
| 06:43:53 | crafterm leaves the room. | |
| 06:44:41 | agardiner | here's a line from my run where it failed: (ctx >= om->context_bottom) = (0xb7390a34 >= 0xb7390aac) = 0 |
| 06:44:53 | agardiner | and that is from *inside* the if check |
| 06:45:05 | agardiner | i.e. it should never have got to that line |
| 06:45:11 | benburkert enters the room. | |
| 06:45:29 | lstoll leaves the room. | |
| 06:46:18 | agardiner | bah, i have to run |
| 06:46:28 | agardiner | i'll look at this later |
| 06:46:35 | agardiner | bye! |
| 06:46:38 | agardiner leaves the room. | |
| 06:46:41 | brixen | zenspider: this is rspec's doc: http://rspec.info/rdoc/classes/Spec/Matchers.html#M000396 |
| 06:46:52 | brixen | zenspider: what does the spec look like that needs the block? |
| 06:47:12 | _ADS | that's odd |
| 06:47:40 | wycats_ enters the room. | |
| 06:47:47 | zenspider | brixen: sec... chatting w/ david |
| 06:47:48 | headius | only thing I'd say about that block form is that it gets a little long |
| 06:50:17 | headius | otherwise it would be pretty useful |
| 06:50:35 | wycats leaves the room. | |
| 06:50:41 | wifelette_ enters the room. | |
| 06:50:51 | wifelette leaves the room. | |
| 06:51:18 | brixen | well, 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:34 | brixen | headius: have you run the bm's I checked in under benchmark/rubinius/numerics? |
| 06:55:06 | headius | ahh, hadn't looked at them yet, no |
| 06:55:09 | headius | but I love a good benchmark! |
| 06:56:33 | headius | bm_add shows some awful bottleneck in bignum + float |
| 06:57:10 | headius | all subsecond times except 5-6s for bignum + float or vice versa |
| 06:57:13 | headius | yowsa! |
| 06:57:41 | headius | gotta be something wrong with the coersion there |
| 06:58:18 | Defiler | Time to blog that we beat JRuby on numerics.. Quickly, to the spin machine! |
| 06:58:29 | headius | heh, yeah, on that one case :) |
| 06:58:32 | headius | hurrah! |
| 06:59:20 | Defiler | "I think we can all agree that this shows some serious flaws in the JRuby performance testing methodology." |
| 06:59:24 | Defiler | :) |
| 06:59:54 | headius | brixen: thanks, these oughta be useful |
| 06:59:56 | brixen | yeah, we've got a couple coercion problems too |
| 07:00:09 | brixen | headius: sure |
| 07:00:28 | brixen | they're super micro, but at the same time, they should be as fast as possible |
| 07:01:24 | headius | yeah |
| 07:01:31 | brixen | our bignum + fixnum times for example are just unacceptably slow |
| 07:01:34 | headius | most look good...something's wrong with bignum though |
| 07:01:45 | brixen | but we kill MRI on most float ops |
| 07:04:32 | headius | you guys have almost all these as primitives, don't you |
| 07:04:49 | brixen | yeah, pretty much only way to do it |
| 07:05:11 | brixen | but I reworked them all recently so e.g. float coerces in the primitive for fixnum and bignum |
| 07:05:14 | headius | why's that |
| 07:05:28 | brixen | well, how would you do a float in Ruby without going to a primitive? |
| 07:05:29 | twbray enters the room. | |
| 07:06:07 | headius | I mean the coercion logic and whatnot |
| 07:06:14 | headius | you've moved all that out to C too |
| 07:06:24 | brixen | one layer of it, yes |
| 07:06:38 | brixen | my position is that Float, Fixnum, Bignum are primitive types |
| 07:06:43 | brixen | they'll never not be there |
| 07:07:06 | headius | what does squeak do? |
| 07:07:08 | brixen | but the logic works if you subclass Integer for instance and provide reasonable semantics |
| 07:07:18 | brixen | good question, dunno |
| 07:07:24 | brixen | I'm guessing primitives |
| 07:08:02 | brixen | so, e.g. float will coerce fixnum, bignum, but fail the primitive otherwise |
| 07:08:17 | brixen | then the logic in Numeric kicks in and goes the normal #coerce route |
| 07:08:51 | brixen | sort of dispatch, coerce, dispatch |
| 07:10:00 | brixen | if any of Fixnum, Float, Bignum weren't primitives, then I think the approach could be argued with |
| 07:10:08 | zenspider | brixen: 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:21 | brixen | but as it is, going back and forth to Ruby just to go to another primitive doesn't make sense |
| 07:11:02 | brixen | zenspider: k |
| 07:11:51 | brixen | zenspider: would you be able to look at #354? |
| 07:12:00 | headius | brixen: sure, I agree they should be primitives |
| 07:12:08 | headius | just trying to get a handle on how much code will end up in C |
| 07:12:25 | zenspider | brixen: the merb ticket? |
| 07:12:33 | brixen | zenspider: no, LH |
| 07:12:38 | brixen | er, instance_eval |
| 07:12:45 | brixen | http://rubinius.lighthouseapp.com/projects/5089/tickets/354-bug-eval-instance_eval-fails-to-correc tly-modify-toplevel_binding |
| 07:12:50 | zenspider | oh. I was dyslexic |
| 07:12:56 | zenspider | I typed 345 |
| 07:12:59 | brixen | heh |
| 07:13:46 | zenspider | I can try... you have a timeframe? |
| 07:14:02 | brixen | zenspider: not really, but I'm guessing it will help get rails going |
| 07:14:16 | brixen | since they use eval methods like they're going out of style :) |
| 07:14:32 | twbray_ enters the room. | |
| 07:14:46 | zenspider | yup |
| 07:15:03 | zenspider | we're gonna find every eval edge case through rails. :/ |
| 07:15:06 | brixen | headius: 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:38 | brixen | headius: 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:42 | zenspider | itches to finish porting ometa and cola |
| 07:15:53 | brixen | zenspider: porting?!! |
| 07:15:55 | brixen | do tell |
| 07:16:10 | headius | does garnet exist yet? |
| 07:16:15 | zenspider | I haven't gotten far... |
| 07:16:23 | zenspider | but I started to take a stab at ometa |
| 07:16:51 | zenspider | and their machine code generator in coke is gloriously small |
| 07:17:01 | brixen | headius: kinda, lib/compiler/garnet/ |
| 07:17:13 | headius | is it it being used for anything? |
| 07:17:19 | brixen | headius: not yet |
| 07:17:29 | aotearoa leaves the room. | |
| 07:19:05 | brixen | headius: do you know why the Klein project was abandoned? (according to wikipedia anyway) |
| 07:19:09 | sholden_ leaves the room. | |
| 07:19:20 | headius | I don't know the klein project...looking |
| 07:19:30 | brixen | vm for Self written in Self |
| 07:19:50 | headius | hmm |
| 07:20:02 | headius | oh, that |
| 07:20:03 | brixen | http://en.wikipedia.org/wiki/Self_programming_language |
| 07:20:45 | zenspider | brixen: ungar left sun because of funding / direction changes as I understand it... so the project just dried up |
| 07:20:51 | zenspider | that's all word of mouth tho |
| 07:20:57 | brixen | ahh ok |
| 07:20:57 | zenspider | I do loves me some ungar tho |
| 07:21:21 | zenspider | will never propose an OOPSLA talk for fear of the Ungar Question |
| 07:21:53 | zenspider | where are the specs for raise_error ? I see specs for RaiseErrorMatcher |
| 07:21:53 | headius | brixen: I think it was partially because folks left or moved off the project |
| 07:22:17 | headius | I know in the early stages they were having some problems getting it to perform well also |
| 07:23:11 | zenspider | such a freaky language... I wish I could think that way |
| 07:23:16 | ezmobius enters the room. | |
| 07:23:40 | headius | what's the ungar question |
| 07:24:17 | sfaxon enters the room. | |
| 07:24:29 | zenspider | headius: you'll have to go to oopsla to find out |
| 07:24:49 | headius | I knew you wouldn't tell me...just figured I'd ask |
| 07:24:49 | olabini leaves the room. | |
| 07:26:11 | imajes enters the room. | |
| 07:26:24 | zenspider | brixen: where do I hack this out? |
| 07:26:32 | zenspider | brixen: I don't see specs for raise_error |
| 07:26:43 | brixen | zenspider: if you can find a way to easily test mspec's raise_error without messing with rspecs, feel free to add them |
| 07:27:11 | brixen | I just spec the class, all the method does is instantiate an instance of that class |
| 07:27:32 | zenspider | brixen: what do you mean "messing with rspecs" ? |
| 07:28:11 | brixen | rspec provides #raise_error method resolving at the top level |
| 07:28:33 | brixen | if you require mspec's then it will replace rspec's |
| 07:28:41 | brixen | you have to run the mspec specs with rspec |
| 07:28:44 | twbray_ leaves the room. | |
| 07:30:08 | zenspider | ah... I see. why don't they test themselves? |
| 07:30:35 | zenspider | like this: http://rafb.net/p/PxE5hX10.html |
| 07:30:36 | brixen | it was easier to use rspec to spec |
| 07:30:38 | zenspider | |
| 07:30:45 | zenspider | reads pretty well imo |
| 07:31:19 | brixen | which #raise_error is that? rspec's or mspec's? |
| 07:31:30 | twbray leaves the room. | |
| 07:31:38 | zenspider | that's from rspec |
| 07:31:46 | zenspider | I have to poke at those too. :) |
| 07:32:03 | zenspider | he wouldn't swap me feature requests... he had one for autotest. :) |
| 07:34:34 | manveru | headius: you around? does jruby support ObjectSpace._id2ref ? |
| 07:34:45 | headius | you'll have to look at jruby source to find out |
| 07:34:57 | headius | :) |
| 07:35:22 | headius | yes, we do |
| 07:35:32 | manveru | ah, ok |
| 07:35:47 | headius | I don't particularly like it, but it's there |
| 07:35:55 | manveru | yeah... me neither :| |
| 07:36:17 | manveru | but we're having a quite specific problem with passing locals into a templating engine |
| 07:36:24 | headius | oh? |
| 07:36:38 | manveru | http://p.ramaze.net/668 is the solution ara suggested |
| 07:37:04 | headius | what's this for? |
| 07:37:38 | headius | I don't know what the performance of _id2ref is like |
| 07:37:39 | manveru | you basically can say that you want to render a template with local variables :foo => foo, :bar => bar |
| 07:38:31 | ahoward enters the room. | |
| 07:38:35 | headius | god I hope you're not going to run that method_missing every time |
| 07:38:40 | ahoward | howdy |
| 07:38:47 | headius | or rather, the logic above that hits it |
| 07:38:50 | ahoward | hey charlie |
| 07:39:15 | manveru | well, we're trying to get rid of method_missing :) |
| 07:39:21 | headius | locals is a list of names? |
| 07:39:25 | headius | :names |
| 07:39:33 | manveru | nods |
| 07:40:05 | headius | well, you know the code you run against the binding will always have to be eval'ed too then |
| 07:40:11 | headius | eval'ed code is slower |
| 07:40:21 | headius | parse/execute cycle and all |
| 07:40:32 | headius | and this won't work at all in 1.9, evals get their own scopes |
| 07:40:52 | ahoward | the scope is specified though? |
| 07:41:03 | headius | no, eval execute in a special scope under the binding |
| 07:41:06 | headius | not in the binding itself |
| 07:41:13 | ahoward | crappy |
| 07:41:42 | headius | all evals under a given binding share a growable scope in 1.8 and have separate scopes in 1.9 |
| 07:41:46 | headius | but non-eval scopes can't grow |
| 07:42:00 | ahoward | i haven't played with 1.9 much - can eval take a block + binding |
| 07:42:09 | ahoward | hrrrm |
| 07:42:14 | headius | no |
| 07:42:19 | manveru | yeah... eval with block would be so cool :) |
| 07:42:21 | headius | it can take a proc as a binding though |
| 07:42:33 | ahoward | so no way to inject real locals into a binding/lambda? |
| 07:42:44 | headius | nope |
| 07:42:45 | rue | ahoward: *wave and a general thank-you for lots of great software* |
| 07:43:17 | headius | well, no way without re-evaluating code all the time |
| 07:43:19 | ahoward | rue: thx. see my new page: http://codeforpeople.com/donate/ |
| 07:43:21 | ahoward | ;-) |
| 07:43:40 | manveru | so, what speaks against ivars again? |
| 07:43:57 | ahoward | you mean push/pop them? |
| 07:44:07 | ahoward | if defined? @var... |
| 07:44:24 | manveru | just defining them |
| 07:44:29 | ahoward | clobbers |
| 07:44:45 | jptix enters the room. | |
| 07:44:49 | ahoward | @_out_ = 42 |
| 07:45:11 | ahoward | it's easy to restore them to previous values - but i'd hardly call that 'locals' |
| 07:45:24 | zenspider | ara! |
| 07:45:38 | ahoward | zenspider: shit - is everyone here then? |
| 07:46:04 | rue | ahoward: All the cool kids hang out here |
| 07:46:18 | rue | They let me stay if I give them quarters for the pinball machine |
| 07:46:20 | zenspider | FOURTY TWO?!? |
| 07:46:23 | ahoward | rue: i guess so. i'm such an irc hack, ask manveru |
| 07:46:28 | ezmobius | waves |
| 07:46:31 | headius | attrs are pretty fast |
| 07:46:38 | ahoward | hey ez |
| 07:46:50 | headius | I'd be surprised if local var vs attr performance was a serious problem |
| 07:46:51 | lstoll enters the room. | |
| 07:47:08 | headius | it's a lot slower than locals, of course |
| 07:47:13 | zenspider | ezmobius: I need to poke you wrt merb compatibily |
| 07:47:19 | zenspider | gah I can't type today at all |
| 07:47:20 | ezmobius | kAworu: whats up? |
| 07:47:25 | headius | you have to consider MRI too, which implements eval scopes as a dictionary |
| 07:47:28 | ezmobius | woah auto complete gone wild |
| 07:47:31 | headius | so I don't think eval's locals will be all that fast anyway |
| 07:47:35 | ahoward | manveru: i have no idea what the history of locals is, why not just can it? |
| 07:47:37 | zenspider | haha |
| 07:47:52 | zenspider | ezmobius: where we at currently? anything I can do to help? |
| 07:47:58 | zenspider | ezmobius: see ticket 345 |
| 07:48:35 | ezmobius | cool, i had it sort of running on webrick |
| 07:48:45 | ezmobius | but rubinius was throwing some weird coersion errors |
| 07:48:53 | ezmobius | let me fire it up again and see where we are at |
| 07:49:13 | zenspider | throw any and all notes in that ticket pls |
| 07:49:19 | zenspider | I'm doing 50 things at once |
| 07:49:27 | ezmobius | cool |
| 07:49:30 | ezmobius | will do |
| 07:50:06 | ezmobius | whats the current status of using rubygems? |
| 07:50:08 | manveru | ahoward: uh, don't ask me... tmm1 and kashia did the work for locals |
| 07:50:25 | manveru | at least darcs says so |
| 07:50:41 | zenspider | ezmobius: tenuous? |
| 07:50:41 | ezmobius | yeah template locals are a pain in the ass |
| 07:50:41 | ahoward | manveru: oh. well i'm with you - forget it and use @locals[key] |
| 07:50:56 | wifelette_ leaves the room. | |
| 07:51:18 | ezmobius | i 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:18 | ahoward | ezmobius: i was all proud of this and manveru is deflating me: http://p.ramaze.net/668 |
| 07:51:41 | zenspider | ahoward: 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:54 | ahoward | ezmobius: in ramaze templates are instance_eval'd inside the controler, fast but dangerous for some things like method_missing |
| 07:52:31 | ahoward | zenspider: i reworked recently - http://codeforpeople.com/lib/ruby/tagz/tagz-1.0.0/lib/tagz.rb |
| 07:52:50 | ahoward | zenspider: it's ultra simple now - no idea on speed |
| 07:52:50 | ezmobius | sounds familiar ;) in merb all templates are compiled into methods in a module that is mixed into the controllers |
| 07:53:08 | zenspider | NICE |
| 07:53:22 | ahoward | zenspider: i cut by 2/3rds on the rework |
| 07:53:31 | zenspider | yay! |
| 07:53:37 | zenspider | I'll poke at it |
| 07:53:50 | TheVoice leaves the room. | |
| 07:53:57 | femtowin leaves the room. | |
| 07:54:19 | ahoward | zenspider: caching the tag_ methods *might* be a speed gain |
| 07:54:40 | ahoward | zenspider: i did that in xx, but it's dubious if you call something only once then .... |
| 07:54:42 | wycats_ leaves the room. | |
| 07:55:22 | zenspider | ahoward: I'll poke and see how it adds up... |
| 07:56:05 | headius | ahoward: if you only call once it probably won't help any |
| 07:56:19 | ahoward | manveru: 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:40 | manveru | ^^ |
| 07:56:40 | ahoward | headius: i'll trust you on that. i just try to make it read good, as you know. |
| 07:56:56 | twbray enters the room. | |
| 07:56:58 | headius | calling multiple times helps ruby some, but helps JRuby tremendously |
| 07:57:01 | manveru | likewise, i've never used that functionality... *pats his trusty instance vars* |
| 07:57:04 | headius | it will actually compile to bytecode |
| 07:57:22 | ahoward | manveru: okay - i'm all about deleting code. |
| 07:57:52 | ahoward | headius: i've been dying to use jruby for something real. case just hasn't come up. stuck in webland. |
| 07:57:53 | manveru | will consult with kashia when he comes around |
| 07:58:11 | ahoward | manveru: k. i'm passing out and have to meet a client at 7am. uggh. |
| 07:58:17 | headius | well, you could use it for webland :) |
| 07:58:41 | ahoward | headius: not if i keep breaking ramaze ;-) |
| 07:58:59 | manveru | ahoward: sleep well |
| 07:59:07 | ahoward | manveru: ciao. |
| 08:04:47 | VVSiz_ enters the room. | |
| 08:08:13 | hoopy leaves the room. | |
| 08:08:13 | Ingmar leaves the room. | |
| 08:08:13 | aasmith leaves the room. | |
| 08:08:13 | crayz__ leaves the room. | |
| 08:08:13 | raggi leaves the room. | |
| 08:08:13 | goodney leaves the room. | |
| 08:08:13 | tarcieri leaves the room. | |
| 08:08:13 | _goodney_ leaves the room. | |
| 08:08:13 | djwhitt leaves the room. | |
| 08:08:13 | manveru leaves the room. | |
| 08:08:13 | Fobax_ leaves the room. | |
| 08:08:13 | boyscout leaves the room. | |
| 08:08:13 | shingara leaves the room. | |
| 08:08:13 | rue leaves the room. | |
| 08:08:13 | cout_ leaves the room. | |
| 08:08:13 | geekounet leaves the room. | |
| 08:08:13 | rudebwoy leaves the room. | |
| 08:08:13 | dbussink leaves the room. | |
| 08:08:13 | fearoffish leaves the room. | |
| 08:08:13 | ko1_away leaves the room. | |
| 08:08:13 | comboy leaves the room. | |
| 08:08:13 | maharg leaves the room. | |
| 08:08:13 | VVSiz leaves the room. | |
| 08:08:38 | cout_ enters the room. | |
| 08:08:38 | geekounet enters the room. | |
| 08:08:38 | hoopy enters the room. | |
| 08:08:38 | raggi enters the room. | |
| 08:08:38 | Ingmar enters the room. | |
| 08:08:38 | aasmith enters the room. | |
| 08:08:38 | djwhitt enters the room. | |
| 08:08:38 | rudebwoy enters the room. | |
| 08:08:38 | crayz__ enters the room. | |
| 08:08:38 | dbussink enters the room. | |
| 08:08:38 | goodney enters the room. | |
| 08:08:38 | fearoffish enters the room. | |
| 08:08:38 | tarcieri enters the room. | |
| 08:08:38 | _goodney_ enters the room. | |
| 08:08:38 | manveru enters the room. | |
| 08:08:38 | Fobax_ enters the room. | |
| 08:08:38 | boyscout enters the room. | |
| 08:08:38 | shingara enters the room. | |
| 08:08:38 | ko1_away enters the room. | |
| 08:08:38 | comboy enters the room. | |
| 08:08:38 | rue enters the room. | |
| 08:08:38 | maharg enters the room. | |
| 08:10:36 | geekounet leaves the room. | |
| 08:11:04 | geekounet enters the room. | |
| 08:14:13 | ezmobius | hmm @@class variables are not available to singleton classes in rbx and they are in mri http://pastie.caboo.se/158642 |
| 08:14:24 | thehcdreamer enters the room. | |
| 08:16:50 | wycats enters the room. | |
| 08:17:39 | imajes leaves the room. | |
| 08:18:16 | rue | Someone made the decision to implement cvars over class ivars so those are patched kind of case-by-case to match MatzRuby |
| 08:18:20 | rue | eyes brixen |
| 08:19:06 | ezmobius | yeah this case rails uses a lot. cattr_accessor |
| 08:21:07 | brixen | rue: what did I do? |
| 08:21:14 | tarcieri | weird, class variables aren't available in singleton scope in rbx? |
| 08:22:24 | ezmobius | not yet looks like, does direct_superclass skip over metaclasses? |
| 08:22:57 | rue | brixen: I blame you for letting mae talk yourself into the cvar == civar scheme :P |
| 08:23:14 | tarcieri | Works fo me |
| 08:23:22 | tarcieri | checks tha pastie |
| 08:23:46 | tarcieri | Aah |
| 08:23:57 | tarcieri | Metaclass issues |
| 08:23:57 | ezmobius | they work if you set them in the meta class |
| 08:24:00 | tarcieri | was confused |
| 08:24:24 | crossblaim enters the room. | |
| 08:24:26 | ezmobius | seems like it walks the direct_superclass looking for cvars in the class_variables_table. i bet direct_superclass skips the metaclass |
| 08:24:27 | tarcieri | Yeah uhhh |
| 08:24:31 | tarcieri | That's almost a bad thing |
| 08:24:52 | ezmobius | it may be bad but rails uses it heavily |
| 08:25:39 | tarcieri | Heh |
| 08:25:54 | tarcieri | doesn't know how to respond to "Yeah it's bad... BUT RAILS!" |
| 08:26:04 | rue | Om. |
| 08:26:20 | rue | Or mu, depending on your school. |
| 08:26:34 | tarcieri | prefers Haaaaaaaam |
| 08:26:59 | tarcieri | http://www.youtube.com/watch?v=MzOpjBOzMqA |
| 08:27:37 | wifelette enters the room. | |
| 08:27:37 | rue | Hm, one of them thar vi-day-uhs? I cannot watch those |
| 08:28:12 | tarcieri | yes, precious content, locked in propriteary application/x-shockwave-flash |
| 08:28:18 | manveru | man, for a second i thought it was a video about vi... |
| 08:28:34 | manveru | then i would even have openend it :P |
| 08:30:03 | rue | Well, my understanding of the issue is that Vi cannot be captured on videotape |
| 08:30:15 | rue | Due to its magical properties |
| 08:30:55 | tarcieri | you can vi tha intarwebs |
| 08:30:57 | tarcieri | with vimperator |
| 08:31:44 | zenspider | tarcieri: gah... I actually remember that. :o |
| 08:32:09 | tarcieri | Pickle Surprise? |
| 08:32:22 | rue | I need to figure out how to map vimperator to dvorak |
| 08:32:43 | tarcieri | heh |
| 08:32:49 | tarcieri | programmer's dvorak? |
| 08:34:02 | rue | Nuh, just regular except a few changes--I use jkl; for <^v> |
| 08:34:04 | zenspider | just dvorak |
| 08:34:31 | zenspider | I thought it was hjkl? |
| 08:34:40 | zenspider | you shifted it over one? |
| 08:34:43 | tarcieri | you know |
| 08:34:46 | tarcieri | things like vi |
| 08:34:58 | rue | zenspider: Yeah |
| 08:35:01 | tarcieri | and ^c and ^d and ^z and so forth |
| 08:35:10 | tarcieri | those are why I don't use dvorak |
| 08:35:13 | tarcieri | that and braces |
| 08:35:43 | rue | I dunno, those mostly work OK but I always use opposite hand for Shift and Ctrl |
| 08:35:59 | rue | So ^C is <LCtrl-i> here |
| 08:36:00 | zenspider | tarcieri: ? what does that have to do with it? |
| 08:36:08 | zenspider | ^c? |
| 08:36:13 | tarcieri | one handed ^c |
| 08:36:20 | tarcieri | I guess you could use your right hand |
| 08:36:21 | zenspider | it types just as well in dvorak |
| 08:36:22 | tarcieri | but uhh |
| 08:36:23 | rue | Ew, two-handed always |
| 08:36:25 | tarcieri | I don't go for that |
| 08:36:33 | rue | No finger gymnastics :) |
| 08:36:36 | zenspider | tarcieri: what are you doing with your other hand when your coding?!? |
| 08:36:41 | rue | Haha |
| 08:36:42 | zenspider | perv |
| 08:36:51 | tarcieri | You damn well better know what |
| 08:37:06 | zenspider | no, apparently I don't... |
| 08:37:11 | brixen | ezmobius: looks like a simple fix, you don't have a spec by chance do you? |
| 08:37:12 | rue | <Esc> is the only normal problem, lots of people map it to <CapsLock>, I map it to jj (or hh really) |
| 08:37:22 | zenspider | I'm a good programmer... both hands firmly on the keyboard at all times |
| 08:37:28 | ezmobius | brixen: i just have that pastie, i can write up a little spec |
| 08:37:45 | ezmobius | brixen: where shoudl the spec go? |
| 08:37:51 | zenspider | brixen: nobody in #rspec is awake... maybe you can help me grok something? |
| 08:37:52 | brixen | ezmobius: that's ok, I can do it |
| 08:38:04 | brixen | zenspider: I can try, I'm hardly awake either :P |
| 08:38:06 | rue | #rspec is kinda like #ror |
| 08:38:29 | zenspider | rue: good to know. :) |
| 08:39:22 | zenspider | brixen: 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:24 | ezmobius | brixen: thx |
| 08:39:40 | zenspider | why 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:50 | zenspider | is there a way for matched? to know that it is in the negative case? |
| 08:39:59 | zenspider | this q might not map to mspec fully... no clue |
| 08:40:05 | zenspider | I'm working on rspec first |
| 08:40:37 | rue | Hm, wait, this is not #should and not #should_not? |
| 08:40:58 | zenspider | rue: you lost me |
| 08:41:22 | brixen | zenspider: I'm not much help in rspec internals, I try hard not to go there |
| 08:41:24 | brixen | sorry :/ |
| 08:41:49 | zenspider | in the case of: proc {}.should_not raise_error(x, y) where it IS raised and DOES match |
| 08:42:00 | zenspider | brixen: wouldn't the basic structure be the same in this case? |
| 08:42:23 | brixen | well, in mspec it's in mspec/expectations/should.rb |
| 08:42:32 | brixen | should_not just inverts the test that should does |
| 08:42:39 | zenspider | proc {}.should raise_error... raise_error creates the matcher thingy. should calls the proc and invokes the matcher |
| 08:43:00 | zenspider | but ... does the matcher know the context of the should/should not? |
| 08:43:04 | zenspider | or can it? |
| 08:44:10 | brixen | in rspec? |
| 08:44:10 | rue | The flow is backwards |
| 08:44:24 | zenspider | in either |
| 08:44:44 | rue | You can parse #caller ;) |
| 08:45:02 | zenspider | rue: yeah... I was hoping to avoid that. :) |
| 08:45:16 | brixen | in mspec, should_not does this: if matcher.matches?(self) |
| 08:45:28 | brixen | should does: unless matcher.matches?(self) |
| 08:45:36 | jptix_ enters the room. | |
| 08:45:41 | rue | Actually, 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:42 | brixen | so, matcher doesn't know which |
| 08:45:47 | brixen | I guess that's what you're asking? |
| 08:45:56 | zenspider | yup |
| 08:46:02 | zenspider | caller it is. :( |
| 08:46:08 | rue | should_raise(blah) { foo } is so much better |
| 08:46:37 | brixen | zenspider: I'm still missing the use case on this addition, so it's hard for me to understand |
| 08:46:45 | rue | seconds |
| 08:46:51 | zenspider | rue: I think should_raise and proc {}.should raise_error are both fine and descriptive |
| 08:46:54 | rue | What are the exact semantics? |
| 08:47:14 | zenspider | I find it completely RETARDED to ever use assert_not_raised and should_not raise_error -- ever |
| 08:47:35 | brixen | yeah, should_not raise_error seems weird |
| 08:47:43 | rue | Well, true.. unless there is a bug you are speccing it is superfluous |
| 08:47:44 | brixen | just do it, you fail if it raises an error |
| 08:48:01 | manveru | :) |
| 08:48:07 | zenspider | brixen: exactly |
| 08:48:09 | brixen | are we using should_not raise_error? |
| 08:48:20 | zenspider | no clue |
| 08:48:25 | rue | But what does the block do if we set aside the retardedness? |
| 08:48:38 | brixen | ack says yes |
| 08:48:50 | zenspider | the block gets called passing in the exception matched |
| 08:49:48 | rue | And performs further tests? |
| 08:49:48 | zenspider | compare: http://rafb.net/p/BGpq4C54.html |
| 08:50:23 | zenspider | I've seen specs like the latter and wanted to punch something |
| 08:51:03 | rue | OK, sure--how is it different for #should_not? |
| 08:51:08 | brixen | looks like all our should_not r |