Index

Show enters and exits. Hide enters and exits.

03:11:01evanwop
03:11:04evanwoop
03:11:07Ober?
03:11:30evanabout 5 days ago, the full spec run too 65s
03:11:42evanjust ran it, down to 50s
03:11:43evanyay
03:11:47Obernice
03:11:54Oberso this is a complete bsd version of the runtime?
03:12:02evaneh?
03:12:15Oberrubinius
03:12:29evanwhat do ya mean "complete bsd version"
03:15:09Oberruby runtime
03:15:34evanoh you mean in general
03:15:40evanthats the idea, yeah
03:15:46Oberyeah, /me just discovered the project.
03:15:57Oberhmm, might be able to use it in our OS then.
03:16:01evancompleteness is going well
03:16:22evani do all my development on OS X
03:16:27evanso, yeah, bsd runtime :D
03:16:48Ober<--- netbsd had looked for a language to use for some build scripts. and being gpl ruby was ruled out
03:17:34evanah
03:17:39evanyeah, rubinius is all bsd license
03:17:49evana gpl language is just silly.
03:20:22evanOber: if i can answer any questions for ya, let me know
03:20:57Obersure, thanks going to pull down and see how it builds
03:21:29evancool
03:21:35evanwe're doing a bunch of work on the JIT right now
03:21:41evanwhich is an optional build step
03:21:50Obernice
03:28:59Oberhmm llvm nice
03:37:18boyscoutInclude -mdynamic-no-pic on OS X - 16da2bb - Evan Phoenix
03:37:19boyscoutImplement direct threading - 6c9c499 - Evan Phoenix
03:42:14boyscoutCI: 6c9c499 success. 2709 files, 10678 examples, 33478 expectations, 0 failures, 0 errors
03:46:33evanbenschwarz: sorry to spoil NBA for ya!
03:58:56Oberno fenv.h hmm
04:03:46Obereasy to fix
10:41:05benschwarzno worries evan
16:04:54devinusI'm getting this exception whenever I update my gems:
16:04:55devinushttp://pastie.org/512583
16:05:19devinussince when does FalseClass have a [] method!?
17:14:38evaninteresting presentation
17:14:39evanhttp://www.dabeaz.com/python/GIL.pdf
17:14:52evanthat same thing effects 1.9 and us right now
17:17:06rhinton(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:43rhintonIn particular, I needed the development libraries for readline and OpenSSL (libssl) to get the relevant headers.
17:19:23rhinton(Oops, I just read farther and found the Debian/Ubuntu section -- it has readline, but not libssl-dev.)
17:20:15brixenrhinton: n/p, you can send us a patch for the docs
17:20:51brixenrhinton: also, the rake install task is not fully functional at the moment, but you can run rubinius out of the build dir
17:21:10brixenjust put bin/rbx in your path or ln bin/rbx wherever you want
17:22:32badboyanyone yet worked on the gcc 4.4 problem?
17:22:37evanbrixen: so, managed to get a 23% perf improvement over last week
17:22:40evan65s down to 50s
17:22:48evanbadboy_: nope
17:22:51brixenevan: awesome! saw that in the read back
17:22:53badboyok
17:23:05brixenevan: what was it? and this is running without jit, yes?
17:23:22rhintonbrixen: Thanks for the info.
17:23:29brixenrhinton: n/p
17:23:36evanbrixen: yeah, this is all interpreter work
17:23:41evanit's not one thing
17:23:44evana lot of small things
17:23:50brixenawesome
17:23:53evanlike I added direct threading back into the interpreter
17:24:02evanand changed some compiler flags on OS X
17:24:19evangot the interpreter flattened out
17:24:24evanfunction call wise
17:24:27brixenah yeah
17:24:32evandid some CallFrame work
17:24:40evanetc, etc.
17:24:44rhintonWhere should I send the patch?
17:25:05brixenrhinton: you can open a github issue
17:25:16brixenrhinton: and use format-patch so you get credit
17:26:34brixenevan: rdoc, rails -h, array specs... what else did you want for the macro benchmarks?
17:27:44brixenmaybe I'll do the full spec run
17:29:36brixenevan: btw, the const lookup was the main issue on those Hash benchmarks, it's 90% of the baseline with extra ivar set
17:29:53brixenso ~40% for the const lookup
17:30:08brixeneg Rubinius::ChainedBucket vs Hash
17:32:10evanwow.
17:32:20evani guess the benchmark is doing the const access in a loop?
17:32:28brixenwell, kinda
17:32:38brixenit's creating eg 10000 hash instances
17:32:47brixeneach one has to look up the const
17:32:48evanbrixen: full spec run, gem install local
17:32:53evancould do gem install network too
17:32:57brixenoh yeah, gem install
17:32:58brixenok
17:35:22evanI also found it interesting
17:35:29evani actually got gcc to respect the register keyword
17:35:38evanby forcing it to use a certain register on x86
17:35:48evanregister void** ip_ptr asm ("esi")
17:35:57brixeninteresting
17:35:58evanthat cleans up the interpreter code a lot
17:36:13evanit's not constantly loading ip_ptr from the stack
17:36:26brixensweet
17:36:48evanto see for yourself, if your curious
17:36:56evanrake build:normal_flags vm/instructions.S
17:37:05evanthen open up vm/instructions.S and search for 11interpreter
17:37:21evanyou can see the x86 it's emitting for the interpreter loop
17:37:27brixenk
18:40:20evanbrixen: so, interestingly
18:40:44evanbrixen: 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:53evanprimarily, the GC dependent regions
18:41:20evanthey call them areas of code that don't mutate GC memory "safe regions"
18:41:30evanbecause it's "safe" to run the GC if a thread is in one
18:46:12brixenevan: interesting
18:46:34evanmakes sense
18:46:36brixenyeah
18:46:48evana thread can then communicate when it's blocked on IO or sleeping or running unmanaged code
18:46:58evanso the GC doesn't have to wait on it
18:47:17evanit'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:21evan:D
18:47:26brixenheh, yep
18:47:49brixenit's the card you hang on the door for maid service
18:48:10brixendo not disturb/please make up room
18:48:21evanyep!
18:48:45evanthats a better analogy than mine
19:00:37brixenevan: did you do the sendsite check?
19:02:29evanyeah
19:02:40evanmake them fail everytime increase the spec run by 10s
19:03:01brixenok
19:03:08brixenwhat % is that?
19:04:32evani'll redo it
19:05:34brixenso at 33,503 expectations, 10s is 0.0003s / expectation
19:11:25evanok, so 51s with, 66s without
19:14:02brixenok so ~23%
19:14:24evanyep
19:14:34brixencool
19:14:41brixenso definitely working :)
19:15:16brixenare the megamorphic sites being disabled?
19:15:30evannope
19:15:33brixenwould be interesting to see which sites get disabled
19:15:36evanthey're churning
19:15:37evanyeah
19:15:39evani'll do that
19:15:39brixenok
19:22:06dbussinkbrixen: how do you feel about this change, since LOAD_PATH can also include stuff like a Pathname: http://gist.github.com/130251
19:22:19dbussinkfound it because some stuff was doing actually exactly that
19:22:33dbussinkbrixen: dunno if i forget something there
19:22:47evanthat seems fine
19:24:43boyscoutCheck whether it's a file before checking the suffix - b0ab5aa - Dirkjan Bussink
19:31:45boyscoutCI: b0ab5aa success. 2709 files, 10678 examples, 33478 expectations, 0 failures, 0 errors
22:09:01scooprI made a benchmark for you! =)
22:09:12brixenscoopr: sweet, what is it?
22:10:04scooprjust a sec. It's really simple one
22:10:14scooprwas just curious how the jit handles it
22:12:24scooprhttp://gist.github.com/130344
22:12:59evanwhats the results with the JIT on?
22:14:05evanwe've never optimized for float math
22:14:17scooprI've amended the gist with my results
22:15:03evaninteresting
22:15:24evanthe small change is due to the tight calling
22:15:36evanand that most of the time spent allocating Floats
22:15:38evanand in the Float prims
22:16:14scoopryeah, having the Float be a boxed is probably the worst offender
22:16:30evanyep.
22:16:43evanhows that look in MRI?
22:16:46evanspeed wise
22:17:37scooprdouble times, almost excatly =)
22:17:53evanput them into the gist
22:18:57scooprupdated
22:19:32evannice
22:19:41evanif you've got jruby
22:19:44evanthrow those in there!
22:20:04scooprah, point, I don't think I have
22:20:42scooproh wow, jruby.org has gone all marketable and all
22:26:03scooprnow with jruby
22:26:35slavasup boys
22:27:25evanhey there slava
22:29:30scooproh, --server yields a bit nicer results
22:30:54brixenscoopr: yeah, you should always run jruby benches with --server
22:31:18scoopryeah, I latently remembered that
22:32:42dbussinkevan: for 64 bit platforms it would be possible to make it an immediate though, dunno if that is worth persuiing
22:33:05slavaits not
22:33:26scooprFloats have usually been doubles in ruby implementations
22:33:47slavayou can have immediate doubles, but its not worth it
22:34:21scooprthat of course depends on use-case =)
22:34:44scooprbut, then again, ruby wouldn't probably be the best for those use-cases
22:34:48dbussinkslava: tried it but didn't help a lot?
22:36:43scooprbuut anyway, I just thought I'd throw it out there
22:37:10brixenscoopr: cool
22:37:29brixenscoopr: you could put it in benchmark/rubinius
22:38:03scooprI don't think I have commit rights (well, after the github move)
22:38:46brixenscoopr: well, if you had a bit, just ask evan ;)
22:39:01slavadbussink: I think unboxing floats as an optimization is better
22:39:02brixenscoopr: we won't let github take your bit away
22:39:28slavawith immediate doubles, you use the NaN space to encode pointers and fixnums
22:39:33slavawhich means you can't use NaNs anymore
22:40:07brixenslava: or you can sacrifice some range and use exponent bits
22:40:27slavathat will wreak havoc with numerical algorithms written for doubles though
22:40:30brixenkoichi wrota a paper on it
22:41:05evanwell, i think what you do is use 2 bits of the exponent
22:41:10slavaonce you get type feedback going you can do unboxed floats, 32-bit and 64-bit ints
22:41:11evanso the max size is smaller
22:41:36slavaplaying tricks with float representation is something MRI would do
22:41:54evanheh
22:42:06scooproh yeah, that would be totally an easy benchmark for typefeedback-type stuff
22:42:21evanyeah
22:42:31evanin order for us to get good type-feedback for that
22:42:36evanwe're going to have to do type splitting I think
22:43:33scooprevan, I can commit that benchmark if you like, and give a bit =)
22:44:00scooproh wow, sentence odd I speak. Gotta go to sleep in a moment
22:44:38evanfor sure is I
22:50:26dbussinkevan: it's actually what macruby is trying, they use a smaller exponent size
22:50:33dbussinkevan: and overflow to boxed floats
22:50:52evanyep
22:56:46scooprdoes github even show it anywhere if I happen to be a collaborator on a project?
23:12:22boyscoutFlush ip on TypeErrors, so backtraces are correct - b58eed5 - Evan Phoenix
23:12:22boyscoutRemove fails tags from passing specs - 9d315d6 - Evan Phoenix
23:15:32boyscoutCI: 9d315d6 success. 2709 files, 10757 examples, 33694 expectations, 0 failures, 0 errors
23:51:54boyscoutRemoved rbx. from profiler -X options. - 28aa039 - Brian Ford
23:51:54boyscoutHash#each, #select benchmarks. - cedda13 - Brian Ford
23:51:54boyscoutAdded Class#new spec for block passed to #initialize. - a4d4d45 - Brian Ford
23:51:54boyscoutImprovements to current Hash algorthm. - 1e33851 - Brian Ford
23:55:18boyscoutCI: 1e33851 success. 2709 files, 10758 examples, 33695 expectations, 0 failures, 0 errors