Show enters and exits. Hide enters and exits.
| 00:00:05 | schleyfox enters the room. | |
| 00:01:10 | tgern leaves the room. | |
| 00:01:20 | Rich_Morin | If I define foo as a method, then say "foo = 42", the local variable will then be used in (say) "puts foo". Is there a way to undefine the local variable so that the method will be looked for? |
| 00:01:20 | rubuildius_ppc | "foo = 42", the local variable will |
| 00:01:21 | rubuildius_amd64 | "foo = 42", the local variable will |
| 00:01:53 | agardiner | hehe... thanks rubuildius |
| 00:01:57 | agardiner | :-) |
| 00:02:30 | schleyfox | wait, what the hell just happened? |
| 00:02:39 | agardiner | well, you can do self.foo... |
| 00:03:04 | ezmobius | puts foo() |
| 00:03:10 | agardiner | say "rubuilidius repeats what follows 'say'" |
| 00:03:10 | rubuildius_amd64 | "rubuilidius repeats what follows 'say'" |
| 00:03:10 | rubuildius_ppc | "rubuilidius repeats what follows 'say'" |
| 00:03:34 | Rich_Morin | Isn't that special? |
| 00:03:36 | ezmobius | the local variable being prefered over method call is a parse time desicion not a runtime one |
| 00:04:32 | Rich_Morin | ezmobius: I don't think so. At least, in irb I can use a method, then redefine it as a local and use it again. |
| 00:04:42 | dysinger leaves the room. | |
| 00:04:52 | ezmobius | irb != normal ruby |
| 00:04:53 | schleyfox | well I say! isn't that something |
| 00:04:58 | agardiner | irb has it's own quirks |
| 00:05:13 | agardiner | don't trust it for things like this |
| 00:07:46 | zimbatm leaves the room. | |
| 00:11:49 | qwert666_ leaves the room. | |
| 00:12:15 | rue | agardiner: Hey, did you catch my wording change to make_rest[_fp]? Does that make sense? |
| 00:12:34 | agardiner | lemme take a look... |
| 00:13:44 | Rich_Morin | http://pastie.caboo.se/176237 indicates that there are runtime redefinitions going on wrt locals and methods. |
| 00:14:14 | agardiner | ah... i see where you are coming from, but i think both definitions are a little off |
| 00:14:42 | agardiner | it is the number of args mapping to splat, so it is really defined -1 or required + optional |
| 00:16:40 | hassox enters the room. | |
| 00:19:24 | rue | agardiner: I think the cpu.args vs. cpu.argcount is causing a bit of the confusion too |
| 00:20:24 | rue | So far as I could follow, args (and eventually argcount) is the total number of arguments that is being passed from the caller |
| 00:21:19 | rue | By the sound of it, evan is rewriting that part which should be helpful |
| 00:29:17 | agardiner | yeah, i wouldn't lost too much sleep over it :-) |
| 00:31:14 | tizianobis__ leaves the room. | |
| 00:32:28 | fbuilesv leaves the room. | |
| 00:36:21 | fbuilesv enters the room. | |
| 00:51:28 | TheVoice enters the room. | |
| 00:59:00 | headius enters the room. | |
| 00:59:44 | wycats leaves the room. | |
| 01:02:39 | rue | agardiner: Fairly interesting take: http://wolfgangmeyer.blogspot.com/2008/04/debuggers-are-needlessly-tedious-to-use.html |
| 01:03:20 | rue | The image-based approach is still better, I suppose, but that type of integration is nice in some cases |
| 01:03:27 | Rich_Morin | Still hoping for an answer to whether a local variable can be "gotten out of the way" of a method (undefined?), so that the method will be used instead. See http://pastie.caboo.se/176237 |
| 01:04:09 | Rich_Morin | That is, once Ruby has decided that something is a local, can it be told to forget that... |
| 01:04:24 | rue | Ruby semantics are that local variables override methods |
| 01:04:42 | agardiner | no, once Ruby decides something is a local, it is a local for that scope |
| 01:05:00 | rue | The 1.9 block variables do not shadow, but I am not certain it would be useful in this case |
| 01:05:07 | headius | howdy howdy howdy |
| 01:05:09 | agardiner | you need to disambiguate if you want to use the method instead |
| 01:05:29 | rue | As a convention, you could require `self.meth` in some cases |
| 01:05:49 | Rich_Morin | Actually, I think disambiguation is generally a good policy. I was just trying to hammer down the details. |
| 01:06:09 | Rich_Morin | Well, foo() is also pretty explicit. |
| 01:06:44 | Rich_Morin | And, in fact, "foo bar" says that foo is a method, but leaves bar ambiguous. |
| 01:08:33 | ezmobius | see this for even more fun |
| 01:08:34 | ezmobius | http://pastie.caboo.se/176256 |
| 01:08:54 | lstoll_ leaves the room. | |
| 01:09:29 | agardiner | rue: interesting post... i like the idea of displaying arg values to a function you are about to step into |
| 01:10:03 | crafterm enters the room. | |
| 01:10:17 | agardiner | but some of what is in that post looks downright dangerous! |
| 01:11:26 | crafterm | morning all! |
| 01:11:30 | agardiner | unless i've misread the examples...? |
| 01:11:36 | agardiner | morning crafterm |
| 01:11:47 | crafterm | hi agardiner, hows it going mate |
| 01:11:57 | agardiner | not bad, not bad |
| 01:12:08 | agardiner | how 'bout yourself? |
| 01:12:25 | crafterm | all good mate, busy weekend, but getting there |
| 01:12:26 | Rich_Morin | ezmobius: That gives me nil - is that because Ruby sees foo as a local, but didn't define it? |
| 01:12:34 | ezmobius | yup |
| 01:12:53 | ezmobius | ruby decides at parse time that foo is a local because it sees foo = |
| 01:13:08 | ezmobius | even though foo = is never excecuted because of if false |
| 01:13:13 | rue | Morning, crafterm |
| 01:13:25 | chris2 leaves the room. | |
| 01:13:32 | rue | agardiner: Yeah, it is a good take. Obviously requires quite a bit of support |
| 01:13:50 | crafterm | hi rue mate |
| 01:14:46 | jtoy enters the room. | |
| 01:16:28 | agardiner | might have a play with this... i don't think it would be too hard to show the value of args just before a method call |
| 01:17:01 | fbuilesv_ enters the room. | |
| 01:18:19 | rue | I would not imagine so |
| 01:18:22 | headius | ezmobius: it has to make that determination at some point |
| 01:18:36 | headius | I'd rather it happen at parse time than every single time a vcall fires |
| 01:19:24 | ezmobius | agreed, but it is a caveat that people shoudl understand |
| 01:20:29 | ezmobius | headius: congrats on getting 1.1 final out |
| 01:20:30 | headius | sure |
| 01:20:37 | headius | so Rich_Morin: the answer is no |
| 01:20:48 | headius | if that wasn't clear already |
| 01:21:27 | headius | ezmobius: thanks...really a formality of course...people have been running RCs for quite a while, and I'm back on performance work again |
| 01:21:31 | KirinDav enters the room. | |
| 01:21:43 | ezmobius | it sees foo as a local and assigns nil to it, but never executes to assign 'bar' to it |
| 01:22:29 | Rich_Morin | OK, thanks all - gotta go. |
| 01:22:43 | headius | locals just start out as nil |
| 01:23:12 | headius | impl detail though I suppose |
| 01:25:17 | fbuilesv__ enters the room. | |
| 01:25:17 | fbuilesv_ leaves the room. | |
| 01:25:53 | lopex leaves the room. | |
| 01:27:38 | rue | Damnit, I got pickle juice on my watermelon |
| 01:27:52 | rue | Today has not been fortuitous |
| 01:34:38 | fbuilesv leaves the room. | |
| 01:35:41 | jlindley enters the room. | |
| 01:36:36 | jlindley leaves the room. | |
| 01:38:15 | macournoyer leaves the room. | |
| 01:38:41 | binary42 leaves the room. | |
| 01:38:43 | binary42_ enters the room. | |
| 01:39:30 | jtoy leaves the room. | |
| 01:41:22 | jlindley enters the room. | |
| 01:43:15 | headius leaves the room. | |
| 01:48:53 | seydar enters the room. | |
| 01:49:27 | wycats enters the room. | |
| 01:50:05 | seydar | is there an actual AST behind the parser? |
| 01:50:24 | seydar | or is that what the Node class is for? |
| 01:51:29 | agardiner | If you are talking about the compiler, the Node classes are the nodes in the AST |
| 01:52:02 | seydar | schwizzle |
| 01:52:05 | agardiner | If you are talking about grammar.y, nodes are used to build a kind of AST, but we get a sexp from that |
| 01:52:43 | seydar | so the compiler uses sexps to generate the bytecode |
| 01:52:52 | agardiner | yeah |
| 01:52:59 | seydar | k |
| 01:53:09 | agardiner | the compiler takes the sexp, converts it to an AST, and then converts the AST to bytecode |
| 01:53:46 | seydar | is there a more visual example of the AST? |
| 01:54:17 | agardiner | not that I'm aware of... but you can sort of imagine the AST as being sexp symbols converted to node objects |
| 01:54:36 | agardiner | each of which is of a particular class representing the type of sexp node |
| 01:54:43 | seydar | hmm |
| 01:54:55 | agardiner | (this is a slight simplification, since there is some normalisation that takes place) |
| 01:55:10 | seydar | and each node has "parameters", which it uses to make the bytecode |
| 01:55:30 | agardiner | yep, each node can have state |
| 01:55:41 | agardiner | depends on the type of node |
| 01:55:43 | seydar | my life just went +1 |
| 01:55:57 | seydar | and rubinius was already at a +1 state, but i just realized it now |
| 01:55:59 | agardiner | level up! |
| 01:56:08 | agardiner | :-) |
| 01:56:16 | seydar | so if rubinius is at a, say, +5 for me |
| 01:56:33 | seydar | then i need to get evan 's opinion on what + it is for him |
| 01:56:43 | seydar | and there will be that many more things for me to discover |
| 01:57:04 | agardiner | hehe... it might be like the paul graham story about blah... |
| 01:57:23 | seydar | that made no sense, but probably because i'm so damn young |
| 01:57:37 | agardiner | we mere mortals may not fully appreciate what evan's + is! :-) |
| 01:57:49 | agardiner | hang on, i'll find a link for ya |
| 01:57:51 | seydar | evan: whats ur + |
| 01:58:10 | seydar | agardiner: kthx |
| 01:58:30 | rue | The compiler intro has the AST structure in it |
| 01:59:05 | seydar | whoa, then i missed it when i read it |
| 02:00:11 | agardiner | seydar: read the section titles the Blub Paradox here: http://paulgraham.com/avg.html |
| 02:00:31 | agardiner | er, titled... it's about half way through |
| 02:01:01 | seydar | rue: can i get a link to the comiler article? |
| 02:01:05 | seydar | pretty please? |
| 02:06:35 | seydar | wait |
| 02:06:38 | seydar | i have it |
| 02:06:39 | seydar | nevermind |
| 02:07:20 | seydar | http://rubini.us/doc/compiler_intro.txt, for the worried |
| 02:15:59 | jtoy enters the room. | |
| 02:20:39 | EugZol leaves the room. | |
| 02:23:59 | seydar | is there ever a specific state in the compilation process that i could stick my fingers in and see the AST? |
| 02:24:02 | mernen leaves the room. | |
| 02:24:11 | VVSiz_ enters the room. | |
| 02:26:56 | lstoll enters the room. | |
| 02:28:17 | kofno enters the room. | |
| 02:28:49 | lstoll leaves the room. | |
| 02:28:52 | rue | Any |
| 02:29:05 | lstoll enters the room. | |
| 02:29:24 | seydar | any? |
| 02:31:34 | seydar | rue: what does 'Any' mean? |
| 02:31:44 | agardiner | well, the AST is not consumed once it is formed, but it isn't fully produced either until the sexp has been fully parsed |
| 02:32:16 | agardiner | so if you hooked in at any point from just before the call to produce the bytecode, you could get the full AST |
| 02:33:02 | dewd enters the room. | |
| 02:34:12 | Yurik leaves the room. | |
| 02:34:14 | seydar | schweet |
| 02:34:39 | seydar | does the AST deal with self and scopes? |
| 02:36:24 | agardiner | there is a ClosedScope node that deals with scope |
| 02:36:57 | agardiner | self i'm not sure about... |
| 02:37:11 | agardiner | there's no node for that |
| 02:37:13 | seydar | so self may or may not be in the AST.... |
| 02:37:18 | seydar | that makes my life difficult |
| 02:37:36 | agardiner | well, self is tied in with scope, which is not fully resolved until a CM is loaded in shotgun |
| 02:38:04 | agardiner | but certain node types such as FCall implicitly deal with self |
| 02:38:07 | seydar | sdfgkljlk |
| 02:38:16 | seydar | this angereth me |
| 02:38:22 | agardiner | and this is reflected in the opcodes they generate, i.e. push_self |
| 02:38:48 | agardiner | you can't really expect self to be fully known at compile time in a dynamic language |
| 02:39:11 | headius enters the room. | |
| 02:39:49 | agardiner | so it depends on what you want to know about self from the AST? |
| 02:40:08 | agardiner | you can tell when references are made to self, but not exactly what self is |
| 02:40:28 | seydar | k |
| 02:40:39 | seydar | but in the event of something like 5.abs |
| 02:41:02 | agardiner | well, that's not a reference to self |
| 02:41:12 | seydar | is the self of 5 (which is 5) dictated? |
| 02:41:28 | seydar | in terms of compiling the situation |
| 02:41:54 | kofno leaves the room. | |
| 02:41:55 | seydar | 30.min.abs |
| 02:41:57 | seydar | get it? |
| 02:42:11 | lstoll_ enters the room. | |
| 02:42:17 | VVSiz leaves the room. | |
| 02:42:20 | agardiner | those aren't references to self |
| 02:42:22 | seydar | anyways. lets compile 5.abs |
| 02:42:38 | seydar | (30.min.abs was just a joke to 30 minutes abs) |
| 02:42:45 | agardiner | ah, right |
| 02:42:52 | seydar | actually, i don't even know how 5.abs is compiled |
| 02:43:30 | agardiner | well, fixnums and strings are special cases, because they are represented by special nodes in the sexp |
| 02:44:38 | seydar | ah |
| 02:44:49 | seydar | ok, so a = MyClass.new |
| 02:44:52 | seydar | a.class |
| 02:44:57 | seydar | how is that compiled? |
| 02:45:44 | mkescher_ enters the room. | |
| 02:46:02 | agardiner | try it out - just put it in a string in shotgun and call to_sexp on the string |
| 02:47:02 | agardiner | so, 5.abs resolves to a Call node where the args are [:lit, 5] and :abs |
| 02:47:34 | nkpart leaves the room. | |
| 02:47:34 | seydar | yea, but thats not the AST |
| 02:47:41 | seydar | i want to see the AST of it |
| 02:47:48 | agardiner | its pretty darn close though |
| 02:48:09 | agardiner | the AST for Call will hold two parameters, the receiver and the message to send |
| 02:48:27 | nkpart enters the room. | |
| 02:48:29 | agardiner | the receiver will be another AST node, which in the case of 5 will resolve to a Fixnum literal |
| 02:48:31 | seydar | ah |
| 02:49:42 | headius leaves the room. | |
| 02:51:01 | lstoll leaves the room. | |
| 02:52:49 | rue | I think agardiner explained it already but the receiver is self |
| 02:53:47 | ezmobius leaves the room. | |
| 02:55:09 | seydar | it sounds like it is _impossible_ to get ruby to be a compiled language |
| 02:55:26 | seydar | but with compiled parts in an interpreter? pretty likely |
| 02:55:31 | seydar | like what strongtalk did |
| 02:57:32 | agardiner | ruby is compiled already by rubinius, jruby, ruby 1.9... |
| 02:58:13 | agardiner | its compiled to bytecode |
| 02:58:29 | seydar | yea |
| 02:58:39 | seydar | but what if it were compiled to machine code? |
| 02:58:42 | agardiner | if you mean compiled directly to machine language, its not impossible, but not practical |
| 02:58:48 | seydar | using.... wait for it..... llvm |
| 02:58:59 | seydar | how bout now? now is it practical? |
| 02:59:18 | agardiner | i don't know enough about llvm to answer that |
| 02:59:29 | agardiner | but i guess my opinion is as follows: |
| 02:59:49 | agardiner | it's not practical to try to compile a dynamic language to a very low-level instruction set directly |
| 02:59:53 | agardiner | it is too dynamic |
| 03:00:21 | agardiner | and so you are better with an intermediate representation that can be jit-ed when you have runtime information about the actual types being used |
| 03:00:58 | agardiner | e.g. tell me how you could ever compile something like 'foo.bar' to machine language? |
| 03:01:13 | seydar | i think its too complicated for mortals |
| 03:01:15 | agardiner | you can't because you don't have any information about what foo is or what bar does |
| 03:01:20 | seydar | but i feel like its my calling |
| 03:01:28 | seydar | okok i got it |
| 03:01:38 | agardiner | and either can change at runtime, so whatever you think you know may be wrong |
| 03:01:54 | seydar | you have compiled everything you /could/ use |
| 03:02:08 | seydar | and then shotgun just puts those in order when needed |
| 03:03:54 | agardiner | well kinda... ruby is a late bound language, so sure, the definitions of foo and bar have presumably been encountered by the time we see foo.bar, otherwise you get a runtime exception |
| 03:05:25 | agardiner | ... unless method_missing or const_missing have been defined! :-D |
| 03:06:07 | jlindley leaves the room. | |
| 03:07:46 | agardiner | the way i see it, with a dynamic language like ruby, compiling to machine language can't remove the dynamicity; you are still forced to deal with that, and frankly, i'd rather deal with that at a higher level and then rely on jit |
| 03:07:55 | brixen | hmm, whatever else giles does, understanding the importance of a first rate debugger in a dynamic language is not one of them :P |
| 03:08:50 | agardiner | now if only we had a first rate debugger... :-D |
| 03:09:21 | agardiner | but yeah, i agree with you |
| 03:09:49 | rue | Everything can be compiled to machine code. |
| 03:10:25 | seydar | yea! rue feels the love |
| 03:10:37 | brixen | everything *is* compiled to machine code |
| 03:10:53 | brixen | show me something that runs on a processor that is not compiled to machine code |
| 03:11:05 | agardiner | 'can' and 'should' are two different things... i didn't say it couldn't be done, just that it wasn't practical |
| 03:11:18 | brixen | seydar: a suggestion: get your head around method dispatch in a dynamic language before trying to tackle a compiler |
| 03:11:37 | brixen | agardiner: yeah, I get your point, it makes a lot of sense |
| 03:11:52 | brixen | I'm trying to get seydar to think beyond his compiler fascination |
| 03:11:56 | seydar | i could... and should.... but its soooo much more fun to tackle everything at once |
| 03:12:09 | brixen | seydar: heh! that explains a lot |
| 03:12:28 | brixen | seydar: try this: def foo(a = eval("def foo() :b end")) :c end; foo; foo |
| 03:12:57 | seydar | Error: Programmer Error |
| 03:13:32 | brixen | seydar: actually, do the method calls on separate lines |
| 03:13:53 | seydar | i can't really see past the smiley face. colloquy translates them |
| 03:14:13 | brixen | hmm |
| 03:14:22 | brixen | I'm not including any smiley faces :P |
| 03:14:52 | brixen | perhaps you should use a *programmer's* irc client |
| 03:15:25 | seydar | its much easier to think about smileys on a higher level |
| 03:15:37 | brixen | heh |
| 03:16:04 | agardiner | there are no smiley faces... just 0's and 1's |
| 03:18:15 | rue | The new PPC ternary processor reserves 2 for multimedia extensions like smileys |
| 03:18:49 | agardiner | ooh! gotta get me one of those then... i'm so tired of typing 010111001101 |
| 03:19:13 | agardiner | so now i can just type 2? :-) |
| 03:19:22 | agardiner | ooh look, it worked! |
| 03:19:32 | rue | Well, it is also a 128-bit machine |
| 03:19:57 | agardiner | wow! that's a lot of smiley's! |
| 03:20:00 | rue | So you have 2**128 different smileys |
| 03:20:28 | seydar | :-)**128 different smileys... thats a lot |
| 03:20:34 | seydar | dammit it didn't work |
| 03:20:38 | seydar | nobody read that |
| 03:20:48 | seydar | :-) **128 different smileys... thats a lot |
| 03:21:51 | seydar | signal:noise = 1:Infinity |
| 03:22:37 | mernen enters the room. | |
| 03:23:11 | headius enters the room. | |
| 03:23:24 | seydar | so is there any hope or realization for getting ruby to be compiled to some extent more than it currently is? |
| 03:24:26 | brixen | yes, jit |
| 03:24:32 | agardiner | ahead of time? probably not much. just in time, absolutely!! |
| 03:24:52 | brixen | seydar: if you're interested, we need some machinery for tracing code execution and association timing |
| 03:24:56 | brixen | so we know what to jit |
| 03:25:18 | seydar | i dont know what those two things are, but i'm in |
| 03:25:19 | brixen | also, there's a bunch of compiler opts that could even be done at the bytecode level |
| 03:25:39 | brixen | performance is really simple, do less |
| 03:25:49 | brixen | there's a bunch of ways to do less |
| 03:25:49 | agardiner | actually, i think sendsites give us most of the info we need (especially once we have polymorphic inline caching) |
| 03:25:59 | seydar | cuz EY offered me an internship, and then pulled it back after they spoke to their lawyers, and i was thinking about writing something awesome that i could hold for ransom |
| 03:26:01 | brixen | compiling everything to machine code AOT is not the best way to do less |
| 03:26:45 | agardiner | it *is* one of the best ways to do more though! :-D |
| 03:26:55 | brixen | agardiner: indeed :) |
| 03:26:55 | seydar | how is gnu lightning being used right now? |
| 03:27:04 | agardiner | its not |
| 03:27:11 | agardiner | got replaced by libffi |
| 03:28:00 | seydar | whoooa |
| 03:28:08 | seydar | isn't gnu lightning jit, though? |
| 03:28:36 | agardiner | it can be used for that, sure |
| 03:28:53 | agardiner | but Rubinius does not currently do any jit |
| 03:29:04 | agardiner | and we weren't using lightning for that |
| 03:29:27 | agardiner | we were using it to implement FFI |
| 03:29:49 | seydar | oooh. |
| 03:30:04 | seydar | well then YEA!!!! lets get some jitting going on |
| 03:30:36 | agardiner | let's get it on... |
| 03:30:51 | agardiner | (is it barry white who sings that?) |
| 03:31:11 | MenTaLguY enters the room. | |
| 03:31:20 | agardiner | is guessing seydar doesn't know who barry white is though :-) |
| 03:31:44 | seydar | dude, the world didn't exist before 1992 |
| 03:31:51 | seydar | you all pretty much triple my age |
| 03:32:09 | agardiner | hehe, and i'm older than most... |
| 03:32:36 | agardiner | but even i don't remember the first time barry was big (as in a hit, not weight) |
| 03:33:58 | agardiner | ah, and it was marvin gaye, not barry white |
| 03:34:16 | MenTaLguY | I'm an old codger. |
| 03:34:31 | agardiner | http://www.youtube.com/watch?v=18TLHhhHZCA |
| 03:34:54 | seydar | http://www.youtube.com/watch?v=JpdFMNGKzOk |
| 03:35:11 | MenTaLguY | gay doesn't have white's sexy, sexy voice |
| 03:35:14 | MenTaLguY | er, gaye |
| 03:35:30 | MenTaLguY | (gee, freudian much?) |
| 03:35:53 | agardiner | yeah, i love barry too, but marvin's pretty cool |
| 03:36:00 | agardiner | :-D |
| 03:36:10 | agardiner | you tell me? |
| 03:39:03 | seydar leaves the room. | |
| 03:39:10 | wycats leaves the room. | |
| 03:42:03 | rue | MenTaLguY: Have to disagree with that, Gaye > White |
| 03:45:29 | headius_ enters the room. | |
| 03:46:02 | headius leaves the room. | |
| 03:47:42 | wdperson enters the room. | |
| 03:48:58 | nkpart leaves the room. | |
| 03:49:33 | nkpart enters the room. | |
| 03:49:35 | headius | damn this internet...it's the phone line, gets staticky once in a while |
| 03:49:35 | headius | repair order number two I guess |
| 03:50:41 | lstoll_ leaves the room. | |
| 03:50:41 | headius | so yeah, if you could do a JIT why couldn't you do an AOT too? |
| 03:53:51 | agardiner | we do have an AOT compiler - it compiles to Rubinius bytecode :-) |
| 03:53:58 | wdperson leaves the room. | |
| 03:54:32 | headius | then what will the JIT compile to :P |
| 03:54:39 | benburkert leaves the room. | |
| 03:55:06 | benburkert enters the room. | |
| 03:55:13 | crafterm leaves the room. | |
| 03:55:47 | KirinDav leaves the room. | |
| 03:56:54 | wycats enters the room. | |
| 03:58:10 | agardiner | jitcode? :-) |
| 04:01:44 | rue | It is a pointless argument |
| 04:02:10 | rue | As I already said and brixend amended, anything can and IS compiled to machine code. Otherwise it don't run |
| 04:02:35 | headius | argument/ |
| 04:02:37 | headius | ? |
| 04:04:01 | headius | I was just confused by agardiner saying JIT but not AOT |
| 04:05:08 | agardiner | headius: that surprises me... |
| 04:05:37 | agardiner | when jruby compiles code AOT, you compile to java bytecode right? not machine code... |
| 04:05:53 | agardiner | but the JVM JIT's to machine code |
| 04:06:27 | MenTaLguY | IOW, the Rubinius VM is treated analagously to the JVM |
| 04:06:35 | agardiner | yeah |
| 04:06:40 | headius | well, if there's a plan for rbx to JIT to native code, AOT should be just as possible |
| 04:06:54 | MenTaLguY | AOT to native, that is |
| 04:07:01 | headius | yes |
| 04:07:33 | MenTaLguY | IOW, rbx is unlike JRuby in that you guys have total control over the entire interpreter/compiler stack at once |
| 04:07:34 | KirinDav enters the room. | |
| 04:08:09 | dewd leaves the room. | |
| 04:08:09 | dgtized leaves the room. | |
| 04:08:09 | oweff leaves the room. | |
| 04:08:28 | MenTaLguY | that isn't an argument for whether rbx should directly support AOT to native, but it would be much easier for rbx to do than for JRuby to do |
| 04:08:31 | rue | headius: Argument, proposition, thesis |
| 04:08:40 | MenTaLguY | on the other hand, AOT to native discards a lot of dynamic optimization potential |
| 04:08:41 | rue | Not argument, confrontation, fight |
| 04:09:00 | dgtized enters the room. | |
| 04:09:16 | headius | jabberwocky, horsefeathers |
| 04:09:28 | brixen | headius: the genesis of this is, I believe, seydar's belief that compilation of Ruby to machine code can somehow magically dispense with the code that does method dispatch |
| 04:09:53 | brixen | he seems to believe that you can compile to machine code and voila performance |
| 04:11:37 | brixen | between those of us present, I don't think AOT being possible is in dispute |
| 04:11:43 | dewd enters the room. | |
| 04:11:46 | oweff enters the room. | |
| 04:11:56 | KirinDav leaves the room. | |
| 04:12:00 | MenTaLguY | the question is whether there is any advantage to AOT to native |
| 04:12:04 | MenTaLguY | there are well-known disadvantages |
| 04:13:55 | headius | sure, that's certainly true |
| 04:14:28 | headius | I wasn't disputing whether it would be beneficial or not...just that being able to JIT implies to me you could AOT as well |
| 04:14:36 | headius | to whatever format |
| 04:15:34 | agardiner | true enough, i suppose, but without the runtime type feedback, the code bloat would be enormous |
| 04:16:24 | headius | why? |
| 04:16:34 | MenTaLguY | I don't see why that would be the case |
| 04:16:59 | headius | JRuby AOT compiles to Java bytecode, which is static-typed for all call paths |
| 04:17:22 | headius | so we just compile to dynamic invocations rather than normal static ones...the same logic would work for rbx |
| 04:17:23 | agardiner | well, ok - it doesn't have to be, but it complicates the compilation |
| 04:17:47 | headius | a bit I guess, but the mechanisms for dynamic dispatching are already in place and written in C |
| 04:17:56 | agardiner | you either inline every possible path (code bloat), or "compile" the dispatch logic |
| 04:18:26 | agardiner | which is already compiled |
| 04:18:29 | agardiner | yeag |
| 04:18:57 | MenTaLguY | well, you don't want to inline everything, for many reasons |
| 04:19:03 | headius | yeah, nobody would ever do that |
| 04:19:05 | MenTaLguY | (among other things you destroy your icache) |
| 04:19:21 | headius | and you don't need to inline anything as part of AOT |
| 04:19:55 | headius | one thing AOT would eliminate is all cost of walking the rbx bytecodes and maintaining the operand stack |
| 04:20:05 | headius | probably would be hard to keep it stackless though |
| 04:20:41 | MenTaLguY | hm, not really |
| 04:20:50 | rue | Would make for some interesting jumps but should be doable |
| 04:21:52 | headius | hard-er |
| 04:21:54 | reima enters the room. | |
| 04:22:03 | headius | have to be constantly trampolining |
| 04:22:19 | headius | and still maintain a separate artificial stack cleanly |
| 04:22:44 | MenTaLguY | well, you could simply not use the C stack at all |
| 04:25:20 | headius | yes, I suppose that's one option :) |
| 04:29:23 | wycats leaves the room. | |
| 04:29:43 | wycats enters the room. | |
| 04:34:18 | Rich_Morin | A while back, someone suggested a way to use shotgun to see what opcodes get generated (IIRC). Unfortunately, the info scrolled into never never land and I failed to jot it down. Help? |
| 04:35:31 | agardiner | there are a number of ways |
| 04:36:18 | agardiner | 1) use the debugger and the decode command, e.g. decode Foo#bar |
| 04:36:55 | agardiner | 2) use the describe command, e.g. shotgun/rubinius describe <file> |
| 04:38:00 | agardiner | 3) use CompiledMethod#decode, e.g. Foo.instance_method(:bar).compiled_method.decode |
| 04:43:17 | headius leaves the room. | |
| 04:45:59 | mkescher_ leaves the room. | |
| 04:49:39 | mernen leaves the room. | |
| 04:50:32 | Rich_Morin | agardiner: Thanks! This time, I made notes.... |
| 04:50:42 | agardiner | np! :-) |
| 04:50:45 | MenTaLguY leaves the room. | |
| 04:52:00 | lstoll enters the room. | |
| 04:58:33 | tlockney leaves the room. | |
| 05:03:23 | ezmobius enters the room. | |
| 05:14:19 | jayWHY enters the room. | |
| 05:17:36 | crafterm enters the room. | |
| 05:19:42 | AndrewO leaves the room. | |
| 05:25:52 | ezmobius leaves the room. | |
| 05:33:07 | nicksieger leaves the room. | |
| 05:34:36 | xif leaves the room. | |
| 05:37:01 | RyanTM leaves the room. | |
| 05:44:05 | xif enters the room. | |
| 05:49:32 | KirinDav enters the room. | |
| 05:49:35 | AndrewO enters the room. | |
| 05:54:15 | tizianobis__ enters the room. | |
| 06:02:33 | jayWHY leaves the room. | |
| 06:14:30 | tizianobis__ enters the room. | |
| 06:14:44 | tizianobis leaves the room. | |
| 06:24:18 | AndrewO leaves the room. | |
| 06:24:23 | joachimm enters the room. | |
| 06:33:01 | tizianobis__ leaves the room. | |
| 06:33:59 | jacen_ leaves the room. | |
| 06:56:43 | Yurik enters the room. | |
| 06:57:17 | lstoll leaves the room. | |
| 06:57:26 | lstoll enters the room. | |
| 06:57:59 | lstoll leaves the room. | |
| 06:58:11 | lstoll enters the room. | |
| 07:12:45 | joachimm leaves the room. | |
| 07:36:04 | trythil leaves the room. | |
| 07:52:00 | nkpart leaves the room. | |
| 08:07:21 | rue | Morning |
| 08:08:00 | VVSiz | :) |
| 08:08:32 | Maledictus enters the room. | |
| 08:11:54 | cypher23 enters the room. | |
| 08:15:08 | zimbatm enters the room. | |
| 08:30:01 | agardiner leaves the room. | |
| 08:30:14 | thehcdreamer enters the room. | |
| 08:44:08 | zimbatm enters the room. | |
| 08:45:06 | crafterm leaves the room. | |
| 08:46:28 | lstoll leaves the room. | |
| 08:52:00 | KirinDav leaves the room. | |
| 08:54:31 | cypher23 leaves the room. | |
| 08:57:21 | Yurik leaves the room. | |
| 08:58:49 | mutle enters the room. | |
| 09:04:07 | Yurik enters the room. | |
| 09:11:00 | Skip enters the room. | |
| 09:14:18 | JimMc enters the room. | |
| 09:15:45 | JimMc leaves the room. | |
| 09:15:51 | JimMc enters the room. | |
| 09:29:45 | imajes_ enters the room. | |
| 09:31:17 | yaroslav enters the room. | |
| 09:32:00 | qwert666 enters the room. | |
| 09:32:57 | naeu enters the room. | |
| 09:34:45 | imajes_ leaves the room. | |
| 09:48:41 | sauspiel enters the room. | |
| 09:59:18 | sauspiel | hey, i just build rubinius from evan's github repos according to http://rubinius.lighthouseapp.com/projects/5089/getting-started |
| 09:59:41 | Arjen_ enters the room. | |
| 09:59:43 | sauspiel | now i can start irb, but how do i run the normal ruby command |
| 10:00:52 | sauspiel | or just rubinius filename.rb ? |
| 10:01:21 | BlackEdder enters the room. | |
| 10:07:55 | naeu | sauspiel: from the rubinius root directory just run shotgun/rubinius filename.rb |
| 10:07:56 | Skip leaves the room. | |
| 10:08:39 | sauspiel | ok thanks |
| 10:08:45 | Skip enters the room. | |
| 10:08:52 | sauspiel | do you guys run the specs from rubinius? |
| 10:09:01 | sauspiel | to see whats working and what is not? |
| 10:09:52 | naeu | yeah, if you want to see what's currently broken (compared to MRI) just run bin/mspec run spec/ruby/1.8 |
| 10:10:37 | sauspiel | i guess one has to... ;) |
| 10:11:34 | sauspiel | rubinius mk$ ./bin/mspec run spec/ruby/1.8/ |
| 10:11:34 | sauspiel | ./bin/../mspec/scripts/mspec.rb:134:in `stat': No such file or directory - |
| 10:12:44 | sauspiel | sorry, now it works, my fault again... |
| 10:14:23 | sauspiel | Bus violating: 0x5c05000 String#to_sym+49 in kernel/core/string.rb:1689 |
| 10:18:45 | lstoll enters the room. | |
| 10:19:50 | sauspiel | what about running rails, is there simple things i can get started with to contribute? |
| 10:20:05 | sauspiel | are the specs complete, yet? |
| 10:20:46 | dbussink | we need a lot more specs |
| 10:21:06 | dbussink | rails is not possible atm, but there are some fixes pending that would enable us to continue that effort |
| 10:21:22 | dbussink | and for running specs, i'd suggest using ./bin/mspec ci |
| 10:21:51 | dbussink | and only run certain parts of the whole spec directory |
| 10:21:56 | dbussink | makes it easier to pinpoint problems |
| 10:22:13 | sauspiel | ok, and how do you go about improving it? Do you load parts of rails seperatly? Like when i run rails in rubinius, it just throws an error on startup. How do i go from there to a small spec that tests the issue? |
| 10:22:37 | lstoll leaves the room. | |
| 10:22:40 | dbussink | that's manual work |
| 10:23:00 | dbussink | but i think rails is still to far out now, try something simpler |
| 10:23:30 | dbussink | there is a lot of stuff in stdlib/ that needs to be specced |
| 10:23:39 | dbussink | we also need more file / io / dir specs |
| 10:23:45 | dbussink | and implementation stuff there |
| 10:23:54 | sauspiel | ok, i'll take a look |
| 10:23:58 | dbussink | but io implementation is not the easiest part to start with |
| 10:24:49 | VVSiz | hi folks, anyone knows where rubygems maintainers hang out on IRC? :) |
| 10:28:07 | sauspiel | does rcov work to find out whats untestet? |
| 10:28:38 | dbussink | sauspiel: no, we don't support that yet |
| 10:30:29 | dbussink | VVSiz: afaik zenspider is one of them |
| 10:31:05 | VVSiz | oh, thanks. |
| 10:42:02 | ariekeren enters the room. | |
| 10:49:20 | yaroslav leaves the room. | |
| 10:51:07 | yaroslav enters the room. | |
| 10:51:27 | yaroslav leaves the room. | |
| 10:52:06 | yaroslav enters the room. | |
| 10:52:10 | chris2 enters the room. | |
| 10:56:08 | Maledictus | method_missing_cv what does the _cv stand for? |
| 11:00:47 | BlackEdder enters the room. | |
| 11:10:19 | BlackEdder leaves the room. | |
| 11:10:51 | BlackEdder enters the room. | |
| 11:12:42 | octopod enters the room. | |
| 11:36:17 | imajes leaves the room. | |
| 11:36:23 | imajes enters the room. | |
| 11:37:42 | dewd leaves the room. | |
| 11:54:49 | ariekeren leaves the room. | |
| 12:12:02 | wdperson enters the room. | |
| 12:14:35 | w1rele55 enters the room. | |
| 12:19:54 | jtoy leaves the room. | |
| 12:26:33 | thehcdreamer leaves the room. | |
| 12:30:07 | ctennis leaves the room. | |
| 12:32:15 | srbaker leaves the room. | |
| 12:32:18 | srbaker_ enters the room. | |
| 12:32:52 | srbaker_ leaves the room. | |
| 12:33:35 | srbaker enters the room. | |
| 12:38:28 | chris2 leaves the room. | |
| 12:46:36 | ctennis enters the room. | |
| 12:58:15 | thehcdreamer enters the room. | |
| 13:00:56 | Fullmoon enters the room. | |
| 13:04:45 | skaar enters the room. | |
| 13:11:49 | Fullmoon leaves the room. | |
| 13:27:39 | RyanTM enters the room. | |
| 13:34:44 | headius enters the room. | |
| 13:35:43 | headius | g'day |
| 13:38:01 | naeu | g'day pardner |
| 13:38:12 | naeu | how's the ranch? |
| 13:39:55 | jtoy enters the room. | |
| 13:40:06 | jtoy leaves the room. | |
| 13:44:20 | benburkert leaves the room. | |
| 13:45:42 | jlindley enters the room. | |
| 13:56:21 | yaroslav leaves the room. | |
| 13:57:53 | jacen_ enters the room. | |
| 14:01:04 | AndrewO enters the room. | |
| 14:05:06 | cremes leaves the room. | |
| 14:07:23 | Fullmoon enters the room. | |
| 14:11:14 | cremes enters the room. | |
| 14:28:38 | macournoyer enters the room. | |
| 14:29:28 | riffraff enters the room. | |
| 14:36:38 | ruivaldo enters the room. | |
| 14:42:10 | fbuilesv enters the room. | |
| 14:49:55 | webmat enters the room. | |
| 14:54:26 | AndrewO leaves the room. | |
| 14:57:18 | cypher23 enters the room. | |
| 15:00:16 | d2dchat enters the room. | |
| 15:01:54 | wmoxam enters the room. | |
| 15:03:00 | binary42_ leaves the room. | |
| 15:07:13 | sauspiel leaves the room. | |
| 15:08:59 | moofbong enters the room. | |
| 15:14:41 | qwert666_ enters the room. | |
| 15:20:50 | AndrewO enters the room. | |
| 15:29:52 | peeja enters the room. | |
| 15:30:57 | qwert666 leaves the room. | |
| 15:35:47 | binary42 enters the room. | |
| 15:36:21 | shame leaves the room. | |
| 15:42:27 | headius leaves the room. | |
| 15:48:33 | binary42_ enters the room. | |
| 16:03:06 | headius enters the room. | |
| 16:03:32 | trythil enters the room. | |
| 16:03:44 | anonuser enters the room. | |
| 16:04:11 | flowolf enters the room. | |
| 16:04:56 | binary42 leaves the room. | |
| 16:06:43 | headius_ enters the room. | |
| 16:06:43 | headius leaves the room. | |
| 16:07:13 | headius_ leaves the room. | |
| 16:07:20 | headius enters the room. | |
| 16:07:56 | joachimm enters the room. | |
| 16:08:33 | headius leaves the room. | |
| 16:08:37 | headius enters the room. | |
| 16:11:25 | NoKarma enters the room. | |
| 16:11:34 | NoKarma | heya all |
| 16:13:48 | fbuilesv | NoKarma: Hola |
| 16:13:58 | NoKarma | fbuilesv: Hey :) |
| 16:22:31 | headius | drbrain: hey, need to talk to you about http://rubyforge.org/tracker/index.php?func=detail&aid=16879&group_id=126&atid=575 |
| 16:23:21 | KirinDav enters the room. | |
| 16:29:33 | djwhitt | I wonder is that based on users reporting problems? |
| 16:30:07 | djwhitt | I've never had a problem with them conflicting |
| 16:30:17 | headius | I don't think so, because I'm getting reports from people updating to 1.1 and getting confused why there's a 'jgem' script |
| 16:30:19 | headius | yeah |
| 16:30:36 | djwhitt | I just use jruby -S gem |
| 16:30:45 | headius | if people are using JRuby they generally aren't mixing with regular ruby a whole lot...plus they can alias, -S, or manipulate PATH |
| 16:31:39 | djwhitt | I actually use both quite a bit and it's never been a problem for me |
| 16:32:49 | headius | yeah |
| 16:33:01 | headius | well, hopefully we can get it fixed this time |
| 16:40:49 | cremes leaves the room. | |
| 16:41:06 | cremes enters the room. | |
| 16:41:34 | shame enters the room. | |
| 16:50:03 | jayWHY enters the room. | |
| 16:50:50 | benburkert enters the room. | |
| 16:54:06 | brixen | Maledictus: _cv stands for (imaginatively enough) "core version". it distinguishes methods that are defined in kernel/bootstrap and overridden in kernel/core with more complete versions |
| 16:55:43 | Maledictus | ok, thanks |
| 16:58:22 | evan | morning! |
| 16:58:57 | headius | evan's back! |
| 16:59:10 | brixen | morning |
| 16:59:50 | evan | and still no bags! |
| 16:59:52 | brixen | "and on the eleventh day, the remote branch was created, and evan saw that it was good, and evan rested" |
| 16:59:54 | evan | i guess i hear they're in milan |
| 16:59:56 | brixen | :D |
| 17:00:05 | brixen | yikes |
| 17:00:44 | evan | yes, flying into Terminal 5 in heathrow on the 2nd day it was open ranks quite low on my list of things someone should do |
| 17:01:17 | headius | tom and I specifically routed around heathrow because it's always pretty painful |
| 17:01:28 | evan | i typically am fine |
| 17:01:41 | evan | i guess i was building up shitty-ness |
| 17:01:56 | headius | is the new vm branch out there? |
| 17:02:25 | evan | no |
| 17:02:29 | evan | about to push it |
| 17:02:51 | evan | it's still not as far along as i'd like |
| 17:03:05 | evan | as in, i haven't begun to writing the actual CPU part yet |
| 17:03:21 | headius | ahh |
| 17:03:23 | lopex enters the room. | |
| 17:03:31 | headius | so you're rewriting in C++? |
| 17:03:37 | evan | yeah |
| 17:03:39 | evan | with tests |
| 17:04:33 | headius | I heard a few others explain it, but what's your reason for doing C++? |
| 17:04:53 | evan | less of a mismatch between the VM and ruby |
| 17:05:08 | evan | less to write (can use STL) |
| 17:05:13 | evan | more modular |
| 17:05:58 | fbuilesv | evan: I was wondering if I could get a commit bit, commits 3a997bc1, 09c080bf and ba2ca41c and some older ones, pastie at http://pastie.caboo.se/private/eweiy8j1zx0jlbjtveqt1w |
| 17:06:32 | evan | headius: also, i can make the VM parts more strongly typed |
| 17:07:00 | evan | headius: i'll see when I commit it, but what i've done is map the set of ruby classes that the VM has knowledge of to C++ classes |
| 17:07:24 | evan | so there is stuff like |
| 17:07:35 | evan | Array* ary = other->concat(state, something) |
| 17:07:53 | evan | fbuilesv: sure, i'll add ya now. |
| 17:07:58 | headius | sure, but you could do that with structs |
| 17:07:59 | fbuilesv | evan: tyvm |
| 17:08:09 | mutle leaves the room. | |
| 17:08:16 | evan | headius: it's A LOT messier |
| 17:08:17 | evan | i tried. |
| 17:08:24 | headius | the STL thing is probably a good enough reason, if you keep tabs on the template bloat |
| 17:08:35 | evan | so messy, that you just stop doing it pretty quickly |
| 17:08:44 | headius | error messages are bloody awful too, last time I used it |
| 17:08:50 | evan | yeah |
| 17:08:52 | evan | still the case. |
| 17:09:30 | fbuilesv | Weird, as you say that I was just reading "C++: an octopus made by nailing extra legs to a dog" in http://steve.yegge.googlepages.com/choosing-languages :-) |
| 17:09:57 | evan | heh |
| 17:10:02 | evan | it's a tool, like any other. |
| 17:10:07 | tlockney enters the room. | |
| 17:10:14 | evan | i'm not going to start writing in C++, thats for sure |
| 17:10:21 | evan | but it's making the internals of the VM better. |
| 17:10:36 | headius | yeah, C++ is pretty gross unless you limit yourself to a reasonable subset of features |
| 17:10:45 | evan | thats what i'm doing. |
| 17:10:54 | fbuilesv | evan: I'm sure of that, and as headius said, as long as ppl doesn't go "C++ crazy" it might make the code more understandablel |
| 17:10:56 | headius | so I guess a more pointed question...why now? |
| 17:11:02 | fbuilesv | understandable* |
| 17:11:21 | headius | what with railsconf 1.5 months away |
| 17:11:35 | evan | headius: the eval order change turned out to be huge. |
| 17:11:57 | headius | that sucks...I figured it would be nontrivial, but why was it so bad? |
| 17:12:00 | evan | huge enough that it was beginning quite hard to validate that everything was done correctly |
| 17:12:07 | evan | and i'd hit my pain point of not having VM tests |
| 17:12:14 | headius | ahh sure |
| 17:12:26 | evan | so i just bit the bullet |
| 17:12:28 | headius | since everything had a specific order in mind, and there were no tests that confirmed that order... |
| 17:12:40 | evan | right |
| 17:12:52 | evan | the new VM will have 100% test coverage |
| 17:13:03 | evan | something that can be verified by daing 'make coverage' |
| 17:13:25 | Maledictus | Will there be C code left when you're finished? |
| 17:13:35 | evan | how do ya mean |
| 17:13:35 | evan | ? |
| 17:14:08 | Maledictus | Did I get it that you are rewriting stuff in C++? |
| 17:14:12 | evan | yep |
| 17:14:25 | Maledictus | everything? |
| 17:14:31 | evan | pretty much all the code in the current vm will be touched |
| 17:15:32 | Maledictus | so when you're done the g++ compiler is used for everything instead of gcc? |
| 17:15:47 | evan | it's looking that way, yes. |
| 17:15:55 | Maledictus | ok :) |
| 17:17:34 | wmoxam leaves the room. | |
| 17:18:18 | Maledictus | and that code is only under shotgun/ ? |
| 17:18:28 | evan | the current vm is, yes. |
| 17:21:31 | wmoxam enters the room. | |
| 17:28:13 | fbuilesv__ leaves the room. | |
| 17:29:21 | headius leaves the room. | |
| 17:30:26 | evan | ok |
| 17:30:30 | evan | new cpp branch was pushed |
| 17:30:45 | evan | it's not currently been merged with head |
| 17:30:54 | evan | ie, i haven't pulled head changes into it |
| 17:31:22 | brixen | cool! |
| 17:31:36 | thehcdreamer leaves the room. | |
| 17:32:19 | evan | to run the specs, in that branch, you need to install rbx from a working branch |
| 17:32:22 | evan | then use |
| 17:32:30 | evan | bin/mspec run -tX spec/compiler |
| 17:32:42 | evan | big X is added to run rbx, rather than shotgun/rubinius |
| 17:33:10 | brixen | evan: heh, I just made that change locally yesterday :) |
| 17:33:51 | evan | heh |
| 17:34:57 | brixen | how are we going to track all the changes we've made to shotgun in the interim? |
| 17:35:05 | brixen | I doubt anything is going to merge |
| 17:35:08 | trythil | evan: hmm, when I run that mspec command I get http://pastie.caboo.se/176591 |
| 17:35:20 | trythil | I think I'm missing something obvious, not sure what though :P |
| 17:35:34 | Fullmoon leaves the room. | |
| 17:35:41 | evan | trythil: oh, ack. i made that change but didn't commit it |
| 17:35:48 | evan | pp needs to be moved to lib from stdlib |
| 17:35:50 | trythil | oh, ok |
| 17:35:51 | djwhitt | test coverage for the vm. that's hot |
| 17:35:52 | evan | so it's present when installed |
| 17:36:09 | evan | brixen: we're going to just have to bit by hand |
| 17:36:15 | evan | brixen: git will help |
| 17:36:17 | KirinDav leaves the room. | |
| 17:36:20 | brixen | evan: ok, that's what I figured |
| 17:36:30 | evan | thats ok, because we'll need to write tests for the changes introduced anyway |
| 17:36:40 | brixen | sure |
| 17:36:50 | evan | make coverage is pretty dope |
| 17:37:02 | naeu leaves the room. | |
| 17:37:04 | evan | it's using some perl script that a guy wrote to check out the coverage of the linux kernel |
| 17:38:02 | evan | also, please read vm/README |
| 17:38:08 | djwhitt | I really like the builtins being objects (reading the code now) |
| 17:38:19 | djwhitt | I mean C++ objects |
| 17:38:23 | evan | yep |
| 17:38:25 | evan | me too |
| 17:38:54 | djwhitt | I wasn't too deep into the C code, but so far I think the C++ is more readable |
| 17:39:00 | djwhitt | at least for people who know some C++ :) |
| 17:39:24 | evan | hopefully we never use C++ thats super complicated. |
| 17:39:46 | djwhitt | I think having VM test coverage will be key to help get newbies like myself contributing to the VM code |
| 17:39:51 | evan | i've typedef'd out vector<> usage mostly too |
| 17:40:03 | evan | typedef ObjectList vector<OBJECT> |
| 17:40:27 | evan | djwhitt: thats my hope |
| 17:40:38 | evan | having test coverage means that people feel more open to experiment |
| 17:41:02 | mk_ enters the room. | |
| 17:41:09 | djwhitt | well, looks sweet so far. I can't wait till it's in the main branch |
| 17:42:21 | evan | me too |
| 17:42:37 | trythil | yeah, one thing I really like about the C++ VM is that the architecture is a bit clearer imo |
| 17:43:00 | trythil | like I can (sort of) see how the garbage collectors plug in, couldn't really grok that before |
| 17:43:32 | djwhitt | evan, what C++ references are you using while working on this? |
| 17:43:44 | evan | the c++ fag |
| 17:43:45 | evan | er. |
| 17:43:46 | evan | faq. |
| 17:43:48 | evan | heh |
| 17:43:56 | evan | is the main one |
| 17:43:59 | fbuilesv leaves the room. | |
| 17:44:09 | djwhitt | http://www.parashift.com/c++-faq-lite/ <- that one ? |
| 17:44:12 | evan | i did c++ back 10 years ago, so i've dredged up knowledge |
| 17:44:13 | evan | yep |
| 17:44:23 | evan | trythil: yep |
| 17:46:24 | imajes | evan: yo |
| 17:46:47 | benburkert leaves the room. | |
| 17:48:16 | mk | are you rewriting the c stuff in c++? |
| 17:48:49 | Defiler | evan: What is the 'correct' git way to make a local branch that follows a remote branch? |
| 17:48:59 | Defiler | git checkout --track -b origin/cpp some_name ? |
| 17:49:06 | evan | yeah |
| 17:49:31 | mk | isnt it git checkout --track -b some_name origin/cpp ? |
| 17:49:46 | VVSiz | it think git by default tracks the branches originated from remote ones, so there is no need for --track(?) |
| 17:49:48 | evan | mk_: yes, it is. |
| 17:49:49 | trythil | git branch --track local remote, I think |
| 17:49:51 | Defiler | Aah, indeed it is |
| 17:49:54 | trythil | or, yeah |
| 17:50:10 | evan | yeah, i don't think track is needed anymore |
| 17:50:18 | evan | it tracks by default now |
| 17:51:08 | binary42_ leaves the room. | |
| 17:51:13 | mk | where can i find the cpp branchß |
| 17:51:14 | mk | ? |
| 17:51:49 | Defiler | Just fetching the latest from the repository will get it |
| 17:51:57 | Defiler | It isn't a separate URL |
| 17:52:18 | mk | so its git://github.com/evanphx/rubinius.git ? |
| 17:52:36 | mk | no checkins for the last month? |
| 17:53:05 | imajes | evan: msg? |
| 17:53:18 | Arjen_ leaves the room. | |
| 17:53:21 | evan | yep |
| 17:53:28 | djwhitt | mk_: use git.rubini.us |
| 17:53:31 | Defiler | mk_: Not at github |
| 17:53:38 | mk | ah, k |
| 17:53:39 | evan | mk_: i'll fix github today to be an active mirror |
| 17:54:34 | flowolf leaves the room. | |
| 17:55:06 | mk | i'd like to try to contribute, any recommendations on where to start? |
| 17:55:18 | imajes | are you familiar with rspec/specs at all? |
| 17:55:23 | mk | yes |
| 17:55:31 | evan | ok, i have to go pick up fog from the kitty hotel! |
| 17:55:47 | mk | so writing specs is the easiest to start? |
| 17:55:50 | imajes | yep! |
| 17:55:55 | evan | bbiab |
| 17:55:58 | imajes | write specs for areas of ruby you like to get into |
| 17:56:20 | Fullmoon enters the room. | |
| 17:56:24 | djwhitt | mk_: there's lot of stuff in stdlib that still needs work |
| 17:57:31 | djwhitt | mk_: I recommend checking out http://rubinius.lighthouseapp.com/projects/5089/developer-readme and http://rubinius.lighthouseapp.com/projects/5089/contribute |
| 17:57:31 | mk | let me just get the gitorious version.... |
| 17:57:43 | mk | i should be able to switch the origin somehow, right? ;) |
| 18:00:54 | benburkert enters the room. | |
| 18:03:12 | Fullmoon leaves the room. | |
| 18:04:42 | headius enters the room. | |
| 18:05:43 | headius | back again |
| 18:05:45 | headius | phone man had to cut the line to replace a wire |
| 18:05:47 | headius | evan: so tests written in C then? |
| 18:06:23 | binary42 enters the room. | |
| 18:06:34 | KirinDav enters the room. | |
| 18:07:01 | Maledictus | evan is gone for now. will be bbiab |
| 18:07:20 | KirinDav_ enters the room. | |
| 18:07:46 | mk | git clone http://git.rubini.us/code is correct, right? |
| 18:07:59 | headius | okeedoke |
| 18:08:14 | d2dchat leaves the room. | |
| 18:08:14 | Maledictus | mk_: for the master branch yes |
| 18:08:20 | djwhitt | headius: looks like the tests are in C++ |
| 18:08:27 | djwhitt | http://git.rubini.us/?p=code;a=commitdiff;h=d769c944b210a1f2df59ea179e896856e1ae93ae#patch150 |
| 18:09:34 | djwhitt | he seems to be using cxxtest and lcov |
| 18:09:41 | TheVoice enters the room. | |
| 18:09:43 | headius | wow, lot of code |
| 18:09:54 | imajes leaves the room. | |
| 18:11:21 | djwhitt | indeed |
| 18:20:22 | wycats leaves the room. | |
| 18:22:22 | KirinDav leaves the room. | |
| 18:32:00 | thehcdreamer enters the room. | |
| 18:36:22 | wycats enters the room. | |
| 18:40:32 | loincloth enters the room. | |
| 18:41:40 | d2dchat enters the room. | |
| 18:49:54 | dysinger enters the room. | |
| 18:50:06 | ciscbrain enters the room. | |
| 18:50:12 | mk_ leaves the room. | |
| 18:51:53 | xmlhacker_ leaves the room. | |
| 18:55:40 | xmlhacker enters the room. | |
| 19:03:21 | mk_ enters the room. | |
| 19:04:56 | naeu enters the room. | |
| 19:06:56 | macournoyer leaves the room. | |
| 19:07:19 | macournoyer enters the room. | |
| 19:07:58 | thehcdreamer leaves the room. | |
| 19:08:32 | thehcdreamer enters the room. | |
| 19:13:47 | evan | back |
| 19:13:53 | joachimm leaves the room. | |
| 19:13:59 | jayWHY enters the room. | |
| 19:15:06 | naeu | hey evan, how was the trip back? |
| 19:15:17 | naeu | Sorry I didn't get to say goodbye at the end... |
| 19:15:30 | naeu | you all seemed to vanish after the panel thingy |
| 19:15:45 | naeu | poof |
| 19:16:52 | evan | naeu: no prob |
| 19:17:01 | evan | good to see ya |
| 19:17:34 | Rich_Morin___ enters the room. | |
| 19:17:35 | naeu | thanks for answering all my questions too :-) |
| 19:17:52 | evan | no prob |
| 19:17:53 | naeu | sofa time with evan is always good quality time :-) |
| 19:17:54 | naeu | hehe |
| 19:17:57 | evan | hehe |
| 19:18:09 | evan | you've got a commit in, so if you send me your ssh key, i'll add ya to the committers |
| 19:18:31 | naeu | want me to write it down and send it in the post? |
| 19:18:53 | evan | pastie it is the best |
| 19:18:57 | evan | the .pub half |
| 19:19:02 | naeu | of course ;-) |
| 19:19:51 | naeu | i'd never put my privates on the web for all to gawp at |
| 19:20:20 | naeu | it doesn't do much for me |
| 19:20:44 | evan | hehe |
| 19:21:04 | evan | poor fog, i don't think she got played with much at all at the kennel |
| 19:21:20 | evan | she's using her 'look at meee!' meow a lot |
| 19:23:12 | naeu | evan: http://pastie.caboo.se/176662 |
| 19:24:36 | tarcieri | hey evan, wb |
| 19:25:43 | evan | tarcieri: thanks |
| 19:26:05 | evan | ha! pastie_packer |
| 19:26:17 | tarcieri | evan: so can you hook me up with commit access? |
| 19:26:33 | evan | sure |
| 19:26:36 | evan | got a ssh pub key? |
| 19:26:38 | tarcieri | cool |
| 19:26:39 | tarcieri | yeah |
| 19:26:57 | evan | naeu: ok, added! |
| 19:27:07 | tarcieri | privmsg fine, or do you want it pastied or something? |
| 19:27:10 | naeu | evan: cool, thanks |
| 19:27:18 | naeu | nic will be proud too |
| 19:27:21 | naeu | his tools used! |
| 19:29:24 | evan | tarcieri: pastie is easiest |
| 19:29:53 | tarcieri | ok |
| 19:30:36 | naeu | right, just finished cooking curry, i'd better eat it |
| 19:30:39 | naeu | cheerio |
| 19:31:39 | Rich_Morin leaves the room. | |
| 19:33:36 | riffraff leaves the room. | |
| 19:34:21 | riffraff enters the room. | |
| 19:36:11 | tarcieri | evan: so I hear you were thinking about letting Scheduler.send_on_readable/writable accept an arbitrary object to be sent to the channel when the event occurs, or something like that? |
| 19:36:37 | tarcieri | evan: I was trying to write a simple Reactor implementation and ran into the problem of multiplexing read and write events on the same channel |
| 19:37:30 | mk_ leaves the room. | |
| 19:39:26 | evan | it was discussed long ago |
| 19:39:28 | evan | yeah |
| 19:39:40 | evan | like a typically void* data parameter that gets passed along |
| 19:40:04 | evan | it hasn't been talked about lately though |
| 19:40:08 | evan | or if it was, i wasn't here |
| 19:48:16 | riffraff leaves the room. | |
| 19:49:33 | antares enters the room. | |
| 19:49:49 | mk_ enters the room. | |
| 19:51:14 | ciscbrain leaves the room. | |
| 19:56:07 | Defiler | evan: I am getting this on the cpp branch: http://rafb.net/p/7GpDNu65.html |
| 19:56:18 | Defiler | evan: That is after a clean and a distclean, even |
| 19:56:55 | evan | no no |
| 19:57:01 | evan | all of that is totally busted |
| 19:57:04 | Defiler | aah |
| 19:57:10 | evan | the only thing that works is in vm/test |
| 19:57:12 | evan | make test |
| 19:57:14 | evan | and |
| 19:57:16 | evan | make coverage |
| 19:58:28 | antares | evan: what's the location of cpp branch? :) |
| 19:59:05 | evan | antares: git checkout -b cpp origin/cpp |
| 19:59:26 | halorgium | evan: git checkout --track -b cpp origin/cpp |
| 19:59:41 | evan | i didn't think you needed --track anymore |
| 19:59:43 | evan | it's the default |
| 20:00:25 | halorgium | you are correct, i will stab that person yesterday who corrected me :( |
| 20:00:39 | evan | hehe |
| 20:04:56 | Fobax | how is the cpp branch going? |
| 20:05:39 | evan | i didn't have much time to work on it last week |
| 20:06:16 | thehcdreamer leaves the room. | |
| 20:13:00 | imajes enters the room. | |
| 20:13:33 | joachimm enters the room. | |
| 20:13:53 | stepheneb enters the room. | |
| 20:15:16 | naeu leaves the room. | |
| 20:15:23 | naeu enters the room. | |
| 20:19:48 | boyscout | 1 commit by Jeff |
| 20:19:49 | boyscout | * Adding specs for Mailbox and Actor, and renaming the VMActor describe to match the ...; 67d3869 |
| 20:25:47 | boyscout | 7 commits by Brian Ford |
| 20:25:48 | boyscout | * Reworked how MSpec handles config files. Use 'set :sym, value' now.; 2460839 |
| 20:25:49 | boyscout | * More specs for MSpec scripts.; 3e5eb86 |
| 20:25:50 | boyscout | * Split mspec target options 'x', 'rubinius' from 'X', 'rbx'.; 8b1f515 |
| 20:25:51 | boyscout | * Added beginning specs for MSpec scripts.; 6d218e9 |
| 20:25:53 | boyscout | * Tweak MSpec scripts display version option.; f30bd6c |
| 20:25:54 | boyscout | ... |
| 20:26:11 | brixen | VVSiz: you around? |
| 20:26:41 | VVSiz | brixen: yeah |
| 20:27:01 | brixen | VVSiz: check out those commits if you're using the config file |
| 20:27:13 | brixen | VVSiz: I changed it up a bit, cleaner now |
| 20:27:24 | VVSiz | oh, nice. thanks, will do! |
| 20:27:36 | brixen | VVSiz: I'll hopefully tweak on the windows compat this week |
| 20:27:45 | VVSiz | that would be *SUPER* :) |
| 20:27:50 | brixen | ok :) |
| 20:28:20 | Arjen_ enters the room. | |
| 20:31:02 | VVSiz | brixen: so, mspec looks into ./default.mspec first and then spec/default.mspec? |
| 20:32:48 | VVSiz | brixen: as for mkspec, it still creates specs failing by default, doesn't it? |
| 20:34:51 | brixen | VVSiz: yeah, haven't gotten to mkspec yet, next on the list |
| 20:35:00 | VVSiz | cool, just checking |
| 20:35:17 | dysinger leaves the room. | |
| 20:35:58 | rubuildius_amd64 | Brian Ford: 2460839e3; 1855 files, 6387 examples, 22451 expectations, 0 failures, 0 errors; http://rafb.net/p/JLVX5b15.html |
| 20:35:59 | rubuildius_amd64 | Jeff: 67d3869e9; 1855 files, 6387 examples, 22451 expectations, 0 failures, 0 errors; http://rafb.net/p/a9xdJE94.html |
| 20:36:42 | rue | Morning |
| 20:36:48 | brixen | morning rue |
| 20:36:50 | djwhitt | morning? |
| 20:36:57 | qwert666__ enters the room. | |
| 20:37:02 | headius | morning! |
| 20:37:14 | rubuildius_ppc | Brian Ford: 2460839e3; 1855 files, 6390 examples, 22480 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/176730 |
| 20:37:16 | rubuildius_ppc | Jeff: 67d3869e9; 1855 files, 6390 examples, 22480 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/176725 |
| 20:39:34 | naeu leaves the room. | |
| 20:41:21 | rue | Ish |
| 20:43:04 | evan | lunch time! |
| 20:44:58 | brixen | indeed |
| 20:48:20 | ezmobius enters the room. | |
| 20:49:07 | tobyo enters the room. | |
| 20:54:48 | wycats__ enters the room. | |
| 20:56:18 | VVSiz | brixen: is there a way to enable a bit more verboseness out of mspec to see where it loads the data from? |
| 20:56:21 | qwert666_ leaves the room. | |
| 20:58:43 | rue | Quite easily, but you may have to add it |
| 20:59:53 | brixen | VVSiz: which data? the config? |
| 21:00:04 | tarcieri | anyone here symlink git commands to abbreviations at all? |
| 21:00:16 | tarcieri | trying to make "git st" and it won't work for whatever reason |
| 21:00:34 | VVSiz | brixen: yeah, the configuration data |
| 21:00:59 | brixen | tarcieri: a little dusty, but kinda cool: http://git.rubini.us/?p=apps/gx;a=summary |
| 21:01:04 |