Show enters and exits. Hide enters and exits.
| 00:00:11 | evan | doing so puts my dup benchmark on terms with 1.8 |
| 00:00:13 | evan | which is good. |
| 00:00:22 | brixen | nice |
| 00:03:13 | goyox86 | brixen: knock, knock |
| 00:05:16 | brixen | goyox86_: who's there? |
| 00:05:32 | goyox86 | brixen: goyox86 |
| 00:05:39 | brixen | goyox86 who? |
| 00:06:04 | brixen | wonders what the punch line is... |
| 00:07:04 | goyox86 | brixen: I don't know i think is mi ic client, it adds a _, i think i just left my session opened at home |
| 00:08:39 | goyox86 | brixen: I just started to look for something where i can help, so i've started with an easy one, making a soec pass |
| 00:09:43 | goyox86 | brixen: i've created a patch, when you have some free time just check issue 392 :-) |
| 00:12:52 | brixen | sure |
| 01:00:14 | boyscout | Fix File#size to conform to specs. Closes #392. - c628090 - Jose Narvaez |
| 01:00:14 | boyscout | Spec that File.size and .size? try to convert argument to an IO. - 9f688ec - Brian Ford |
| 01:00:14 | boyscout | Fixed File.size and .size?. - 8dc7322 - Brian Ford |
| 01:00:14 | boyscout | Updated CI tags for File. - 2e334b5 - Brian Ford |
| 01:00:23 | brixen | goyox86_: there ya go :) |
| 01:02:46 | goyox86 | brixen: sweet |
| 01:08:35 | boyscout | CI: rubinius: 2e334b5 successful: 3457 files, 13668 examples, 41247 expectations, 0 failures, 0 errors |
| 01:42:38 | postmodern | dbussink, ping |
| 01:42:50 | postmodern | dbussink, I have the profiler graph for Bundler.setup |
| 01:43:11 | postmodern | dbussink, snusnu/dm-core/tree/postmodern |
| 01:43:12 | postmodern | er |
| 01:43:20 | postmodern | dbussink, http://fpaste.org/D9QP/ |
| 01:43:41 | evan | postmodern: the flat graph would be useful too. |
| 01:44:09 | postmodern | evan, would that be the output of just -Xprofile ? |
| 01:44:15 | evan | correct. |
| 01:57:56 | postmodern | evan, to recap, the loading rubygems did slow down startup a bit |
| 01:58:07 | postmodern | evan, but Bundler.setup is extremely slow, compared to other implementations |
| 01:58:28 | evan | ok |
| 01:58:33 | evan | well, we'll have to dig in and figure out why. |
| 01:58:47 | evan | I profiled rubygems a bit today |
| 01:59:03 | evan | we take a pretty big hit because it eval's the gemspecs on startup |
| 01:59:13 | evan | i need to discuss with the rubygems guys about that |
| 01:59:24 | postmodern | youch |
| 02:09:32 | boyscout | Speed/foolproof Kernel#dup. Add custom object_class inline logic. - 110b9b6 - Evan Phoenix |
| 02:12:18 | postmodern | evan, here's the flat graph http://fpaste.org/UOOo/ |
| 02:18:00 | boyscout | CI: rubinius: 110b9b6 successful: 3457 files, 13668 examples, 41247 expectations, 0 failures, 0 errors |
| 03:58:43 | seydar | brixen: i'm looking through some old code and i just found this: http://pastie.org/1024533 |
| 04:00:07 | seydar | also i have a laptop now |
| 04:00:13 | seydar | with over 512MB of RAM |
| 04:00:22 | seydar | and get this – an INTEL CPU |
| 04:00:47 | seydar | i have 8 times as much ram as I used to |
| 14:18:56 | goyox86 | evan: sweet, About Rails performance? |
| 14:19:17 | goyox86 | even: the screencast? |
| 14:19:51 | goyox86 | evan: the screencast?* |
| 15:46:57 | cremes | this might be interesting to evan, brixen and slava: http://etoileos.com/news |
| 16:10:53 | brixen | cremes: cool, so Obj-C is catching up to rbx :) |
| 16:14:02 | evan | i've followed etoile a bit. |
| 16:14:13 | evan | they're sort a cousin now because of LLVM usage. |
| 16:24:57 | wyhaines | So, it looks like rbx more or less fails on the same BigDecimal rubyspec tests that 1.8.6 fails on, except for one that rbx passes that 1.8.6 fails on. It fails on a couple more than 1.8.7 fails on. |
| 16:26:18 | brixen | wyhaines: that's not surprising since we are using BigDecimal from MRI |
| 16:26:19 | wyhaines | So, it begs a question. I've fixed all of the 1.8.6 failures (they are all fixed with some bugfix backports from 1.8 trunk), so I'm going to suggest that these be fixed for 1.8.6 and 1.8.7. Would you all like me to make the same fixes to rbx? |
| 16:26:31 | brixen | wyhaines: we just need to port the fixes, yes |
| 16:26:47 | brixen | wyhaines: if you want to do that, wonderful :) |
| 16:29:04 | wyhaines | Cool. I'll do so, then. Just seems like 1.8.x should all do the same reasonable stuff with BigDecimal, and rbx should, likewise. |
| 16:33:07 | evan | cremes: we can actually do a lot better than etoile |
| 16:33:15 | evan | because we don't have to speculatively inline |
| 16:33:21 | evan | we can do it based on profiling |
| 17:14:39 | cremes | evan: glad to hear it; i'm looking forward to *more* cool compiler tricks for rbx 1.1 and later :) |
| 17:15:18 | evan | :D |
| 19:09:15 | boyscout | Improve write barrier performance - 1df37d9 - Evan Phoenix |
| 19:11:55 | dbussink | evan: turned up from profiling? |
| 19:12:09 | evan | yeah |
| 19:12:18 | evan | reading zone() is more expensive than it used to be |
| 19:12:22 | evan | due to inflated headers |
| 19:12:36 | evan | so i got a method working that uses just pointer comparisons on the object address |
| 19:12:52 | evan | and inlined a bunch of the conditions in a C++ inline method |
| 19:15:58 | dbussink | evan: ah, nice trick for the pointer math :) |
| 19:16:54 | slava | yo evan |
| 19:16:58 | evan | yeah, i grouped all the young object spaces in one contigious section of memory |
| 19:17:02 | evan | for easy checking. |
| 19:17:17 | evan | slava: allo. |
| 19:17:37 | evan | well, lunch time. |
| 19:20:36 | dbussink | evan: it wasn't in one zone before? |
| 19:21:31 | boyscout | CI: rubinius: 1df37d9 successful: 3457 files, 13668 examples, 41247 expectations, 0 failures, 0 errors |
| 19:52:18 | evan | dbussink: eden and the 2 survivor zones were allocated seperately with malloc |
| 19:52:22 | evan | so no, they weren't contigious |
| 19:53:15 | dbussink | evan: ah yeah, i see, full is now eden and a en b |
| 19:53:17 | dbussink | a and b |
| 19:53:21 | evan | yep |
| 19:53:34 | evan | full isn't allocated directly into either |
| 19:53:39 | evan | it's just split up for the young zone |
| 19:53:54 | evan | and actually, walking to lunch, i got an idea |
| 19:54:00 | evan | i'm going to make Class#allocate a GC point |
| 19:54:07 | evan | and start the process of making allocation thread safe |
| 19:54:17 | evan | by using slabs |
| 19:56:05 | slava | making allocation a GC point makes total sense |
| 19:58:35 | evan | yeah |
| 19:58:50 | evan | but i'm going to allow for allocaitons that aren't GC points either. |
| 19:58:57 | slava | what for? |
| 19:59:01 | evan | so that I don't have to fixup all the internal allocations |
| 19:59:06 | slava | lazy :) |
| 19:59:12 | evan | pragmatic. |
| 20:01:31 | evan | besides |
| 20:01:38 | evan | those types of allocations are very useful. |
| 20:01:46 | slava | because of C extensions and such? |
| 20:01:49 | evan | yep |
| 20:02:12 | evan | I think i'm going to do slab'ing of the young space |
| 20:02:38 | evan | the main allocation point, Class#allocate with use a thread-local slab and be able to run the GC if there is no more space |
| 20:02:57 | evan | a global slab will be used by the internal allocations |
| 20:03:06 | slava | ah |
| 20:03:10 | slava | and you can phase the latter out over time |
| 20:03:28 | evan | right |
| 20:03:29 | slava | I must admit making all my allocations GC-safe was a bit of a pain but it was worth it in the end |
| 20:03:35 | slava | but I don't have legacy issues to contend with |
| 20:03:49 | evan | the slab'ing is how to make allocations fast and threadsafe anyway |
| 20:03:54 | evan | so doing the work now will pay off. |
| 20:06:23 | dbussink | yay to more thread safeness :) |
| 20:23:32 | dbussink | evan: one step at a time for getting rid of the gil :) |
| 20:23:39 | evan | yep |
| 20:24:25 | dbussink | evan: what are other big steps that need to be taken? |
| 20:24:36 | evan | well, there are a lot of steps. |
| 20:24:57 | evan | for instance, we need to iron out a good object locking strategy |
| 20:25:06 | evan | we need that now |
| 20:25:10 | evan | so thats high on my list |
| 20:25:36 | evan | i'm leaning toward the JVM "every object is a lock" strategy |
| 20:26:07 | evan | but i'll probably write some atomic operation stuff first |
| 20:26:31 | dbussink | extensions are also probably tricky with this right> |
| 20:27:04 | evan | somewhat tricky |
| 20:27:09 | evan | but not as tricky as you might think |
| 20:27:11 | evan | because of the handles. |
| 20:27:25 | dbussink | ah ok, it's easier than to make those safe |
| 20:27:35 | dbussink | and we don't allow the most nasty things anyway |
| 20:27:41 | evan | right |
| 20:27:47 | evan | the uglyness is isolated in handles |
| 20:28:02 | evan | and the boundary between handles and GC memory is guarded by a 3 headed dog. |
| 20:29:18 | dbussink | evan: there are no cerberus references in the code yet :P |
| 20:29:24 | evan | we shall change that. |
| 20:30:21 | dbussink | evan: there was this nice article on how to do fast locking right? |
| 20:30:28 | dbussink | where no contention is the common case |
| 20:31:45 | evan | cliff has a good blog post on it, yeah. |
| 20:32:29 | evan | you use a CAS instruction (compare-and-swap) which is atomic to test lock an object |
| 20:32:36 | evan | if it works, great, you go on |
| 20:32:41 | evan | if not, then you go down a slow path. |
| 20:34:41 | slava | I'm realer than a hundred dollar bill with the line across |
| 20:35:37 | evan | for reals? |
| 23:46:40 | pjb3 | I get the following error when trying to use datamapper, sqlite and rubinius |
| 23:46:41 | pjb3 | http://pastie.org/1025933 |
| 23:47:05 | pjb3 | Any chance of datamapper / sqlite working? |
| 23:49:39 | parndt | pjb3: what happens if you use http://rubygems.org/gems/sqlite3-ruby |
| 23:51:48 | pjb3 | same problem |
| 23:52:11 | pjb3 | There must be something I need to do to make dm use sqlite3-ruby |
| 23:52:45 | cremes | pjb3: you may want to ping dbussink; i think he is working on getting DM to pass all specs on rubinius |