Index

Show enters and exits. Hide enters and exits.

00:31:33evanfound a tricky inlining "bug"
00:31:44evannot a crash bug, just a bug that caused things to be over inlined.
01:33:49evanle sigh lebron.
02:09:11jeremyevansAnyone know what the equivalent of rbx's ARG0 is in MRI?
02:15:42evanjeremyevans: there isn't one.
02:15:50evandumb huh.
02:15:53evanthats why I added it.
02:16:19evan$0 can sort of do it.
02:16:23evanbut it's inaccurate.
02:18:48jeremyevansevan: I tried $0 first, but it didn't work :) ruby -e 'p $0' => "-e"
02:18:55evanyeah
02:19:01evanthats why it's sort of there
02:19:02evanbut not really.
02:19:51jeremyevansevan: I just tried compiling the MRI C extension I'm working on with rbx. No problems. Even caught a bug that MRI missed (typo in function name).
02:20:00evannice!
02:20:07evanwhats the extension?
02:20:22jeremyevansit's a replacement for date.rb
02:20:37evancool.
02:21:07jeremyevansearly stages now, but over 80 times faster for Date.civil
02:21:28evan80x on MRI or rbx? :)
02:21:47jeremyevansevan: I only benched against MRI. Let me see on rbx
02:24:32jeremyevanson rbx, only 6 times faster, for 2 reasons
02:24:46jeremyevansrbx is twice as fast for stdlib date
02:25:23jeremyevansrbx is six times slower than MRI when using the C extension
02:25:57evanha!
02:26:07evanhalf a dozen of one, 6 of another.
02:26:10jeremyevansAlso, for some reason, rbx Date#inspect is crazy slow (27x slower than MRI)
02:26:20evanhm, i should check that out.
02:26:30evanoh
02:26:34evanString#%
02:26:35evanthats why.
02:27:14jeremyevansThat's not yet optimized in rubinius I guess?
02:27:46evannope
02:27:56evanshould be optimized for 1.1
02:27:58jeremyevansalso, was the block splat bug fixed? I forgot to enter a ticket for it.
02:27:59evanit's on the short list
02:28:02evanright after pack/unpack
02:28:11evanthe calling #to_ary one?
02:29:30jeremyevansevan: The bug might be related to to_ary, I'm not sure
02:29:51evancould you point out which you mean?
02:29:58evanthere are couple i need to deal with.
02:30:06jeremyevansLet me see if I can find it.
02:36:55jeremyevansevan: I've located it, but let me put a simple example together. Be back in a bit
02:37:10evank
02:37:11evanthanks.
02:51:18brixen<- silly
02:51:26brixen1.5 hrs of aikido in 94 F
02:51:36brixendefinition of silly
02:51:48brixenI should go drink manhattans on a patio somewhere
02:53:58jeremyevansevan: proc{|b, *a| p [b, a]}.call([2, 3]) => [2, [3]]
02:54:19jeremyevansevan: in MRI, it's [[2, 3], []]
02:54:24evanUG
02:54:28evanfuck
02:54:29evanthat
02:54:30evanshit.
02:54:31evanyes.
02:54:40evan.call has entirely different semantics than yielding to it
02:54:41jeremyevansevan: My fault for not filing a bug report last time
02:54:45evanif you yield to |b, *a|
02:54:53evanit's something else entirely.
02:55:19evanok, i need dinner.
02:55:20evanbbiab.
02:55:23jeremyevansevan: Should I post a bug on gihub?
02:55:33parndtevan: is the code for boyscout open source?
02:56:48brixenjeremyevans: yes, please file an issue
03:01:49jeremyevansbrixen: evan: Issue filed: http://github.com/evanphx/rubinius/issues/issue/398
03:05:47brixenjeremyevans: awesome, thanks
03:21:39jc00kehello
03:21:57brixensup jc00ke
03:22:05brixenmissed you at pdx.rb
03:22:20jc00keyeah, sounded like a good one. Had a graduation party to go to...
03:22:25brixenahh fun
03:22:48jc00keyeah, good times. I checked out Rein's enumeration slides today
03:22:51jc00kefun also
03:23:27jc00keso, I'm finally getting around to running some code I had written for a client on rbx... but I get a TypeError
03:23:43brixenok, got a repro?
03:23:53brixenor backtrace
03:24:13jc00kecan't share code, but I think I can share backtrace
03:24:17jc00kelemme grab some
03:24:40jc00keany chance it could be Rspec?
03:24:51jc00kesame version runs fine in ree
03:24:58brixenwell, if you want to try to extract a simpler case, that would be great
03:25:02brixenrspec should run ok
03:25:14jc00kek, lemme see what I can get
03:25:16brixenbut could be an issue, sure
03:43:08jc00kedebugger work?
03:50:11evannot atm.
03:50:36jc00kek
03:50:51jc00kebrixen, how can I get you a private URL?
03:52:29evanjc00ke: you can send it to me
04:05:28brixenjeremyevans: do you use any RSTRING_PTR or RSTRING_LEN in your C ext?
04:05:53jeremyevansbrixen: Nope, it's all numbers currently
04:05:58brixenok
04:06:02brixenjust curious
04:06:20brixenlet us see the code when you can so we can look at the speed difference
04:06:20jeremyevansbrixen: I'll be using it eventually. So far only Date.civil and Date#inspect have been implemented
04:06:44brixenjeremyevans: well, if you are using the string read_only, use rb_str_ptr_readonly in rbx
04:07:11jeremyevansbrixen: Do you want to see the code now?
04:07:16brixensure
04:07:58brixenjeremyevans: actually, I'll bbiab, but feel free to post a link
04:08:14jeremyevansbrixen: http://www.pastie.org/1037018.txt
04:09:14brixensweet, bbiab...
05:53:41dbussinkevan: morning :)
05:54:12dbussinkevan: the weird thing with those benchmarks is that sqlite3 is a lot slower than mysql, but the code in the extension is very similar
05:54:12dbussinkdoes basically the same things, except calling mysql api methods instead of sqlite3 ones
05:54:15dbussinkand on mri the performance is very similar
16:24:27brixenmorning
16:24:40brixenevan: going to galois talk this morning
16:24:56BrianRice-workme, too
16:25:02brixenBrianRice-work: woot
16:25:07brixenare you feeling better?
16:25:09BrianRice-workthis one ought to be interesting
16:25:12BrianRice-workyeah, more or less
16:25:20brixenlooks like it will be interesting, yes
16:25:42evanok
16:26:01BrianRice-workhttp://www.galois.com/blog/2010/07/02/tech-talk-requirements-and-performance-of-data-intensive-irr egular-applications/
16:26:16brixenevan: I extracted #399 from jc00ke's code last night, but I didn't investigate yet
16:27:29brixenBrianRice-work: did you look at Rust?
16:28:43BrianRice-workI've looked at it, yes. not a bad idea. better than Go in principle
16:28:55BrianRice-workI mean, of course, that it appeals to me much more than Go
16:29:11brixenthe author has much the same opinion :)
16:29:29brixenlooks like charlie's got a new post on memory profiling
16:29:57brixenjhat looks just like gauge, unstyled and all
16:30:36brixenBrianRice-work: the syntax of both Go and Rust don't resonate with me
16:30:45brixenI like a lot of the concepts behind Rust
16:31:01brixenat least, the author's explanation of tradeoffs and why one was taken
16:31:06BrianRice-workit's hard to escape C-lexicalisms when you get close to it
16:31:36brixenyes, that is quite true
16:31:58brixenmost languages actually look surprisingly similar, at least for short snippits
16:32:09BrianRice-workalthough the type/pointer declaration syntax...
16:32:13brixener snippet
16:38:11brixenjvoorhis: come to the galois talk this morning
16:38:24jvoorhisdunno that i can, i have an appointment at 11:45
16:38:26jvoorhiswhat's the talk?
16:38:48brixenhttp://www.galois.com/blog/2010/07/02/tech-talk-requirements-and-performance-of-data-intensive-irr egular-applications/
16:39:03brixencould be quite relevant to y'all
16:39:05jvoorhisoh, that one sounded great
16:39:12brixenyeah, so reschedule :P
16:39:30jvoorhisha
16:39:34brixenhehe
16:39:44jvoorhisno 24 notice
16:39:51brixenargh
16:39:55jvoorhisit starts at 1030?
16:39:59brixenyeah
16:40:08jvoorhismaybe i could leave early
16:40:57brixensure
16:41:39brixenyou know what would be cool: when I put a calendar item in my iphone, if I could link a pdxbus update so the reminder tells me how many min till the next arrival of the bus I'll take
16:41:47brixenany iphone hackers here? :)
16:42:49jvoorhislearning objc isn't so hard
16:43:05BrianRice-workbrixen, been a while but yes
16:43:32brixenwell, I don't know if there's an api for the calendar like that, but there should be
16:43:33BrianRice-workbrixen, yeah you just have to form a custom URL that the application responds/launches-for
16:43:52brixenbut I want it to display right in the reminder pop-up
16:43:55brixenis that possible?
16:43:57BrianRice-workiOS 4: http://stackoverflow.com/questions/246249/programmatically-add-custom-event-in-the-iphone-calendar
16:44:06BrianRice-workoh. not really.
16:44:13brixen:(
16:44:43BrianRice-workthat would be a turing-complete hook into the notification system... not kosher from the security regime perspective
17:05:51evandbussink: poke
17:21:01boyscoutIntroduce deoptimization on too many uncommon branches - 8969894 - Evan Phoenix
17:47:31boyscoutCI: Commit 8969894 failed. http://github.com/evanphx/rubinius/commit/896989442781c131618d957f78b614623698479d
18:54:25brixenhrm
18:54:39evan?
18:54:55brixenwondering about that spec failure
18:55:04evani'm going to look at it shortly.
18:55:05brixenI actually get 5 on my ubuntu box
18:55:11evanug.
19:14:23evanbrixen: i'm going to get some lunch and a haircut
19:14:24evani'll bbiab.
19:16:39brixenok
19:24:56dbussinkevan: auch
19:28:45dbussinkhmm, guess 10 minutes for a lunch and haircut is a bit short :p
19:30:40brixendbussink: are you getting excited for the game?
19:31:01dbussinkbrixen: now that it's weekend the tension buildup has started :P
19:31:20brixenheh
19:31:21brixendbussink: http://www.statesmanjournal.com/article/20100709/SPORTS/7090351/1018
19:31:54dbussinkbrixen: ah, cool :)
19:32:07dbussinkalready noticed in new york that it's a lot bigger in the usa than i expected it to be
19:32:09brixenwe might catch it there
19:32:28brixenthere are pockets of hard core fans :)
19:32:29dbussinkprobably going to watch it at a friends place
19:32:46dbussinkwith a bbq before, it's 30+ celcius here now
19:33:12brixennice
19:33:18brixenit's about that here too
19:33:29dbussinkbit too hot for me
19:33:31brixenshould get up to about 34 C today
19:33:46dbussinkwe don't have airco's in each house here either :P
19:33:52brixen25 C is nice for me
19:33:52dbussinkso it can be pretty warm at night then
19:34:00brixenno aircon here either
19:34:01dbussinkyeah, 25 is nice
19:34:26BrianRice-workhouses in the northwest aren't built to shed heat
19:34:46dbussinkwell, if they are properly insulated, they can keep heat out too
19:35:21BrianRice-workas long as the albedo is low :)
19:35:34brixenBrianRice-work: our apt is in the cross-section of an H shaped building, so it gets great cross ventilation if we keep the door open :)
19:36:16BrianRice-worknice. I have two doors I can open. the only downside is that the upper floor's doors have no bug screening
19:36:30brixenah yeah, that sucks
19:38:51dbussinki've grown up with country side levels of bugs, so it's a lot better in the city :P
20:40:43pcapriottiany particular reason rb_throw is not implemented in the C API?
20:43:31dbussinkpcapriotti: not that i know of, does it have any special semantics?
20:47:03pcapriottidbussink: I don't know, actually, I just noticed that it's missing while trying to compile QtRuby
20:51:57dbussinkpcapriotti: from what i can see it should be pretty simple to add
20:53:43pcapriottidbussink: I'm pretty new to rubinius, but I'd like to try. Can you give me some pointers?
20:54:27dbussinkpcapriotti: well, you probably want to call into the ruby throw parts
20:54:42dbussinkpcapriotti: there are a bunch of other things in vm/capi that do that too
20:55:07dbussinkpcapriotti: best is to start of with adding a spec for this under spec/ruby/optional/capi
20:55:37dbussinksince throw is on Kernel you should probably add it to kernel_spec
20:55:43pcapriottiok, thanks
21:06:50evanyou must call back into ruby to implement rb_throw
21:07:50dbussinkpcapriotti: look at other stuff that usually uses rb_funcall in vm/capi to call into ruby
21:07:54dbussinkevan: you rang sir?
21:08:00evanyeah
21:08:04evanwith your benchmark
21:08:08evanon my machine
21:08:20evanthe benchmark that fills a table with rows
21:08:25dbussinkyeah
21:08:26evanseems to end up being entirely an IO benchmark
21:08:37evanMRI takes 26s wall clock
21:08:39evanand 7s user
21:08:48dbussinkah ok, well, what i find weird is the big discrepancies between the different drivers
21:08:55evanthats the drivers
21:09:00evannot rbx vs mri
21:09:02evanyes?
21:09:21dbussinkwell, i don't see that discrepancy running with mri, but if the benchmark numbers are wrong that could be it then yeah
21:09:32evanhere
21:09:40evanrbx is about the same as MRI for sqlite
21:09:44dbussinklet me wrap it with a time call
21:10:22dbussinklooks like the numbers it prints are pretty off with mri
21:10:41evanthats because of the IO
21:10:47evanI believe
21:10:54evanI need to fix rbx's Process.times
21:11:05evanto actually report the same times as MRI
21:11:11evanie, seperate user, etc.
21:12:55dbussinkevan: these are my numbers if i wrap them with a time
21:12:57dbussinkhttps://gist.github.com/688db0ac6eb42dbc0b93
21:13:02dbussinkso the different isn't that big there
21:15:11evanit's the numbers in the real column that you want to look at
21:15:28pcapriottiI wrote a simple spec for rb_throw, and was expecting it to fail compiling, instead it gives a linker error "undefined symbol rb_throw". Is it picking up the MRI ruby.h, maybe?
21:15:30evantime is useless for this
21:15:34evanbecause you're seeing code loading too.
21:15:51evanpcapriotti: thats C.
21:16:06evanyou can call a function that has no definition
21:16:19pcapriottievan: ah, right, makes sense
21:16:20evanyou don't get a compile error because it's linked as a dynamic library
21:16:30dbussinkevan: true yeah, but the numbers are less skewed than what benchmark reports
21:16:51dbussinkpcapriotti: you want to start of with running the specs against mri
21:17:07dbussinkpcapriotti: you can do ./bin/mspec -tr spec/ruby/optional/kernel_spec.rb
21:17:14dbussink-t selects the ruby to run against
21:17:23dbussinkmspec in the rbx repo uses rbx by default
21:17:27dbussinkr selects mri
21:17:58pcapriottidbussink: ok, cool, it works
21:18:20dbussinkpcapriotti: ok, then is a good step to add it to rbx too :)
21:18:57pcapriottidbussink: having a failing spec is ok?
21:19:08dbussinkpcapriotti: it shouldn't fail on mri :)
21:19:14dbussinkbecause it should follow how mri behaves
21:19:54pcapriottidbussink: yeah, but it fails on rubinius
21:20:11dbussinkpcapriotti: even after you add it to capi?
21:20:28dbussinkpcapriotti: because if you haven't added it yet, it should fail because it isn't there yet :)
21:21:38pcapriottidbussink: yeah, I'm just wondering if you want the failing spec to be committed before the thing being tested is implemented
21:21:54dbussinkpcapriotti: well, we prefer separete spec commits and implementation commits
21:21:57pcapriottithis particular one might be trivial, but I was wondering in general, if that's how you roll :)
21:22:05dbussinkthat makes merging specs back to rubyspec way easier
21:22:13dbussinkso always as separate commits
21:22:13brixenpcapriotti: please read doc/specs.txt
21:22:25pcapriottiok, will do
21:41:00dbussinkpcapriotti: thing is that we don't require each commit in itself to always maintain a clean ci run, other things are more important
21:41:38brixenyes, just the tip of what you push must run without errors in CI
21:41:45pcapriottiok
21:42:05evanbrixen: i'm working on the CI failure
21:42:06brixenso you can commit the specs, then commit the impl, then create a patch/push
21:42:10brixenevan: ok
21:42:18evan1006 means that the subprocess exited because of a signal
21:42:26evanin this case, signal 6 which is abort
21:42:28evanwhich means it crashed
21:42:31evani'm on it.
21:42:33brixenok
21:42:49evanthe > 1000 status is an rbx specific feature
21:42:55evanto detect things exactly like this.
21:43:05brixenah nice, didn't realize that
21:43:55dbussinkevan: i have a reproduceable crash here too, it segfaults in syck_mark_parser
21:44:09evanok
21:44:12evanplease gist the steps.
21:44:25evanprobably my capi changes yesterday
21:44:25dbussinkevan: will do
21:44:25evanug.
21:50:11dbussinkevan: this is what i run to get it: https://gist.github.com/7010094f6267ba278d37
21:50:51evanum
21:50:58evanwtf is that warning about cross compiling for jruby?
21:51:03evanyou sure it's not compiling wrong?
21:51:18dbussinkthat's rake-compiler
21:51:22pcapriottishould I create a ticket to submit the patch?
21:51:31dbussinkevan: i know it's compiling it right
21:51:41evancan you minimize this?
21:51:51evando I need to be recompiling all this everytime?
21:52:15dbussinkevan: the weird thing is, that if i just run that last command listed there, it doesn's segfault :S
21:52:42evan:/
21:53:12brixenpcapriotti: yes, please
22:07:41evanbrixen: ok, the crash is cleaning up some FFI memory
22:07:45evani'm working on it now.
22:09:38brixencool
22:16:17pcapriottiwhen building an extension for rubinius, is there an equivalent of libruby.so I can link to, or should I leave ruby symbols undefined?
22:16:27evanno, there is not.
22:16:33evanyou leave them hanging
22:16:45evanwhy are you doing it by hand?
22:16:57pcapriottiI'm using the existing build system of QtRuby
22:17:04evanah
22:17:10evanno, no -lruby
22:17:32pcapriottiok, I have to remove the no-undefined flag, then
22:21:29brixenpcapriotti: was rb_throw the only C-API function missing for QtRuby?
22:21:59pcapriottibrixen: no, there's rb_during_gc
22:22:08brixen:/
22:22:17pcapriottibrixen: I'm trying to figure out why they need that, it seems a dirty hack
22:23:01brixenanything /rb.*gc/ is a dirty hack :)
22:23:32pcapriottiit seems it avoids to call an overriden method during GC and calls the original C++ method instead... looks like a potential source of crazy heisenbugs
22:23:50pcapriottiI'll just take it off for now :)
22:23:59brixenheh
22:24:16evanduring_gc?
22:24:23evanis that a flag?
22:24:25evanmust be.
22:34:33pcapriottiit works! :D
22:35:15brixenpcapriotti: woot!
22:35:26brixenpcapriotti: what platform are you on?
22:35:31pcapriottilinux
22:35:35brixenwhich?
22:35:39pcapriottikubuntu
22:35:43brixensweet
22:35:52pcapriottiok, let me try my app now :)
22:36:25brixenpcapriotti: you'll go down in the pages of history as the first Qt app running on rbx
22:36:41pcapriottieheh
22:56:34pcapriottiok, I stumbled upon another difference: it seems rb_class2name in MRI works for Modules, too, while in rbx it expects a Class
22:57:06brixenpcapriotti: could you add a c-api spec for it?
22:57:12pcapriottibrixen: sure
22:57:16brixensweet, thanks
23:00:13pcapriottibrixen: should I keep the one for Class?
23:00:49brixen?
23:01:02brixenyou mean the existing spec?
23:01:05pcapriottithere is already a spec in class_spec.rb for class2name
23:01:12brixenyeah
23:01:14pcapriottishould I move it to module_spec or keep both?
23:01:22brixenadd one for passing a module
23:01:26pcapriottiok
23:22:28evanbrixen: it's a bug in libffi!
23:22:31evan*eyeroll*
23:23:25brixenahhhh :(
23:24:32evanthis line
23:24:32evanif (strncmp (p + 1, "selinuxfs ", 10) != 0)
23:24:34evanshould be
23:24:45evanif (strncmp (p + 1, "selinuxfs ", 10) == 0)
23:24:54evanclearly whoever wrote this never ran it.
23:25:06brixenthe value of tests
23:25:44evani'd at least take "I ran the code once"
23:25:50evanthe bug is masked
23:25:59evanbecause the selinux code sort of works
23:26:02evanbut it's not fork friendly.
23:30:50boyscoutCleanup and improve NativeMethod a bit - a2fe4b0 - Evan Phoenix
23:30:50boyscoutFix classic strncmp bug in libffi - 74c1dce - Evan Phoenix
23:45:31pcapriottiuhm... there are some nasty crashes in qtruby
23:45:40pcapriottiit's going to be fun to track them down :)
23:46:11brixengdb is your friend :)
23:47:08pcapriottiyep, but now it's too late here for debugging :)
23:47:19pcapriottiI'm happy to have hello world running for now
23:47:55brixenwell, thanks for working on it!
23:49:31pcapriottinp, hope to see my patches integrated, so I can commit the changes in qtruby and have it running on rbx for the next release
23:49:48brixenyep, we'll get them in shortly
23:55:46toulmeanbrixen, evan : vanity now conforms with 1.8.7 if you want to do some perf work, it looks like a good target.
23:56:10evanah cool!
23:56:39boyscoutCI: rubinius: 74c1dce successful: 3458 files, 13692 examples, 41271 expectations, 0 failures, 0 errors
23:56:42toulmeanI'll do a new pass with -Xprofile and will paste results for you
23:57:10toulmeanis there a way with rvm to install the master branch of rubinius ?
23:57:19brixenrvm install rbx-head
23:57:28toulmeanthanks. That's very useful.
23:57:32brixenn/p
23:57:40toulmeanI'll use rvm with head and will run a profiling for you guys.
23:57:47brixensweet, thanks
23:58:44evanyay CI is fixed.
23:58:52evani sent a patch to libffi also.
23:59:02brixenexcellent