Show enters and exits. Hide enters and exits.
| 03:56:15 | evan | brixen: so, having now done C++ for a while |
| 03:56:19 | evan | i can read the strongtalk code |
| 03:56:34 | brixen | sweet |
| 03:56:46 | brixen | what's it whispering in your ear? :) |
| 03:56:53 | evan | heh |
| 03:56:59 | evan | i'm reading through it's logic for inlining |
| 03:57:06 | brixen | ahh! |
| 03:57:08 | brixen | excellent |
| 03:57:09 | evan | i haven't yet found where it inserts a guard |
| 03:57:15 | brixen | feel free to point me to code |
| 03:57:25 | evan | but it appears to construct a sea-of-nodes from the bytecode |
| 03:57:44 | evan | and it simply splices the callee's start node into the call site in the caller |
| 03:58:07 | evan | so the call appears to disapper, being replaced with the callee code |
| 03:58:10 | brixen | I thought SoN was cliff click's construction? did that idea exist before jvm hotspot? |
| 03:58:18 | evan | yeah |
| 03:58:21 | brixen | ahh |
| 03:58:23 | evan | well |
| 03:58:36 | evan | sea-of-nodes is just a fancy word for a tree based IR |
| 03:58:38 | evan | in my opinion |
| 03:58:42 | brixen | I see |
| 03:59:02 | evan | cliff defined, as I recall, a bunch of optimization that work well when it's a tree |
| 03:59:12 | evan | but having the IR being a tree is nothing new |
| 03:59:13 | evan | LLVM does it. |
| 03:59:27 | brixen | gotcha |
| 03:59:53 | evan | LLVM even has |
| 03:59:59 | brixen | so, does it rewrite locals, etc? |
| 04:00:00 | evan | Value::replaceAllUsesWith |
| 04:00:10 | brixen | how do you just splice in the callee node? |
| 04:00:20 | evan | thats what i'm trying to figure out still |
| 04:00:25 | brixen | ok |
| 04:01:12 | evan | strongtalk also simulates the stack inside the compiler |
| 04:01:18 | evan | the operand stack |
| 04:01:21 | brixen | interesting |
| 04:01:32 | brixen | like the stack depth calculator? |
| 04:01:42 | evan | with the elements of the stack being Expr objects |
| 04:01:52 | evan | and Expr objects can be hinted with their type |
| 04:02:16 | evan | yeah, like the stack depth calculator |
| 04:02:28 | evan | i tried to this in LLVM, but found out LLVM will do it for me |
| 04:02:42 | evan | rather, i tried to do this in the LLVM generation code |
| 04:03:44 | brixen | man, I spent all afternoon trying to get my dir on elle to build with llvm |
| 04:03:50 | brixen | I still have no idea what was up |
| 04:03:54 | evan | :/ |
| 04:03:55 | evan | leave it |
| 04:03:57 | evan | i'll poke at it. |
| 04:04:07 | brixen | it was getting tons of link errors |
| 04:04:18 | evan | oh oh |
| 04:04:18 | brixen | I finally did another distclean and it worked |
| 04:04:22 | evan | i think dgtized was getting that |
| 04:04:25 | evan | weird. |
| 04:04:28 | brixen | yeah |
| 04:04:31 | evan | is it working now? |
| 04:05:04 | brixen | oh yeah, I did svn update -r to the rev I'm using locally |
| 04:05:18 | evan | ah ok |
| 04:05:28 | brixen | *but* I just co'd llvm trunk to my ubuntu 32bit vbox |
| 04:05:31 | brixen | and it worked fine |
| 04:05:32 | tarcieri | did you guys end up capping your stack depth to match MRI? |
| 04:05:33 | brixen | no idea |
| 04:05:40 | evan | weird |
| 04:05:43 | evan | tarcieri: no |
| 04:05:43 | brixen | tarcieri: different stack |
| 04:05:48 | evan | tarcieri: well, sort of. |
| 04:05:56 | evan | we check the depth |
| 04:05:57 | tarcieri | ok on: different stack |
| 04:06:01 | tarcieri | heh |
| 04:06:01 | evan | because we're on the C stack |
| 04:06:14 | evan | but the check is adjusted for how big the stack for the current thread is |
| 04:06:21 | evan | so if you use ulimit to change your stack |
| 04:06:23 | evan | it will honor that |
| 04:06:28 | evan | i think MRI will do |
| 04:09:00 | evan | the strongtalk code is funny to read |
| 04:09:12 | evan | they had a habit of putting their initials and then the date after larger comments |
| 04:09:21 | evan | like this one is from |
| 04:09:27 | evan | gri 10/2/96 |
| 04:09:53 | evan | and they reference Dave (Dave Unger) and Urs (Urs Holzle) |
| 04:10:15 | brixen | heh, neat |
| 04:10:17 | brixen | history |
| 04:10:56 | brixen | so, you haven't found the "ok, son, have a seat, here's the secret to speed..." long comment yet? |
| 04:11:14 | evan | not yet. |
| 04:11:15 | evan | :D |
| 04:11:23 | evan | whats another word for guard.. |
| 04:11:33 | brixen | "ok son, now we open a can of wupass..." |
| 04:12:08 | brixen | shield, police, cover |
| 04:12:18 | evan | :/ |
| 04:12:28 | brixen | lookout, jailer, screw |
| 04:12:28 | evan | i'm trying to figure out what to search for to find the inline guards |
| 04:12:32 | brixen | heh |
| 04:12:35 | brixen | um.. |
| 04:12:41 | evan | it seems like they just go "sweet inline now" |
| 04:12:43 | evan | with no guard |
| 04:12:45 | evan | but that can't be right. |
| 04:12:51 | brixen | hm |
| 04:13:11 | tarcieri | heh, sorry, we're doing some live code refactoring |
| 04:13:26 | brixen | tarcieri: don't touch the red wire :) |
| 04:13:34 | evan | ZAP |
| 04:13:35 | brixen | er line |
| 04:13:40 | brixen | damn, I messed it up |
| 04:13:44 | evan | nah |
| 04:13:45 | evan | go with it |
| 04:13:47 | evan | you meant that! |
| 04:13:53 | evan | haha good one brixen! |
| 04:13:55 | brixen | I meant *line* |
| 04:13:57 | evan | (i'm trying to help) |
| 04:14:00 | brixen | I know |
| 04:19:33 | evan | or stuff like this |
| 04:19:34 | evan | //fatal("Urs thinks this shouldn't happen"); |
| 04:19:38 | evan | awesome |
| 04:19:48 | evan | it's like a fucking time machine! |
| 04:20:02 | evan | hah |
| 04:20:03 | evan | the next line |
| 04:20:09 | evan | ShouldNotReachHere(); // added instead of the fatal (gri 11/27/01) |
| 04:20:15 | brixen | heh |
| 04:20:41 | brixen | "warning: you should not be in this room, you should leave immediately" |
| 04:20:57 | brixen | Urs said so |
| 04:21:34 | evan | hehe |
| 04:21:42 | evan | but that comment out, and then |
| 04:22:03 | evan | GoDirectlyToPrincipal(); // send them out of the room nicely (emp, the future) |
| 04:22:23 | brixen | heh, yeah |
| 04:23:20 | evan | i think i might have found the guards |
| 04:29:18 | evan | ok, ps3 time. |
| 04:30:38 | tarcieri | heh |
| 04:30:47 | tarcieri | do you have Worms for PS3, evan? |
| 04:30:55 | tarcieri | it's like the coolest turn based strategy game ever |
| 04:31:14 | tarcieri | like, if Go is Lisp, and Chess is Java, Worms is Ruby :) |
| 04:32:15 | brixen | heh, interesting comparisons |
| 08:15:25 | evan | i feel like there are some good reasons for parrot |
| 08:15:44 | evan | but i really hope that allison had a bunch more than the ones in: http://www.linux-mag.com/id/7373 |
| 08:20:47 | tarcieri | Parrot just seems too abstract, and after opening by whining about the "basics like garbage collection", doesn't Parrot just use mark sweep? |
| 08:20:53 | brixen | yeah, I'm glad you can implement lolcode in a 5 min lightning talk |
| 08:21:02 | brixen | now that is pushing the state of the art forward |
| 08:21:25 | brixen | the abstraction drug is soo tempting |
| 08:21:41 | brixen | that's why there is only one good implementation of a GC anywhere |
| 08:21:56 | brixen | it's so easy to get good perf out of a complete abstraction |
| 08:22:07 | tarcieri | the description language for Parrot's PEG was fugly as fuck |
| 08:22:15 | brixen | oh, where do you start with the logic errors |
| 08:22:20 | evan | she talks about how register VMs are better than stack VMs because stack VMs always use a global data stack and you can stack smash them |
| 08:22:29 | evan | which is.. pretty much entirely false. |
| 08:22:33 | tarcieri | durr k |
| 08:23:22 | evan | stack based VMs are pretty much identical to register VMs |
| 08:23:23 | tarcieri | Isn't the main argument for register-based VMs that more research has gone into them because CPUs are register-based so most compilers target a register machine? |
| 08:23:37 | evan | except that stack VMs don't require you to enumerate where you want data |
| 08:24:07 | evan | the register allocator for a register VM would look a lot like a stack VM |
| 08:24:24 | evan | keeping track of who's using what register as they're used, so they can be reused |
| 08:24:37 | evan | tarcieri: thats the typical reason i've heard |
| 08:24:40 | evan | but it's bollox too |
| 08:24:51 | evan | since parrot gives you an infinite register stream |
| 08:24:56 | evan | map that directly to hardware! |
| 08:25:01 | brixen | heh |
| 08:25:08 | evan | you have the same challenges as a stack VM for that |
| 08:25:09 | tarcieri | heh |
| 08:25:12 | evan | i think it's a wash |
| 08:25:15 | maharg | how is an infinite register stream actually any different from a stack? |
| 08:25:18 | brixen | abstractions are grand, until they aren't |
| 08:25:19 | tarcieri | doesn't LLVM give you infinite registers? |
| 08:25:27 | evan | esp. when you consider that a register VM requires about 3x as much time to recode operands as a stack VM |
| 08:25:44 | evan | tarcieri: it gives you infinite named variables. |
| 08:25:52 | tarcieri | heh |
| 08:25:57 | evan | register is a platform abstraction |
| 08:26:18 | evan | for a chunk of static ram |
| 08:26:53 | evan | i'd find it quite funny if parrot did restrict themselves to an x86-32 number of registers |
| 08:27:06 | evan | they'd be running their register spill opcodes constantly! |
| 08:27:28 | evan | because x86 doesn't just have registers |
| 08:27:37 | evan | it's got stack that it can reason about and use actively |
| 08:27:42 | evan | anywho. |
| 08:27:58 | tarcieri | it's got... 4 general purpose registers? |
| 08:28:43 | evan | esi, edi, ebx, ecx, eax, ebp, esp |
| 08:28:56 | evan | my 7 little friends |
| 08:29:15 | evan | esp is out |
| 08:29:27 | evan | ebp can be used if you organize your function that way, but is normally out |
| 08:29:46 | evan | eax is always the return value, so you can use it as scratch between calls |
| 08:30:02 | evan | ebx is usually used for PIC, so many times it's not available |
| 08:30:19 | evan | thats why I added -mdynamic-no-pic to our build |
| 08:30:25 | evan | it frees up ebx to be used by gcc |
| 08:31:50 | tarcieri | oof |
| 09:41:37 | evan | WOOOOOOOOOOO |
| 09:41:37 | evan | Finished in 49.883222 seconds |
| 09:41:43 | evan | sub 50 baby! |
| 09:41:58 | evan | just barely squeaked in! |
| 09:49:17 | boyscout | Prune the global method cache much more intellegently - 64943ac - Evan Phoenix |
| 09:49:43 | brixen | heh |
| 09:49:48 | brixen | I had a sub 50 last night |
| 09:49:57 | evan | you have a faster machine |
| 09:50:00 | brixen | ahh |
| 09:50:11 | brixen | well, sub 40 march is on then :) |
| 09:50:23 | evan | thats sub 50, with the fact that i untagged more specs |
| 09:50:28 | brixen | btw, I don't think running the benches in the past is realistic |
| 09:50:44 | evan | because of the fewer specs? |
| 09:50:46 | brixen | I tried to run some, got segfaults, different #s of specs, etc |
| 09:50:56 | evan | ok then |
| 09:51:00 | brixen | I think we should just go from now on |
| 09:51:01 | evan | forward only then |
| 09:51:03 | brixen | ok |
| 09:51:05 | evan | i'm ok with that. |
| 09:51:18 | evan | i got everything compiled on the mac mini |
| 09:51:20 | brixen | I have to fix something in the data, but it should be running nightly now |
| 09:51:25 | brixen | cool |
| 09:51:26 | evan | i'll get it burning some benchs tomorrow |
| 09:51:41 | brixen | you'll have to add some code to that script to fetch and build |
| 09:51:58 | brixen | I have my aliases: git com; git purr; get co bench; get rem |
| 09:52:10 | brixen | but I figured you didn't have those |
| 09:52:47 | brixen | the benchmark/utils/cron_daily script that is |
| 09:52:52 | evan | ok |
| 09:52:56 | evan | i'll take a look in the morning |
| 09:52:58 | evan | you should get some sleep |
| 09:53:01 | brixen | yeah |
| 09:53:04 | evan | you've got the presentation tomorrow |
| 09:53:11 | brixen | finding good images is a pain |
| 09:53:17 | brixen | I've got some funny ones |
| 09:53:20 | evan | heh |
| 09:53:23 | scoopr | aww, 'purr' sounds cute |
| 09:53:27 | brixen | http://www.flickr.com/photos/pedrosimoes7/1319951752 |
| 09:53:37 | brixen | scoopr: heh, it's git pull --rebase |
| 09:53:56 | brixen | that portugese police car is my image for talking about mspec :) |
| 09:54:17 | brixen | I'm sure we'll see a comedy police chase with those someday |
| 09:54:23 | brixen | probably already on film actually |
| 09:54:32 | evan | hehe |
| 09:54:33 | evan | sounds fun |
| 09:54:35 | brixen | it will capture a ferari or something |
| 09:54:41 | evan | well, bed for me |
| 09:54:49 | evan | they're not filming them tomorrow, are they? |
| 09:54:51 | brixen | nite! |
| 09:54:59 | brixen | no, just sound |
| 09:55:08 | evan | ah well |
| 09:55:09 | brixen | a couple rooms are videotaped |
| 09:55:12 | evan | good luck! |
| 09:55:15 | brixen | thanks! |
| 09:55:23 | boyscout | CI: 64943ac success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors |
| 09:55:24 | evan | sleeps |
| 14:31:28 | nemerle_m | Does anyone else have problems with thread related specs ( resource exhaustion ) ? |
| 16:06:31 | nemerle_m | ok, i think this thread resources thing is related to threads beeing created with 4mb stack each, which is not freed without join/detach ? |
| 16:06:48 | nemerle_m | here's the process map of rbx: http://pastie.org/516455 |
| 16:07:14 | nemerle_m | 300+ instances of thread stack |
| 16:11:38 | nemerle_m | either each native thread should be pthread_detach'ed on creation, or pthread_join'ed when finished |
| 16:19:09 | sbryant_work | nemerle_m: interesting. |
| 16:22:24 | sbryant_work | nemerle_m: what are the circumstances for you creating 300 threads? |
| 16:25:05 | sbryant_work | nemerle_m: can you show me an example application? |
| 16:26:50 | nemerle_m | sbryant_work: this 300+ thread stackks in rbx memory map is from running ./bin/rbx ./mspec/bin/mspec-ci spec/frozen/core/thread |
| 16:26:52 | nemerle_m | :P |
| 16:27:35 | sbryant_work | OOps |
| 16:27:48 | sbryant_work | :P totally missed the first line |
| 16:28:04 | sbryant_work | This might not be anything. |
| 16:28:54 | nemerle_m | well it asserts on thread creation because my mem is exhausted :P |
| 16:29:46 | nemerle_m | but i think i fixed it |
| 16:30:12 | sbryant_work | what spec did it assert on? |
| 16:30:29 | sbryant_work | and what did you do to fix it? |
| 16:30:31 | nemerle_m | exit |
| 16:30:52 | nemerle_m | detached_native_thread was not calling native_thread_->detach(); |
| 16:31:03 | nemerle_m | *detach_native_thread |
| 17:05:14 | nemerle_m | I've put the thread patch here: http://www.nemerle.eu/thread_leak_fix.diff |
| 17:13:45 | brixen | nemerle_m: awesome |
| 17:13:54 | brixen | nemerle_m: will you be around for a bit? |
| 17:14:08 | brixen | I'm leaving to give a talk but you should ping evan for a commit bit |
| 18:03:43 | nemerle | brixen: yes, i'll be around |
| 18:20:28 | dgtized | anyone else see this: http://www.igvita.com/2009/06/13/profiling-ruby-with-googles-perftools/ |
| 18:20:47 | evan | yeah, it's interesting |
| 18:20:55 | evan | i looked through googles profiler |
| 18:39:46 | dgtized | huh, ruby-prof with a patched mri tracks GC calls |
| 18:40:14 | dgtized | I wonder how much trouble it would be to fix the ruby-prof extension to hook into rbx? |
| 22:13:14 | evan | la la |
| 22:13:17 | evan | rewriting inline caches |
| 22:13:18 | evan | la la |
| 22:13:23 | brixen | reeeallly? |
| 22:13:27 | brixen | how so? |
| 22:13:41 | evan | 3 things |
| 22:14:06 | evan | 1) to fix the memory leak problem (selectors holding on to SendSites forever, which keeps everything the SS references alive) |
| 22:14:30 | evan | thats a biggy, it effects eval bigtime |
| 22:15:11 | brixen | ahh yeah |
| 22:15:20 | brixen | hadn't thought of eval |
| 22:15:21 | evan | 2) seeing if the trampoline cache validator setup works better (i'm thinking it will) |
| 22:16:18 | evan | 3) allow for caches on the meta_* instructions |
| 22:16:43 | evan | something thats falling out of this so far is I might get rid of the SendSite class |
| 22:17:01 | evan | the semantics of the caches are sensitive enough that they need to be managed specially |
| 22:17:08 | brixen | I see |
| 22:17:33 | evan | and I can make them faster by keeping the caches at certain addresses in memory |
| 22:17:48 | brixen | we'd just need a primitive to get data from the sendsites for Ruby, a la profiler |
| 22:18:00 | brixen | yeah, that makes sense |
| 22:18:03 | evan | so atm, what i'm doing is having VMMethod hold an C array of InlineCache objects |
| 22:18:16 | evan | so that they can be directly referenced |
| 22:18:23 | brixen | cool |
| 22:18:38 | evan | yeah, then we can write some prims to mine that info |
| 22:18:49 | brixen | that actually makes a lot of sense (native objects) |
| 22:18:56 | brixen | we don't use them in any ruby machinery |
| 22:18:58 | evan | one cool thing i've realized is that i can now make the caches smarter |
| 22:19:02 | evan | yeah |
| 22:19:17 | evan | because, when building the cache, i can look at the instruction stream to know how the cache is used |
| 22:19:26 | evan | like, a cache is told at build time it's for a private send |
| 22:19:42 | brixen | ahh indeed |
| 22:19:43 | evan | and then it's lookup and such only use the method lookup and validation for private sends |
| 22:19:50 | brixen | gotcha |
| 22:19:59 | evan | i've got 2 method lookup methods now |
| 22:20:06 | evan | one for public, one for private |
| 22:20:16 | evan | private just ditches some of the logic |
| 22:20:33 | brixen | every little bit helps |
| 22:20:38 | brixen | this is some cool stuff |
| 22:20:42 | evan | yeah |
| 22:20:49 | evan | it should be cool |
| 22:20:49 | brixen | specialization ftw |
| 22:20:54 | evan | exactyl |
| 22:20:57 | brixen | I wonder how parrot handles that :D |
| 22:21:02 | evan | interpreter ICs are interesting |
| 22:21:11 | evan | because most ICs have to do with leveraging the call instruction |
| 22:21:19 | evan | which you can't do in an interpreter |
| 22:21:33 | evan | i look at how strongtalk does it |
| 22:21:51 | evan | they use bytes IN the bytecode stream for the cache |
| 22:22:04 | brixen | ah interesting |
| 22:22:07 | brixen | how do they mark that? |
| 22:22:13 | evan | i dunno |
| 22:22:19 | evan | i think they require their mature objects |
| 22:22:22 | evan | so maybe they leverage that |
| 22:22:28 | brixen | hmm |
| 22:22:29 | evan | s/their/they're/ |
| 22:22:48 | evan | 1.9 has a get_inline_cache instruction |
| 22:22:52 | evan | so it's kind of similar |
| 22:23:03 | evan | with ours |
| 22:23:21 | evan | i'm making the 1st operand to each send instruction actually be a pointer to a Cache object |
| 22:23:44 | evan | which is setup when the CompiledMethod is internalized |
| 22:24:02 | brixen | is Cache managed? |
| 22:24:12 | evan | no |
| 22:24:23 | evan | it's a pointer into the InlineCache array |
| 22:24:25 | brixen | how is it different than InlineCache? |
| 22:24:27 | brixen | ahh ok |
| 22:24:30 | evan | same |
| 22:24:37 | evan | Cache == InlineCache |
| 22:24:39 | evan | i'm just lazy. |
| 22:24:42 | brixen | ok |
| 22:24:56 | brixen | I thought Cache was like CompiledMethod |
| 22:25:08 | evan | ah! |
| 22:25:12 | evan | i considered that |
| 22:25:17 | evan | might do that eventually |
| 22:25:29 | evan | basically, allocate a proxy for the InlineCache C++ object |
| 22:25:31 | evan | to access it's data |
| 22:25:36 | brixen | ok |
| 22:33:56 | evan | brixen: how did the talk go? |
| 22:37:09 | brixen | good |
| 22:37:19 | brixen | small conf, ~10 attendees :) |
| 22:37:31 | brixen | only 2 were not getting paid to write ruby code |
| 22:37:58 | brixen | I just realized, github guys are supposed to be doing a panel in about an hour |
| 22:38:26 | evan | i think they're in pdx |
| 22:38:35 | evan | atduskgreg tweeted about seeing them |
| 22:38:37 | brixen | ~10 attendees to my talk that is, the conf is small but probably couple hundred people |
| 22:38:46 | evan | oh, defunkt just said he's at a lift presentation |
| 22:38:51 | brixen | cool |
| 22:39:03 | brixen | it was a toss up between machine learning and lift |
| 22:39:06 | evan | well, 10 people, thats intimitate |
| 22:39:11 | brixen | I picked machine learning |
| 22:39:16 | evan | aah |
| 22:39:18 | brixen | yeah, it was good |
| 22:39:29 | brixen | I knew 1/2 the audience |
| 22:39:32 | brixen | heh |
| 22:39:38 | evan | hehe |
| 22:39:42 | evan | is jim there? |
| 22:40:01 | brixen | nah, said he couldn't make it |
| 22:40:08 | brixen | you mean jim deville right? |
| 22:40:15 | evan | yep |
| 22:40:17 | evan | thats too bad |
| 22:41:19 | brixen | I think I'll go check out lift, bbiab |
| 22:41:23 | evan | k |
| 22:41:57 | nemerle | here's a little patch to fix packing negative numbers ('n' 'N' pack specifiers ) : www.nemerle.eu/pack_negative_fix.diff |
| 22:42:07 | evan | nemerle: you've got commit rights |
| 22:42:09 | evan | push it! |
| 22:42:42 | nemerle | both patches ? |
| 22:42:54 | evan | which is the other? |
| 22:43:00 | nemerle | i'm not 100% sure about the fix to the thread issue |
| 22:43:14 | evan | could ya show me the thread one? |
| 22:43:26 | nemerle | www.nemerle/eu/thread_leak_fix.diff |
| 22:43:33 | nemerle | * www.nemerle.eu/thread_leak_fix.diff |
| 22:44:21 | evan | hm |
| 22:44:23 | evan | whats the bug it fixes? |
| 22:45:31 | nemerle | ok, i recounted my findings earlier today, basically threads exited, but weren't detached/joined -> stacks were not beeing freed |
| 22:45:48 | nemerle | *thread -> in native sense |
| 22:46:14 | evan | hm. |
| 22:46:22 | evan | if the thread specs run with your fix |
| 22:46:23 | evan | it's fine. |
| 22:46:40 | nemerle | please take a look at this: http://pastie.org/516455 |
| 22:46:57 | evan | ah |
| 22:46:59 | evan | lots of stacks! |
| 22:47:04 | nemerle | indeed :) |
| 22:47:58 | evan | and with your fix, Thread#join still works properly, yes? |
| 22:48:55 | nemerle | I would assume it does, at least no mspec-ci spec failures would indicate so ? |
| 22:49:46 | evan | yeah, it would |
| 22:49:49 | evan | so both are fine |
| 22:49:58 | evan | go ahead and commit them |
| 22:50:58 | nemerle | ok, is there some tutorial for commiting to master on github ? :) |
| 22:53:31 | brixen | nemerle: indeed, doc/using_git.txt :) |
| 22:53:53 | brixen | le'me browse it to see if anything is outdated.. |
| 22:54:31 | evan | brixen: you getting Liftified? |
| 22:54:50 | brixen | heh, I'm getting githubified |
| 22:54:58 | brixen | inducted into the secret order |
| 22:55:51 | evan | heh |
| 22:56:31 | nemerle | brixen: since receiving commit rights i should re-clone from git@github.com:evanphx/rubinius.git, is that about right ? |
| 22:56:51 | brixen | just run rake git:committer |
| 22:57:14 | brixen | it'll switch the config url for you |
| 22:57:49 | brixen | then if you're on master, git commit; git pull --rebase; rake (to run the specs); git push (if specs run clean) |
| 22:59:59 | evan | marcandre: hello sir! |
| 23:05:30 | brixen | evan: can you see if there was an error running my crontab last night |
| 23:05:48 | brixen | I ran the script manually with no issues |
| 23:08:03 | boyscout | Fix for Array#pack for packing of negative values ('n' and 'N' specifiers) - 75ab637 - nemerle |
| 23:08:03 | boyscout | Fix for leaking of native thread stacks. - 2475441 - nemerle |
| 23:08:15 | nemerle | phew |
| 23:09:17 | brixen | nemerle: woot! |
| 23:09:31 | evan | hehe |
| 23:09:32 | brixen | nemerle: boyscout CI has yet to bless it though :) |
| 23:09:34 | evan | see, that was fine! |
| 23:09:38 | evan | brixen: hm. ok. |
| 23:09:45 | brixen | jump in, the water is fine :) |
| 23:12:03 | boyscout | CI: 2475441 success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors |
| 23:12:49 | nemerle | tommrrow i'll try to tackle that hang in all specs doing 'describes a running thread' |
| 23:13:25 | brixen | nemerle: awesome, thanks for helping out! |
| 23:14:02 | brixen | evan: check this out http://gist.github.com/132239 |
| 23:14:16 | brixen | I wonder why running the specs is so sporadic |
| 23:14:51 | evan | huh. |
| 23:14:52 | evan | weird. |
| 23:14:53 | brixen | updated the gist with the rdoc times |
| 23:15:06 | brixen | sd for rdoc is 0.6 |
| 23:15:07 | evan | WEIRD |
| 23:15:10 | evan | they're pretty close |
| 23:15:13 | brixen | yeah |
| 23:15:14 | dgtized | I've noticed that too -- I'm guessing non-determinism in thread specs and stuff like that? |
| 23:15:15 | evan | so it's just the specs... |
| 23:15:19 | brixen | yeah |
| 23:15:29 | brixen | and it's just running ci :core |
| 23:15:31 | evan | 40s of nondeterminism? |
| 23:15:32 | evan | thats odd. |
| 23:15:39 | brixen | it is |
| 23:15:58 | nemerle | I would venture a guess that it might have to do with those hang-ups i've mentioned :P |
| 23:16:07 | brixen | heh, I was just thinking that |
| 23:16:12 | brixen | since it's on linux |
| 23:16:12 | evan | what hangups? |
| 23:17:03 | nemerle | running mspec-ci -f spec usually goes well, untill it checks '- describes a running thread' at which points it can hang upto 50s |
| 23:17:56 | evan | that must be it. |
| 23:18:35 | brixen | evan: http://bench.rubini.us/ :) |
| 23:18:52 | brixen | of course, we'll have to see the trends over time |
| 23:19:22 | evan | hehe |
| 23:19:23 | evan | yeah |
| 23:19:37 | brixen | I'm going to make the top graphs zoom and put some info about the benches in there |
| 23:19:45 | brixen | what they are and why we run them |
| 23:20:09 | evan | rad. |
| 23:20:23 | brixen | in 2 weeks we'll have 14 data points |
| 23:20:29 | brixen | if I can get the damn cron to run |
| 23:22:16 | brixen | evan: actually, can you look at my cron? I added env var set lines, maybe I f'd something up |
| 23:22:24 | evan | sounds that way. |
| 23:23:32 | evan | hm. |
| 23:23:42 | evan | you know.. |
| 23:23:49 | evan | the example cron doesn't have the user field |
| 23:23:54 | evan | fucking cron. |
| 23:24:02 | brixen | but we fixed that |
| 23:24:02 | evan | o/~ i hate you... o/~ |
| 23:24:13 | evan | no, we ADD a user |
| 23:24:25 | evan | added. |
| 23:24:28 | brixen | yeah |
| 23:24:45 | brixen | but man 5 crontab shows an example |
| 23:25:02 | brixen | the only thing I'm missing is a blank line |
| 23:25:08 | brixen | I wonder if it needs that |
| 23:25:34 | evan | cron is so fucking stupid |
| 23:25:34 | evan | ARG |
| 23:25:55 | brixen | we could install god :) |
| 23:26:19 | evan | has this ever run? |
| 23:27:04 | evan | ok |
| 23:27:12 | evan | i found crons logs |
| 23:27:12 | evan | Jun 18 03:30:01 elle /USR/SBIN/CRON[16693]: (brixen) CMD (brixen /home/brixen/bin/cron_daily) |
| 23:28:02 | evan | so it gave it the college try |
| 23:28:04 | brixen | cool |
| 23:28:09 | evan | redirect the output to a log file |
| 23:28:10 | evan | so you can see |
| 23:28:11 | brixen | yeah, right time |
| 23:28:13 | brixen | ok |
| 23:28:16 | brixen | that't be great |
| 23:28:24 | evan | put > /home/brixen/cron.log 2>&1 |
| 23:28:25 | evan | on the end |
| 23:28:28 | brixen | k |