Show enters and exits. Hide enters and exits.
| 00:06:52 | d2dchat leaves the room. | |
| 00:07:39 | d2dchat enters the room. | |
| 00:24:19 | d2dchat leaves the room. | |
| 00:25:44 | benstiglitz leaves the room. | |
| 00:25:49 | imajes leaves the room. | |
| 00:26:15 | seydar enters the room. | |
| 00:29:51 | benstiglitz enters the room. | |
| 00:29:55 | walks leaves the room. | |
| 00:40:07 | seydar leaves the room. | |
| 00:52:35 | benstiglitz leaves the room. | |
| 00:52:38 | imajes enters the room. | |
| 00:56:29 | AndrewO enters the room. | |
| 01:00:19 | jtoy enters the room. | |
| 01:03:00 | trythil leaves the room. | |
| 01:07:17 | webmat leaves the room. | |
| 01:07:52 | dctanner enters the room. | |
| 01:08:19 | dctanner leaves the room. | |
| 01:23:52 | lstoll leaves the room. | |
| 01:24:12 | evan | ok, just pushed more cpp code. |
| 01:25:38 | agardiner | neat! |
| 01:25:44 | agardiner | goes to look |
| 01:27:05 | jtoy leaves the room. | |
| 01:32:04 | evan | it's got libev code now |
| 01:32:09 | evan | it's not all wired into the VM |
| 01:32:18 | evan | but it's got fleshed out C++ classes to perform the work we want. |
| 01:32:29 | agardiner | yeah, looks a lot neater |
| 01:32:36 | agardiner | classes really help the organisation |
| 01:32:39 | evan | yeah |
| 01:32:42 | djwhitt | evan: just curious how far are you through the C++ conversion at this point? |
| 01:33:10 | evan | now that libev is working |
| 01:33:14 | evan | i'm going to move on to marshal |
| 01:33:25 | dlee | are you rewriting all of the VM into C++? |
| 01:33:25 | agardiner | excellent |
| 01:33:29 | dlee | or just certain sections? |
| 01:33:36 | evan | dlee: all |
| 01:33:44 | dlee | yay |
| 01:33:55 | dlee | i like C++ better than C |
| 01:34:08 | evan | marshal, then execution, then primitives. |
| 01:34:11 | dlee | what's your reason for rewriting it? |
| 01:34:18 | evan | i've already begun to abstract things |
| 01:34:40 | evan | like the libev code just calls the call() method with information |
| 01:34:50 | evan | so the libev code is now abstracted away from knowing about Channels even |
| 01:35:04 | agardiner | dlee: see http://betterruby.wordpress.com/2008/04/11/shotgun-rewrite-underway/ for a summary |
| 01:35:12 | dlee | agardiner: thanks |
| 01:35:15 | agardiner | np |
| 01:35:41 | evan | dlee: the big original reason was that i was having to basically completely redo call conventions |
| 01:35:47 | evan | dlee: and we had no tets |
| 01:35:51 | evan | tests |
| 01:36:11 | evan | the current shotgun is a patched up architecture of my original thinking |
| 01:36:14 | agardiner | hehe |
| 01:36:15 | evan | which has changed in the last 2 years |
| 01:36:42 | dlee | i remember watching a talk you did where you said you've gone through several rewrites |
| 01:36:43 | evan | so the C++ VM flushes all the cruft out, standardizes things, abstracts things, and tests them. |
| 01:36:45 | dlee | what # is this? |
| 01:36:47 | evan | um. |
| 01:36:48 | evan | lets see. |
| 01:36:52 | crafterm enters the room. | |
| 01:36:59 | evan | this is #4 |
| 01:37:04 | agardiner | morning crafterm |
| 01:37:14 | crafterm | agardiner: gday mate, hows it going? |
| 01:37:21 | agardiner | good! you? |
| 01:37:27 | crafterm | good mate, all well! |
| 01:38:01 | dlee | will it be over once you're done with primitives? |
| 01:39:04 | evan | i'm leaving subtend til the end |
| 01:39:08 | evan | because it needs the most work |
| 01:39:16 | evan | the current subtend arch is flawed. |
| 01:39:25 | evan | so i'm going to get everyone up and running on the new VM |
| 01:39:28 | evan | then tackle subtend. |
| 01:39:39 | evan | since we don't use subtend a lot right now anyways. |
| 01:40:18 | dlee | will subtend be a C API still? |
| 01:40:22 | evan | agardiner: good write up |
| 01:40:24 | evan | dlee: yep |
| 01:40:31 | agardiner | thanks! |
| 01:40:35 | evan | subtend will still be a C api for extensions to use |
| 01:40:57 | dlee | will you make subtend++? :) |
| 01:41:03 | evan | a good question |
| 01:41:34 | dlee | maybe we'll just wait for rewrite #5 |
| 01:41:39 | dlee | done in garnet! |
| 01:46:56 | evan | rice, which is a C++ api for ruby, was linked to a couple days ago |
| 01:47:00 | evan | there is another C++ wrapper for ruby |
| 01:47:13 | evan | since there is no 'standard', we'll see. |
| 01:53:48 | stepheneb enters the room. | |
| 01:53:58 | ttmrichter enters the room. | |
| 01:56:10 | lopex leaves the room. | |
| 02:05:57 | jtoy enters the room. | |
| 02:08:46 | jtoy leaves the room. | |
| 02:12:51 | yugui enters the room. | |
| 02:14:28 | dewd leaves the room. | |
| 02:16:58 | agile enters the room. | |
| 02:17:29 | GMFlash leaves the room. | |
| 02:17:38 | GMFlash enters the room. | |
| 02:23:59 | jtoy enters the room. | |
| 02:25:48 | VVSiz_ enters the room. | |
| 02:28:38 | VVSiz leaves the room. | |
| 02:34:53 | stepheneb_ enters the room. | |
| 02:36:52 | stepheneb leaves the room. | |
| 02:40:27 | madsimian enters the room. | |
| 02:42:06 | _VVSiz_ enters the room. | |
| 02:44:00 | KirinDav leaves the room. | |
| 02:44:06 | VVSiz enters the room. | |
| 02:45:42 | yugui leaves the room. | |
| 02:47:21 | wubo leaves the room. | |
| 02:50:51 | evan | ar has been c++ized |
| 02:53:07 | VVSiz leaves the room. | |
| 02:53:34 | VVSiz enters the room. | |
| 02:54:55 | fbuilesv enters the room. | |
| 02:59:11 | djwhitt | ah, I see. the test runner thing is generated |
| 02:59:45 | vborja enters the room. | |
| 02:59:47 | djwhitt | I was slightly confused by the giant red section in the diff :) |
| 03:00:03 | _VVSiz_ leaves the room. | |
| 03:00:28 | VVSiz_ leaves the room. | |
| 03:07:30 | evan | heh |
| 03:08:03 | tarcieri | hey evan... MenTaLguY was running into a race implementing Actor.receive and I was wondering if you had suggestions for how to solve it |
| 03:08:18 | evan | um.. |
| 03:08:21 | evan | whats the race? |
| 03:09:18 | tarcieri | the race is waiting for both inter-Actor messages and the timeout message from Scheduler.send_in_microseconds... the timeout should override the other message if it fires first, but the other message will still live on the Channel |
| 03:09:41 | tarcieri | One solution is to tag the timeout messages with UUIDs, but uhh, yeah, same problem with sending arbitrary objects |
| 03:10:39 | evan | hm |
| 03:10:41 | tarcieri | it's not so much a race as how to implement the proper message handling semantics |
| 03:10:50 | evan | could you detail the events as they occur? |
| 03:10:51 | evan | to me |
| 03:10:54 | evan | i don't see the race yet. |
| 03:11:19 | tarcieri | well, the main problem I suppose is: |
| 03:11:43 | tarcieri | both a normal message and a timeout message are delivered to the channel before an Actor resumes |
| 03:12:17 | tarcieri | Receiving a normal message overrides the timeout |
| 03:12:24 | evan | overrides? |
| 03:12:36 | tarcieri | For which handler Actor.receive calls |
| 03:12:52 | tarcieri | If it got the message before the timeout, the timeout handler isn't called, and the message handler which matches that message is |
| 03:13:09 | tarcieri | The timeout message in the channel is ignored |
| 03:14:28 | tarcieri | I mean, the easiest way to fix that is an ID for the current Actor.receive call... and flag the timeout message with that ID... if the ID doesn't match the one for the present call the message is ignored |
| 03:15:17 | evan | i don't seem to know enough about the Actor code to understand the problem |
| 03:16:13 | tarcieri | Actor.receive is selective... you handle it a set of filters which each match to a particular action... and you can also hand it a timeout which maps to a particular action |
| 03:16:44 | tarcieri | If it gets any message which matches the filter before the length of the timeout, then the action for the filter is called |
| 03:17:52 | tarcieri | I believe MenTaLguY was running into a case where he was getting both a message that matched the filter and a timeout message before the Actor was resumed, which resulted in the next call to Actor.receive thinking a timeout had fired |
| 03:18:24 | tarcieri | It somehow needs to clear any timeout messages in the Channel after a call to Actor.receive |
| 03:18:44 | evan | you can clear a channel |
| 03:18:56 | tarcieri | Selectively clear? |
| 03:19:48 | tarcieri | Like uhh, Channel#delete_if or something |
| 03:21:16 | evan | what would the condition be? |
| 03:21:33 | evan | whats putting stuff in the Channel for the timeout? |
| 03:21:34 | tarcieri | If it's a timeout message |
| 03:21:41 | tarcieri | Scheduler |
| 03:21:52 | evan | ok o. |
| 03:21:55 | evan | ok ok. |
| 03:22:04 | evan | so the same channel is used by the remote Actor and be the scheduler |
| 03:22:10 | evan | it's handed to both places |
| 03:22:19 | tarcieri | Yeah |
| 03:22:22 | evan | but there is times where both sides will still fire. |
| 03:22:27 | tarcieri | yes |
| 03:22:52 | evan | ok, i see the use of Ids now |
| 03:23:05 | evan | you'd know to discard something in the Channel if it's not your id |
| 03:23:16 | tarcieri | So if Actor.receive gets a message, it needs to clear the timeout if it was received, without clearing any other inter-Actor messages |
| 03:23:34 | evan | i guess the remote side can't cancel with the Scheduler |
| 03:23:37 | evan | that's backwards. |
| 03:23:49 | evan | right. |
| 03:23:55 | tarcieri | Well, it'd have to run the Mailbox filter |
| 03:24:01 | tarcieri | To know if the message actually matched |
| 03:24:05 | tarcieri | that'd be bassackwards |
| 03:24:29 | evan | there's not much I can think of to do to prevent the race at the Scheduler level |
| 03:24:41 | trythil enters the room. | |
| 03:24:45 | KirinDav enters the room. | |
| 03:25:08 | tarcieri | evan: about all I can think of would be a non-"blocking" receive for Channels |
| 03:25:17 | evan | you can do that too |
| 03:25:21 | tarcieri | oh yeah? |
| 03:25:25 | evan | just read the Channel's value directly |
| 03:25:31 | tarcieri | oh |
| 03:25:32 | tarcieri | hmmm |
| 03:25:47 | evan | it's a List, so you'd need to shift it off if you want remove it |
| 03:25:55 | tarcieri | you could just have it process all messages in the Channel whenever Actor.receive gets any messages |
| 03:26:04 | tarcieri | and discard any timeouts... leaving the channel clean for the next call |
| 03:26:13 | evan | maybe having the Scheduler itself sending messages directly to Actor's is the wrong way |
| 03:26:22 | tarcieri | nah, ^^^ is pretty clean, I think |
| 03:26:34 | evan | maybe there should be a Thread thats calculating the min time to sleep |
| 03:26:44 | evan | and can control the flow of things better |
| 03:27:00 | evan | who 'owns' the Channel? |
| 03:27:04 | evan | the receiving Actor? |
| 03:27:04 | tarcieri | the Actor |
| 03:27:06 | tarcieri | yeah |
| 03:27:30 | evan | well, seems like adding ids would be useful |
| 03:27:34 | tarcieri | the problem really stemmed from having a bunch of messages sitting around in the Channel between Actor.receive calls |
| 03:27:39 | evan | because people will just end up adding them on top anyway |
| 03:27:47 | tarcieri | yeah |
| 03:27:49 | evan | so give them ids to use, and you can use them internally |
| 03:27:54 | tarcieri | but I mean |
| 03:28:05 | tarcieri | having it send you the arbitrary object of your choice accomplishes that and more |
| 03:28:15 | evan | right |
| 03:28:18 | evan | i was about to say that |
| 03:28:23 | lstoll enters the room. | |
| 03:28:27 | evan | have Scheduler take an object at schedule time |
| 03:28:31 | tarcieri | you can have a common method on all those objects to handle the event |
| 03:28:32 | evan | and spit it back on the Channel later |
| 03:28:41 | evan | esp. since the time value is nil, ie, useless |
| 03:28:48 | tarcieri | yeah |
| 03:29:10 | tarcieri | MenTaLguY also noted it means nil can't be an inter-Actor message that way |
| 03:29:19 | evan | right |
| 03:29:19 | dlee enters the room. | |
| 03:29:30 | evan | thats something i've been thinking about changing |
| 03:29:52 | evan | making it so that whenever the Scheduler puts something on a Channel, it puts on a like a Scheduler::Value object |
| 03:29:56 | evan | or something |
| 03:30:06 | evan | something that you can use to tell what kind of thing this is from |
| 03:30:15 | tarcieri | well, again an arbitrary object would work |
| 03:30:20 | tarcieri | you could have... |
| 03:30:21 | tarcieri | :timeout |
| 03:30:25 | tarcieri | and T[:actor, msg] |
| 03:30:28 | evan | in an array? |
| 03:30:32 | tarcieri | err, Tuple |
| 03:30:33 | tarcieri | heh |
| 03:30:46 | evan | yeah, tuple is the cheapest to do that with |
| 03:30:58 | evan | tuple, object with a few ivars, array |
| 03:31:03 | evan | is the expense order |
| 03:31:56 | tarcieri | yeah cool |
| 03:32:18 | tarcieri | well I'll see if I can implement timeouts properly by just clearing the channel between Actor.receive calls |
| 03:32:59 | evan | ok |
| 03:33:10 | evan | when you get a chance |
| 03:33:24 | evan | you should email me a list of your ideal scheduler operations |
| 03:33:30 | evan | so that I can be sure that we've got everything |
| 03:33:48 | tarcieri | I mean, it's really just being able to pass an arbitrary object to be sent on a given event |
| 03:34:33 | evan | yeah |
| 03:38:01 | wmoxam enters the room. | |
| 03:38:45 | obiejuan leaves the room. | |
| 03:40:43 | enebo leaves the room. | |
| 03:44:34 | stepheneb_ leaves the room. | |
| 03:44:56 | stepheneb enters the room. | |
| 03:57:56 | stepheneb_ enters the room. | |
| 04:00:55 | wmoxam leaves the room. | |
| 04:01:00 | obvio171 enters the room. | |
| 04:05:32 | obvio leaves the room. | |
| 04:12:32 | crafterm leaves the room. | |
| 04:18:16 | d2dchat enters the room. | |
| 04:18:31 | stepheneb leaves the room. | |
| 04:18:59 | KirinDav leaves the room. | |
| 04:19:28 | tarcieri | evan: ever figure out what was up with libev? |
| 04:19:38 | GMFlash leaves the room. | |
| 04:19:48 | GMFlash enters the room. | |
| 04:22:31 | enebo enters the room. | |
| 04:26:00 | ezmobius leaves the room. | |
| 04:30:09 | dlee leaves the room. | |
| 04:32:06 | xif leaves the room. | |
| 04:32:24 | elight enters the room. | |
| 04:32:44 | AndrewO leaves the room. | |
| 04:33:48 | crafterm enters the room. | |
| 04:38:18 | xif enters the room. | |
| 04:44:25 | MenTaLguY enters the room. | |
| 04:44:28 | KirinDav enters the room. | |
| 04:47:00 | enebo leaves the room. | |
| 04:58:55 | KirinDav leaves the room. | |
| 04:59:35 | MenTaLguY leaves the room. | |
| 04:59:54 | MenTaLguY enters the room. | |
| 05:00:49 | KirinDav enters the room. | |
| 05:01:54 | kw enters the room. | |
| 05:03:08 | wmoxam enters the room. | |
| 05:26:40 | xmlhacker leaves the room. | |
| 05:26:59 | xmlhacker enters the room. | |
| 05:28:25 | RyanTM leaves the room. | |
| 05:28:33 | KirinDav leaves the room. | |
| 05:33:44 | wmoxam leaves the room. | |
| 05:39:55 | yugui enters the room. | |
| 05:40:20 | elight leaves the room. | |
| 05:40:59 | Gerardo enters the room. | |
| 05:41:19 | Gerardo | hey brixen, rue |
| 05:43:54 | dysinger leaves the room. | |
| 05:44:57 | imajes leaves the room. | |
| 05:48:33 | Gerardo leaves the room. | |
| 05:50:16 | dysinger enters the room. | |
| 05:51:49 | gerardo enters the room. | |
| 05:53:20 | brixen | Gerardo: sup? |
| 05:53:52 | Gerardo | I was fixing some problems in shotgun/external_libs |
| 05:54:15 | Gerardo | I sent a patch for ltmain.sh |
| 05:54:43 | Gerardo | but, maybe it would be a better idea to patch the script that generated ltmain.sh |
| 05:55:06 | brixen | k |
| 05:55:07 | Gerardo | the problem is, I can't find it in the repository |
| 05:55:10 | gnufied leaves the room. | |
| 05:55:15 | brixen | I see LH update got rolled out |
| 05:55:45 | brixen | Gerardo: what ticket number? |
| 05:55:56 | Gerardo | #493 |
| 05:57:56 | brixen | hmm, ok |
| 05:58:41 | brixen | I'm actually in the middle of doing taxes atm, so I can maybe answer an easy question |
| 05:58:43 | be9 enters the room. | |
| 06:00:13 | Gerardo | just if the patch for ltmain.sh is ok |
| 06:00:43 | Gerardo | or if the the script that generates ltmain.sh should be patched. But then, it should be uploaded. |
| 06:00:46 | yugui leaves the room. | |
| 06:00:47 | Gerardo | I suppose |
| 06:02:19 | Gerardo | I'm about to go to bed |
| 06:02:28 | Gerardo | talk to you later |
| 06:11:45 | boyscout | 2 commits by Adam Gardiner |
| 06:11:46 | boyscout | * Define __ivars__ to return nil for classes without ivars; e579074 |
| 06:11:47 | boyscout | * Fix exception handling in breakpoint/debugger; d3df0d9 |
| 06:12:10 | rue | Meh, I feel like hell |
| 06:12:28 | agardiner | not well? |
| 06:12:57 | rue | Really tired the last two days. Yesterday I was only awake for like 8 hours. Going to the doc tomorrow |
| 06:13:31 | agardiner | 8 hours! that's not like you... |
| 06:18:26 | ezmobius enters the room. | |
| 06:22:34 | rue | It is about 10 hours short :P |
| 06:23:08 | agardiner | hmmm... maybe that's why you got sick?!? ;-) |
| 06:23:46 | rubuildius_ppc | Adam Gardiner: e579074b4; 1995 files, 6503 examples, 22643 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/180902 |
| 06:29:39 | stepheneb_ leaves the room. | |
| 06:30:05 | rue | Nah |
| 06:33:08 | benburkert leaves the room. | |
| 06:48:10 | hornbeck leaves the room. | |
| 07:00:05 | mentz enters the room. | |
| 07:00:26 | jero5 leaves the room. | |
| 07:02:50 | KirinDav enters the room. | |
| 07:16:20 | trythil_ enters the room. | |
| 07:16:21 | trythil leaves the room. | |
| 07:16:59 | rby enters the room. | |
| 07:17:34 | benburkert enters the room. | |
| 07:18:37 | rby leaves the room. | |
| 07:21:56 | KirinDav leaves the room. | |
| 07:30:38 | dysinger leaves the room. | |
| 07:35:48 | benburkert leaves the room. | |
| 07:37:24 | benburkert enters the room. | |
| 07:44:08 | yugui enters the room. | |
| 07:45:02 | yugui leaves the room. | |
| 07:52:42 | wycats_ leaves the room. | |
| 07:54:01 | d2dchat leaves the room. | |
| 07:56:21 | therealadam leaves the room. | |
| 07:58:20 | therealadam enters the room. | |
| 08:01:01 | dlee enters the room. | |
| 08:14:02 | Maledictus enters the room. | |
| 08:15:19 | wycats enters the room. | |
| 08:16:43 | kw leaves the room. | |
| 08:16:43 | therealadam leaves the room. | |
| 08:17:16 | therealadam enters the room. | |
| 08:18:08 | thehcdreamer enters the room. | |
| 08:22:16 | rudebwoy leaves the room. | |
| 08:26:33 | trythil_ leaves the room. | |
| 08:31:45 | agardiner leaves the room. | |
| 08:35:01 | anonuser leaves the room. | |
| 08:35:06 | anonuser enters the room. | |
| 08:42:46 | Skip enters the room. | |
| 08:46:54 | kevwil enters the room. | |
| 08:47:23 | kevwil leaves the room. | |
| 08:52:22 | dlee leaves the room. | |
| 08:55:06 | ezmobius leaves the room. | |
| 08:55:31 | octopod enters the room. | |
| 08:56:55 | lstoll leaves the room. | |
| 09:01:01 | crafterm leaves the room. | |
| 09:01:39 | w1rele55 enters the room. | |
| 09:02:30 | dysinger enters the room. | |
| 09:04:33 | mutle enters the room. | |
| 09:08:05 | TheVoice leaves the room. | |
| 09:10:46 | OnO enters the room. | |
| 09:11:26 | cypher23 enters the room. | |
| 09:11:35 | mentz_ enters the room. | |
| 09:14:17 | benburkert leaves the room. | |
| 09:17:32 | mentz leaves the room. | |
| 09:26:34 | TheVoice enters the room. | |
| 09:26:38 | TheVoice leaves the room. | |
| 09:37:31 | dysinger leaves the room. | |
| 09:52:05 | BlackEdder enters the room. | |
| 09:56:14 | qwert666 enters the room. | |
| 09:56:57 | antares enters the room. | |
| 10:03:18 | dewd enters the room. | |
| 10:06:41 | lstoll enters the room. | |
| 10:17:38 | anon enters the room. | |
| 10:17:57 | anonuser leaves the room. | |
| 10:24:05 | Arjen_ enters the room. | |
| 10:38:41 | rubuildius_ppc leaves the room. | |
| 10:47:04 | naeu enters the room. | |
| 11:04:37 | imajes enters the room. | |
| 11:09:05 | jtoy leaves the room. | |
| 11:10:25 | mutle leaves the room. | |
| 11:10:49 | mutle enters the room. | |
| 11:33:30 | obvio leaves the room. | |
| 11:36:54 | obvio enters the room. | |
| 11:39:26 | webmat enters the room. | |
| 11:44:24 | imajes leaves the room. | |
| 11:48:33 | bthatswho enters the room. | |
| 11:50:51 | benny leaves the room. | |
| 12:00:58 | BlackEdder leaves the room. | |
| 12:03:13 | naeu leaves the room. | |
| 12:26:26 | obvio171 enters the room. | |
| 12:28:48 | jtoy enters the room. | |
| 12:30:33 | hornbeck enters the room. | |
| 12:40:24 | obvio171_ enters the room. | |
| 12:43:38 | ctennis leaves the room. | |
| 12:43:55 | ctennis enters the room. | |
| 12:44:14 | ctennis leaves the room. | |
| 12:44:16 | obvio leaves the room. | |
| 12:47:27 | naeu enters the room. | |
| 12:53:22 | benny enters the room. | |
| 12:55:45 | obvio171 leaves the room. | |
| 13:02:58 | ctennis enters the room. | |
| 13:04:28 | wdperson enters the room. | |
| 13:11:41 | fbuilesv leaves the room. | |
| 13:11:53 | jlindley leaves the room. | |
| 13:14:37 | rubuildius_ppc enters the room. | |
| 13:15:21 | RyanTM enters the room. | |
| 13:23:05 | gnufied enters the room. | |
| 13:26:24 | Skip leaves the room. | |
| 13:30:33 | rubuildius_ppc | Adam Gardiner: e579074b4; 1995 files, 6503 examples, 22643 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181011 |
| 13:46:48 | be9_ enters the room. | |
| 13:47:48 | Cosmos95 leaves the room. | |
| 13:51:01 | jlindley enters the room. | |
| 14:04:00 | stepheneb enters the room. | |
| 14:04:31 | BlackEdder enters the room. | |
| 14:05:17 | sudoer enters the room. | |
| 14:06:37 | webmat leaves the room. | |
| 14:06:56 | webmat enters the room. | |
| 14:07:48 | madsimian leaves the room. | |
| 14:09:31 | sudoer_ enters the room. | |
| 14:09:41 | yaroslav enters the room. | |
| 14:11:53 | JimMc_ enters the room. | |
| 14:12:31 | JimMc enters the room. | |
| 14:13:11 | agile leaves the room. | |
| 14:15:50 | divoxx leaves the room. | |
| 14:16:25 | agile enters the room. | |
| 14:18:59 | JimMc | Allright people |
| 14:19:24 | JimMc | have a proposal to update installation |
| 14:19:49 | JimMc | change to allow a build on ubuntu 7.10 |
| 14:19:58 | JimMc | http://pastie.caboo.se/181029 |
| 14:20:26 | JimMc | Sorry should be more clear, to update installation instructions |
| 14:20:47 | jtoy leaves the room. | |
| 14:23:38 | JimMc | I believe the term is "patch" |
| 14:23:52 | JimMc | Anyone else here? |
| 14:23:58 | JimMc | hello? |
| 14:24:03 | JimMc | (;-;0 |
| 14:25:00 | antares | JimMc: let me see your pastie first |
| 14:26:12 | sudoer leaves the room. | |
| 14:27:03 | antares | JimMc: I think build-essentials is a good candidate, too |
| 14:27:32 | antares | JimMc: at least it has gcc, g++ and stuff all in one package with correct version dependencies |
| 14:27:49 | wmoxam enters the room. | |
| 14:29:34 | be9_ leaves the room. | |
| 14:31:50 | macournoyer enters the room. | |
| 14:32:03 | JimMc | antares: Sorry |
| 14:32:10 | JimMc | didn't think anyone was there |
| 14:32:20 | antares | JimMc: np :) |
| 14:34:09 | JimMc | replace g++ with build-essential |
| 14:34:20 | JimMc | since it contains g++ already |
| 14:35:12 | JimMc | updated http://pastie.caboo.se/181029 |
| 14:36:28 | JimMc | It was such a pain trying to figure out why it wasn't building |
| 14:36:32 | Maledictus | doesn't libreadline5-dev pull the non-dev version automatically? |
| 14:37:28 | JimMc | oops, sure does |
| 14:37:46 | antares | Maledictus: it does, I can see it in dependencies with apt-cache show |
| 14:38:31 | Maledictus | hmm, aptitude here says that readline-common collides with libreadline5 |
| 14:39:09 | dbussink | JimMc: bison needs to be in the list too |
| 14:39:35 | JimMc | Forgot about that |
| 14:39:49 | JimMc | I installed that before for something else |
| 14:39:53 | dbussink | there's even a dedicated section on that in the help :P |
| 14:41:35 | JimMc | And readline-common does say it conflicts with libreadline4/5 |
| 14:42:09 | JimMc | So new & improved version http://pastie.caboo.se/181029 |
| 14:43:53 | JimMc | Should result in a smooth build |
| 14:43:58 | antares | JimMc: you want this added to Lighthouse page or what? |
| 14:45:23 | wmoxam leaves the room. | |
| 14:45:55 | JimMc | Sur |
| 14:45:58 | JimMc | sure |
| 14:46:06 | JimMc | isn't that why I'm here |
| 14:46:11 | JimMc | talking to you guys |
| 14:47:19 | JimMc | one minute |
| 14:48:00 | JimMc | Just signed up, I need to create a ticket for this dont I? |
| 14:49:56 | antares | JimMc: ok let me update build page |
| 14:51:13 | JimMc | And after seeing why the build failed previously on Ubuntu I'm guessing it's the same reason it fails on Solaris |
| 14:54:24 | dysinger enters the room. | |
| 14:54:38 | antares | JimMc: done, updated the Installation page |
| 14:54:44 | antares | JimMc: thanks |
| 14:55:49 | JimMc | Great stuff |
| 14:59:03 | obiejuan enters the room. | |
| 14:59:24 | jlindley leaves the room. | |
| 15:01:47 | wmoxam enters the room. | |
| 15:07:46 | smparke1 leaves the room. | |
| 15:08:27 | madsimian enters the room. | |
| 15:10:10 | agile leaves the room. | |
| 15:10:21 | d2dchat enters the room. | |
| 15:11:44 | AndrewO enters the room. | |
| 15:12:14 | chris2 enters the room. | |
| 15:15:05 | moofbong enters the room. | |
| 15:16:17 | trythil enters the room. | |
| 15:23:15 | wdperson enters the room. | |
| 15:24:23 | anon leaves the room. | |
| 15:30:30 | Maledictus leaves the room. | |
| 15:31:00 | yaroslav leaves the room. | |
| 15:33:08 | Maledictus enters the room. | |
| 15:46:59 | qwert666_ enters the room. | |
| 15:47:45 | skaar enters the room. | |
| 15:49:15 | BlackEdder leaves the room. | |
| 15:50:00 | smparkes enters the room. | |
| 15:53:54 | jlindley enters the room. | |
| 15:55:25 | w1rele55 leaves the room. | |
| 16:01:18 | KirinDav enters the room. | |
| 16:02:24 | Skip enters the room. | |
| 16:04:14 | qwert666 leaves the room. | |
| 16:06:09 | enebo enters the room. | |
| 16:06:31 | benstiglitz enters the room. | |
| 16:06:56 | sudoer_ leaves the room. | |
| 16:09:26 | ttmrichter leaves the room. | |
| 16:12:33 | ariekeren enters the room. | |
| 16:19:34 | GMFlash leaves the room. | |
| 16:19:39 | GMFlash enters the room. | |
| 16:25:03 | mentz_ leaves the room. | |
| 16:28:27 | ariekeren leaves the room. | |
| 16:33:12 | KirinDav leaves the room. | |
| 16:49:03 | agile enters the room. | |
| 16:53:13 | headius enters the room. | |
| 17:08:03 | ruivaldo enters the room. | |
| 17:09:09 | mutle leaves the room. | |
| 17:12:48 | AndrewO_ enters the room. | |
| 17:15:44 | ruivaldo leaves the room. | |
| 17:20:09 | AndrewO leaves the room. | |
| 17:20:11 | dctanner enters the room. | |
| 17:20:20 | smparke2 leaves the room. | |
| 17:21:01 | benburkert enters the room. | |
| 17:24:29 | therealadam leaves the room. | |
| 17:25:32 | BlackEdder enters the room. | |
| 17:25:45 | Fullmoon enters the room. | |
| 17:26:05 | Fullmoon leaves the room. | |
| 17:26:25 | evan | headius: you around? |
| 17:26:53 | Defiler | evan: So.. if I run into a MRI C function that Subtend doesn't implement yet, what do I do about that? Could you outline the general steps? |
| 17:27:04 | evan | 1) implement it |
| 17:27:07 | evan | 2) rejoice |
| 17:27:09 | Defiler | haha |
| 17:27:27 | evan | seriously though, it just needs to be implemented |
| 17:27:31 | divoxx enters the room. | |
| 17:27:41 | Defiler | Well, OK.. let me elaborate.. |
| 17:27:42 | evan | ones related to exceptions will be hard currently |
| 17:28:20 | Defiler | How do I tell the difference between an MRI function that will interact poorly with our GC system, and one that doesn't have that problem? |
| 17:28:34 | Defiler | For example, it wasn't/isn't obvious to me why RSTRING is a problem for us |
| 17:28:43 | evan | consider: |
| 17:28:45 | headius | evan: 1/2 around...in a meeting, but it's not taking my full concentration |
| 17:28:57 | evan | char* val = RSTRING(obj)->str; |
| 17:29:02 | evan | rb_funcall(...); |
| 17:29:06 | evan | val[0]; |
| 17:29:41 | evan | if val points INTO object, then if rb_funcall causes a GC, obj may (will) move |
| 17:29:42 | Defiler | If ->str is the actual C string backing our String implementation, that doesn't look problematic to me |
| 17:29:44 | evan | and val will now be invalid. |
| 17:29:49 | evan | it's movement. |
| 17:29:57 | evan | thats the problem. |
| 17:30:06 | Defiler | Couldn't RSTRING's implementation mark the object as something that shouldn't move? |
| 17:30:09 | evan | headius: i guess there are company schenanigans going on tonight, so no hacking. |
| 17:30:22 | evan | Defiler: sure, then we just need to add non moving semantics to the GC |
| 17:30:30 | Defiler | How does MRI handle that issue? |
| 17:30:30 | evan | got any idea about the scope of that problem? |
| 17:30:34 | evan | (i didn't think so) |
| 17:30:35 | Defiler | Just by not moving? |
| 17:30:38 | evan | it NEVER moves objects. |
| 17:30:39 | evan | ever. |
| 17:30:47 | evan | thus the memory frag problems it has. |
| 17:31:05 | Defiler | Do we move mature objects as well? |
| 17:31:06 | evan | thats also how it deals with people storing classes in global VALUEs (something i hate) |
| 17:31:12 | evan | we will. |
| 17:31:17 | gnufied | evan, unrelated, but any ideas what rb_sys_fail does? |
| 17:31:23 | evan | we don't now, but i don't want to tie subtend to that |
| 17:31:26 | evan | and even so |
| 17:31:38 | evan | how can you be sure that the object you're pulling the char* out of is mature? |
| 17:31:46 | evan | it could have been passed into you, ie, you can't control it's allocation. |
| 17:32:00 | evan | gnufied: yeah, it checks errno, and raises an exception based on the errno value |
| 17:32:09 | evan | we have a similar mechanism |
| 17:32:25 | evan | look up code in shotgun for errno_mapping |
| 17:32:33 | headius | evan: ok...would have been a long trip up from santa clara anyway |
| 17:32:46 | evan | headius: ok. didn't want ya to jump on the bart if no one was around |
| 17:33:14 | headius | hey, a night in SF with nothing to do isn't so bad either :) |
| 17:33:41 | evan | heh |
| 17:33:43 | evan | true! |
| 17:33:50 | evan | better than in the valley with nothing to do |
| 17:34:27 | gnufied | evan, and the exception can't be recovered? thanks, I will read up the code. |
| 17:34:28 | headius | hell yeah |
| 17:34:34 | evan | Defiler: to implement RSTRING() sanely, we'll need a shadow structure that contains a copy of the char* |
| 17:34:40 | headius | the valley is a wasteland as far as I'm concerned |
| 17:34:56 | evan | Defiler: and the contents of that shadow is copied back and forth from the object, whenever control is past back to rubyland |
| 17:35:08 | Defiler | OK |
| 17:35:13 | evan | gnufied: you can rescue the exception |
| 17:35:26 | evan | in MRI, i don't think ANY c code rescues it being thrown though |
| 17:35:27 | Defiler | How about rb_ensure? Are we close to being able to build that? |
| 17:35:33 | evan | it's sort of like "well fuck, bail." |
| 17:35:35 | Defiler | I'm trying to decide what to do about decimal.c |
| 17:35:42 | benny leaves the room. | |
| 17:36:02 | gnufied | evan, yeah thats right. its not rescued and it throws something like this: |
| 17:36:07 | evan | Defiler: rb_ensure is a little ways off |
| 17:36:08 | gnufied | /var/lib/gems/1.8/gems/packet-0.1.5/lib/packet/packet_core.rb:127: [BUG] rb_sys_fail() - errno == 0 |
| 17:36:17 | evan | the current code doesn't handle passing exceptions to subtend AT ALL |
| 17:36:30 | evan | oh |
| 17:36:32 | evan | thats something else |
| 17:36:38 | evan | ie, you shouldn't call rb_sys_fail() if errno is 0 |
| 17:36:43 | evan | since that means there wasn't a sys_fail |
| 17:36:44 | divoxx leaves the room. | |
| 17:37:36 | obvio171 enters the room. | |
| 17:37:48 | evan | Defiler: i think we should tackle BigDecimal in ruby |
| 17:38:53 | obvio leaves the room. | |
| 17:38:55 | Defiler | OK |
| 17:39:00 | Defiler | I will port decimal.c to Ruby, then |
| 17:39:12 | Defiler | It is a much better starting point than the nightmare of bigdecimal |
| 17:40:17 | evan | yeah |
| 17:40:25 | evan | i'd do 2 other things |
| 17:40:27 | evan | reading wise |
| 17:40:32 | evan | 1) check out that other decimal library |
| 17:40:41 | evan | thats i guess most of the API, but a lot smaller |
| 17:40:41 | Defiler | There is a third? |
| 17:40:44 | evan | yes |
| 17:40:46 | gnufied | evan, so when MRI does call rb_sys_fail on errno 0, its a fatal error and not recoverable. makes sense. I wonder, whats the solution. |
| 17:40:49 | evan | check out jruby's big decimal |
| 17:40:59 | evan | the java will likely be easier to follow than crazy C |
| 17:41:01 | Defiler | Aah, right. I forgot to check that |
| 17:41:08 | Defiler | The C is really clean |
| 17:41:10 | Defiler | I had no trouble reading it |
| 17:41:16 | evan | ok, just givin' ya options. |
| 17:41:27 | evan | gnufied: ah! yes. |
| 17:41:35 | evan | anytime you see [bug], thats not an exception |
| 17:41:50 | evan | thats MRI being rude and calling printf(), then exit() |
| 17:45:26 | tokengeek enters the room. | |
| 17:46:39 | jayWHY enters the room. | |
| 17:46:42 | nicksieger leaves the room. | |
| 17:49:12 | thehcdreamer leaves the room. | |
| 17:57:04 | wycats leaves the room. | |
| 17:57:34 | be9 leaves the room. | |
| 18:00:42 | lopex enters the room. | |
| 18:03:06 | mentz_ enters the room. | |
| 18:04:28 | yaroslav enters the room. | |
| 18:11:18 | TheVoice enters the room. | |
| 18:12:20 | wmoxam leaves the room. | |
| 18:16:28 | jlindley leaves the room. | |
| 18:25:49 | boyscout | 1 commit by Charles Oliver Nutter |
| 18:25:49 | boyscout | * Quarantine the cvar-related instance_eval spec for now; it's not clean.; 26ba3ad |
| 18:26:40 | benburkert leaves the room. | |
| 18:27:43 | d2dchat leaves the room. | |
| 18:32:12 | OnO leaves the room. | |
| 18:34:30 | Maledictus | headius: is remove_class_variable broken? |
| 18:34:49 | macournoyer_ enters the room. | |
| 18:36:07 | Arjen_ leaves the room. | |
| 18:39:41 | rubuildius_ppc | Charles Oliver Nutter: 26ba3ad30; 1995 files, 6503 examples, 22643 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181192 |
| 18:41:38 | headius | Maledictus: no, the problem I ran into is getting the removal working on the right target |
| 18:41:44 | headius | class vars are weird |
| 18:42:11 | antares enters the room. | |
| 18:42:28 | jayWHY enters the room. | |
| 18:42:47 | jayWHY enters the room. | |
| 18:42:53 | Maledictus | ok |
| 18:43:45 | webmat_ enters the room. | |
| 18:44:50 | nicksieger enters the room. | |
| 18:49:09 | tokengeek leaves the room. | |
| 18:49:11 | cremes__ enters the room. | |
| 18:50:29 | macournoyer leaves the room. | |
| 18:55:25 | d2dchat enters the room. | |
| 18:55:43 | Fullmoon enters the room. | |
| 18:55:59 | dctanner leaves the room. | |
| 18:57:33 | webmat leaves the room. | |
| 19:02:08 | benburkert enters the room. | |
| 19:03:12 | rue | Hello |
| 19:04:36 | nicksieger leaves the room. | |
| 19:05:25 | cremes leaves the room. | |
| 19:06:15 | dbussink | rue: howdy |
| 19:06:16 | jayWHY leaves the room. | |
| 19:06:21 | dbussink | rue: feeling better? |
| 19:07:47 | jayWHY enters the room. | |
| 19:09:12 | rue | Not really, but I just woke up |
| 19:12:30 | antares | rue: what's up to you man? |
| 19:14:36 | smparkes leaves the room. | |
| 19:17:18 | quellhorst enters the room. | |
| 19:17:28 | quellhorst | can rubinius be used to run rails now? |
| 19:17:34 | evan | no |
| 19:17:48 | evan | the goal is to have it running rails by railsconf. |
| 19:19:03 | tarcieri | that's quite the acid test |
| 19:19:34 | quellhorst | ok, thats kinda soon ;) |
| 19:21:04 | Defiler | Stop reminding me =( |
| 19:21:21 | headius | Defiler: got it done yet? |
| 19:21:26 | headius | how bout now? |
| 19:21:48 | Defiler | Ooh those meddling kids! |
| 19:22:42 | dbussink | Defiler: you're so slow |
| 19:22:49 | dbussink | Defiler: i need rails |
| 19:23:34 | headius | Defiler: serious question though, are you hitting rails unit tests or what? |
| 19:24:00 | dbussink | afaik we have eval ordering and bigdecimal as the current showstoppers |
| 19:25:00 | headius | showstoppers preventing running the tests even? |
| 19:26:04 | evan | no, the tests have been running |
| 19:26:55 | headius | ok |
| 19:27:10 | headius | so then it's evan that's slow! |
| 19:27:15 | headius | crack that whip! |
| 19:30:00 | evan | flails himself |
| 19:36:47 | Defiler | headius: eval order prevents us from running the test suite as a whole |
| 19:36:55 | headius | that sucks |
| 19:37:00 | Defiler | headius: since it all depends on activesupport, which doesn't load with right-to-left |
| 19:37:13 | Defiler | I have been running individual tests by hand, though, which is a giant hassle |
| 19:37:13 | naeu leaves the room. | |
| 19:37:35 | Defiler | We also don't have any working database drivers yet. I am totally stumped on MySQL, and am going to try to get SQLite3 bound up this week |
| 19:37:45 | Defiler | bigdecimal is not a test suite blocker |
| 19:38:07 | Defiler | Though presumably it is a blocker to passing the AR tests related to that type |
| 19:38:33 | Defiler | I don't consider bigdecimal to be a serious problem, in comparison to whatever is making MySQL not work |
| 19:39:10 | febeling enters the room. | |
| 19:39:38 | smparkes enters the room. | |
| 19:40:03 | enebo | Defiler: have you tried pure ruby mysql driver? |
| 19:40:53 | Defiler | Yeah, that's the one I can't make work |
| 19:41:02 | evan | Defiler: have you given up on mysql then? |
| 19:41:07 | evan | if so, we need someone else to work on it. |
| 19:41:23 | Defiler | Yeah, I don't have the debugging skills to handle it. It looked like NoKarma was volunteering |
| 19:41:35 | Defiler | but I haven't handed him the ticket yet.. wanted to talk to him again to confirm |
| 19:41:55 | evan | please make it a priority. |
| 19:42:03 | Defiler | Will do. =( |
| 19:42:10 | Defiler | It appears to be something deep inside the IO system |
| 19:42:26 | Defiler | I can't find anything wrong with the socket code that gets executed |
| 19:42:27 | evan | do you have a write up about whats going on? |
| 19:42:31 | evan | in the ticket perhaps |
| 19:42:42 | Defiler | Ticket has some info, but I need to update it. I will do so today |
| 19:42:55 | Defiler | Actually, I think I have it on the same ticket as AR, so I will split it off |
| 19:43:04 | evan | ok. |
| 19:43:40 | dbussink | Defiler: if you have the info, i might have some time to spare right now to take a look if you want |
| 19:44:04 | Defiler | Sure |
| 19:44:14 | Defiler | All you have to do is copy mysql.rb into lib/ |
| 19:44:28 | Defiler | then shotgun/rubinius -rmysql -e "Mysql.new" |
| 19:44:45 | Defiler | exits with SIGPIPE when it writes the 'hello' to the UNIX socket mysql is running on |
| 19:45:12 | boyscout | 3 commits by Dirkjan Bussink |
| 19:45:13 | boyscout | * Update tags for implemented File.grpowned? specs; f49cf4d |
| 19:45:14 | boyscout | * Spec File::Stat#grpowned? and implement File.grpowned?; ea19fb0 |
| 19:45:15 | boyscout | * Properly rename File::Stat#dev_major and File::Stat#dev_minor specs; c411b15 |
| 19:45:18 | evan | did you ever try it in TCP mode? |
| 19:45:19 | Defiler | Make sure to build in dev mode, because you will quickly end up in places that are optimized beyond gdb's ability to handle |
| 19:45:33 | Defiler | Hrm.. I can't remember if I have. Let me try |
| 19:48:53 | Defiler | Oh, tricky. If you pass it localhost it still uses the UNIX socket |
| 19:48:59 | Defiler | 127.0.0.1 should work though.. |
| 19:49:12 | dbussink | Defiler: yeah, 127.0.0.1 and ::1 should work |
| 19:51:04 | jayWHY leaves the room. | |
| 19:52:10 | Defiler | same problem in TCP mode |
| 19:52:39 | jayWHY enters the room. | |
| 19:53:07 | Defiler | http://rafb.net/p/E2D06W18.html |
| 19:53:14 | Defiler | mine is modified, so don't trust the line numbers |
| 19:55:37 | dbussink | Defiler: looks like the data is bogus |
| 19:55:53 | Defiler | MRI prints the same data string but succeeds |
| 19:56:05 | nicksieger enters the room. | |
| 19:56:05 | dbussink | Defiler: if i tried to print it out, it breaks on an infinite loop in puts |
| 19:56:07 | Defiler | Also, they each appear to be making the correct system calls, according to dtrace |
| 19:56:17 | Defiler | You have to watch out for what 'self' is |
| 19:56:29 | Defiler | try STDOUT.prim_write "blah blah\n" |
| 19:57:30 | rubuildius_ppc | Dirkjan Bussink: f49cf4d03; 1995 files, 6509 examples, 22651 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181238 |
| 19:57:39 | dbussink | Defiler: ah yeah ok, sounds obvious |
| 19:58:32 | bricolage enters the room. | |
| 20:00:26 | headius leaves the room. | |
| 20:00:51 | Defiler | Also, irb can be really confusing, so I recommend not using it or -e |
| 20:01:01 | Defiler | On the other hand, I failed at finding the problem, so maybe you shouldn't listen to me. :) |
| 20:01:26 | naeu enters the room. | |
| 20:03:23 | rby enters the room. | |
| 20:04:39 | eventualbuddha enters the room. | |
| 20:05:13 | tokengeek enters the room. | |
| 20:06:27 | benny enters the room. | |
| 20:08:01 | Defiler | evan: Is there a cheap way to say 'run until the output of rbt changes' in gdb? |
| 20:08:11 | evan | no |
| 20:08:36 | rue | Haha, the WH staffer actually called it the "popemobile" on tV |
| 20:09:17 | rue | Defiler: You could store it in an $var and comp; but it would seem easier to just conditionalise on a function argument |
| 20:09:58 | Defiler | Which would be good? cpu_send_message, perhaps? |
| 20:10:07 | rue | E.g. `cond <bp #> (strcmp(arg, "moomin") == 0)` |
| 20:10:19 | evan | Defiler: yeah |
| 20:11:14 | rue | rbs_symbol_to_cstr might work there |
| 20:11:23 | evan | why? |
| 20:11:34 | evan | Defiler: what do you want to do? |
| 20:11:37 | rue | For cpu_send_message |
| 20:13:44 | d2dchat leaves the room. | |
| 20:15:13 | Defiler | evan: Just trying to find a good place to stand to watch the state changes |
| 20:16:03 | Defiler | There's currently no way to eval arbitrary Ruby code from gdb, right? |
| 20:16:12 | evan | ARG! wtf. |
| 20:16:14 | rue | Maybe a watchpoint instead then |
| 20:16:20 | evan | Defiler: no |
| 20:16:31 | rue | p is all-powerful though |
| 20:16:48 | Defiler | I need to 'p' a ruby object |
| 20:17:40 | rue | Defiler: In GDB, you can use `p <any valid C statement>`, so if we had, say, void rbs_eval(char* blah);, that would work |
| 20:17:46 | ezmobius enters the room. | |
| 20:17:52 | evan | but we don't. |
| 20:17:57 | rue | There is _inspect |
| 20:18:07 | evan | yes, there is |
| 20:18:12 | rue | But that one may cause problems if the object is broken |
| 20:18:26 | evan | Defiler: you can poke the object from gdb directly. |
| 20:18:49 | Defiler | How do I get a handle on it? |
| 20:19:06 | rue | Defiler: Incidentally, have you checked through the ruby-side debugger? |
| 20:19:10 | evan | to what? |
| 20:19:20 | evan | p _inspect(<something that returns object>) |
| 20:19:24 | Defiler | evan: The object bound to the variable in question |
| 20:19:30 | evan | huh? |
| 20:19:37 | Defiler | Yeah, I don't have anything to put in between those < > that returns what I need |
| 20:19:37 | evan | you're talking in riddles. |
| 20:19:43 | Defiler | At least, I can't think of anything |
| 20:19:45 | evan | so |
| 20:19:51 | evan | you don't even know what you're looking for? |
| 20:19:54 | Defiler | I'm looking at some ruby code, running it in gdb |
| 20:19:55 | rue | Defiler: Which function are you in? |
| 20:19:56 | evan | so why do ou want to run some code? |
| 20:20:04 | rue | Or planning to be in? |
| 20:20:04 | Defiler | ..and I want the current contents of this variable called 'buf' |
| 20:20:16 | Defiler | eval "p buf" would be fine |
| 20:20:18 | rue | Which is an OBJECT? |
| 20:20:34 | Defiler | Yeah, it's a string |
| 20:20:40 | Defiler | err.. array, my bad |
| 20:21:01 | rue | Then `p _inspect(buf)` |
| 20:21:04 | rue | However |
| 20:21:15 | rby leaves the room. | |
| 20:21:36 | rue | If the data is bad, then that may cause a segv; you may want to look at the array.c functions to extract the C data |
| 20:21:43 | Defiler | I don't get a SEGV |
| 20:22:11 | yaroslav leaves the room. | |
| 20:22:12 | Defiler | Am I explaining this poorly? I guess I am. |
| 20:22:23 | rue | What do you get back, then? |
| 20:22:32 | Defiler | Get back from what? 'buf' is not in scope in GDB |
| 20:22:44 | evan | is buf a local? |
| 20:22:44 | dbussink | you can go up |
| 20:22:48 | rue | Ah, you need to get where it is then |
| 20:22:48 | evan | in ruby |
| 20:22:51 | yaroslav enters the room. | |
| 20:22:53 | Defiler | buf is a Ruby local, yes |
| 20:23:01 | evan | you need to figure out which number local it is. |
| 20:23:19 | Defiler | I'll just restart the run and yield it to gdb directly |
| 20:23:21 | evan | then pull it out of the locals tuple |
| 20:23:26 | bitbang enters the room. | |
| 20:23:28 | bitbang leaves the room. | |
| 20:23:30 | VVSiz | hi folks, looks like recently added File.grpowned? rubyspec fails on MRI as well (on Linux) |
| 20:23:42 | VVSiz | dbussink: ping :) |
| 20:23:53 | dbussink | VVSiz: ah, that would probably be my bad |
| 20:23:54 | evan | Defiler: you're getting congnitivie dissitence working in gdb with the 2 languages i think |
| 20:23:59 | dbussink | VVSiz: you have a pastie? |
| 20:23:59 | yaroslav leaves the room. | |
| 20:24:05 | yaroslav enters the room. | |
| 20:24:08 | VVSiz | pastie: for dbussink |
| 20:24:14 | webmat | rue: Just dropping in to mention that part 2 is done ;-) http://programblings.com/2008/04/15/rubinius-for-the-layman-part-2-how-rubinius-is-friendly/ |
| 20:24:30 | pastie | dbussink: http://pastie.org/181254 by VVSiz. |
| 20:24:38 | rue | webmat_: Cool! |
| 20:24:59 | rue | Alright, snack break everyone |
| 20:25:10 | VVSiz | dbussink: fails with Ruby 1.8.6pl114, MRI latest 1.8 branch, MRI 1.9 and JRuby |
| 20:25:28 | dbussink | VVSiz: hmm, apparently that's not defined behavior :( |
| 20:25:51 | wmoxam enters the room. | |
| 20:25:59 | VVSiz | but those new File.chmod(nil, ...) calls found a bug in JRuby :) |
| 20:26:45 | Defiler | evan: Well, my issue that I have difficulty using gdb to break at exactly the right point to be able to access the locals of the currently-executing method |
| 20:27:22 | rue | Does it work on p111? |
| 20:27:26 | Defiler | Particularly since I need to inspect it on, say, line 20-ish of a method |
| 20:27:43 | rue | Defiler: Put a yield_gdb in the method to help get started |
| 20:27:57 | d2dchat enters the room. | |
| 20:28:23 | evan | Defiler: yeah, we all do. |
| 20:28:25 | dbussink | VVSiz: that's a good side |
| 20:28:25 | Defiler | Yeah, I am in there now |
| 20:28:29 | evan | Defiler: you should try using the ruby debugger instead |
| 20:28:36 | evan | if you want to inspect ruby objects. |
| 20:28:50 | evan | esp. since adam has been slaving away |
| 20:28:50 | evan | :) |
| 20:29:02 | brixen | ruby debugger is really nice |
| 20:29:09 | brixen | and you should be able to yield_gdb too |
| 20:29:15 | brixen | from ruby debugger |
| 20:30:05 | brixen | Defiler: or you could ask giles to write some super tests for you and render all the worlds debuggers obsolete |
| 20:31:03 | djwhitt | hehe, is giles the guy that posted about debuggers a while back and got everyone mad? |
| 20:31:03 | febeling leaves the room. | |
| 20:31:06 | Defiler | I couldn't make the ruby debugger work for me in this file |
| 20:31:12 | brixen | djwhitt: yeah |
| 20:31:14 | Defiler | It was missing lines.. but that was a week or so ago, so it might be fixed now |
| 20:31:37 | brixen | djwhitt: as with all dogma positions, you end up looking silly, imo |
| 20:31:56 | djwhitt | brixen: indeed, the whole thing was pretty entertaining |
| 20:32:12 | febeling enters the room. | |
| 20:32:21 | brixen | I personally thank the universe for agardiner almost daily :) |
| 20:32:26 | boyscout | 2 commits by Dirkjan Bussink |
| 20:32:27 | boyscout | * Fix typo in File.grpowned? spec; 30c717e |
| 20:32:28 | boyscout | * Fix File.grpowned? and it's spec; 1bc17a0 |
| 20:32:33 | dbussink | VVSiz: that should fix it |
| 20:33:36 | VVSiz | dbussink: excellent, thanks! (it works) |
| 20:36:41 | stepheneb leaves the room. | |
| 20:37:03 | evan | so, i'm thinking about adding SubTasks objects |
| 20:37:39 | evan | they'd let you (carefully) deepend the C stack and execute ruby code |
| 20:38:15 | evan | then we could have rbx_eval(...) |
| 20:39:18 | demisone enters the room. | |
| 20:39:34 | demisone | hi there all |
| 20:40:13 | brixen | evan: how do you guarantee "carefully" ? |
| 20:40:16 | rue | Hello, demi |
| 20:40:21 | rue | Erm, demisone |
| 20:40:29 | rue | brixen: With a lisp! |
| 20:40:29 | evan | brixen: well, i'm not sure about it yet. |
| 20:40:44 | demisone | who's gonna help a newbie make a patch? Actually before that I can't run the specs correctly... |
| 20:40:46 | evan | but the code path that calls rbx_eval would have to be using objects through handles |
| 20:40:49 | rue | brixen: Get it? Lisp! |
| 20:40:50 | evan | so that the GC can run |
| 20:40:52 | demisone | rue: i got it anyway :D |
| 20:41:09 | evan | but it seems like i can make usage via handles much nicer now |
| 20:41:12 | dbussink | demisone: what platform are you on? |
| 20:41:12 | evan | it's still an idea |
| 20:41:50 | rue | evan: Are you thinking this outside of the existing nmc framework? |
| 20:41:56 | demisone | dbussink: mac, i have setup rbx ok and actually run some code today (for benchmarking) which led me to tracing 1 or 2 bugs |
| 20:42:18 | demisone | dbussink: i changed the code, added specs but the specs seem to "ignore" the code changes... |
| 20:42:21 | demisone | ..! |
| 20:42:27 | dbussink | demisone: did you do a rake build? |
| 20:42:39 | dbussink | demisone: what part of rubinius are you working on? |
| 20:42:48 | demisone | dbussink: before the changes or after? |
| 20:42:59 | demisone | dbussink: i was on Symbol#to_proc |
| 20:43:05 | demisone | give me a sec... |
| 20:43:11 | dbussink | demisone: also after the changed, if you change anything in kernel/ you need to do a rake build |
| 20:43:12 | evan | rue: yes. |
| 20:43:12 | brixen | demisone: if you change any .rb files in kernel/** you need to run rake to build the libs |
| 20:43:23 | demisone | http://rubinius.lighthouseapp.com/projects/5089/tickets/363-yield-block-problem#ticket-363-6 |
| 20:43:30 | demisone | and http://rubinius.lighthouseapp.com/projects/5089/tickets/495-bug-weird-behaviour-from-splat-operato r-when-passed-to-a-method#ticket-495-1 |
| 20:43:56 | demisone | ok, i'm gonna run the build |
| 20:43:57 | evan | OOOH |
| 20:44:00 | evan | new LH look! |
| 20:44:17 | brixen | evan: yeah, hurts my eyes trying to find relevant info in a ticket view |
| 20:44:17 | rubuildius_ppc | Dirkjan Bussink: 30c717e17; 1995 files, 6508 examples, 22649 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181269 |
| 20:44:26 | dbussink | i liked the old look better |
| 20:44:27 | rue | How.. Amiga |
| 20:44:39 | brixen | yeah, I liked the old look better for the most part |
| 20:44:48 | brixen | some of the bubbles could have gone away |
| 20:45:00 | rue | This one does use the screen better, granted, but the icons are wasting space |
| 20:45:01 | brixen | but now there's not enough hints for easy eye-tracking |
| 20:45:25 | dbussink | stuff doesn't stand out anymore |
| 20:45:36 | brixen | dbussink: exactly! |
| 20:45:48 | brixen | I can actually feel my eyes hurting trying to track in all that whitespace |
| 20:46:05 | dbussink | especially if you scroll down, everything disappears in a large blob of whiteness |
| 20:46:15 | demisone | brixen, dbussink : ok. i was missing that part. Now to the specs :) |
| 20:46:19 | demisone | brb |
| 20:46:42 | rue | Ouch, I think JS syntax highlight |
| 20:47:09 | djwhitt | http://activereload.lighthouseapp.com/projects/44-lighthouse-users/tickets/new |
| 20:47:15 | djwhitt | submit away :) |
| 20:47:18 | brixen | heh |
| 20:47:20 | rue | I dunno, it has promise |
| 20:47:44 | brixen | I wonder if they'd accept a ticket: Please perform user testing |
| 20:48:05 | djwhitt | heh, I was thinking something a little more polite, but... |
| 20:48:34 | brixen | I love the dropdown on the tickets tab |
| 20:48:49 | evan | you can have custom ticket status's now |
| 20:48:52 | evan | not just the 5 defaults |
| 20:49:36 | demisone | ok, here's another stupid question: what are these rbc files that get created? |
| 20:49:39 | therealadam enters the room. | |
| 20:50:16 | dbussink | demisone: ruby code compiled into rubinius byte code |
| 20:51:00 | demisone | is there any reason to leave them there after running the code? |
| 20:51:04 | dbussink | demisone: basically a binary representation of what you see when you run ./shotgun/describe file_with_ruby_code.rb |
| 20:51:13 | stepheneb enters the room. | |
| 20:51:13 | dbussink | demisone: yeah, so code doesn't need to be compiled every time |
| 20:51:15 | demisone | (for the next time that they're going to be run for example) |
| 20:51:19 | demisone | oh, ok |
| 20:51:27 | demisone | i'll keep that in mind :) |
| 20:51:32 | dbussink | it only does a recompile when a file is changed |
| 20:51:44 | dbussink | but for kernel/ code, everything needs to be compiled first |
| 20:52:05 | dbussink | also because there are some safeguards needed there to prevent huge problems |
| 20:52:59 | Skip leaves the room. | |
| 20:52:59 | dysinger leaves the room. | |
| 20:52:59 | dewd leaves the room. | |
| 20:52:59 | dgtized leaves the room. | |
| 20:52:59 | oweff leaves the room. | |
| 20:52:59 | demisone | nice, and now that i'm finished with the specs & the code i'm gonna read the git manual to make the patch :D |
| 20:52:59 | dbussink | demisone: brixen has a nice read on that last problem: http://blog.brightredglow.com/2008/1/17/evil-can-be-dangerous |
| 20:54:03 | demisone | dbussink: wow, that's a big post... i guess i'll take a look later |
| 20:54:38 | dgtized enters the room. | |
| 20:54:43 | rue | demisone: Generating the patch is really simple--but that said, please do read the manual! It will certainly help in the future too :) |
| 20:54:44 | demisone | (no it's not that big after all - all those comments make the scrollbar look really scary :D) |
| 20:54:55 | oweff enters the room. | |
| 20:55:41 | demisone | rue: i've already read it once but i'm still "stuck" with svn so it's kinda hard to move to git (without messing everything up) |
| 20:55:42 | rue | webmat: Good post! |
| 20:55:59 | evan | webmat: yes, great post! |
| 20:56:00 | webmat | rue: thanks :-) |
| 20:57:17 | rue | demisone: It takes a little getting used to. I have used darcs since way back so the distributed side was easy for me, but that still left the git object model, refs and so on |
| 20:57:34 | webmat | Haven't had the opportunity to contribute to Rubinius yet, so this is my contribution ;-) Keep up the good work everyone ;-) |
| 20:58:22 | rue | demisone: Doing it in those two parts is fine, though. First get into the distributed model even if using rota commands and then pick up the repo model, refs and so on (that is where the /real/ power is) |
| 20:58:27 | nicksieger leaves the room. | |
| 20:58:42 | octopod leaves the room. | |
| 20:58:47 | rue | Git may supplant ninjas as the real ultimate power |
| 20:59:01 | nicksieger enters the room. | |
| 20:59:06 | Defiler | Oh. Huh. It looks like I've managed to localize this problem (in MySQL pure driver) a little more precisely than before |
| 20:59:09 | brainopia enters the room. | |
| 20:59:12 | rue | Hurray! |
| 20:59:15 | lazybunz enters the room. | |
| 20:59:17 | Defiler | @sock.read(4) is returning nil |
| 20:59:20 | rue | OK, doc time. Be back in a bit |
| 20:59:30 | dysinger enters the room. | |
| 21:02:13 | Skip enters the room. | |
| 21:07:30 | dewd enters the room. | |
| 21:12:20 | Defiler | evan: Can I run an IO scenario past you, and you can tell me whether it sounds familiar? |
| 21:13:14 | evan | ok |
| 21:14:03 | Defiler | So, MySQL driver opens a TCP socket to the server |
| 21:14:05 | rby enters the room. | |
| 21:14:32 | evan | yep |
| 21:14:39 | Defiler | Writes a 'hello' packet to it, and then reads some data back (which happens to contain the server version, etc) |
| 21:15:27 | evan | ok |
| 21:15:44 | Defiler | Then it writes whatever is necessary to actually finish logging in, and reads back some junk from the server to see what happened |
| 21:16:25 | Defiler | write #1, read #1, and write #2 contain exactly the same data in MRI and in Rubinius (not counting the part of the response that contains a timestamp/other ephemeral crap) |
| 21:16:34 | Defiler | In rbx, read #2 returns nil |
| 21:16:55 | rby leaves the room. | |
| 21:17:19 | lazybunz leaves the room. | |
| 21:17:37 | evan | so |
| 21:17:54 | evan | you should do up that EXACT scenario in a .rb file |
| 21:17:57 | evan | not using the Mysql driver. |
| 21:18:12 | dlee enters the room. | |
| 21:18:14 | evan | just using a raw socket. |
| 21:18:20 | evan | and have rbx send the exact same data as MRI |
| 21:18:23 | evan | and see what happens. |
| 21:18:29 | Defiler | e.g. http://rafb.net/p/RKMcp546.html |
| 21:18:33 | evan | so you can figure out if the remote side doesn't like the data |
| 21:18:36 | evan | or if it doesn't get it |
| 21:18:42 | evan | or if rbx gets confused on the read |
| 21:18:58 | evan | but do it directly with the Socket api |
| 21:19:02 | evan | don't use the mysql driver |
| 21:19:05 | evan | we MUST isolate things. |
| 21:19:49 | Defiler | OK |
| 21:20:02 | djwhitt | Defiler: you tried looking at that with Wireshark? |
| 21:20:12 | djwhitt | that might be helpful too |
| 21:20:23 | evan | thats why i suggested he try TCP |
| 21:20:33 | evan | you can tcpdump, to be sure rbx is sending the correct payload |
| 21:20:35 | yaroslav leaves the room |