Show enters and exits. Hide enters and exits.
| 00:00:18 | drbrain | is there a file I missed? |
| 00:00:26 | evan | must be. |
| 00:00:27 | evan | one sec. |
| 00:01:18 | evan | ug. |
| 00:01:24 | evan | typechecks.gen.cpp is nearly empty. |
| 00:01:26 | evan | thats whats up. |
| 00:03:39 | edwardam leaves the room. | |
| 00:03:47 | CIA-30 | * Update for unified Rakefile; e55598b - Eric Hodel |
| 00:05:27 | drbrain | yup |
| 00:05:37 | drbrain | it doesn't have anything from vm/objects.hpp |
| 00:05:47 | evan | right |
| 00:05:49 | evan | because you're scan is wrong |
| 00:05:53 | evan | i'm fixing that now. |
| 00:05:56 | drbrain | yeah |
| 00:05:59 | drbrain | ok |
| 00:08:42 | rubuildius_amd64 | Christopher Thompson: c703e87ce; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors |
| 00:12:13 | drbrain | why are we looking on objects.hpp there anyhow? |
| 00:12:31 | drbrain | why not just Dir['vm/builtin_*.hpp'] ? |
| 00:12:40 | evan | because the order matters |
| 00:12:46 | evan | and objects.hpp has them in the right order |
| 00:13:14 | CIA-30 | * Use correct list to field_extract; a38df9f - Evan Phoenix |
| 00:13:24 | evan | there ya go. |
| 00:13:28 | evan | back to normal. |
| 00:13:36 | drbrain | yay! |
| 00:13:48 | drbrain | how can I get your attention better next time? |
| 00:15:20 | evan | call me. |
| 00:15:23 | evan | on the telephone. |
| 00:15:31 | evan | on ichat video. |
| 00:15:34 | evan | or email. |
| 00:15:56 | evan | or ichat video, rather. |
| 00:16:13 | drbrain | on, or, both work |
| 00:16:20 | drbrain | ok, bbiab |
| 00:16:24 | evan | k |
| 00:16:25 | drbrain | walking towards home |
| 00:16:29 | evan | k |
| 00:17:43 | fbuilesv leaves the room. | |
| 00:17:44 | botanicus enters the room. | |
| 00:21:21 | zimbatm enters the room. | |
| 00:21:52 | blakewatters enters the room. | |
| 00:29:40 | zimbatm-work2 leaves the room. | |
| 00:31:25 | nari leaves the room. | |
| 00:32:41 | djwhitt | brixen: thanks for fixing up the bot. I pulled your changes too |
| 00:32:48 | CIA-30 | * Fix using strlcpy and strlcat, respect CC; 3197850 - Evan Phoenix |
| 00:32:56 | evan | ok, C++ works on linux now. |
| 00:33:11 | vincentlu leaves the room. | |
| 00:33:14 | vincentlu enters the room. | |
| 00:33:18 | evan | though, gcc-4.3 seems to have introduce all kinds of new warnings and errors |
| 00:33:21 | botanicus leaves the room. | |
| 00:33:23 | evan | so you have to use gcc-4.2 |
| 00:34:55 | aotearoa enters the room. | |
| 00:39:50 | rue leaves the room. | |
| 00:40:18 | shoe leaves the room. | |
| 00:42:01 | dysinger leaves the room. | |
| 00:43:46 | brixen | djwhitt: cool |
| 00:44:35 | joachimm leaves the room. | |
| 00:47:04 | shoe enters the room. | |
| 00:56:57 | nari enters the room. | |
| 00:57:41 | ezmobius leaves the room. | |
| 01:02:20 | nari leaves the room. | |
| 01:02:34 | nari enters the room. | |
| 01:02:47 | imajes_ leaves the room. | |
| 01:03:35 | imajes_ enters the room. | |
| 01:10:39 | rubuildius_amd64 leaves the room. | |
| 01:11:01 | rubuildius_ey64 leaves the room. | |
| 01:11:35 | rubuildius_ey64 enters the room. | |
| 01:11:42 | rubuildius_amd64 enters the room. | |
| 01:26:22 | kevwil enters the room. | |
| 01:27:08 | shame leaves the room. | |
| 01:27:59 | kevwil leaves the room. | |
| 01:32:01 | shame enters the room. | |
| 01:32:17 | jicksta leaves the room. | |
| 01:40:05 | twbray leaves the room. | |
| 01:44:11 | c0sin leaves the room. | |
| 01:50:00 | drbrain | there still seem to be some dependencies missing |
| 01:53:54 | dfg59 leaves the room. | |
| 01:54:10 | blakewatters leaves the room. | |
| 01:54:51 | jbarnette leaves the room. | |
| 01:56:57 | fbuilesv enters the room. | |
| 02:03:56 | lstoll leaves the room. | |
| 02:08:11 | hemulen enters the room. | |
| 02:17:15 | CIA-30 | * Add task to create a graph of rake dependencies.; 58a47f9 - Eric Hodel |
| 02:19:55 | drbrain | ^^ that is super sweet |
| 02:20:00 | drbrain | especially in LR mode |
| 02:20:16 | drbrain | cmd-I, scroll to rankdir in GraphVis |
| 02:20:20 | drbrain | GraphViz |
| 02:20:33 | drbrain | rake "graph[^doc|^stats]" && open rubinius_tasks.dot |
| 02:20:37 | drbrain | is what I'm running |
| 02:21:49 | ijcd_ leaves the room. | |
| 02:22:58 | evan | oh let me try |
| 02:23:05 | drbrain | needs a filter arg too |
| 02:23:47 | evan | whats the [] craziness? |
| 02:23:56 | evan | is that how you pass args to tasks? |
| 02:24:01 | drbrain | yes |
| 02:24:13 | drbrain | http://rubyforge.org/pipermail/rake-devel/2007-December/000352.html |
| 02:24:38 | drbrain | stats adds a ton of tasks |
| 02:25:04 | VVSiz_ enters the room. | |
| 02:26:58 | imajes_ leaves the room. | |
| 02:27:21 | jtoy enters the room. | |
| 02:27:21 | drbrain | I think there's a way to tell Graph to set rankdir |
| 02:27:26 | drbrain | but, I'm off to practice now |
| 02:28:42 | evan | ok |
| 02:30:07 | josb leaves the room. | |
| 02:35:48 | blakewatters enters the room. | |
| 02:36:04 | brixen | evan: how did you set up the CIA bot? |
| 02:36:20 | evan | registered at cia.vc |
| 02:36:26 | evan | then turned the hook on it github |
| 02:36:32 | brixen | ah ok, thanks |
| 02:36:42 | evan | be sure that you register the project as the name it is in github though |
| 02:36:52 | evan | since there is no way to set the name thats set to CIA |
| 02:37:01 | brixen | ok |
| 02:37:22 | evan | if you want the same format i'm using, i'll give it to ya |
| 02:40:12 | brixen | yes, please |
| 02:42:01 | evan | http://gist.github.com/3379 |
| 02:42:05 | VVSiz leaves the room. | |
| 02:42:11 | evan | drop that in the advanced filtering |
| 02:45:21 | brixen | thanks! |
| 02:46:03 | bitsweat leaves the room. | |
| 02:47:40 | hemulen leaves the room. | |
| 02:48:28 | jazen leaves the room. | |
| 02:51:16 | brixen | evan: can I add multiple projects to this filter? |
| 02:51:24 | brixen | e.g. both rubyspec and mspec |
| 02:56:26 | brixen | I think I got it |
| 03:01:33 | zimbatm-work2 enters the room. | |
| 03:02:38 | brixen | evan: want to add rubyspec commit to the cia bot here? |
| 03:09:46 | zimbatm leaves the room. | |
| 03:09:54 | lstoll enters the room. | |
| 03:15:50 | Defiler | brixen: I think that would be a little too noisy, but that's just my opinion |
| 03:17:38 | jicksta enters the room. | |
| 03:27:22 | lchin enters the room. | |
| 03:30:24 | twbray enters the room. | |
| 03:33:06 | lopex leaves the room. | |
| 03:33:45 | jackdempsey leaves the room. | |
| 03:37:20 | jackdempsey enters the room. | |
| 03:38:57 | lstoll_ enters the room. | |
| 03:46:15 | trythil enters the room. | |
| 03:47:42 | lstoll leaves the room. | |
| 03:50:00 | lstoll enters the room. | |
| 03:57:08 | shayarnett enters the room. | |
| 03:59:26 | trythil leaves the room. | |
| 03:59:58 | lstoll_ leaves the room. | |
| 04:01:44 | blakewatters leaves the room. | |
| 04:04:33 | lstoll_ enters the room. | |
| 04:05:45 | dfg59 enters the room. | |
| 04:06:14 | Yurik enters the room. | |
| 04:13:08 | lstoll leaves the room. | |
| 04:15:36 | lstoll enters the room. | |
| 04:24:11 | benburkert_ leaves the room. | |
| 04:25:41 | lstoll_ leaves the room. | |
| 04:35:35 | josb enters the room. | |
| 04:43:05 | benburkert enters the room. | |
| 04:58:50 | blakewatters enters the room. | |
| 05:05:19 | gnufied leaves the room. | |
| 05:05:49 | gnufied enters the room. | |
| 05:20:58 | shayarnett leaves the room. | |
| 05:27:13 | crafterm enters the room. | |
| 05:39:50 | wmoxam enters the room. | |
| 05:41:08 | nicksieger leaves the room. | |
| 05:41:45 | zimbatm enters the room. | |
| 05:51:05 | nicksieger enters the room. | |
| 05:53:21 | zimbatm-work2 leaves the room. | |
| 06:01:11 | twbray leaves the room. | |
| 06:02:00 | qrush leaves the room. | |
| 06:02:36 | headius enters the room. | |
| 06:02:54 | qrush enters the room. | |
| 06:03:29 | qrush leaves the room. | |
| 06:04:00 | lstoll leaves the room. | |
| 06:07:00 | dfg59 leaves the room. | |
| 06:08:13 | mutle__ leaves the room. | |
| 06:18:04 | mutle enters the room. | |
| 06:24:38 | atmos leaves the room. | |
| 06:33:01 | twbray enters the room. | |
| 06:36:39 | josb leaves the room. | |
| 06:37:51 | wyhaines_ leaves the room. | |
| 06:39:07 | headius | evan: wmeissner brought up a down side of extend FFI |
| 06:39:27 | headius | it makes other stuff in FFI be at that level too, like FFI::Struct and other more "utility" methods |
| 06:42:05 | yroc enters the room. | |
| 06:46:11 | evan | headius: true |
| 06:46:27 | headius | he suggested something like FFI::Library |
| 06:47:11 | evan | sure |
| 06:47:22 | evan | totally resonable |
| 06:47:25 | evan | and easier |
| 06:48:07 | headius | yeah, we can keep the bits separate we want to be exposed within modules then |
| 06:48:12 | evan | yep |
| 07:08:48 | jgre leaves the room. | |
| 07:08:57 | joachimm enters the room. | |
| 07:15:56 | lchin leaves the room. | |
| 07:16:53 | lchin enters the room. | |
| 07:18:28 | sudoer enters the room. | |
| 07:24:03 | jgre enters the room. | |
| 07:24:13 | gnufied leaves the room. | |
| 07:26:53 | jackdempsey leaves the room. | |
| 07:27:45 | jtoy leaves the room. | |
| 07:28:11 | inspired_ leaves the room. | |
| 07:33:00 | crafterm leaves the room. | |
| 07:40:38 | nicksieger leaves the room. | |
| 07:46:35 | twbray_ enters the room. | |
| 07:48:09 | benburkert leaves the room. | |
| 07:52:50 | jackdempsey enters the room. | |
| 08:01:47 | jackdempsey leaves the room. | |
| 08:02:07 | twbray leaves the room. | |
| 08:05:18 | twbray_ leaves the room. | |
| 08:05:49 | joachimm leaves the room. | |
| 08:06:37 | twbray enters the room. | |
| 08:18:13 | inspired enters the room. | |
| 08:21:57 | zimbatm-work2 enters the room. | |
| 08:24:51 | twbray leaves the room. | |
| 08:26:51 | mutle leaves the room. | |
| 08:26:51 | blakewatters leaves the room. | |
| 08:26:51 | nari leaves the room. | |
| 08:26:51 | zf leaves the room. | |
| 08:26:51 | rudebwoy_ leaves the room. | |
| 08:26:51 | ko1_away leaves the room. | |
| 08:26:51 | fearoffish leaves the room. | |
| 08:28:55 | mutle enters the room. | |
| 08:28:55 | blakewatters enters the room. | |
| 08:28:55 | nari enters the room. | |
| 08:28:55 | rudebwoy_ enters the room. | |
| 08:28:55 | ko1_away enters the room. | |
| 08:28:55 | fearoffish enters the room. | |
| 08:28:55 | zf enters the room. | |
| 08:30:52 | zimbatm leaves the room. | |
| 08:37:06 | Maledictus enters the room. | |
| 08:39:59 | octopod enters the room. | |
| 08:49:38 | sambo82 leaves the room. | |
| 08:51:34 | wvdschel enters the room. | |
| 08:56:35 | lstoll enters the room. | |
| 08:56:44 | lstoll leaves the room. | |
| 09:00:54 | blakewatters leaves the room. | |
| 09:07:41 | sambo82 enters the room. | |
| 09:20:29 | headius leaves the room. | |
| 09:25:18 | rue enters the room. | |
| 09:26:09 | gnufied enters the room. | |
| 09:31:20 | aotearoa leaves the room. | |
| 09:31:35 | Yurik leaves the room. | |
| 09:45:47 | pauldix enters the room. | |
| 10:03:28 | jazen enters the room. | |
| 10:03:33 | michalw enters the room. | |
| 10:24:11 | nitay enters the room. | |
| 10:25:23 | radarek enters the room. | |
| 10:25:48 | nitay leaves the room. | |
| 10:51:29 | fbuilesv_ enters the room. | |
| 10:56:32 | aotearoa enters the room. | |
| 10:58:48 | botanicus enters the room. | |
| 11:01:21 | benny leaves the room. | |
| 11:02:09 | zimbatm enters the room. | |
| 11:08:33 | fbuilesv leaves the room. | |
| 11:12:35 | zimbatm-work2 leaves the room. | |
| 11:16:37 | chris2 enters the room. | |
| 11:17:47 | pauldix leaves the room. | |
| 11:18:26 | sudoer leaves the room. | |
| 11:24:58 | mutle_ enters the room. | |
| 11:30:11 | rubuildius_ey64 leaves the room. | |
| 11:30:45 | rubuildius_ey64 enters the room. | |
| 11:40:02 | mutle leaves the room. | |
| 11:43:08 | thehcdreamer enters the room. | |
| 11:44:16 | thehcdreamer leaves the room. | |
| 11:47:21 | nari leaves the room. | |
| 12:00:41 | rubuildius_amd64 leaves the room. | |
| 12:01:01 | rubuildius_ey64 leaves the room. | |
| 12:01:33 | rubuildius_ey64 enters the room. | |
| 12:01:44 | rubuildius_amd64 enters the room. | |
| 12:12:55 | pauldix enters the room. | |
| 12:14:20 | yugui enters the room. | |
| 12:25:53 | aotearoa leaves the room. | |
| 12:27:03 | nari enters the room. | |
| 12:28:12 | qrush enters the room. | |
| 12:42:20 | botanicus_ enters the room. | |
| 12:44:23 | benburkert enters the room. | |
| 12:44:39 | aotearoa enters the room. | |
| 12:46:05 | botanicus_ leaves the room. | |
| 12:55:50 | lchin leaves the room. | |
| 12:56:18 | yasuhito enters the room. | |
| 13:00:04 | botanicus leaves the room. | |
| 13:00:44 | sambo82 leaves the room. | |
| 13:01:44 | michalw leaves the room. | |
| 13:17:59 | lchin enters the room. | |
| 13:20:49 | lchin leaves the room. | |
| 13:25:48 | benburkert leaves the room. | |
| 13:27:33 | qrush leaves the room. | |
| 13:36:10 | zimbatm leaves the room. | |
| 13:36:18 | hemulen enters the room. | |
| 13:38:17 | wyhaines_ enters the room. | |
| 13:41:19 | BobFunk enters the room. | |
| 13:43:22 | zimbatm enters the room. | |
| 13:44:40 | benny enters the room. | |
| 13:45:00 | aotearoa leaves the room. | |
| 13:47:34 | AndrewO enters the room. | |
| 14:00:41 | rubuildius_amd64 leaves the room. | |
| 14:01:02 | rubuildius_ey64 leaves the room. | |
| 14:01:35 | rubuildius_ey64 enters the room. | |
| 14:01:44 | rubuildius_amd64 enters the room. | |
| 14:06:33 | benburkert enters the room. | |
| 14:09:45 | benburkert leaves the room. | |
| 14:13:12 | michalw enters the room. | |
| 14:13:29 | benburkert enters the room. | |
| 14:15:31 | botanicus enters the room. | |
| 14:31:51 | rue leaves the room. | |
| 14:33:04 | shayarnett enters the room. | |
| 14:38:03 | jackdempsey enters the room. | |
| 14:46:08 | binary42 leaves the room. | |
| 14:50:07 | fbuilesv enters the room. | |
| 14:53:04 | BobFunk leaves the room. | |
| 14:55:42 | rubuildius_amd64 leaves the room. | |
| 14:56:01 | rubuildius_ey64 leaves the room. | |
| 14:56:37 | rubuildius_ey64 enters the room. | |
| 14:56:38 | moofbong enters the room. | |
| 14:56:44 | rubuildius_amd64 enters the room. | |
| 14:57:53 | chris2 leaves the room. | |
| 15:03:31 | inspired leaves the room. | |
| 15:07:29 | jackdempsey leaves the room. | |
| 15:08:20 | fbuilesv_ leaves the room. | |
| 15:12:31 | imajes_ enters the room. | |
| 15:14:32 | Defiler | Hrm.. do we still need Object#become! ? |
| 15:14:49 | Defiler | We don't seem to use it.. but presumably it is there for end-users |
| 15:14:59 | jackdempsey enters the room. | |
| 15:15:00 | Defiler | Scary, evil end users |
| 15:20:05 | imajes leaves the room. | |
| 15:23:31 | imajes enters the room. | |
| 15:26:19 | methods enters the room. | |
| 15:26:38 | methods | is rubinius going to be compatible with existing ruby modules / |
| 15:27:11 | binary42 enters the room. | |
| 15:27:24 | dbussink | that's our goal |
| 15:27:37 | methods | how's that work ? |
| 15:30:05 | imajes_ leaves the room. | |
| 15:30:07 | yroc leaves the room. | |
| 15:30:11 | dbussink | do you have failing ruby code? |
| 15:30:31 | dbussink | if you can isolate the problem and file a bug report, that would be very cool |
| 15:30:46 | dbussink | and if you can write a rubyspec for it, that's even cooler |
| 15:33:18 | Defiler | methods: We are aiming for 100% ruby 1.8 compatibility, currently 1.8.6 |
| 15:36:11 | twbray enters the room. | |
| 15:38:56 | TheProkrammer leaves the room. | |
| 15:41:33 | wyhaines_ leaves the room. | |
| 15:42:04 | TheProkrammer enters the room. | |
| 15:43:19 | rue enters the room. | |
| 15:43:43 | BobFunk enters the room. | |
| 15:44:40 | rue | Morning |
| 15:46:02 | Defiler | rue: So.. I need to include grammar.h into 'VM' so that I can do the 'string_to_sexp' primitive |
| 15:46:11 | Defiler | Got an opinion about where that should go? |
| 15:47:43 | jackdempsey leaves the room. | |
| 15:50:27 | rue | Defiler: environment or compiled_file would be logic-flow-wise good places, but ultimately it should be exposed as narrowly as possible |
| 15:50:54 | rue | We just need syd_parse_file (or something to that effect) right? |
| 15:59:23 | Defiler | Looks like it, yeah. Probably two functions need to be exposed |
| 15:59:44 | Defiler | One of which returns an Array.. so I guess we will need to make sure it is creating the correct C++-compatible doodad |
| 15:59:55 | BobFunk leaves the room. | |
| 16:00:18 | BobFunk enters the room. | |
| 16:07:04 | yasuhito leaves the room. | |
| 16:08:08 | nari leaves the room. | |
| 16:08:13 | nari_ enters the room. | |
| 16:13:50 | yroc enters the room. | |
| 16:15:41 | yasuhito enters the room. | |
| 16:15:55 | rue | Apple mouse optics _suck_ |
| 16:16:29 | rue | My $9 logictech optical reads this desk fine (granted it is pure white laminate) but the Apple mouse does not move at all |
| 16:20:32 | wmoxam_ enters the room. | |
| 16:24:24 | zimbatm-work2 enters the room. | |
| 16:27:50 | yasuhito leaves the room. | |
| 16:35:03 | zimbatm leaves the room. | |
| 16:41:43 | moofbong leaves the room. | |
| 16:42:10 | moofbong enters the room. | |
| 16:47:36 | twbray leaves the room. | |
| 16:48:54 | jgre leaves the room. | |
| 16:49:47 | blakewatters enters the room. | |
| 16:50:09 | wvdschel leaves the room. | |
| 16:52:01 | yroc leaves the room. | |
| 16:52:05 | bricolage enters the room. | |
| 16:52:06 | nicksieger enters the room. | |
| 16:53:15 | lopex enters the room. | |
| 17:01:30 | Defiler | rue: Do you know how to breakpoint (in gdb) on a C++ test? |
| 17:01:52 | brixen | Defiler: I br on the method it will call |
| 17:02:03 | brixen | the test function symbol should be available |
| 17:02:05 | brixen | I'd think |
| 17:02:11 | Defiler | It isn't |
| 17:02:18 | Defiler | At least not in gdb vm/test/runner |
| 17:02:35 | brixen | not even br on the file line #? |
| 17:02:36 | Defiler | Also, the function it calls is 'at', and breakpointing that would be horrible |
| 17:02:41 | Defiler | Right. |
| 17:02:43 | brixen | compile test/runner |
| 17:02:45 | Defiler | Because the tests are in hpp files |
| 17:05:12 | KiranH enters the room. | |
| 17:05:22 | banisterfiend enters the room. | |
| 17:05:36 | banisterfiend | hey guys how do i convert a c double to a ruby Num ? |
| 17:05:53 | banisterfiend | there is a NUM2DBL function, but i can't see a DBL2NUM |
| 17:06:22 | kotrin enters the room. | |
| 17:07:29 | Defiler | banisterfiend: You should just be able to cast a double as a native_int |
| 17:07:30 | brixen | banisterfiend: you'll need to make a macro |
| 17:07:43 | brixen | banisterfiend: see e.g. shotgun/lib/bignum_from_double |
| 17:08:01 | banisterfiend | sorry what's shotgun brixen? |
| 17:08:04 | brixen | which will normalize to fa fixnum |
| 17:08:11 | brixen | s/fa/a/ |
| 17:08:11 | Defiler | shotgun/lib/bignum.c line 693 |
| 17:08:20 | atmos enters the room. | |
| 17:08:23 | brixen | heh, er yeah |
| 17:08:28 | banisterfiend | what is shotgun? |
| 17:08:32 | Defiler | A directory |
| 17:08:35 | banisterfiend | where is it? |
| 17:08:40 | Defiler | In the root of the rubinius checkout |
| 17:08:43 | banisterfiend | i dont have rubinius |
| 17:08:45 | banisterfiend | hehehe |
| 17:08:49 | banisterfiend | i was just told to come here to ask the question |
| 17:08:52 | banisterfiend | because noone in #ruby knows |
| 17:08:54 | Defiler | Oh haha |
| 17:08:56 | banisterfiend | im just making a c extension |
| 17:09:21 | banisterfiend | just you guys are supposed to know about c extensions and all that i take it |
| 17:09:34 | nexcastellan | No, we know about Rubinius. |
| 17:09:35 | Defiler | Isn't there a DBL2NUM? |
| 17:09:39 | banisterfiend | just seems weird to me that there's a NUM2DBL function but know DBL2NUM |
| 17:09:40 | banisterfiend | no there isn't |
| 17:09:53 | Defiler | "There are also NUM2LONG, LONG2NUM, NUM2ULONG, ULONG2NUM and NUM2DBL, DBL2NUM macros for dealing with long integers and double precision floating point numbers, that work in the exact same way. Note that there are no UDBL variations." |
| 17:10:02 | brixen | Defiler: setting br test_dir.hpp:30 worked like a charm for me |
| 17:10:12 | brixen | Defiler: just need to invoke as gdb vm/test/runner |
| 17:10:17 | banisterfiend | Defiler: i tried DB2NUM and it says it cant recognize the symbol |
| 17:10:20 | brixen | can't do test/runner anymore |
| 17:10:23 | Defiler | brixen: That's exactly what I did. Odd. |
| 17:11:15 | brixen | banisterfiend: DB2NUM or DBL2NUM? |
| 17:11:15 | banisterfiend | Defiler: i just grepped ruby.h and DBL2NUM does not exist, but NUM2DBL does!?! |
| 17:11:37 | Defiler | brixen: http://gist.github.com/3469 |
| 17:12:17 | banisterfiend | DBL2NUM |
| 17:12:24 | brixen | banisterfiend: I'm not finding it either |
| 17:12:24 | banisterfiend | (sorry typo here, but not a typo when i grepped) |
| 17:12:30 | brixen | yeah |
| 17:12:33 | Defiler | Yeah, same here. Odd. |
| 17:12:43 | Defiler | I guess you will need to write your own, based on the others. Should be pretty easy |
| 17:13:11 | Defiler | MRI provides rb_dbl2big in bignum.c at least |
| 17:13:16 | banisterfiend | ok what file do you think that function is defined in? |
| 17:13:16 | Defiler | So you can call that |
| 17:13:18 | banisterfiend | ruby.c ? |
| 17:13:25 | Defiler | If it can fit in a fixnum, it will normalize |
| 17:13:26 | brixen | Defiler: that is really odd: com |
| 17:13:29 | brixen | cam |
| 17:13:31 | brixen | ugh |
| 17:13:31 | nexcastellan | Yeah, rb_float_new, perhaps? |
| 17:13:38 | brixen | Defiler: http://gist.github.com/3470 |
| 17:13:48 | Defiler | http://www.ruby-doc.org/doxygen/1.8.4/group__ruby__big.html#ga16 |
| 17:14:02 | jbarnette enters the room. | |
| 17:14:13 | Defiler | brixen: Can you try it on test_instructions? |
| 17:14:20 | Defiler | brixen: Maybe there is something odd about that file in particular |
| 17:14:42 | Defiler | huh. I guess that same error on test_dir.hpp:30 |
| 17:14:51 | Defiler | Are you doing something special in the build? |
| 17:15:27 | dfg59 enters the room. | |
| 17:15:38 | yugui leaves the room. | |
| 17:15:47 | Defiler | test_send_stack_with_splat() is what I am trying to deubg |
| 17:15:48 | Defiler | debug |
| 17:15:51 | brixen | nope, but I get your error with test_instructions.hpp |
| 17:15:56 | brixen | yeah |
| 17:16:01 | brixen | that file is funky somehow |
| 17:16:11 | Defiler | gah |
| 17:16:22 | Defiler | I hate this C++ test library |
| 17:16:23 | Defiler | So hard |
| 17:16:37 | banisterfiend | do you guys recommend using ruby 1.9? or is it still a bit weird? |
| 17:16:48 | evan | good morning. |
| 17:16:57 | nexcastellan | We personally are targeting Rubinius as 1.8.6 compatible at the moment. |
| 17:17:15 | nexcastellan | As to whether you should target your extension to 1.8.6 or 1.9, that's really not something we can answer for you. |
| 17:17:27 | Defiler | banisterfiend: 1.9 is crazy |
| 17:17:30 | nexcastellan | My limited experience shows that 1.9 is a bit unstable at the moment, as is 1.8.7. |
| 17:17:31 | CIA-30 | * Add 'id', 'dup', 'tainted?', 'taint', and 'untaint' primitives to Object; 709aa5d - Wilson Bilkovich |
| 17:18:03 | banisterfiend | Defiler: how is it crazy? |
| 17:18:05 | Defiler | evan: Is there a way to get a breakpoint on a particular test in test_foo.hpp? |
| 17:18:21 | chris2 enters the room. | |
| 17:18:22 | Defiler | evan: http://gist.github.com/3469 |
| 17:18:23 | evan | sure. |
| 17:18:35 | gnufied leaves the room. | |
| 17:18:38 | evan | don't do it by file:line |
| 17:18:40 | evan | do |
| 17:18:46 | evan | b TestBlah::test_whatever |
| 17:19:28 | brixen | hah, yeah that works like a charm |
| 17:19:35 | brixen | damn C++ classes :P |
| 17:19:38 | evan | if you want to stop in an instruction test |
| 17:19:45 | Defiler | oh hell yeah |
| 17:19:49 | evan | you have to specify where it is in instructions.rb |
| 17:20:01 | brixen | yeah, I noticed the #line annotation |
| 17:20:02 | Defiler | aah, OK.. hence the #line |
| 17:20:05 | evan | yep |
| 17:20:13 | evan | largely though |
| 17:20:22 | evan | setting the breakpoint on the test name itself is always easier |
| 17:20:30 | Defiler | evan: talk to me about FASTCTX in the new VM |
| 17:20:49 | evan | there isn't one. |
| 17:21:27 | evan | you just reference stuff inside a MethodContext* object directly |
| 17:21:59 | joachimm enters the room. | |
| 17:23:13 | Defiler | What should I do about the primitives related to that in shotgun? |
| 17:23:17 | Defiler | Keep the names as they are for now? |
| 17:23:28 | evan | which names? |
| 17:23:35 | evan | the names of the primitive can stay the same |
| 17:23:45 | evan | you'll need to rewrite the interior of the primitive |
| 17:23:59 | Defiler | fastctx_dup, fastctx_get_field, etc |
| 17:24:03 | banisterfiend | is rubinius like smalltalk |
| 17:24:22 | evan | banisterfiend: it's organized vaguely like some smalltalk VMs |
| 17:24:25 | evan | if thats what you mean |
| 17:24:28 | evan | Defiler: hm. |
| 17:24:28 | banisterfiend | yes |
| 17:24:31 | banisterfiend | that's what i mean evan |
| 17:24:33 | banisterfiend | thx |
| 17:24:35 | evan | Defiler: go ahead and write new ones |
| 17:24:43 | banisterfiend | i read an article "turtles all the way down" |
| 17:24:44 | evan | Defiler: just start over, new name, new body. |
| 17:24:48 | Defiler | OK |
| 17:24:50 | banisterfiend | does rubinius have turtles all the way down evan? |
| 17:25:05 | evan | banisterfiend: it tries to |
| 17:25:11 | evan | but we have a VM thats not written in ruby |
| 17:25:15 | banisterfiend | oh ok |
| 17:25:29 | Defiler | evan: given.. $4 = (OBJECT) 0x181fec4 |
| 17:25:35 | evan | but nearly all of the core functionality is in ruby |
| 17:25:42 | Defiler | 'as' isn't in scope in gdb for some reason |
| 17:25:50 | evan | Defiler: no, it's not. |
| 17:25:51 | Defiler | How can I view that as the correct type? |
| 17:25:53 | evan | what are you trying to do? |
| 17:26:00 | Defiler | In this case, it is (probably) a fixnum |
| 17:26:24 | evan | probably not actually |
| 17:26:28 | evan | since it ends in a 4 |
| 17:26:45 | Defiler | ohhh it isn't yeah |
| 17:26:48 | Defiler | it's a BlockEnv |
| 17:29:46 | Defiler | evan: Got a sec to look at this test with me, actually? |
| 17:29:53 | evan | sure |
| 17:30:03 | nicksieger leaves the room. | |
| 17:30:12 | Defiler | vm/instructions.rb 'test_send_stack_with_splat'.. in particular, lines after 2370 |
| 17:30:23 | evan | you trying to fix those broken tests? |
| 17:30:25 | Defiler | Yes |
| 17:30:58 | evan | 2370, is, for me, past the test |
| 17:31:18 | Defiler | 2370 is the call to run(); for me |
| 17:31:47 | nicksieger enters the room. | |
| 17:31:58 | evan | you've probably added some code |
| 17:31:59 | evan | i'm assuming. |
| 17:32:05 | evan | anyways |
| 17:32:08 | Defiler | Are you in instructions.rb or test_instructions.hpp? |
| 17:32:10 | evan | what am I looking for? |
| 17:32:13 | evan | instructions.rb |
| 17:32:15 | Defiler | OK |
| 17:32:26 | Defiler | Anyway.. it looks to me like the assertions there, after run();.. |
| 17:32:33 | Defiler | are only true before run() |
| 17:32:38 | Defiler | e.g. the arguments still being on the stack |
| 17:32:44 | Defiler | It is the retval that should be on the stack after run(), right? |
| 17:32:53 | Defiler | TS_ASSERT_EQUALS(task->stack->at(0), Object::i2n(3)); |
| 17:32:58 | evan | hm. |
| 17:33:06 | Defiler | is the line that fails, because stack->at(0) is a BlockEnv, not Fixnum:3 |
| 17:34:19 | evan | what was my thinking for this.. |
| 17:34:42 | evan | yeah, i guess so. |
| 17:35:41 | Defiler | Why does it inject 'noop' and 'push nil' into the opcode stream, also? |
| 17:36:33 | hemulen leaves the room. | |
| 17:36:35 | mutle_ leaves the room. | |
| 17:36:54 | evan | where do you see that? |
| 17:36:58 | evan | oh |
| 17:36:59 | evan | it's not. |
| 17:37:05 | evan | those are the operands |
| 17:37:18 | evan | the test setup code puts the opcode in stream[0] by default |
| 17:37:23 | evan | this opcode takes 2 operands |
| 17:37:26 | evan | so it's setting them. |
| 17:37:43 | Defiler | aah |
| 17:45:22 | botanicus leaves the room. | |
| 17:46:44 | mutle enters the room. | |
| 17:46:46 | Defiler | evan: OK.. switching gears.. do you already have a plan for the support that the 'string_to_sexp' primitive needs? |
| 17:47:10 | evan | zenspider was beginning to investigate that |
| 17:47:13 | evan | but didn't get very far |
| 17:47:18 | evan | so they're still up in the air |
| 17:47:18 | Defiler | Do we need to port 'grammar_runtime' to C++? There is code called by string_to_sexp that allocates Arrays |
| 17:47:27 | Defiler | and that needs to return C++-style Array instances |
| 17:47:32 | benburkert leaves the room. | |
| 17:47:52 | Defiler | Also, the existing code takes the cstr out of the given string and makes a bstring out of it |
| 17:47:52 | evan | Defiler: http://rubinius.lighthouseapp.com/projects/5089/tickets/643-port-parser-primitive-to-c |
| 17:48:18 | Defiler | Aah, nice. I didn't spot that one because I assumed it wasn't assigned |
| 17:48:23 | Defiler | Should I stay away from it then? |
| 17:48:33 | evan | dig in. |
| 17:48:40 | evan | i'd suggest you start with something smaller though. |
| 17:48:45 | ijcd enters the room. | |
| 17:48:47 | evan | something you can do in one day |
| 17:48:49 | Defiler | Yeah no doubt |
| 17:48:49 | evan | start to finish. |
| 17:49:01 | Defiler | I don't intend to work on this until all the low-hanging fruit is picked |
| 17:49:22 | ijcd leaves the room. | |
| 17:49:35 | Defiler | What do I need to consider before converting a ByteArray to a char*? |
| 17:49:44 | Defiler | If anything |
| 17:50:33 | methods | Defiler: so every single gem will just work ? |
| 17:50:54 | evan | Defiler: well, convert how? |
| 17:50:57 | Defiler | cast |
| 17:50:59 | evan | if you don't copy the data, if you just reference it |
| 17:51:10 | evan | then you can only use it in your immediate locality |
| 17:51:26 | Defiler | I will be more specific.. primitive gets a String.. and grammar runtime wants it as a bstring |
| 17:51:41 | evan | lets back off that one for now. |
| 17:51:45 | evan | go pick a simplier one. |
| 17:51:48 | Defiler | I am |
| 17:51:55 | Defiler | I just wrote down some questions earlier when I worked on it |
| 17:52:01 | evan | ah. |
| 17:52:03 | Defiler | Not actually intending to work on it today |
| 17:52:15 | evan | well, since bstring copies the data |
| 17:52:16 | evan | you can do |
| 17:52:18 | Defiler | I'm going to finish object_* prims instead |
| 17:52:23 | evan | (char*)*str |
| 17:52:29 | evan | where str is a String* |
| 17:52:38 | binary42 leaves the room. | |
| 17:52:42 | jgre enters the room. | |
| 17:53:02 | Defiler | OK, so we are going to keep bstring around until some future date when the transition to C++ is complete? |
| 17:53:54 | evan | no |
| 17:53:58 | evan | ditch bstring entirely |
| 17:54:02 | evan | it adds complexity |
| 17:54:14 | Defiler | OK.. so why did you say 'since bstring copies the data'? |
| 17:54:19 | evan | because it does |
| 17:54:24 | evan | when you create a bstring, and pass in a char* |
| 17:54:25 | Defiler | Our String * operator is not set up to copy the data currently |
| 17:54:31 | evan | it copies the data at the char* into itself |
| 17:54:39 | evan | bstring copies internally |
| 17:54:59 | Defiler | Right, but if we aren't planning to use it, I will (someday) need to perform that copy manually, right? |
| 17:56:47 | evan | we should use std::string instead of bstring |
| 17:56:59 | Defiler | Right |
| 17:57:03 | evan | if we feel the need to use a more C++ data structure |
| 17:57:06 | evan | doing |
| 17:57:23 | evan | std::string thing((char*)*str_object) |
| 17:57:25 | evan | is fine. |
| 17:57:30 | evan | you can use thing anytime, anywhere |
| 17:57:32 | Defiler | OK cool |
| 17:57:33 | evan | because it copies the data. |
| 18:01:35 | shame leaves the room. | |
| 18:01:59 | twbray enters the room. | |
| 18:02:03 | shayarnett leaves the room. | |
| 18:02:43 | shayarnett enters the room. | |
| 18:05:15 | headius enters the room. | |
| 18:05:29 | blakewatters leaves the room. | |
| 18:06:30 | edwardam enters the room. | |
| 18:07:35 | blakewatters enters the room. | |
| 18:09:24 | octopod leaves the room. | |
| 18:11:10 | edwardam leaves the room. | |
| 18:12:58 | josb enters the room. | |
| 18:15:33 | rue | Defiler: Usually you need to give the full namespaced method name to breakpoint |
| 18:15:43 | rubuildius_amd64 leaves the room. | |
| 18:16:01 | rubuildius_ey64 leaves the room. | |
| 18:16:35 | rubuildius_ey64 enters the room. | |
| 18:16:46 | rubuildius_amd64 enters the room. | |
| 18:19:57 | nakajima enters the room. | |
| 18:20:43 | rubuildius_amd64 leaves the room. | |
| 18:21:01 | rubuildius_ey64 leaves the room. | |
| 18:21:33 | rubuildius_ey64 enters the room. | |
| 18:21:46 | rubuildius_amd64 enters the room. | |
| 18:22:40 | ijcd enters the room. | |
| 18:24:22 | pauldix leaves the room. | |
| 18:25:37 | c0sin enters the room. | |
| 18:28:03 | dgtized | evan: thanks for fixing the strlcat/strlcpy problem |
| 18:28:10 | evan | no prob |
| 18:28:17 | evan | i'm surprised that OS X didn't complain about that. |
| 18:29:11 | dgtized | didn't it just use the BSD version of those libs? |
| 18:30:02 | dgtized | http://gist.github.com/3484 - I do get unit test failures as well, looks like something is still unhappy with name mangling |
| 18:30:12 | evan | dgtized: hm, I don't think so, no. |
| 18:30:28 | evan | arg. |
| 18:30:30 | evan | ok |
| 18:31:06 | wmoxam leaves the room. | |
| 18:31:17 | wmoxam enters the room. | |
| 18:31:57 | wmoxam leaves the room. | |
| 18:36:09 | hemulen enters the room. | |
| 18:36:17 | wmoxam_ enters the room. | |
| 18:37:18 | shame enters the room. | |
| 18:41:33 | headius | hey guys |
| 18:41:40 | headius | wanted your opinion on something |
| 18:42:21 | headius | mental's been working on some concurrency fixups for the core collection types (starting with array), using lock-free techniques to just guarantee internal structure remains intact |
| 18:42:55 | headius | there are cases where we can't make that guarantee, like if two threads step on each others' length changes or something |
| 18:43:15 | headius | but we can detect it...and at this point we're introducing a new exception that < ThreadError called ConcurrencyError |
| 18:43:44 | headius | we thought about just using ThreadError but this seems to be more accurate |
| 18:43:48 | ijcd leaves the room. | |
| 18:43:49 | headius | and it's a special case of a "thread error" |
| 18:44:00 | ijcd enters the room. | |
| 18:45:38 | headius | thoughts? |
| 18:46:51 | dgtized | so there would just be random occasions where a ConcurrencyError would get thrown? |
| 18:47:08 | dgtized | (obviously not actually random, but from the perspective of how one normally views code like that) |
| 18:47:46 | headius | well, essentially it would be saying "you tried to do too many things at once with this array" |
| 18:48:13 | headius | in general most operations should be ok, but in the rare cases where you're doing a bunch of writes across threads it would raise this |
| 18:48:33 | headius | for the most part it's to mask a potential Java exception blowing out a thread completely |
| 18:48:50 | headius | similar to raising an error instead of dumping core |
| 18:50:52 | joachimm leaves the room. | |
| 18:51:40 | brainopia enters the room. | |
| 18:52:00 | dgtized | I don't like needing to wrap every @arr.length in a begin/rescue for ConcurrencyError |
| 18:52:23 | dgtized | it makes sense to determine the error |
| 18:53:00 | headius | well, this isn't really a recoverable condition |
| 18:53:08 | headius | it's more to show you're doing something you shouldn't |
| 18:54:34 | headius | the alternative to just providing minimal safeguards would be making the core collections completely safe, and that means lots of locking |
| 18:55:17 | dgtized | can you make an example? |
| 18:57:17 | benburkert enters the room. | |
| 19:00:34 | chenkai enters the room. | |
| 19:01:27 | headius | well, two threads lengthening and shortening a string would probably not be a good idea |
| 19:01:31 | headius | string/array |
| 19:02:16 | headius | this is largely a new area since we're the only ones to tackle concurrent modification so far |
| 19:03:41 | headius | though how does rubinius keep multiple threads from mutilating arrays at the same time? context switch seems like it could happen at bad times, since more code is Ruby |
| 19:05:52 | botanicus enters the room. | |
| 19:12:55 | evan | headius: yeah, thats an arena we haven't spent time in yet. |
| 19:14:43 | chenkai leaves the room. | |
| 19:15:35 | headius | evan: what do you think of ConcurrencyError |
| 19:15:58 | headius | after some measurements, we came to the conclusion that making the core types thread-safe was way too high a perf cost to pay |
| 19:16:18 | evan | how are you detecting when to raise it? |
| 19:16:24 | headius | even the fastest locking mechanisms decreased perf on simple append benchmarks by many times over |
| 19:16:32 | evan | sure, that makes sense |
| 19:16:40 | chris2 leaves the room. | |
| 19:16:53 | headius | omni is likely to include some safe wrappers people can use, so I think that's the way to go |
| 19:17:16 | headius | you'd have to ask mental about detection, but basically it's whenever Java would raise an array index error because we've stepped off the end of an array |
| 19:17:40 | evan | ah |
| 19:17:43 | evan | well, we've got that too |
| 19:17:53 | evan | since you'd get an error from a primitive |
| 19:18:03 | evan | if you try and walk off the reservation |
| 19:18:10 | headius | right, same thing |
| 19:18:44 | evan | sure, i've fine with that |
| 19:18:57 | pauldix enters the room. | |
| 19:19:04 | evan | i'd almost see it as ConsistenceError though |
| 19:19:10 | evan | not Concurrency |
| 19:19:16 | evan | you're not really testing Concurrency |
| 19:19:22 | headius | perhaps...but it's concurrency-caused |
| 19:19:24 | evan | you're testing that the object is internally consistent |
| 19:19:36 | evan | true, but i guess i'm thinking it could be accidentally cause by something else |
| 19:19:39 | evan | esp. in the cause of rubinius |
| 19:19:57 | evan | someone could set the @size of an array to be larger than it's bounds |
| 19:20:02 | evan | unrelated to concurrency |
| 19:20:06 | headius | perhaps so...I think that's more of a general issue that I'd rather be a hard failure |
| 19:20:15 | evan | sure |
| 19:20:16 | headius | in our case that's not directly mutable anyway |
| 19:20:21 | evan | yeah |
| 19:20:27 | evan | well, how about 2 classes then? |
| 19:20:40 | evan | ConcurrencyError < ConsistenceError |
| 19:22:54 | antares_ enters the room. | |
| 19:23:26 | headius | I think I'd see them as separate hierarchies...it's not really the consistency we're interested in here, it's the fact that you're concurrently modifying in bad ways |
| 19:24:48 | headius | there could be other cases unrelated to consistency that wouldn't necessarily be object consistency |
| 19:25:00 | headius | I'm going to email ruby-core to see how they react too |
| 19:25:04 | evan | ok |
| 19:27:55 | binary42 enters the room. | |
| 19:30:21 | dysinger enters the room. | |
| 19:37:21 | jgre | evan: I submitted a patch that was committed. Can I get a commit bit? |
| 19:37:55 | evan | sure, I just need the link to your commit, and your github username |
| 19:39:09 | jgre | The ticket was: http://rubyurl.com/jtPc |
| 19:39:26 | jgre | and the username ist jgre |
| 19:39:44 | evan | ok, one sec |
| 19:40:51 | evan | ok, added! |
| 19:41:00 | evan | thanks for the work! |
| 19:42:42 | jgre | you're welcome |
| 19:52:36 | benburkert leaves the room. | |
| 19:53:31 | benburkert enters the room. | |
| 19:54:14 | CIA-30 | * Implement 'object_frozen_p' and 'object_freeze' primitives; 7c0456c - Wilson Bilkovich |
| 20:02:13 | Defiler | evan: The equivalent of cpu_perform_hook in VM is task->active->perform_hook() ? |
| 20:02:55 | Defiler | Got a cpu_perform_hook here that uses state->global->sym_init_copy that I need to port |
| 20:02:59 | dgtized | wait what is this frozen business, I thought we weren't doing that? |
| 20:03:12 | Defiler | That is in the C++ branch |
| 20:03:30 | Defiler | We don't support 'freeze' in the kernel itself yet, though |
| 20:03:35 | dgtized | ah |
| 20:03:42 | Defiler | Or, rather, we don't check it |
| 20:03:47 | Defiler | Though we support setting the flag. Heh |
| 20:03:52 | dgtized | k |
| 20:04:00 | dgtized | so we waste the space for it |
| 20:04:24 | Defiler | It only takes one bit to implement.. the trick is avoiding the need to check it on every method dispatch |
| 20:15:16 | jbarnette_ enters the room. | |
| 20:17:35 | headius | it's not ever dispatch, just mutations |
| 20:22:22 | pauldix leaves the room. | |
| 20:22:33 | brainopia leaves the room. | |
| 20:22:45 | evan | Defiler: perform_hook is going away |
| 20:22:51 | evan | i don't want use to use it at all |
| 20:26:50 | yroc enters the room. | |
| 20:28:04 | dgtized | Defiler: it's one bit on every object though -- why is it matz wants to keep frozen around anyway? |
| 20:28:18 | Defiler | evan: OK.. so existing primitives that perform a hook should no longer attempt to perform those hooks |
| 20:28:24 | Defiler | dgtized: Who can know the mind of matz? |
| 20:29:13 | dgtized | Defiler: dunno, but I mean has anyone actually asked him about frozen? |
| 20:29:55 | Defiler | I don't recall ever having a question answered on ruby-core |
| 20:29:59 | Defiler | So it would need to be someone else |
| 20:31:23 | jbarnette leaves the room. | |
| 20:31:43 | tarcieri | 1/cl |
| 20:31:57 | dgtized | Are those ruby implementation IRC chats still going on? |
| 20:32:19 | headius | matz updated the page with a new schedule but I didn't see anyone other than me say they were ok with the dates |
| 20:32:45 | dgtized | headius: what does jruby do with freeze? |
| 20:33:00 | headius | we honor it |
| 20:33:10 | dgtized | fully? |
| 20:33:18 | headius | there's a bunch of test in the old rubicon for freezing, which we pass |
| 20:33:25 | headius | as fully as we have tests for, at any rate |
| 20:33:37 | dgtized | k |
| 20:33:50 | dgtized | and that does/doesn't take a huge performance hit for you guys? |
| 20:34:00 | headius | it's minor...a flag check |
| 20:34:23 | dgtized | oh because it's not in ruby bytecode it's in your library implementation? |
| 20:34:30 | headius | we don't have ruby bytecode |
| 20:34:47 | dgtized | I wonder how ruby1.9 deals with it in bytecode |
| 20:35:00 | fbuilesv | zenspider: ping |
| 20:35:01 | headius | pretty sure it doesn't, it's a flag there too |
| 20:35:08 | Defiler | It still uses the 'node state' stuff that 1.8 did it with, I believe |
| 20:35:08 | headius | it's just an object state |
| 20:35:32 | headius | it would have to be at the object level because some methods check it and some don't |
| 20:35:41 | dgtized | I guess the question is, if it's going to stick around, why we can't stick the state checking code in the appropriate primitives? |
| 20:35:55 | dgtized | That way it stays out of the bytecode / library |
| 20:35:57 | headius | that's where I'd put it |
| 20:36:30 | headius | if it needs to be exposed to ruby too |
| 20:36:34 | headius | er |
| 20:36:35 | dgtized | perhaps with a #ifdef around them so they can be enabled/disabled at compile time for speedup |
| 20:36:35 | headius | but it needs.. |
| 20:36:54 | headius | I haven't tried turning them off lately, but they never appeared to be much difference |
| 20:37:05 | headius | I'm sure there's some |
| 20:37:13 | headius | but mutations are usually expensive enough it doesn't compare |
| 20:37:20 | dgtized | Well if it's a flag then we can check that outside just fine, it's just the cost of checking from bytecode is a lot higher then a simple flag check in C |
| 20:37:52 | Defiler | One thing's for sure.. we're not going to call Object#frozen? all the time. Heh |
| 20:37:53 | headius | that's for sure |
| 20:38:06 | Defiler | but doing it in the primitives that set fields, etc.. probably wouldn't be hard |
| 20:38:27 | headius | sounds like you're moving away from doing so much in ruby because of the perf issues |
| 20:38:33 | nicksieger leaves the room. | |
| 20:38:37 | headius | brixen mentioned changes to math, etc |
| 20:38:52 | Defiler | The dividing line is much easier to see in the new VM |
| 20:38:58 | Defiler | So changes are inevitable |
| 20:39:31 | dgtized | The vast majority of things are in ruby anyway |
| 20:39:36 | headius | can the new vm do conditional logic in the primitives yet? |
| 20:39:54 | dgtized | headius: ? |
| 20:40:07 | Defiler | I assume you mean other than 'if'? |
| 20:41:17 | headius | I remember evan saying something about primitives not being able to affect program flow |
| 20:41:19 | Defiler | evan: I have a MetaClass that I want to make be the metaclass of a newly-created object.. MetaClass::attach allocates a new MetaClass. Should I just implement MetaClass::replace, or do you recommend something else? |
| 20:41:57 | Defiler | Probably what he was talking about is that you can't invoke a Ruby method from a primitive |
| 20:42:25 | Defiler | Which remains true.. but of course you can do anything you felt like doing in C/C++ from a primitive |
| 20:42:33 | ijcd_ enters the room. | |
| 20:42:58 | headius | ahh, so you still have to either allow execution to continue or raise an exception or something |
| 20:43:19 | headius | so presumably that means you can't move into primitives any code that would call to_str and friends |
| 20:43:29 | Defiler | or just fail the primitive and let the Ruby code under it execute |
| 20:43:55 | Defiler | Unless it's a to_str thing that has a C implementation, I guess |
| 20:44:13 | headius | mm ok |
| 20:44:29 | Defiler | I'm definitely not the final source on this.. maybe evan will swing in and correct all my lies |
| 20:44:49 | Defiler | but I haven't seen anything in the new code that would suddenly let you continue dispatching methods before jumping back into the primitive |
| 20:44:52 | Defiler | tricky |
| 20:45:28 | headius | yeah, stackless complicates all of that |
| 20:46:20 | headius | btw...lopex is thinking we might need to add a separate 1.8.7 compat mode in JRuby |
| 20:46:26 | headius | because of backward-incompatible changes |
| 20:46:34 | headius | right now there's only 1.8 and 1.9 modes in JRuby |
| 20:47:30 | Defiler | =( |
| 20:48:09 | tarcieri | heh, ugh :/ |
| 20:48:10 | headius leaves the room. | |
| 20:48:33 | tarcieri | 1.8_1/2.7 |
| 20:49:03 | dgtized | do we have any long term plan for when the cpp branch is supposed to merge with head again? |
| 20:49:44 | evan | when it's ready. |
| 20:51:52 | evan | Defiler: perform_hook is way to brittle, thats why it's going away |
| 20:51:53 | dgtized | k -- is it a requirement for V1.0? |
| 20:52:01 | evan | dgtized: atm, yes. |
| 20:52:21 | jbarnette_ leaves the room. | |
| 20:52:53 | dgtized | k |
| 20:54:45 | twbray leaves the room. | |
| 20:56:02 | shayarnett leaves the room. | |
| 20:57:47 | ijcd leaves the room. | |
| 20:59:30 | dgtized | evan: what are the major hurdles keeping us from hooking it up with the current kernel? |
| 20:59:46 | ijcd_ leaves the room. | |
| 21:00:51 | evan | getting all the primitives wired in |
| 21:01:01 | evan | i'm working today on getting it loading the kernelin. |
| 21:01:22 | imajes_ enters the room. | |
| 21:02:36 | benny leaves the room. | |
| 21:03:58 | dgtized | awesome |
| 21:04:19 | dgtized | just seems like the barrier to work on that branch decreases dramatically once it's at least partially wired in |
| 21:09:02 | mutle leaves the room. | |
| 21:11:01 | yroc leaves the room. | |
| 21:13:52 | jgre leaves the room. | |
| 21:17:11 | Defiler | evan: What am I likely to be doing wrong if I compile a .rb file with rbx, and then, when running ./vm/vm the_file.rbc, I get "Runtime exception: Invalid file" |
| 21:17:19 | Defiler | I know you walked me through this once, but I forgot =( |
| 21:17:32 | evan | you have to use |
| 21:17:43 | evan | ruby lib/compiler/mri_compile.rb -frbx-kernel <input> <output> |
| 21:17:47 | evan | i've got a shell script i'm using here |
| 21:17:51 | evan | that i'll commit shortly. |
| 21:17:53 | Defiler | oh riiight yeah |
| 21:18:02 | Defiler | You rafb.net'd that to me a while ago |
| 21:18:02 | nicksieger enters the room. | |
| 21:18:48 | botanicus leaves the room. | |
| 21:27:10 | mutle enters the room. | |
| 21:30:25 | imajes_ leaves the room. | |
| 21:33:54 | Defiler | evan: Am I doing anything dumb here? This should work, right? http://gist.github.com/3523 |
| 21:34:11 | dbussink | evan: dunno if it makes any difference, but maybe this is interesting: http://bstring.sourceforge.net/features.html |
| 21:34:18 | evan | dbussink: no |
| 21:34:19 | evan | er |
| 21:34:19 | Defiler | We are using bstring already. Heh |
| 21:34:20 | evan | Defiler: no |
| 21:34:22 | evan | that does not work. |
| 21:34:29 | dbussink | it's of course from the guys of bstring |
| 21:34:37 | dbussink | but i read something about ditching it |
| 21:34:39 | evan | bstring is going away |
| 21:34:59 | Defiler | Didn't you send me an Object#show example using a primitive? |
| 21:35:05 | Defiler | or am I mis-remembering that example.. |
| 21:35:06 | twbray enters the room. | |
| 21:37:21 | dbussink | evan: what's the main reason? simplification? |
| 21:37:30 | evan | yeah |
| 21:37:32 | evan | few deps |
| 21:37:41 | ezmobius enters the room. | |
| 21:40:34 | jbarnette enters the room. | |
| 21:40:53 | Defiler | evan: Is there a right way to attach that primitive and see if it melts? Or do I just need to try to explore it via the test suite? |
| 21:41:05 | evan | no |
| 21:41:07 | evan | you don't do that in ruby |
| 21:41:09 | evan | you test in C++ |
| 21:41:46 | evan | the primitives, that is. |
| 21:43:08 | Defiler | Huh. I would have sworn you pasted me an example, but oh well |
| 21:43:29 | evan | primitive functionality is associated directly with the VM |
| 21:43:36 | evan | so that functionality needs to be with the VM tests |
| 21:43:56 | evan | since primitives are just C++ methods, it's easy enough to just write a test for that method |
| 21:44:04 | evan | you don't need to test the primitive wiring glue |
| 21:44:12 | Defiler | Oh, sure.. I already have a test for this |
| 21:44:31 | Defiler | but I am trying to understand the difference between MetaClass::attach and the version of it I expected to see when I opened the code. Heh |
| 21:45:00 | nicksieger leaves the room. | |
| 21:45:39 | nicksieger enters the room. | |
| 21:45:50 | evan | huh? |
| 21:46:03 | evan | you're testing the clone primitive, right? |
| 21:46:27 | Defiler | Yes |
| 21:46:36 | evan | so |
| 21:46:41 | evan | why are you doing anything with a metaclass? |
| 21:46:49 | Defiler | clone is dup + copy the metaclass |
| 21:46:56 | evan | ok |
| 21:47:05 | evan | but you shouldn't be adding metaclasses are onything |
| 21:47:12 | Defiler | Right |
| 21:47:15 | evan | you should just inspect the cloned object |
| 21:47:26 | Defiler | void copy_metaclass(STATE, OBJECT other); |
| 21:47:33 | evan | to see it has a metaclass (thats unique) that that metclass is setup properly |
| 21:47:34 | Defiler | is in the builtin_object.hpp header, but is not implemented |
| 21:48:13 | evan | huh. I guess I didn't implement it |
| 21:48:18 | evan | ok |
| 21:48:23 | Defiler | I need to implement copy_metaclass, and I am trying to figure out what it needs to look like |
| 21:48:49 | Defiler | MetaClass::attach without the initialization and without the 'no superclass given' case |
| 21:48:53 | Defiler | Is my current belief |
| 21:50:51 | evan | without the initialization? |
| 21:50:59 | tarcieri | :( @ Constant::method |
| 21:51:29 | evan | Defiler: fire up ichat |
| 21:51:34 | evan | we're going video |
| 21:52:00 | brixen | tarcieri: elaborate? |
| 21:52:25 | tarcieri | brixen: eh, I just don't like it stylistically |
| 21:52:43 | evan | tarcieri: huh? |
| 21:52:47 | brixen | hmm, I don't follow |
| 21:53:00 | evan | tarcieri: we're talking about in C++ |
| 21:53:01 | evan | not ruby. |
| 21:53:08 | tarcieri | oh |
| 21:53:12 | tarcieri | my bad |
| 21:54:30 | brixen | tarcieri: oh, yeah, I dislike C::m in ruby too |
| 21:55:24 | rudebwoy_ leaves the room. | |
| 21:57:30 | evan | Defiler: ? |
| 21:59:09 | Defiler | OK. Let me get that configured |
| 22:00:24 | VVSiz | hi guys. a short note: >rubinius -e "a = []; a << a; a.hash" | more |
| 22:00:25 | VVSiz | An exception has occurred: |
| 22:00:25 | VVSiz | Maximum amount of stack space used (SystemStackError) |
| 22:01:16 | VVSiz | the same for JRuby and MRI 1.8.6, but in later MRI version this has been fixed |
| 22:01:48 | rudebwoy enters the room. | |
| 22:02:01 | brixen | VVSiz: we have a spec for that? |
| 22:02:05 | drbrain | heh, needs recursion guard all up in there |
| 22:02:26 | VVSiz | not yet (but I have a bug for JRuby to fix, and hence we'll have a spec sooner or later ) :) |
| 22:02:37 | brixen | VVSiz: ok |
| 22:02:43 | VVSiz | I'm currently trying to run the latest test_array from MRI 1.9 against JRuby and Rbx. |
| 22:02:51 | VVSiz | Rbx sigsegvs early |
| 22:03:24 | VVSiz | JRuby crashes on [][2**63-1]=2 |
| 22:04:25 | brixen | VVSiz: it would be sweet to have 1.9 specific array behavior in 1.9/core/array specs |
| 22:04:31 | brixen | VVSiz: in case you feel inspired ;) |
| 22:04:54 | VVSiz | heheh |
| 22:05:05 | brixen | I imagine it will be fun to try to extract said specific behaviors from test_array |
| 22:05:18 | brixen | has little love for unit tests |
| 22:05:33 | VVSiz | I have a TODO list with more than 200 items at the moment :) one more wouldn't hurt! |
| 22:05:50 | brixen | VVSiz: ugh :/ |
| 22:06:20 | brixen | VVSiz: why don't you add some tickets to rubyspec then |
| 22:08:17 | VVSiz | that's for sure |
| 22:10:07 | VVSiz | brixen: one more infinite recursion with recursive arrays in rubinius: |
| 22:10:11 | VVSiz | rubinius -e "a = []; a << a; a == a" |
| 22:10:23 | brixen | hm, surprised by that one |
| 22:10:46 | brixen | I would have thought we had recursion guard in == for sure |
| 22:10:54 | VVSiz | this one (well, similar one) is actually crashing rbx on test_array from MRI |
| 22:11:38 | headius enters the room. | |
| 22:11:39 | mutle leaves the room. | |
| 22:11:53 | VVSiz | here's the stacktrace/log from that crash: http://pastie.org/245186 |
| 22:14:21 | headius leaves the room. | |
| 22:14:55 | headius enters the room. | |
| 22:16:23 | VVSiz | that test_array from MRI is *weird*. It reports 600 assertions for JRuby , 18k assertions for Rubinius, 105k assertions for ruby :) |
| 22:20:19 | blakewatters leaves the room. | |
| 22:20:28 | drbrain | damn, they took auto-refresh out of GraphViz |
| 22:22:35 | mutle enters the room. | |
| 22:23:49 | AndrewO leaves the room. | |
| 22:25:52 | imajes_ enters the room. | |
| 22:26:24 | imajes_ leaves the room. | |
| 22:27:05 | imajes_ enters the room. | |
| 22:29:01 | sambo82 enters the room. | |
| 22:30:17 | moofbong leaves the room. | |
| 22:32:50 | drbrain | ok, I filed a bug on that |
| 22:40:27 | joachimm enters the room. | |
| 22:40:35 | BobFunk leaves the room. | |
| 22:41:04 | BobFunk enters the room. | |
| 22:42:12 | ijcd enters the room. | |
| 22:47:58 | VVSiz | rubinius -e "p [][2**100]=1" |
| 22:48:05 | VVSiz | raises primitive failed (PrimitiveFailure) |
| 22:48:19 | VVSiz | but should be either IndexError or ArgumentError or RangeError :) |
| 22:53:28 | imajes_ leaves the room. | |
| 23:00:10 | rubuildius_ey64 leaves the room. | |
| 23:00:44 | rubuildius_ey64 enters the room. | |
| 23:08:18 | nicksieger leaves the room. | |
| 23:08:38 | nicksieger enters the room. | |
| 23:20:29 | fbuilesv leaves the room. | |
| 23:23:08 | wmoxam leaves the room. | |
| 23:28:11 | radarek leaves the room. | |
| 23:28:15 | aotearoa enters the room. | |
| 23:31:42 | imajes_ enters the room. | |
| 23:38:46 | Maledictus leaves the room. | |
| 23:50:45 | rubuildius_amd64 leaves the room. | |
| 23:51:02 | rubuildius_ey64 leaves the room. | |
| 23:51:35 | rubuildius_ey64 enters the room. | |
| 23:51:47 | rubuildius_amd64 enters the room. | |
| 23:57:01 | VVSiz | brixen: looks like in MRI 1.8.7+, there were plenty of fixes for recursive arrays, and JRuby and Rubinius fail on many Array methods with recursive arrays yet. I'm going to add those cases to the RubySpecs, so prepare to see some crashes with Rbx ;) |
| 23:57:26 | brixen | VVSiz: sure thing |
| 23:57:28 | brixen | thanks for adding them |
| 23:58:31 | VVSiz | the crown of the worst method of the day goes to Array#choice: Choose a random element from an array. :) |
| 23:58:43 | CIA-30 | * Introduce 'type()' function that should be used in place of 'obj_type' Turn Object::show into a 'virtually virtual' function a la get_field; 35fcbdc - Wilson Bilkovich |
| 23:58:50 | imajes_ leaves the room. |