Show enters and exits. Hide enters and exits.
| 03:11:01 | evan | wop |
| 03:11:04 | evan | woop |
| 03:11:07 | Ober | ? |
| 03:11:30 | evan | about 5 days ago, the full spec run too 65s |
| 03:11:42 | evan | just ran it, down to 50s |
| 03:11:43 | evan | yay |
| 03:11:47 | Ober | nice |
| 03:11:54 | Ober | so this is a complete bsd version of the runtime? |
| 03:12:02 | evan | eh? |
| 03:12:15 | Ober | rubinius |
| 03:12:29 | evan | what do ya mean "complete bsd version" |
| 03:15:09 | Ober | ruby runtime |
| 03:15:34 | evan | oh you mean in general |
| 03:15:40 | evan | thats the idea, yeah |
| 03:15:46 | Ober | yeah, /me just discovered the project. |
| 03:15:57 | Ober | hmm, might be able to use it in our OS then. |
| 03:16:01 | evan | completeness is going well |
| 03:16:22 | evan | i do all my development on OS X |
| 03:16:27 | evan | so, yeah, bsd runtime :D |
| 03:16:48 | Ober | <--- netbsd had looked for a language to use for some build scripts. and being gpl ruby was ruled out |
| 03:17:34 | evan | ah |
| 03:17:39 | evan | yeah, rubinius is all bsd license |
| 03:17:49 | evan | a gpl language is just silly. |
| 03:20:22 | evan | Ober: if i can answer any questions for ya, let me know |
| 03:20:57 | Ober | sure, thanks going to pull down and see how it builds |
| 03:21:29 | evan | cool |
| 03:21:35 | evan | we're doing a bunch of work on the JIT right now |
| 03:21:41 | evan | which is an optional build step |
| 03:21:50 | Ober | nice |
| 03:28:59 | Ober | hmm llvm nice |
| 03:37:18 | boyscout | Include -mdynamic-no-pic on OS X - 16da2bb - Evan Phoenix |
| 03:37:19 | boyscout | Implement direct threading - 6c9c499 - Evan Phoenix |
| 03:42:14 | boyscout | CI: 6c9c499 success. 2709 files, 10678 examples, 33478 expectations, 0 failures, 0 errors |
| 03:46:33 | evan | benschwarz: sorry to spoil NBA for ya! |
| 03:58:56 | Ober | no fenv.h hmm |
| 04:03:46 | Ober | easy to fix |
| 10:41:05 | benschwarz | no worries evan |
| 16:04:54 | devinus | I'm getting this exception whenever I update my gems: |
| 16:04:55 | devinus | http://pastie.org/512583 |
| 16:05:19 | devinus | since when does FalseClass have a [] method!? |
| 17:14:38 | evan | interesting presentation |
| 17:14:39 | evan | http://www.dabeaz.com/python/GIL.pdf |
| 17:14:52 | evan | that same thing effects 1.9 and us right now |
| 17:17:06 | rhinton | (first time here, sorry for any mistakes) I am working on installing rubinius on a fairly clean Ubuntu machine, and I noticed a few omissions from the requirements in doc/getting_started.txt |
| 17:17:43 | rhinton | In particular, I needed the development libraries for readline and OpenSSL (libssl) to get the relevant headers. |
| 17:19:23 | rhinton | (Oops, I just read farther and found the Debian/Ubuntu section -- it has readline, but not libssl-dev.) |
| 17:20:15 | brixen | rhinton: n/p, you can send us a patch for the docs |
| 17:20:51 | brixen | rhinton: also, the rake install task is not fully functional at the moment, but you can run rubinius out of the build dir |
| 17:21:10 | brixen | just put bin/rbx in your path or ln bin/rbx wherever you want |
| 17:22:32 | badboy | anyone yet worked on the gcc 4.4 problem? |
| 17:22:37 | evan | brixen: so, managed to get a 23% perf improvement over last week |
| 17:22:40 | evan | 65s down to 50s |
| 17:22:48 | evan | badboy_: nope |
| 17:22:51 | brixen | evan: awesome! saw that in the read back |
| 17:22:53 | badboy | ok |
| 17:23:05 | brixen | evan: what was it? and this is running without jit, yes? |
| 17:23:22 | rhinton | brixen: Thanks for the info. |
| 17:23:29 | brixen | rhinton: n/p |
| 17:23:36 | evan | brixen: yeah, this is all interpreter work |
| 17:23:41 | evan | it's not one thing |
| 17:23:44 | evan | a lot of small things |
| 17:23:50 | brixen | awesome |
| 17:23:53 | evan | like I added direct threading back into the interpreter |
| 17:24:02 | evan | and changed some compiler flags on OS X |
| 17:24:19 | evan | got the interpreter flattened out |
| 17:24:24 | evan | function call wise |
| 17:24:27 | brixen | ah yeah |
| 17:24:32 | evan | did some CallFrame work |
| 17:24:40 | evan | etc, etc. |
| 17:24:44 | rhinton | Where should I send the patch? |
| 17:25:05 | brixen | rhinton: you can open a github issue |
| 17:25:16 | brixen | rhinton: and use format-patch so you get credit |
| 17:26:34 | brixen | evan: rdoc, rails -h, array specs... what else did you want for the macro benchmarks? |
| 17:27:44 | brixen | maybe I'll do the full spec run |
| 17:29:36 | brixen | evan: btw, the const lookup was the main issue on those Hash benchmarks, it's 90% of the baseline with extra ivar set |
| 17:29:53 | brixen | so ~40% for the const lookup |
| 17:30:08 | brixen | eg Rubinius::ChainedBucket vs Hash |
| 17:32:10 | evan | wow. |
| 17:32:20 | evan | i guess the benchmark is doing the const access in a loop? |
| 17:32:28 | brixen | well, kinda |
| 17:32:38 | brixen | it's creating eg 10000 hash instances |
| 17:32:47 | brixen | each one has to look up the const |
| 17:32:48 | evan | brixen: full spec run, gem install local |
| 17:32:53 | evan | could do gem install network too |
| 17:32:57 | brixen | oh yeah, gem install |
| 17:32:58 | brixen | ok |
| 17:35:22 | evan | I also found it interesting |
| 17:35:29 | evan | i actually got gcc to respect the register keyword |
| 17:35:38 | evan | by forcing it to use a certain register on x86 |
| 17:35:48 | evan | register void** ip_ptr asm ("esi") |
| 17:35:57 | brixen | interesting |
| 17:35:58 | evan | that cleans up the interpreter code a lot |
| 17:36:13 | evan | it's not constantly loading ip_ptr from the stack |
| 17:36:26 | brixen | sweet |
| 17:36:48 | evan | to see for yourself, if your curious |
| 17:36:56 | evan | rake build:normal_flags vm/instructions.S |
| 17:37:05 | evan | then open up vm/instructions.S and search for 11interpreter |
| 17:37:21 | evan | you can see the x86 it's emitting for the interpreter loop |
| 17:37:27 | brixen | k |
| 18:40:20 | evan | brixen: so, interestingly |
| 18:40:44 | evan | brixen: i guess I should have expected as much, but the JVM an other VMs implement the same scheme as I did for interacting with the GC |
| 18:40:53 | evan | primarily, the GC dependent regions |
| 18:41:20 | evan | they call them areas of code that don't mutate GC memory "safe regions" |
| 18:41:30 | evan | because it's "safe" to run the GC if a thread is in one |
| 18:46:12 | brixen | evan: interesting |
| 18:46:34 | evan | makes sense |
| 18:46:36 | brixen | yeah |
| 18:46:48 | evan | a thread can then communicate when it's blocked on IO or sleeping or running unmanaged code |
| 18:46:58 | evan | so the GC doesn't have to wait on it |
| 18:47:17 | evan | it's the "oh, i'm not going to be in the kitchen for a while, go ahead and clean it up now" flag |
| 18:47:21 | evan | :D |
| 18:47:26 | brixen | heh, yep |
| 18:47:49 | brixen | it's the card you hang on the door for maid service |
| 18:48:10 | brixen | do not disturb/please make up room |
| 18:48:21 | evan | yep! |
| 18:48:45 | evan | thats a better analogy than mine |
| 19:00:37 | brixen | evan: did you do the sendsite check? |
| 19:02:29 | evan | yeah |
| 19:02:40 | evan | make them fail everytime increase the spec run by 10s |
| 19:03:01 | brixen | ok |
| 19:03:08 | brixen | what % is that? |
| 19:04:32 | evan | i'll redo it |
| 19:05:34 | brixen | so at 33,503 expectations, 10s is 0.0003s / expectation |
| 19:11:25 | evan | ok, so 51s with, 66s without |
| 19:14:02 | brixen | ok so ~23% |
| 19:14:24 | evan | yep |
| 19:14:34 | brixen | cool |
| 19:14:41 | brixen | so definitely working :) |
| 19:15:16 | brixen | are the megamorphic sites being disabled? |
| 19:15:30 | evan | nope |
| 19:15:33 | brixen | would be interesting to see which sites get disabled |
| 19:15:36 | evan | they're churning |
| 19:15:37 | evan | yeah |
| 19:15:39 | evan | i'll do that |
| 19:15:39 | brixen | ok |
| 19:22:06 | dbussink | brixen: how do you feel about this change, since LOAD_PATH can also include stuff like a Pathname: http://gist.github.com/130251 |
| 19:22:19 | dbussink | found it because some stuff was doing actually exactly that |
| 19:22:33 | dbussink | brixen: dunno if i forget something there |
| 19:22:47 | evan | that seems fine |
| 19:24:43 | boyscout | Check whether it's a file before checking the suffix - b0ab5aa - Dirkjan Bussink |
| 19:31:45 | boyscout | CI: b0ab5aa success. 2709 files, 10678 examples, 33478 expectations, 0 failures, 0 errors |
| 22:09:01 | scoopr | I made a benchmark for you! =) |
| 22:09:12 | brixen | scoopr: sweet, what is it? |
| 22:10:04 | scoopr | just a sec. It's really simple one |
| 22:10:14 | scoopr | was just curious how the jit handles it |
| 22:12:24 | scoopr | http://gist.github.com/130344 |
| 22:12:59 | evan | whats the results with the JIT on? |
| 22:14:05 | evan | we've never optimized for float math |
| 22:14:17 | scoopr | I've amended the gist with my results |
| 22:15:03 | evan | interesting |
| 22:15:24 | evan | the small change is due to the tight calling |
| 22:15:36 | evan | and that most of the time spent allocating Floats |
| 22:15:38 | evan | and in the Float prims |
| 22:16:14 | scoopr | yeah, having the Float be a boxed is probably the worst offender |
| 22:16:30 | evan | yep. |
| 22:16:43 | evan | hows that look in MRI? |
| 22:16:46 | evan | speed wise |
| 22:17:37 | scoopr | double times, almost excatly =) |
| 22:17:53 | evan | put them into the gist |
| 22:18:57 | scoopr | updated |
| 22:19:32 | evan | nice |
| 22:19:41 | evan | if you've got jruby |
| 22:19:44 | evan | throw those in there! |
| 22:20:04 | scoopr | ah, point, I don't think I have |
| 22:20:42 | scoopr | oh wow, jruby.org has gone all marketable and all |
| 22:26:03 | scoopr | now with jruby |
| 22:26:35 | slava | sup boys |
| 22:27:25 | evan | hey there slava |
| 22:29:30 | scoopr | oh, --server yields a bit nicer results |
| 22:30:54 | brixen | scoopr: yeah, you should always run jruby benches with --server |
| 22:31:18 | scoopr | yeah, I latently remembered that |
| 22:32:42 | dbussink | evan: for 64 bit platforms it would be possible to make it an immediate though, dunno if that is worth persuiing |
| 22:33:05 | slava | its not |
| 22:33:26 | scoopr | Floats have usually been doubles in ruby implementations |
| 22:33:47 | slava | you can have immediate doubles, but its not worth it |
| 22:34:21 | scoopr | that of course depends on use-case =) |
| 22:34:44 | scoopr | but, then again, ruby wouldn't probably be the best for those use-cases |
| 22:34:48 | dbussink | slava: tried it but didn't help a lot? |
| 22:36:43 | scoopr | buut anyway, I just thought I'd throw it out there |
| 22:37:10 | brixen | scoopr: cool |
| 22:37:29 | brixen | scoopr: you could put it in benchmark/rubinius |
| 22:38:03 | scoopr | I don't think I have commit rights (well, after the github move) |
| 22:38:46 | brixen | scoopr: well, if you had a bit, just ask evan ;) |
| 22:39:01 | slava | dbussink: I think unboxing floats as an optimization is better |
| 22:39:02 | brixen | scoopr: we won't let github take your bit away |
| 22:39:28 | slava | with immediate doubles, you use the NaN space to encode pointers and fixnums |
| 22:39:33 | slava | which means you can't use NaNs anymore |
| 22:40:07 | brixen | slava: or you can sacrifice some range and use exponent bits |
| 22:40:27 | slava | that will wreak havoc with numerical algorithms written for doubles though |
| 22:40:30 | brixen | koichi wrota a paper on it |
| 22:41:05 | evan | well, i think what you do is use 2 bits of the exponent |
| 22:41:10 | slava | once you get type feedback going you can do unboxed floats, 32-bit and 64-bit ints |
| 22:41:11 | evan | so the max size is smaller |
| 22:41:36 | slava | playing tricks with float representation is something MRI would do |
| 22:41:54 | evan | heh |
| 22:42:06 | scoopr | oh yeah, that would be totally an easy benchmark for typefeedback-type stuff |
| 22:42:21 | evan | yeah |
| 22:42:31 | evan | in order for us to get good type-feedback for that |
| 22:42:36 | evan | we're going to have to do type splitting I think |
| 22:43:33 | scoopr | evan, I can commit that benchmark if you like, and give a bit =) |
| 22:44:00 | scoopr | oh wow, sentence odd I speak. Gotta go to sleep in a moment |
| 22:44:38 | evan | for sure is I |
| 22:50:26 | dbussink | evan: it's actually what macruby is trying, they use a smaller exponent size |
| 22:50:33 | dbussink | evan: and overflow to boxed floats |
| 22:50:52 | evan | yep |
| 22:56:46 | scoopr | does github even show it anywhere if I happen to be a collaborator on a project? |
| 23:12:22 | boyscout | Flush ip on TypeErrors, so backtraces are correct - b58eed5 - Evan Phoenix |
| 23:12:22 | boyscout | Remove fails tags from passing specs - 9d315d6 - Evan Phoenix |
| 23:15:32 | boyscout | CI: 9d315d6 success. 2709 files, 10757 examples, 33694 expectations, 0 failures, 0 errors |
| 23:51:54 | boyscout | Removed rbx. from profiler -X options. - 28aa039 - Brian Ford |
| 23:51:54 | boyscout | Hash#each, #select benchmarks. - cedda13 - Brian Ford |
| 23:51:54 | boyscout | Added Class#new spec for block passed to #initialize. - a4d4d45 - Brian Ford |
| 23:51:54 | boyscout | Improvements to current Hash algorthm. - 1e33851 - Brian Ford |
| 23:55:18 | boyscout | CI: 1e33851 success. 2709 files, 10758 examples, 33695 expectations, 0 failures, 0 errors |