Show enters and exits. Hide enters and exits.
| 00:02:35 | enebo leaves the room. | |
| 00:06:56 | kofno__ enters the room. | |
| 00:06:59 | kofno_ leaves the room. | |
| 00:07:03 | defunkt enters the room. | |
| 00:07:49 | aotearoa leaves the room. | |
| 00:16:09 | djwhitt enters the room. | |
| 00:21:20 | radarek enters the room. | |
| 00:22:31 | kofno leaves the room. | |
| 00:23:12 | KirinDave leaves the room. | |
| 00:36:58 | benburkert enters the room. | |
| 00:40:41 | ezmobius leaves the room. | |
| 00:42:13 | ezmobius enters the room. | |
| 00:42:37 | ezmobius leaves the room. | |
| 00:56:29 | octopod enters the room. | |
| 01:12:44 | rue | Wtf, apparently I need to write an ORM myself |
| 01:14:29 | antares | rue, how come? |
| 01:16:42 | rue | All of these suck. |
| 01:17:18 | cjheath | You too... :-) |
| 01:17:32 | cjheath | Have you looked at where I'm going with ActiveFacts? |
| 01:20:08 | cjheath | rue? |
| 01:22:13 | rue | No |
| 01:22:31 | rue | Are you writing an ORM that does not suck and/or break? 'Cause I will read up |
| 01:23:33 | cjheath | ActiveFacts uses fact-based (semantic) modeling, which is 6NF + semantic fact type readings.... |
| 01:23:42 | cjheath | That gets composited down to 3NF for the DB |
| 01:23:50 | cjheath | and also to an object-oriented API |
| 01:24:07 | cjheath | the two will work together as an O/RM so you don't see the 3NF. |
| 01:24:19 | cjheath | So the O/R mismatch disappears. |
| 01:24:50 | cjheath | Sound tantalising? |
| 01:26:25 | antares | cjheath, any links to follow? |
| 01:26:57 | cjheath | http://dataconstellation.com/ActiveFacts, and the RubyForge project |
| 01:27:49 | cjheath | It means using a new query language, BTW, which I'm writing in Treetop... called CQL, Constellation Query Language (no spec available yet). |
| 01:28:05 | cjheath | It can completely replace SQL :-). |
| 01:29:23 | antares | cjheath, a friend of mine today announced his own DB based on ideas of git |
| 01:29:30 | antares | cjheath, http://www.novemberain.com/2008/2/3/strokedb-goes-public if you are interested |
| 01:30:00 | cjheath | CQL is like a restricted plain-English syntax for Prolog, based on invoking the fact types using the readings. It translates to SQl internally. |
| 01:30:09 | cjheath | Thanks for that, will check. |
| 01:30:41 | cjheath | The important thing about semantic modeling is that 6NF is stable, and 3NF isn't, in evolution. |
| 01:31:21 | cjheath | There are some very interesting document stores, but it's not what I'm about with AF. |
| 01:31:42 | cjheath | I want to fix the problems |
| 01:31:42 | antares | cjheath, NF is for normal form? |
| 01:32:00 | cjheath | of agility associated with SQL and directly programming to the 3NFphysical models. |
| 01:32:03 | cjheath | yes |
| 01:32:34 | antares | cjheath, this looks interesting |
| 01:33:05 | antares | cjheath, I'll probably investigate AF more tomorrow. Now up to some Shotgun hacking :) |
| 01:33:07 | cjheath | 3NF means that an attribute (which is functionally dependent) is stored as an attribute, even though notionally there is a separate relation there, and a join: Person has family-Name is a *relation* |
| 01:33:48 | cjheath | So when the functional dependence goes away, or the attribute grows an attribute of its own, it becomes a table, and all your SQL must be re-written to use a join |
| 01:34:09 | cjheath | hence 3NF is unstable, 6NF isn't. |
| 01:34:20 | antares | cjheath, I'm basically familiar with normal forms. I just need to remember which form means what :) |
| 01:34:31 | cjheath | Feel free to email me, of course. |
| 01:34:37 | jkh enters the room. | |
| 01:34:51 | cjheath | 6NF here basically means that you have at most one non-key attribute in a relation. |
| 01:35:57 | cjheath | Terry Halpin's seminal book is about to be re-issued as 2Ed, if you want to learn more. |
| 01:36:49 | cjheath | I call it 6NF for folk familiar with the relational mode, but in Object Role Modeling, it's called "elementary form", i.e. not compound. |
| 01:36:59 | cjheath | Ok, cya later - back to shotgun for you! |
| 01:37:35 | chris2_ leaves the room. | |
| 01:38:26 | antares | cjheath, alright! |
| 01:44:08 | rue | cjheath: Looks good! |
| 01:44:17 | rue | Only remaining question is whether it breaks ;) |
| 01:45:48 | cjheath | breaks? |
| 01:46:17 | cjheath | I reckon the biggest question is when I get to finish it :-) |
| 01:47:00 | cjheath | It's such a break from the traditional approaches that I've spent most of a year just getting my head around the concepts. |
| 01:47:18 | benburkert leaves the room. | |
| 01:47:23 | cjheath | Looking for some collaborators... |
| 01:48:34 | aotearoa_ leaves the room. | |
| 01:50:01 | rue | I am just tired, been dealing with stupid design, broken frameworks and idiotic adapters the entire weekend |
| 01:51:42 | cjheath | :-) |
| 01:51:53 | cjheath | Using DataMapper? |
| 01:52:15 | cjheath | I've heard a few folk complaining... I was thinking of building on Sequel instead. |
| 01:53:37 | cjheath | The idea of a strong, small fast SQL interface, and the O/RM above that, seems to me the right idea... especially since I only want the former :-) |
| 01:56:41 | rue | Yeh, well, Sequel sucked too |
| 01:57:33 | cjheath | Ouch. Which framework has the best (smallest) cross-DB interface though. I don't care about the API, as long is as it doesn't have anything non-essential to bridging the SQL engines. |
| 01:57:46 | cjheath | Since I'm goingto hide that anyhow. |
| 01:57:50 | rue | And, ah, illustrative of the types of issues I have been running into is that e.g. Og's SqliteAdapter#close calls super() -- and the superclass implementation is raise NotImplementedError |
| 01:58:01 | cjheath | :-( |
| 01:58:34 | cjheath | Ruby needs essentially a new DBI, that the O/RMs can build on. |
| 01:58:40 | cjheath | AR ain't it! |
| 01:58:42 | rue | Why would you even put it there? Half of this crap makes no sense and the rest is not documented |
| 02:00:06 | cjheath | This is an example of how far behind Ruby is: http://adodb.sourceforge.net/ |
| 02:04:05 | cjheath | Fully documented, every release regression tested on all DBs, fast, all enterprise features (stored procs, etc, etc). Most of the things I raised in my "Enterprise Rails" BOF presentation at RailsConf in Portland last year. |
| 02:05:22 | cjheath | About which the Ruby community has done basically zip in that time, except spawn several new half-baked "solutions". |
| 02:10:20 | jkh leaves the room. | |
| 02:20:01 | jkh enters the room. | |
| 02:28:39 | eventualbuddha leaves the room. | |
| 02:36:52 | Swistak enters the room. | |
| 02:43:18 | aotearoa enters the room. | |
| 02:46:56 | VVSiz_ enters the room. | |
| 02:51:13 | KirinDave enters the room. | |
| 02:53:01 | rue | Some of this is extremely poorly speccable |
| 02:53:15 | rue | None of these frameworks handle disconnects and reconnects |
| 02:53:17 | rue | ~well |
| 02:54:02 | kofno enters the room. | |
| 02:55:15 | VVSiz leaves the room. | |
| 02:55:57 | UncleD leaves the room. | |
| 02:56:04 | UncleD enters the room. | |
| 02:56:12 | RyanTM leaves the room. | |
| 02:56:23 | _mutle enters the room. | |
| 02:58:15 | RyanTM enters the room. | |
| 02:58:18 | lopex leaves the room. | |
| 03:00:53 | benburkert enters the room. | |
| 03:04:00 | mutle leaves the room. | |
| 03:06:20 | octopod leaves the room. | |
| 03:12:04 | dodecaphonic leaves the room. | |
| 03:33:40 | nicksieger leaves the room. | |
| 03:41:22 | rue | Well, looks like we have about eighteen billion new tickets |
| 03:42:49 | benburkert leaves the room. | |
| 03:49:34 | Fullmoon enters the room. | |
| 03:53:53 | Judofyr leaves the room. | |
| 04:05:55 | dewd_ leaves the room. | |
| 04:09:26 | ezmobius enters the room. | |
| 04:09:27 | GMFlash leaves the room. | |
| 04:09:31 | GMFlash enters the room. | |
| 04:26:43 | headius enters the room. | |
| 04:35:39 | radarek leaves the room. | |
| 04:45:08 | d2dchat leaves the room. | |
| 04:45:20 | twbray enters the room. | |
| 04:51:21 | KirinDave leaves the room. | |
| 04:52:36 | d2dchat enters the room. | |
| 05:00:38 | wmoxam enters the room. | |
| 05:05:41 | drbrain enters the room. | |
| 05:06:06 | drbrain | http://rafb.net/p/GQ5jAo50.html |
| 05:06:16 | drbrain | can somebody paste that into rubinus' irb? |
| 05:06:28 | drbrain | I get wrong number of arguments (got 3833, required 1024) (ArgumentError) |
| 05:09:04 | lstoll_ enters the room. | |
| 05:11:04 | evan | drbrain: we have a hard max of 1024 arguments currently |
| 05:11:16 | drbrain | evan: that's a String |
| 05:11:40 | drbrain | it shouldn't cause any exception raising |
| 05:12:29 | drbrain | oh, eww |
| 05:12:36 | evan | i get the same |
| 05:12:40 | evan | it's inside IRB's parser. |
| 05:12:49 | drbrain | @rests.concat line.split(//) |
| 05:12:56 | evan | exactly. |
| 05:12:56 | drbrain | that's why |
| 05:13:32 | evan | i've been thinking about a different way to handle splatted args |
| 05:13:38 | drbrain | yeah |
| 05:13:41 | evan | should we look into that? or do you think that having a max on args is ok? |
| 05:13:51 | aasmith | are threads in rubinius green or native? |
| 05:13:51 | rue | IRB is the awesomest. |
| 05:14:05 | drbrain | I think for splatted args, it should be fixed |
| 05:14:22 | rue | aasmith: Green, if you use Thread. The multi-VM uses native threads |
| 05:14:33 | evan | hm. ok. |
| 05:14:33 | aasmith | ah |
| 05:14:36 | rue | Eventually to be M:N |
| 05:14:51 | evan | i need to figure out a way to do it in a way that doesn't requiring a bunch of VM code |
| 05:15:10 | drbrain | but, it's not critical now |
| 05:17:51 | evan | the problem now is that doing "obj.call *args" causes the the contents of args to put placed on the operand stack |
| 05:18:00 | evan | which makes it completely unbounded |
| 05:18:08 | lstoll_ leaves the room. | |
| 05:18:17 | lstoll leaves the room. | |
| 05:18:25 | KirinDave enters the room. | |
| 05:18:28 | drbrain | I wouldn't worry about it |
| 05:18:31 | evan | k |
| 05:18:33 | drbrain | just slap a TODO on it |
| 05:18:41 | evan | KirinDave: think you could give me a little dtrace help? |
| 05:19:55 | KirinDave | evan: I can try! |
| 05:19:57 | KirinDave | evan: What do you need? |
| 05:20:30 | evan | i've added some probes |
| 05:20:40 | evan | i have a begin and end probe |
| 05:20:54 | jessop enters the room. | |
| 05:20:58 | evan | all i want to do is print out the total time spent between begin and end |
| 05:21:05 | evan | the accumulated time |
| 05:22:07 | KirinDave | Ah |
| 05:22:14 | headius_ enters the room. | |
| 05:22:14 | KirinDave | In each probe? |
| 05:22:19 | KirinDave | No problem, one sec. |
| 05:22:29 | KirinDave | Sorry if I'm a bit scatterbrained, I'm watching Robin B. Hood. |
| 05:22:39 | evan | yeah, i want to just add up the time for each slice |
| 05:22:41 | evan | and print it out. |
| 05:22:50 | evan | i'm trying to get instruments to show anything |
| 05:22:54 | evan | but not getting much success. |
| 05:23:05 | aotearoa leaves the room. | |
| 05:23:22 | evan | i'd be happy with getting something that just printed out the probes were firing |
| 05:23:25 | aotearoa enters the room. | |
| 05:23:31 | jessop leaves the room. | |
| 05:23:41 | KirinDave | evan: : Have you checked out http://blogs.sun.com/ahl/entry/mac_os_x_and_the ? |
| 05:23:57 | KirinDave | That's an example of a series of probes doing exactly what you want. |
| 05:24:13 | evan | i'll do that now. |
| 05:24:52 | KirinDave | evan: I'll look for an example using the primitive you want. |
| 05:24:59 | evan | hm |
| 05:25:02 | evan | that just seems to tick all the time. |
| 05:25:09 | evan | it's not targetted at all. |
| 05:26:33 | evan | i have a probe called vm__lookup__begin() |
| 05:26:36 | evan | would that just be |
| 05:26:41 | evan | rubinius$target:::vm-lookup-begin |
| 05:26:42 | evan | ? |
| 05:26:59 | KirinDave | evaN: Yeah |
| 05:27:10 | KirinDave | evan: Well it'd be from the pid provider for your process |
| 05:27:31 | KirinDave | evan: http://www.filibeto.org/~aduritz/truetrue/solaris10/dtrace-intro.html is the first good tutorial I found. Do a find for "timestamp" |
| 05:28:06 | KirinDave | evan: They show exactly how to do a quantization of the duration of a number of calls. You just form a hash of start and stop times |
| 05:28:13 | KirinDave | And then you can use lquant or print. |
| 05:28:38 | evan | what I don't get is how the name of the probe is fined |
| 05:28:40 | evan | defined |
| 05:28:43 | evan | that doc has stuff like |
| 05:28:52 | evan | syscall::exec*:return |
| 05:29:05 | evan | or the custom userspace ones all the same format? |
| 05:29:06 | evan | ie |
| 05:29:14 | evan | <provider>:::<name> |
| 05:29:24 | KirinDave | Ahh |
| 05:29:34 | KirinDave | So for a given pid it's pidXXX: |
| 05:30:01 | jessop enters the room. | |
| 05:30:24 | KirinDave | evan: The pid provider is documented in http://docs.sun.com/app/docs/doc/817-6223/chp-pid?a=view |
| 05:30:35 | evan | i don't see how the pid provider comes into this at all |
| 05:30:39 | headius leaves the room. | |
| 05:30:40 | evan | i'm missing something |
| 05:30:56 | KirinDave | evan: Your custom rubinious static probe points |
| 05:31:02 | KirinDave | They're provided throught he rubinious provider. |
| 05:31:08 | evan | rubinius, yes. |
| 05:31:09 | KirinDave | An example |
| 05:31:09 | KirinDave | pid123:libc.so.1:strcpy:entry |
| 05:31:11 | KirinDave | Err, sorry |
| 05:31:23 | KirinDave | So pid123:rubnius:probename:: |
| 05:31:38 | evan | um |
| 05:31:46 | evan | why don't the ruby probe examples have any of that? |
| 05:31:57 | KirinDave | What probe type do they use? |
| 05:32:05 | evan | http://svn.joyent.com/opensource/dtrace/ruby/examples/rb_functime.d |
| 05:32:23 | KirinDave | Ahh |
| 05:32:31 | evan | this script, i'm realizing, is probably what i want to go from |
| 05:32:42 | KirinDave | Nm, I'm working from the old leopard docs. :) |
| 05:32:50 | KirinDave | Now you can use the raw provider with a pid wildcard. |
| 05:32:52 | KirinDave | http://docs.sun.com/app/docs/doc/817-6223/chp-usdt?a=view |
| 05:33:01 | jessop leaves the room. | |
| 05:33:14 | notheory enters the room. | |
| 05:33:23 | evan | KirinDave: i've used that URL |
| 05:33:31 | evan | doesn't have any info on how to consume the probes |
| 05:33:34 | evan | which is the point i'm at. |
| 05:33:55 | KirinDave | Have you used the dtrace executable before |
| 05:34:12 | evan | never. |
| 05:34:24 | evan | never used it before today, period. |
| 05:34:59 | KirinDave | Oh. Okay, I was misunderstanding. |
| 05:35:43 | KirinDave | Let me pastie an example |
| 05:38:08 | KirinDave | evan: http://pastie.caboo.se/147127 |
| 05:38:37 | headius enters the room. | |
| 05:38:39 | evan | i'm getting that dtrace doesn't have a function called print() |
| 05:38:42 | evan | i tried that. |
| 05:38:47 | evan | or something similar. |
| 05:38:48 | jessop enters the room. | |
| 05:39:14 | KirinDave | Err, I typo'd. |
| 05:39:15 | KirinDave | It's printf. :) |
| 05:39:21 | jessop leaves the room. | |
| 05:39:36 | evan | run that how? |
| 05:39:44 | evan | sudo dtrace -s file.d |
| 05:39:45 | evan | ? |
| 05:39:55 | KirinDave | Yeah. |
| 05:40:19 | KirinDave | The sun introduction is very good. |
| 05:40:35 | evan | always says that the probe description doesn't match |
| 05:40:47 | KirinDave | http://docs.sun.com/app/docs/doc/817-6223/6mlkidlf1?a=view |
| 05:40:50 | evan | sudo dtrace -l | grep rubinius |
| 05:40:52 | evan | is showing things though. |
| 05:41:03 | evan | if i run it while a rubinius program is running |
| 05:41:06 | KirinDave | Well yeah |
| 05:41:25 | evan | hey, this is my first day. |
| 05:41:28 | evan | thats not a given to me. |
| 05:41:49 | KirinDave | Ah. :) |
| 05:42:33 | evan | that intro doesn't have anything on application probes |
| 05:42:37 | KirinDave | Yeah, |
| 05:42:40 | headius_ leaves the room. | |
| 05:42:42 | evan | and the only thing it lists on them is one section on how to add them to the application |
| 05:42:47 | evan | not on how to pick them up. |
| 05:42:54 | twbray leaves the room. | |
| 05:42:56 | KirinDave | So the :::: is just basically the stuff from dtrace -l minus the first comma. :) |
| 05:43:02 | KirinDave | So run dtrace -l while your program is up. |
| 05:43:11 | KirinDave | And grep and grab a line. |
| 05:43:12 | evan | so |
| 05:43:13 | evan | can i do |
| 05:43:20 | evan | rubinius*:*:*:* |
| 05:43:25 | evan | to just fire on fucking everything. |
| 05:43:28 | KirinDave | You might be able to, yeah |
| 05:43:35 | KirinDave | I'm not sure if app probes let you do that, tbh. |
| 05:44:08 | evan | have you used application probes ever? |
| 05:44:16 | KirinDave | Not this way |
| 05:44:22 | KirinDave | I use them via the pid provider. |
| 05:44:41 | KirinDave | I'd grab examples but I'm at the wrong computer in mid movie. |
| 05:44:53 | evan | ok |
| 05:44:59 | evan | i'll see if i can get them working. |
| 05:45:04 | KirinDave | Sorry I can't be more help atm. |
| 05:45:15 | drbrain | wow, I didn't know File.open takes 3 args |
| 05:49:02 | evan | yay! |
| 05:49:03 | evan | finally. |
| 05:49:20 | evan | ok, now i have to figure out how to start this up more elegantly. |
| 05:49:25 | wmoxam leaves the room. | |
| 05:52:17 | drbrain | now, if I can only find where this is implemented |
| 05:56:26 | twbray enters the room. | |
| 06:02:19 | rue | Oh give me a fucking break |
| 06:02:37 | evan | o/~ break me off a piece o' dat kit-kat bar! o/~ |
| 06:02:53 | evan | hrm |
| 06:03:10 | evan | doing this via dtrace instead of gettimeofday directly is SOO much slower. |
| 06:03:14 | rue | t.chap = nil; t.update; t.save; DB.db.cache = nil; t.chap # => THE SAME OLD FSCKING OBJECT |
| 06:03:28 | rue | Seriously, what the hell. I am going to bed |
| 06:03:35 | evan | nite o! |
| 06:04:07 | be9 enters the room. | |
| 06:04:45 | drbrain | fuck |
| 06:06:20 | drbrain | haha |
| 06:06:51 | drbrain | IO#initialize is teh suck |
| 06:07:11 | drbrain | actually, IO::open |
| 06:07:13 | evan | how come? |
| 06:07:18 | drbrain | since TCPSocket < IO |
| 06:07:29 | drbrain | but, File < IO also |
| 06:07:37 | evan | arg. |
| 06:07:37 | drbrain | so, File.open 'foo', 'w', 0600 |
| 06:07:58 | drbrain | fails, because most everywhere else two arguments are expected |
| 06:07:59 | evan | are you getting Invalid descriptor? |
| 06:08:06 | drbrain | no |
| 06:08:09 | evan | ooh |
| 06:08:12 | drbrain | wrong number of arguments |
| 06:09:05 | evan | sweetness. |
| 06:09:11 | drbrain | switching to *args seems better |
| 06:09:21 | evan | clock() == microsecond |
| 06:10:07 | drbrain | interesting |
| 06:10:08 | evan | drbrain: i'd prefer using Undefined |
| 06:10:15 | drbrain | man 3 clock |
| 06:10:21 | drbrain | evan: huh? |
| 06:10:21 | evan | since we don't actually accept any number of args |
| 06:10:43 | evan | using *args when you actually do have a fixed number of args is yucky. |
| 06:10:54 | drbrain | IO::open accepts any number of args |
| 06:10:54 | evan | the code is always nastier than using Undefined |
| 06:10:55 | solarce | dear me, now I want to play with git |
| 06:10:59 | drbrain | IO#initialize checks |
| 06:11:05 | drbrain | or TCPSocket or File or ... |
| 06:11:06 | evan | drbrain: ah. |
| 06:11:13 | evan | well, thats a horse of a different color. |
| 06:11:13 | drbrain | or ::new |
| 06:11:25 | evan | *args is correct there. |
| 06:11:30 | evan | because you don't know the arg count at all. |
| 06:11:38 | drbrain | yeah |
| 06:11:48 | pkondzior leaves the room. | |
| 06:13:18 | drbrain | 12 failures/errors in RubyGems tests on Rubinius |
| 06:13:30 | evan | WOW! |
| 06:13:33 | ezmobius | nice |
| 06:13:34 | evan | the last 12? |
| 06:13:37 | drbrain | (minus excluded tests) |
| 06:13:51 | drbrain | yeah |
| 06:14:05 | drbrain | I think that means it's fully usable now |
| 06:14:18 | evan | DOPE. |
| 06:14:19 | evan | so |
| 06:14:20 | drbrain | several of the failing tests are poor tests |
| 06:14:27 | drbrain | strictly comparing YAML output and such |
| 06:14:28 | evan | so, how do you want to handle it being 'builtin'? |
| 06:14:47 | drbrain | same as 1.9 (minus gem_prelude.rb) |
| 06:14:56 | evan | i don't know how it's done in 1.9 |
| 06:15:04 | evan | just import a specific svn revision? |
| 06:15:13 | drbrain | actually, we could you gem_prelude.rb, if we wanted |
| 06:15:16 | evan | and then manually update it for future versions? |
| 06:15:17 | drbrain | yeah |
| 06:15:24 | drbrain | yeah |
| 06:15:31 | evan | cool, that should be easy. |
| 06:15:37 | evan | whats in gem_prelude.rb? |
| 06:16:08 | drbrain | it stuffs the load paths from the latest gem revisions into $LOAD_PATH |
| 06:16:08 | evan | crap. |
| 06:16:14 | evan | clock() is SOO much slower than gettimeofday. |
| 06:16:15 | evan | oh well. |
| 06:16:24 | drbrain | and has a wrapper to load the real RubyGems if you try Kernel#gem or Gem.blah |
| 06:16:32 | evan | well |
| 06:16:37 | evan | i'll leave that up to you |
| 06:16:41 | headius | MRI defines separate initialize for File |
| 06:16:59 | drbrain | ha, clock(3) refers to clocks(7) which isn't installed |
| 06:17:05 | evan | on darwin |
| 06:17:10 | drbrain | so does rubinius |
| 06:17:11 | evan | clock() just calls getrusage |
| 06:17:14 | drbrain | yeah |
| 06:17:25 | evan | and has to have a giant struct filled in |
| 06:17:33 | drbrain | which is a system call |
| 06:17:38 | evan | right |
| 06:17:40 | evan | so is gettimeofday |
| 06:17:49 | evan | but it's vastly quicker it seems |
| 06:19:09 | KirinDave leaves the room. | |
| 06:25:59 | headius | heh |
| 06:26:02 | headius | "However, the two sides discussed how a capital infusion could help Engine Yard work on some key open source projects that can help Rails perform better, including Rubinius (a more robust and speedier version of Ruby) and Merb (an adjunct of Rails)." |
| 06:27:02 | evan | eh? |
| 06:27:19 | headius | from a venture capital online mag |
| 06:27:28 | evan | ha! funny. |
| 06:27:40 | headius | good to hear rubinius is already more robust and speedier |
| 06:28:03 | evan | nice jab. |
| 06:28:08 | evan | hits headius with a hook. |
| 06:28:18 | headius | hey, I'm just quoting the article :) |
| 06:30:52 | ezmobius | i just got merb-core running on webrick on rubinius to serve a page \m/ |
| 06:31:52 | hornbeck enters the room. | |
| 06:31:54 | brixen | ezmobius: awesome! |
| 06:32:29 | drbrain | ezmobius: did you see my wiki? |
| 06:32:37 | ezmobius | nope, link? |
| 06:32:45 | drbrain | http://rafb.net/p/fHSrHo57.html |
| 06:33:08 | ezmobius | nice |
| 06:33:36 | drbrain | markup, style, history with only RCS as the external dependency |
| 06:33:46 | ezmobius | the awesome thing is i only had to change like 20 lines of code, and vendor all the gems and unshift them into $: |
| 06:34:05 | drbrain | I'd run it public, but Rubinius has a strong distaste for FreeBSD 6 |
| 06:35:37 | boyscout | 3 commits by Eric Hodel |
| 06:35:38 | boyscout | * Give Zlib errors the right class, fix Zlib::GzipWriter.; ed491d2 |
| 06:35:39 | boyscout | * IO::open accepts any number of args to support subclassing.; f022ae3 |
| 06:35:40 | boyscout | * Remove unused Compression::ZLib; 983d053 |
| 06:36:22 | drbrain | oh, that last one might require a clean:rbc |
| 06:39:46 | agardiner leaves the room. | |
| 06:40:26 | drbrain | later |
| 06:42:49 | d2dchat leaves the room. | |
| 06:45:23 | leavengood leaves the room. | |
| 06:46:04 | evan | interesting. |
| 06:46:31 | evan | so, rubinius spends around 47% of it's time just in the method lookup / context creation / context activation code. |
| 06:48:02 | aasmith leaves the room. | |
| 06:48:49 | rubuildius | Eric Hodel: ed491d27e; 4656 examples, 17064 expectations, 0 failures, 0 errors |
| 06:49:18 | d2dchat enters the room. | |
| 06:49:18 | d2dchat leaves the room. | |
| 06:50:24 | brixen | wow |
| 06:51:24 | ezmobius | hmm shoudl Regex.escpape be working? seems like it doesnt. |
| 06:51:24 | ezmobius | irb(main):002:0> Regexp.escape"/ffo/" |
| 06:51:25 | ezmobius | => "/ffo/" |
| 06:51:39 | evan | the numbers are odd though... |
| 06:52:16 | brixen | ezmobius: irb does the same, / isn't a special regexp char |
| 06:52:29 | brixen | s/mri/irb/ |
| 06:52:34 | brixen | or vice versa :P |
| 06:52:50 | brixen | evan: how so? |
| 06:53:21 | evan | oh oh. |
| 06:53:21 | evan | nm. |
| 06:54:00 | evan | seems that half of that is the lookup, half is the context creation and activation. |
| 06:56:16 | jkh leaves the room. | |
| 06:56:20 | evan | hrm. |
| 06:56:33 | evan | i need to figure out how to calculate the overhead of measuring... |
| 06:57:26 | ezmobius | brixen: ahh its Regexp.new that is differnet http://pastie.caboo.se/147141 |
| 06:57:52 | evan | nope |
| 06:57:56 | evan | thats just the display probably |
| 06:58:09 | evan | do |
| 06:58:14 | evan | Regexp.new(whatever).source |
| 06:58:15 | evan | in both |
| 06:58:19 | ezmobius | k |
| 07:00:46 | ezmobius | evan: http://pastie.caboo.se/147142 |
| 07:00:49 | ezmobius | its not an irb thing |
| 07:01:37 | evan | no |
| 07:01:41 | evan | you need to be printing out .source |
| 07:01:44 | evan | of the Regexp object |
| 07:01:54 | evan | don't use Regexp#inspect or Regexp#to_s |
| 07:02:14 | ezmobius | well in merb's router i actually use the string returned via Regexp.new when i build up the string of routes to ve evaled |
| 07:02:23 | evan | ew |
| 07:02:25 | evan | you should not. |
| 07:02:27 | ezmobius | what shouldi do inetad? |
| 07:02:28 | evan | you should always use #source. |
| 07:02:31 | ezmobius | instead |
| 07:02:40 | ezmobius | sounce is not the escaped version though |
| 07:02:43 | ezmobius | source even |
| 07:02:46 | evan | otherwise you depend on the output of Regexp#source |
| 07:03:04 | evan | hm |
| 07:03:15 | evan | then Regexp#inspect needs to be fixed. |
| 07:10:45 | Judofyr enters the room. | |
| 07:12:48 | KirinDave enters the room. | |
| 07:20:21 | zimbatm enters the room. | |
| 07:21:27 | Judofyr leaves the room. | |
| 07:24:40 | ezmobius_ enters the room. | |
| 07:28:31 | wifelette enters the room. | |
| 07:30:39 | mfp leaves the room. | |
| 07:31:07 | pkondzior enters the room. | |
| 07:36:18 | KirinDave leaves the room. | |
| 07:38:23 | defunkt enters the room. | |
| 07:38:32 | lopex enters the room. | |
| 07:44:16 | Fullmoon leaves the room. | |
| 07:45:03 | VVSiz enters the room. | |
| 07:46:59 | mfp enters the room. | |
| 07:47:52 | aotearoa leaves the room. | |
| 07:52:21 | VVSiz_ leaves the room. | |
| 07:54:38 | lstoll enters the room. | |
| 07:55:34 | jtoy enters the room. | |
| 07:55:54 | tmpk leaves the room. | |
| 07:56:47 | random8r enters the room. | |
| 07:57:25 | random8r enters the room. | |
| 07:57:45 | pergesu leaves the room. | |
| 07:59:29 | defunkt leaves the room. | |
| 08:05:08 | twshelton_ leaves the room. | |
| 08:07:03 | pkondzior leaves the room. | |
| 08:14:52 | random8r leaves the room. | |
| 08:23:05 | defunkt enters the room. | |
| 08:24:43 | lopex leaves the room. | |
| 08:27:14 | thehcdreamer enters the room. | |
| 08:31:41 | imajes enters the room. | |
| 08:35:10 | twshelton enters the room. | |
| 08:42:19 | _mutle leaves the room. | |
| 08:43:02 | mutle enters the room. | |
| 08:43:18 | aotearoa enters the room. | |
| 08:45:13 | imajes leaves the room. | |
| 08:49:25 | headius leaves the room. | |
| 08:51:18 | imajes enters the room. | |
| 08:54:52 | Fullmoon enters the room. | |
| 08:56:09 | Fullmoon leaves the room. | |
| 08:57:25 | gnufied enters the room. | |
| 09:00:49 | Swistak leaves the room. | |
| 09:01:01 | aotearoa leaves the room. | |
| 09:12:48 | octopod enters the room. | |
| 09:12:49 | imajes leaves the room. | |
| 09:13:54 | imajes enters the room. | |
| 09:14:22 | imajes leaves the room. | |
| 09:16:38 | twbray leaves the room. | |
| 09:18:02 | imajes enters the room. | |
| 09:18:17 | imajes leaves the room. | |
| 09:25:26 | binary42 leaves the room. | |
| 09:26:12 | Fullmoon enters the room. | |
| 09:47:42 | ezmobius_ leaves the room. | |
| 10:02:00 | pkondzior enters the room. | |
| 10:03:48 | ezmobius leaves the room. | |
| 10:07:22 | Fullmoon leaves the room. | |
| 10:13:32 | gnufied_ enters the room. | |
| 10:20:03 | gnufied_ leaves the room. | |
| 10:24:06 | Arjen_ enters the room. | |
| 10:26:13 | defunkt leaves the room. | |
| 10:31:11 | imajes enters the room. | |
| 10:31:24 | SIGVTALRM enters the room. | |
| 10:32:04 | aotearoa enters the room. | |
| 10:32:46 | mfp leaves the room. | |
| 10:52:52 | geekounet leaves the room. | |
| 11:02:39 | chris2 enters the room. | |
| 11:05:42 | aotearoa_ enters the room. | |
| 11:08:42 | aotearoa_ leaves the room. | |
| 11:30:06 | aotearoa leaves the room. | |
| 11:31:59 | aotearoa enters the room. | |
| 11:35:28 | ragge enters the room. | |
| 11:44:45 | VVSiz leaves the room. | |
| 11:51:11 | VVSiz enters the room. | |
| 11:51:34 | dodecaphonic enters the room. | |
| 11:53:02 | dbussink enters the room. | |
| 12:04:54 | mutle leaves the room. | |
| 12:05:39 | mutle enters the room. | |
| 12:17:58 | Jzalae leaves the room. | |
| 12:22:59 | antares_ leaves the room. | |
| 12:39:41 | antares enters the room. | |
| 12:45:17 | ragge leaves the room. | |
| 12:49:46 | Fullmoon enters the room. | |
| 12:56:26 | boyscout | 1 commit by Vladimir Sizikov |
| 12:56:27 | boyscout | * More rubyspecs for IO#eof?.; 0e0a987 |
| 13:02:20 | dodecaphonic leaves the room. | |
| 13:03:29 | ctennis_ enters the room. | |
| 13:05:11 | ttmrichter enters the room. | |
| 13:08:51 | rubuildius | Vladimir Sizikov: 0e0a98778; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 13:13:46 | ttmrichter leaves the room. | |
| 13:20:57 | boyscout | 1 commit by Vladimir Sizikov |
| 13:20:58 | boyscout | * Added new rubyspecs for IO#getc and IO#getchar.; 29db340 |
| 13:23:20 | smartocci enters the room. | |
| 13:26:46 | boyscout | 1 commit by Vladimir Sizikov |
| 13:26:47 | boyscout | * One more test for IO#eof?.; 40414ad |
| 13:32:53 | ragge enters the room. | |
| 13:34:58 | antares leaves the room. | |
| 13:39:46 | rubuildius | Vladimir Sizikov: 40414ad1b; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 13:39:47 | rubuildius | Vladimir Sizikov: 29db340f2; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 13:45:14 | wmoxam enters the room. | |
| 13:51:38 | antares enters the room. | |
| 13:59:37 | smartocci leaves the room. | |
| 14:01:19 | smartocci enters the room. | |
| 14:06:54 | notheory leaves the room. | |
| 14:08:42 | dewd enters the room. | |
| 14:12:09 | wmoxam leaves the room. | |
| 14:22:05 | dbussink leaves the room. | |
| 14:22:15 | knowtheory enters the room. | |
| 14:26:03 | geekounet leaves the room. | |
| 14:34:14 | imajes_ enters the room. | |
| 14:34:53 | wmoxam enters the room. | |
| 14:34:56 | RyanTM leaves the room. | |
| 14:35:06 | twshelton leaves the room. | |
| 14:35:58 | probablycorey enters the room. | |
| 14:36:21 | RyanTM enters the room. | |
| 14:38:48 | djwhitt enters the room. | |
| 14:40:56 | Judofyr enters the room. | |
| 14:41:41 | imajes leaves the room. | |
| 14:53:19 | squeegy leaves the room. | |
| 14:53:22 | djwhitt enters the room. | |
| 15:01:12 | dodecaphonic enters the room. | |
| 15:02:29 | moofbong enters the room. | |
| 15:06:56 | skaar enters the room. | |
| 15:13:22 | dbussink enters the room. | |
| 15:16:45 | daikini enters the room. | |
| 15:21:13 | boyscout | 2 commits by Vladimir Sizikov |
| 15:21:14 | boyscout | * New exclusions for rbx.; b4f6c33 |
| 15:21:15 | boyscout | * Added new tests for IO's pos, pos=, rewind, seek on closed streams.; 6030928 |
| 15:33:52 | rubuildius | Vladimir Sizikov: b4f6c33c1; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 15:36:48 | boyscout | 1 commit by Vladimir Sizikov |
| 15:36:49 | boyscout | * Added new rubyspecs for IO#sync and IO#sync=.; cfa1ef2 |
| 15:40:48 | mad_phoenix enters the room. | |
| 15:44:24 | rubyconsumer enters the room. | |
| 15:46:39 | moofbong_ enters the room. | |
| 15:48:51 | rubuildius | Vladimir Sizikov: cfa1ef21c; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 15:49:38 | rubymaverick enters the room. | |
| 16:01:21 | moofbong leaves the room. | |
| 16:01:57 | KirinDave enters the room. | |
| 16:02:00 | d2dchat enters the room. | |
| 16:03:19 | twbray enters the room. | |
| 16:07:26 | boyscout | 1 commit by Vladimir Sizikov |
| 16:07:27 | boyscout | * Added rubyspecs for IO#pid.; a1d7b67 |
| 16:09:30 | GMFlash leaves the room. | |
| 16:09:34 | GMFlash enters the room. | |
| 16:16:23 | twbray leaves the room. | |
| 16:16:24 | enebo enters the room. | |
| 16:17:09 | KirinDave | I'm |
| 16:17:13 | KirinDave | blown away... |
| 16:17:15 | KirinDave | http://www.google.com/patents?id=WE8GAAAAEBAJ&dq=6205469 |
| 16:17:38 | KirinDave | evan: You'd better get on patenting part of rubinius's core api. For protection. |
| 16:18:21 | djwhitt | I'm suprised people didn't already know about that patent |
| 16:18:51 | rubuildius | Vladimir Sizikov: a1d7b6794; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 16:19:13 | KirinDave | It's the kind of patent that eventually gets thrown out as unsupportable. |
| 16:19:21 | boyscout | 1 commit by Vladimir Sizikov |
| 16:19:22 | boyscout | * Added rubyspecs for IO's putc, puts, printf, print and closed streams.; f27fe4f |
| 16:19:38 | djwhitt | I doubt Yahoo would enforce it anyway |
| 16:19:41 | djwhitt | still sucks though |
| 16:20:59 | KirinDave | djwhitt: And if MS buys yahoo!... |
| 16:21:14 | djwhitt | yeah... |
| 16:21:19 | KirinDave | djwhitt: There's another bullet in the gun of ms's anticompetitive engine. |
| 16:21:44 | djwhitt | that's ok I'm not sure if anyone at MS actually knows what a continuation is ;) |
| 16:28:42 | rubymaverick | eh, who wants to use a continuation based web server anyway |
| 16:28:52 | rubuildius | Vladimir Sizikov: f27fe4f3e; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 16:29:24 | KirinDave | djwhitt: That's not true. There are tons of smart people at MS. |
| 16:29:36 | KirinDave | djwhitt: Tons of brilliant people, all throwing their lives away for a monthly paycheck. :) |
| 16:30:00 | KirinDave | That patent applies to rails though. |
| 16:30:18 | KirinDave | Because continuations are the math building block of al control structures. |
| 16:33:02 | djwhitt | KirinDave: yeah, there are plenty of smart people at MS. it's just fun to pretend there aren't |
| 16:34:39 | djwhitt | KirinDave: I'm not sure you could apply that patent Rails |
| 16:34:45 | KirinDave | Why not |
| 16:34:57 | tmpk enters the room. | |
| 16:35:03 | KirinDave | Rails uses functions, which can be reduced to continuations. |
| 16:35:32 | KirinDave | heck, rails uses lambdas, which are just a slight step up from continuations. |
| 16:35:49 | djwhitt | providing continuation functions associated with each of a plurality of links, wherein a continuation function includes a reference to a continuation argument representing a remaining sequence of instructions for subsequent execution; |
| 16:35:51 | djwhitt | that part |
| 16:36:21 | KirinDave | How is that different from tying a link to a routing entry? |
| 16:36:28 | djwhitt | I guess I'd have to read the rest of it to be sure |
| 16:36:40 | KirinDave | I read the whole thing and it seemed unreasonably general to me. |
| 16:36:54 | djwhitt | ah, well, you probably know better than I do then |
| 16:39:16 | djwhitt | I figured it was only talking about using continuations to make requests look like method calls to the programmer |
| 16:39:33 | KirinDave | Heh, how is that any different from rails? :D |
| 16:40:30 | djwhitt | Rails views don't hide that much from you |
| 16:40:36 | djwhitt | you still know you're making HTTP requests |
| 16:40:38 | antares leaves the room. | |
| 16:41:14 | antares enters the room. | |
| 16:42:18 | djwhitt | you can't write something like |
| 16:42:18 | djwhitt | color = |
| 16:42:18 | djwhitt | show_form(color) |
| 16:42:23 | djwhitt | err... sorry incomplete... |
| 16:42:44 | djwhitt | maybe I should just dig up someone else's code to illustrate what I'm talking about |
| 16:43:24 | djwhitt | http://www.seaside.st/about/examples/counter?26&_k=ujUYVvpA&_n&_s=RSOORzBzgfdxLKut |
| 16:43:26 | djwhitt | there we go |
| 16:43:30 | djwhitt | hopefully that link works |
| 16:44:37 | KirinDave | I could trivially recreate that in rails, the code would be nearly identical. |
| 16:44:38 | chris2 leaves the room. | |
| 16:44:47 | chris2 enters the room. | |
| 16:44:48 | KirinDave | I mean, it'd be mostly different in punctuation. |
| 16:45:01 | djwhitt | how are you going to specify the callback? |
| 16:45:10 | KirinDave | With a string. |
| 16:45:23 | KirinDave | In the html |
| 16:45:30 | KirinDave | Oh, for that, it'd be a block. |
| 16:46:02 | KirinDave | All I need is a null route and a bit of code to gloss over said route, and it'd be exactly the same. |
| 16:46:10 | UncleD leaves the room. | |
| 16:46:14 | djwhitt | hmm... I'll take your word for it |
| 16:48:58 | Fullmoon leaves the room. | |
| 16:53:03 | Fullmoon enters the room. | |
| 16:53:24 | KirinDave leaves the room. | |
| 16:53:47 | Fullmoon leaves the room. | |
| 16:56:31 | ctennis leaves the room. | |
| 17:08:47 | agile leaves the room. | |
| 17:10:36 | boyscout | 1 commit by Vladimir Sizikov |
| 17:10:37 | boyscout | * New rubyspecs for IO#ungetc.; 4980bb8 |
| 17:11:51 | noclue123 enters the room. | |
| 17:14:02 | technomancy enters the room. | |
| 17:14:04 | pkondzior leaves the room. | |
| 17:15:06 | antares leaves the room. | |
| 17:17:20 | aotearoa_ enters the room. | |
| 17:23:59 | rubuildius | Vladimir Sizikov: 4980bb83f; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 17:26:30 | Arjen_ leaves the room. | |
| 17:27:17 | sudoer enters the room. | |
| 17:27:56 | aotearoa leaves the room. | |
| 17:32:07 | twbray enters the room. | |
| 17:34:49 | thehcdreamer leaves the room. | |
| 17:40:37 | boyscout | 1 commit by Vladimir Sizikov |
| 17:40:38 | boyscout | * New rubyspecs for IO#to_io.; 3ae3caf |
| 17:41:52 | jessop enters the room. | |
| 17:44:22 | jtoy leaves the room. | |
| 17:44:33 | rue | Nice work on the specs, VVSiz |
| 17:44:50 | VVSiz | :) |
| 17:51:14 | jessop leaves the room. | |
| 17:51:46 | perplexes enters the room. | |
| 17:53:26 | jessop enters the room. | |
| 17:53:52 | rubuildius | Vladimir Sizikov: 3ae3cafcb; 4656 examples, 17066 expectations, 0 failures, 0 errors |
| 18:01:55 | zimbatm leaves the room. | |
| 18:04:10 | Arjen_ enters the room. | |
| 18:08:10 | mad_phoenix leaves the room. | |
| 18:12:42 | mad_phoenix enters the room. | |
| 18:12:43 | mad_phoenix leaves the room. | |
| 18:18:40 | jbarnette enters the room. | |
| 18:22:33 | boyscout | 1 commit by Vladimir Sizikov |
| 18:22:34 | boyscout | * More rubysecs for IO methods invoked on closed streams.; 12e8d88 |
| 18:24:20 | Defiler | I'll bet $20 that those are incredibly specific to particular versions of MRI ;) |
| 18:24:38 | VVSiz | :) |
| 18:24:46 | VVSiz | MRI 1.8.6 p111 is the target |
| 18:25:05 | Defiler | :) |
| 18:25:09 | VVSiz | and actually they are pretty consistent for different versions of MRI 1.8.6, and even MRI 1.9 |
| 18:25:34 | Defiler | Nice |
| 18:27:08 | evan | morning |
| 18:27:09 | evan | ish. |
| 18:27:23 | VVSiz | :) |
| 18:27:41 | zimbatm enters the room. | |
| 18:33:53 | rubuildius | Vladimir Sizikov: 12e8d881b; 4659 examples, 17068 expectations, 0 failures, 0 errors |
| 18:35:46 | imajes leaves the room. | |
| 18:37:17 | octopod leaves the room. | |
| 18:38:08 | headius enters the room. | |
| 18:39:32 | agile enters the room. | |
| 18:41:31 | twbray leaves the room. | |
| 18:42:44 | twbray enters the room. | |
| 18:46:08 | Defiler | brixen: around? |
| 18:47:49 | boyscout | 1 commit by Vladimir Sizikov |
| 18:47:50 | boyscout | * And yet more specs for IO methods with closed streams.; 6e22a99 |
| 18:48:43 | Smirnov | hello all |
| 18:49:17 | evan | allo |
| 18:49:27 | Smirnov | evan: youre project leader Evan Musing, right? |
| 18:49:40 | evan | Evan Phoenix is my name, yeah |
| 18:49:49 | evan | and yeah, I'm project leader. |
| 18:50:03 | Smirnov | wait, why does your site say evan.musing then |
| 18:50:09 | sudoer leaves the room. | |
| 18:50:11 | evan | thats just the name of my blog. |
| 18:50:18 | Smirnov | oh ok, sorry for the confusion :) |
| 18:50:19 | evan | it's a ruby joke. |
| 18:50:24 | djwhitt | I think it's method call on evan |
| 18:50:38 | Smirnov | sorry i wasnt aware of a method caled "musing" that does anything |
| 18:51:15 | fizx enters the room. | |
| 18:52:56 | ragge leaves the room. | |
| 18:53:17 | Smirnov | im a little confused, i get the impression that rubinius is mostly written in Ruby and yet I see there is some C |
| 18:53:25 | fizx leaves the room. | |
| 18:53:41 | djwhitt | the vm is written in C |
| 18:53:56 | drbrain | Smirnov: that's because we haven't gotten rid of the rest of the C yet |
| 18:53:57 | djwhitt | and there are a bunch of libraries for handling math, regexes, etc. that are in C |
| 18:54:42 | dbussink | Defiler: you saw my commit to your branch? |
| 18:54:53 | tarcieri | kind of hard to go from zero to a performant self-hosting implementation |
| 18:55:06 | Smirnov | ooh, i didnt know there was a ruby->C code generator |
| 18:55:16 | djwhitt | I don't think there is yet |
| 18:55:22 | djwhitt | that's a goal though (I think) |
| 18:55:29 | tarcieri | there's something to that effect... a gem for 1.8 |
| 18:55:38 | tarcieri | ruby2c iirc |
| 18:56:27 | tarcieri | ask zenspider about that I guess... looks like he wrote it |
| 18:56:49 | drbrain | yeah |
| 18:56:51 | drbrain | ruby2c |
| 18:56:57 | drbrain | it's not perfect |
| 18:57:53 | Smirnov | ok im thinking about proposing writing an LLVM target for Rubinius for my compilers class semester project. is that something people here would appreciate? |
| 18:58:07 | evan | course! |
| 18:58:18 | evan | have you worked with LLVM at all? |
| 18:58:40 | tarcieri | Smirnov: did you see that explicitly managed stack frames hack I pasted? |
| 18:58:43 | tarcieri | Smirnov: for llvm |
| 18:58:45 | Smirnov | yeah im in a research team for safe C using llvm evan |
| 18:59:08 | tarcieri | evan was saying it's not portable :/ |
| 18:59:09 | Smirnov | tarcieri: nope and i havent the fainteset idea where i would find it |
| 18:59:12 | rubuildius | Vladimir Sizikov: 6e22a9935; 4659 examples, 17068 expectations, 0 failures, 0 errors |
| 18:59:28 | Smirnov | tarcieri: it not portable? the managed stack frames hack? |
| 18:59:43 | tarcieri | Smirnov: http://www.nondot.org/sabre/LLVMNotes/ExplicitlyManagedStackFrames.txt |
| 18:59:50 | evan | Smirnov: yeah, it's a hack that depends on LLVM guaranteeing it uses tailcall |
| 18:59:55 | evan | but LLVM doesn't guarantee that. |
| 19:00:03 | Smirnov | tarcieri: youre not sabre are you? |
| 19:00:08 | tarcieri | no |
| 19:00:15 | Smirnov | tarcieri: oh that url has sabre in it ;) |
| 19:00:38 | Smirnov | evan: ah i think i see the problem |
| 19:01:11 | brixen | Defiler: sup? |
| 19:01:31 | evan | i'm thinking that a mode of rubinius that doesn't support continuations would work fine on LLVM |
| 19:01:37 | Smirnov | tarcieri: you couldve just said you do a CPS transform |
| 19:01:38 | evan | using it's normal call mechanism |
| 19:01:49 | twbray leaves the room. | |
| 19:01:53 | Smirnov | first why do you need to do continuations |
| 19:02:00 | Smirnov | and secondly, theres always the tramopline method |
| 19:02:10 | Smirnov | pardon the spelling, my irssi is a bit slaggy right now |
| 19:02:49 | Smirnov | and third, if people started using tailcall a lot im sure the machine targets could be tweaked to guarantee it |
| 19:03:19 | evan | ok, bbiab. |
| 19:03:21 | evan | quick meeting. |
| 19:04:22 | benburkert enters the room. | |
| 19:05:16 | jkh enters the room. | |
| 19:06:56 | Defiler | brixen: Found it. All good. :) |
| 19:08:34 | dbussink | Defiler: ah, there you are :) |
| 19:08:55 | boyscout | 1 commit by Vladimir Sizikov |
| 19:08:56 | boyscout | * Next batch of IO methods specs with closed streams.; 3d584f0 |
| 19:12:25 | pauldix enters the room. | |
| 19:12:27 | UncleD enters the room. | |
| 19:18:34 | schleyfox enters the room. | |
| 19:18:52 | rubuildius | Vladimir Sizikov: 3d584f0ee; 4660 examples, 17069 expectations, 0 failures, 0 errors |
| 19:23:39 | moofbong enters the room. | |
| 19:26:01 | vruz enters the room. | |
| 19:26:16 | Smirnov | heh multiple VMs? |
| 19:26:20 | pauldix leaves the room. | |
| 19:27:01 | Smirnov | is that going to be the defacto way of using multiple native threads on one ruby prog |
| 19:28:05 | Defiler | Probably not, but it is too soon to say |
| 19:28:47 | drbrain | unlike threads, the VMs don't share state |
| 19:29:16 | Smirnov | oh, but i guess its still better than forking the entire process? |
| 19:30:49 | technomancy | does rubinius target 1.9 compatibility at all? |
| 19:31:16 | drbrain | no |
| 19:33:38 | drbrain | (or, not at present) |
| 19:33:40 | Smirnov | interesting. yarv schooled rubinius in benchmarks on 2/2007 |
| 19:33:50 | technomancy | drbrain: how's gem support coming? |
| 19:33:54 | Smirnov | but looking at the 12/07 benchmarks tehre is no yarv? |
| 19:34:19 | Smirnov | ah thats ecause ruby 1.9 is using yarv |
| 19:34:30 | drbrain | technomancy: 12 failures (minus excluded tests for things like OpenSSL) |
| 19:34:37 | boyscout | 1 commit by Vladimir Sizikov |
| 19:34:38 | boyscout | * And more IO specs.; e64f3b0 |
| 19:34:47 | drbrain | YARV is no more, it's called 'ruby' now |
| 19:34:58 | technomancy | drbrain: great work; rock on |
| 19:35:04 | Smirnov | thats pretty scary. those are damn good benchmarks compared to the ruby interpreter |
| 19:36:13 | drbrain | some of the failing tests are just bad tests |
| 19:36:19 | drbrain | and there's a problem with YAML |
| 19:36:26 | probablycorey leaves the room. | |
| 19:36:54 | Smirnov | i wasnt tthinking about the bfails, i was thinking about the performance |
| 19:37:00 | chris2 leaves the room. | |
| 19:40:06 | evan | back. |
| 19:40:16 | evan | Smirnov: you should look at the more recent benchmarks |
| 19:40:25 | moofbong_ leaves the room. | |
| 19:40:28 | evan | Smirnov: a year ago, we weren't even compiling the VM with optimizations. |
| 19:40:43 | evan | so that data is totally invalid against todays work. |
| 19:40:47 | Smirnov | yeah i was looking at the 12/07 one. thats prettty recent |
| 19:40:52 | evan | yeah |
| 19:40:55 | Smirnov | http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout/ |
| 19:40:57 | evan | yep |
| 19:41:28 | Smirnov | hey now that youre back can you answer my question about why you need CPS transforms |
| 19:41:30 | headius | hey, evan, I noticed you moved another function into primitives |
| 19:42:08 | headius | more perf I assume, but we've been wanting to revisit rubinius on JVM/JRuby and that boundary between ruby and C keeps moving toward more C |
| 19:42:14 | wmoxam leaves the room. | |
| 19:42:19 | headius | can we expect that to continue? |
| 19:42:43 | drbrain | headius: probably |
| 19:43:58 | evan | headius: which? |
| 19:44:00 | rubuildius | Vladimir Sizikov: e64f3b024; 4660 examples, 17069 expectations, 0 failures, 0 errors |
| 19:44:28 | Defiler | evan: pwnage: http://rafb.net/p/mxOEvu28.html |
| 19:44:39 | headius | I saw a rehash operation moved into a primitive a couple days ago |
| 19:44:45 | headius | I didn't dig into it |
| 19:44:51 | evan | Defiler: dope. |
| 19:45:01 | evan | headius: it got reverted, but yeah. |
| 19:45:09 | evan | that was exposing a rehash function the VM already has |
| 19:45:16 | headius | reverted because of breakage? |
| 19:45:31 | evan | yeah |
| 19:45:37 | evan | not that particular change, but something eles in the commit. |
| 19:45:48 | evan | i need to revisit those commits and figure out what was wrong. |
| 19:46:42 | Smirnov | hmm looks like theres some potential for optimization by using C stack frames when possible :P |
| 19:46:56 | pkondzior enters the room. | |
| 19:47:00 | aotearoa_ leaves the room. | |
| 19:47:03 | pkondzior leaves the room. | |
| 19:47:13 | headius | hmm ok...well we're still keen on making rubinius work on jvm or on jruby...once we get some time and things settle down a bit |
| 19:47:38 | headius | john rose is also very interested in making enhancements to the JVM to support arbitrary bytecode engines running on top of it |
| 19:47:54 | Defiler | That sounds fun |
| 19:48:03 | headius | so that hotspot can JIT the main engine logic directly into native code |
| 19:48:25 | headius | it's just not a use case they've had interest in before |
| 19:53:20 | obvio enters the room. | |
| 19:53:37 | wmoxam enters the room. | |
| 19:54:43 | imajes enters the room. | |
| 19:55:14 | jkh leaves the room. | |
| 19:56:34 | Defiler | Haha here is a fun one |
| 19:56:36 | Defiler | http://rafb.net/p/tZ2Te139.html |
| 19:56:53 | Defiler | evan: Does that paste look like we still have a problem with storing large numbers in the bytecode? |
| 19:57:04 | Defiler | (-C does not clear out the 'shared' specs) |
| 19:57:14 | pauldix enters the room. | |
| 19:57:36 | pauldix leaves the room. | |
| 19:57:59 | evan | Defiler: i can't tell from it. |
| 19:58:19 | headius leaves the room. | |
| 19:58:29 | jkh enters the room. | |
| 19:59:14 | evan | jkh: hi there. |
| 19:59:15 | jkh leaves the room. | |
| 19:59:15 | Defiler | Yeah, I get even more failures without -C.. looks like they pass fine when they compile and run in the same execution |
| 19:59:19 | Defiler | fun |
| 19:59:57 | octopod enters the room. | |
| 20:00:01 | boyscout | 1 commit by Vladimir Sizikov |
| 20:00:03 | boyscout | * Add more IO specs. God, make it stop!; 1586e3a |
| 20:00:10 | be9 leaves the room. | |
| 20:00:25 | w1PoG8tU enters the room. | |
| 20:00:25 | UncleD leaves the room. | |
| 20:00:36 | UncleD leaves the room. | |
| 20:00:50 | UncleD enters the room. | |
| 20:01:44 | jkh enters the room. | |
| 20:01:48 | evan | jkh: hi there. |
| 20:02:43 | drbrain | evan: haha |
| 20:03:27 | Smirnov | whats with these goto instructions? is it like the asm JMP? or more restricted? |
| 20:05:18 | evan | Smirnov: where? |
| 20:05:28 | Smirnov | http://rubini.us/doc/vm/op_codes/goto.html |
| 20:05:31 | evan | the VM goto? |
| 20:05:38 | evan | they're used to implement control structures. |
| 20:05:47 | evan | it's not any location |
| 20:05:50 | Smirnov | yes but what bout contexts etc |
| 20:05:59 | evan | it's restricted to that method. |
| 20:06:00 | Smirnov | blocks even |
| 20:06:04 | jkh leaves the room. | |
| 20:06:09 | evan | doesn't impact them at all. |
| 20:06:14 | evan | it's not a machine code goto. |
| 20:06:19 | Smirnov | oh all right |
| 20:07:43 | Smirnov | so add_method is the only instruction to add methods? |
| 20:07:53 | geekounet leaves the room. | |
| 20:08:12 | lstoll leaves the room. | |
| 20:08:26 | geekounet enters the room. | |
| 20:08:53 | rubuildius | Vladimir Sizikov: 1586e3a2c; 4661 examples, 17070 expectations, 0 failures, 0 errors |
| 20:11:35 | evan | Smirnov: attach_method as well |
| 20:11:44 | evan | Smirnov: those are currently only used in bootstrapping. |
| 20:11:52 | Smirnov | evan: meaning what? |
| 20:12:01 | evan | they're only used when running the code in kernel/ |
| 20:12:15 | evan | any other code calls a method to add a method |
| 20:12:37 | Smirnov | are you talking about #define_method |
| 20:12:47 | evan | no |
| 20:12:59 | evan | it uses a different method. |
| 20:13:13 | evan | for 'def blah; true; end' |
| 20:13:18 | evan | the compiler outputs |
| 20:13:35 | evan | self.__add_method__(:blah, <A compiled method object>) |
| 20:13:42 | Smirnov | aha |
| 20:13:46 | Smirnov | why would it do that though? |
| 20:14:03 | evan | lets it do work that the VM doesn't |
| 20:14:12 | evan | like fixing up visibility of the method. |
| 20:14:24 | Smirnov | private/protected/public ? |
| 20:14:48 | evan | yep. |
| 20:14:58 | evan | the zero-arg versions specificly |
| 20:15:07 | Smirnov | why not let the VM do that though? it seems generating dynamically dispatching code in this case is unnecessary |
| 20:15:09 | evan | check out kernel/core/module.rb |
| 20:15:19 | evan | because i want to make the VM as small as possible. |
| 20:16:16 | Smirnov | i see |
| 20:18:46 | aotearoa enters the room. | |
| 20:19:17 | Judofyr leaves the room. | |
| 20:21:55 | ragge enters the room. | |
| 20:24:08 | headius enters the room. | |
| 20:25:04 | ezmobius_ enters the room. | |
| 20:25:37 | Defiler | dbussink: So yeah, I saw your commit. Sadly I had already done the same thing locally before seeing it. :) |
| 20:26:36 | Defiler | dbussink: We even named our variables the same. Scary |
| 20:27:10 | d2dchat leaves the room. | |
| 20:27:27 | d2dchat enters the room. | |
| 20:28:50 | Judofyr enters the room. | |
| 20:30:01 | radarek enters the room. | |
| 20:32:48 | Defiler | dbussink: OK.. could you try pulling the update I just pushed to wilson64? It required some fancier 'git' stuff than I am used to, so I want to make sure it didn't melt |
| 20:38:37 | wmoxam | /join #ubuntu |
| 20:38:42 | Defiler | evan: What tools do we have to help me verify that the on-disk bytecode is correct for a given piece of code? |
| 20:39:25 | wmoxam | oops |
| 20:45:54 | evan | Defiler: well. |
| 20:46:14 | evan | Defiler: you can use CompiledMethod.load_from_file |
| 20:46:19 | evan | give it a path, and 0 |
| 20:46:21 | evan | then call |
| 20:46:24 | evan | #decode on it. |
| 20:47:52 | Defiler | That sounds good. Cool. |
| 20:51:34 | Defiler | haha wow this is a cool bug |
| 20:52:06 | Defiler | http://rafb.net/p/DJFBDX75.html |
| 20:52:33 | evan | weird |
| 20:52:35 | evan | it's random? |
| 20:52:44 | Defiler | Nope. Every subsequent run is wrong |
| 20:52:44 | evan | or the 2nd time it was loaded off disk |
| 20:52:51 | daikini leaves the room. | |
| 20:52:55 | Defiler | 'describe' shows the correcet bytecode, however |
| 20:53:01 | evan | so the VM marshal process is screwing something up |
| 20:53:03 | Defiler | push_literal with the 115blahblah number |
| 20:53:20 | evan | odd.. |
| 20:56:21 | Defiler | Oh yeah, that is handy: http://rafb.net/p/cHUvXf73.html |
| 20:56:37 | Defiler | @args in push_literal is truncated |
| 20:57:59 | daikini enters the room. | |
| 21:04:30 | headius | evan: you need to send a cease and desist to ironruby to get them to stop using rbx as their executable name |
| 21:04:36 | headius | they're still doing it |
| 21:04:40 | evan | i was thinking that |
| 21:05:13 | Defiler | Or we could change to something radder |
| 21:05:14 | Defiler | like bmx |
| 21:05:29 | evan | well, rbx isn't just a program, it's our short name. |
| 21:05:36 | evan | for them, it's a random program name. |
| 21:05:43 | evan | headius: who should I email about that? |
| 21:06:12 | evan | jon i guess.. |
| 21:06:42 | headius | yeah, just email john |
| 21:07:06 | headius | it's just annoying, because it's a nice short name and you got to it first |
| 21:07:51 | Defiler | evan: Why does RegexpLiteral call 'add_literal', while NumberLiteral does not? I am trying to track down where the actual numeric literal gets added to the literals table |
| 21:09:21 | evan | headius: ok, sent him an email. |
| 21:09:43 | evan | Defiler: because there are a couple of ways a number can be encoded |
| 21:09:53 | evan | there are the meta instructions for -1, 0, 1, 2 |
| 21:10:03 | evan | then there is the inline int, for small integers |
| 21:10:06 | evan | finally, the literal. |
| 21:10:23 | lopex enters the room. | |
| 21:10:30 | evan | i should go grab some lunch. |
| 21:10:32 | evan | brb. |
| 21:10:37 | Defiler | The push_literal calls that occurs for those larger numbers doesn't seem to call add_literal, though |
| 21:10:53 | Defiler | Oh duh. find_literal handles it. |
| 21:11:13 | Defiler | Also, it is still the correct value that far in, so it must be something in the marshal or unmarshal. whee |
| 21:13:30 | boyscout | 1 commit by Vladimir Sizikov |
| 21:13:31 | boyscout | * Moved one IO#inspect spec to File#inspect specs.; e33350e |
| 21:22:40 | headius leaves the room. | |
| 21:23:57 | rubuildius | Vladimir Sizikov: e33350edd; 4661 examples, 17070 expectations, 0 failures, 0 errors |
| 21:24:10 | headius enters the room. | |
| 21:36:44 | evan | so, IronRuby has been planning on changing the name to ir.exe for a while anyway |
| 21:36:51 | evan | hopefully this will push them along. |
| 21:37:19 | headius | ok |
| 21:37:22 | headius | ir. |
| 21:37:36 | headius | should be ferb |
| 21:37:40 | Defiler | hah yes |
| 21:37:44 | headius | ferb is better |
| 21:37:58 | evan | ferb? |
| 21:38:02 | Defiler | Fe == iron |
| 21:38:09 | evan | hah |
| 21:38:13 | evan | you guys are so clever. |
| 21:38:28 | hornbeck | haha |
| 21:38:40 | hornbeck | bunch of nerds |
| 21:38:45 | evan | seriously. |
| 21:38:46 | RyanTM leaves the room. | |
| 21:39:47 | Judofyr leaves the room. | |
| 21:40:28 | RyanTM enters the room. | |
| 21:44:06 | agardiner enters the room. | |
| 21:49:52 | Defiler | OK, I am going to push these 64bit fixes to master |
| 21:50:03 | Defiler | Presumably this will not cause a fire, but hey |
| 21:51:25 | evan | do it. |
| 21:51:41 | Defiler | waiting on a distclean after the merge to make sure it still works |
| 21:51:45 | evan | battens down the hatchs |
| 21:55:16 | Defiler | Hrm. When I merge to master I get this error load |