Index

Show enters and exits. Hide enters and exits.

03:04:12BrianRicewhere would I find the kernel of the printf logic?
03:08:53BrianRiceok: kernel/common/sprintf.rb
06:39:09boyscoutUse bin/rbx compile instead of bin/rbx describe. - b6a07a7 - Brian Ford
06:39:09boyscoutRewrote the defined? specs. - f6bea18 - Brian Ford
06:39:10boyscoutFixed defined? for various literals. - 90c2de2 - Brian Ford
06:39:10boyscoutFixed defined? for assignments. - 9ce8d8d - Brian Ford
06:39:10boyscoutMore defined? specs. - 8c41860 - Brian Ford
06:39:10boyscoutFixed defined? for method receivers. - 7bdae03 - Brian Ford
06:39:10boyscoutSome defined? specs for back_ref, nth_ref and stuff. - 6402910 - Brian Ford
06:39:11boyscoutFixed defined? for nth_ref and back_ref. - f9f2d0c - Brian Ford
06:39:11boyscoutSpecs for defined? with constants. - 47bd56f - Brian Ford
06:39:12boyscoutLoad gem_prelude from loader.rb. - 538f489 - Brian Ford
06:39:12boyscoutRefactored defined?() for when values are needed. - 459b14c - Brian Ford
06:39:13boyscoutFixed defined?() for constants. - 44e40c0 - Brian Ford
06:39:13boyscoutUpdated CI tag for description change. - c107015 - Brian Ford
06:39:14boyscoutFixed wrong conflict resolution on rebase. - 2c55bfa - Brian Ford
06:40:08brixenlooks like boyscout gets in trouble for more than 14 or so
06:49:27boyscoutCI: rubinius: 738cd1a successful: 3037 files, 12133 examples, 36493 expectations, 0 failures, 0 errors
15:26:57luislavenahey guys, a quick question.
15:27:23luislavenalibev on the repo is 3.8, any blocker to move it to 3.9?
16:22:46rueluislavena: I do not think libev is used for anything anymore
16:23:11luislavenarue: hmn, an orphaned dependency then in vm/external_libs ?
16:25:15rueIn that case it would be. I am not 100%, but it is definitely not used for most purposes it was at the time
16:27:14luislavenarue: I'm looking at all the external_libs to see the ones that do not compile under mingw32
16:29:00luislavenarue: so far libev only required update to 3.9 and patch, libtommath required minor change to makefile (hardcoded stuff) and libffi just works
16:35:52rueCool. MIght as well leave it then, hope to make use of it at some point again
16:37:22luislavenarue: I'm cheating since I'm cross compiling right now, but so far deps compile ;-)
17:20:19evanyes, we should remove libev
17:20:22evanwe're not using it anymore
17:20:46evanluislavena: thanks!
17:33:51dbussinkluislavena: cool work on the getting it to build :)
17:34:14dbussinkluislavena: do you know if llvm is possible? could also try without it for starters, might be easier
17:49:34luislavenadbussink: llvm just works, and there are llvm binaries/libs for windows already.
17:50:07luislavenadbussink: the thing I see more and more is that it may be easier to cross-compile than build everything from scratch under windows :P
18:08:53dbussinkluislavena: that would be really awesome, so we could create binaries ourselves easily :)
18:09:48brixenyeah, I'm a big fan of x-compiling for windows :)
18:10:03brixenI'll compile it, you run it... win!
18:11:00luislavenabrixen: but someone needs to run the tests and see it crash until we reach nirvana.
18:11:18brixenluislavena: do I hear a volunteer? :D
18:11:20luislavenabrixen: I still owe you something, 100mb for drop.io attach is a nightmare
18:11:40brixenluislavena: no worries, maybe we can get evan to let you upload it to us
18:11:49luislavenathinks can volunteer soon, once RubyInstaller is out for good :)
18:11:56brixenI'll ask him about it tomorrow when we're in SF
18:12:25luislavenabrixen: cool, I'm paris right now but can FTP/S3 without issues if you want
18:12:32brixenok
18:17:46luislavenashould all the patches for the changes in the external_libs sent upstream?
18:24:19brixenyes
18:41:48luislavenabrixen: ok, was hard to find the contact and details of some of the libs, will try to reach them :P
18:42:41brixenluislavena: you mean the libs in vm/external_libs?
18:42:57luislavenabrixen: yes, those.
18:44:26brixenahh
18:44:39brixender, I just realized what you meant by upstream
18:44:40brixenheh
18:45:39brixenI don't think libtommath is maintained officially anymore
18:45:58brixenluislavena: if it's a pain to submit upstream, no worries
18:46:41luislavenabrixen: ok, thank you :)
18:47:14brixenmaybe just add a doc/external_libs.txt that notes what we should be aware of if we update a modified lib in the external_libs dir
18:47:35luislavenabrixen: one question thought, afaik minimal version requirement of GCC is 4.1, right?
18:48:28brixenI'm still using 4.0.1 on os x 10.5.8
18:49:15luislavenabrixen: i386-mingw32-gcc --version from macports tell me 3.4.5, the same I use on Windows :P
18:50:43brixenhmm
18:50:46brixenyou can try it
19:41:33dbussinkluislavena: anything you've experienced to be problematic in the past with pre 4.0?
19:46:18luislavenadbussink: no, getting > 4.0 on MinGW is a challenge, there is no official and stable releases
19:53:29dbussinkluislavena: isn't something like this doable? http://sourceforge.net/projects/mingw-cross/files/
19:53:58dbussinkall rpm stuff though
19:55:15dbussinkluislavena: or this? http://crossgcc.rts-software.org/doku.php
20:00:40luislavenadbussink: I meant to say that official builds from mingw.org ppl don't pushed newer versions that they consider "stable"
20:01:14dbussinkluislavena: ah, well, maybe rubinius will need more adventure :P
20:02:06luislavenadbussink: definitely ;-)
20:12:32dbussinkluislavena: i'm trying to test that build with rake-compiler, any way i could try that?
20:16:48luislavenadbussink: what thing you want to test?
20:17:06dbussinkluislavena: just some binary gems for windows i make to see whether that 4.3 version works
20:18:13luislavenadbussink: can you email me the gem and I can give a try? using the mac at work right now, but have a VM with XP
20:30:09kstephensString#% appears to be very slow.
20:30:21kstephensI have a benchmark if someone wants to try it.
20:33:39brixenkstephens: could you open a ticket?
20:33:44kstephenssure
20:33:46brixeninclude the benchmark
20:34:15brixenwe could probably add it to evan's tier benchmarks
20:34:35kstephensBTW: I'm working on a bunch of benchmarks that compare low-level common ruby idioms against different Ruby implementations.
20:35:06kstephensI'm planning to do a talk at Chicago Ruby Group about it.
20:35:27kstephensSo far it will be good "publicity" for Rubinius :)
20:36:11brixencool
20:37:26kstephensI can give you guys a preview if you want.
20:37:26kstephenss/preview/preview of the slides/
20:37:36brixensure
20:37:57brixenevan will be back after lunch
20:38:19brixenkstephens: did you run our tier benchmarks?
20:38:26kstephensno didn't know about them
20:38:32brixenI'm curious if your results are consistent with what we see
20:38:53brixenin our repo, benchmark/tiers
20:39:02brixenwhere is wayne
20:39:35kstephensOverall rubinius "kick ass", but I think I'm seeing performance problems related to local variables (as compared to JRuby and MRI)
20:39:58brixenhttp://rvm.beginrescueend.com/benchmarks/2010-01-06/
20:39:59kstephensThe slides should be more illustrative of what I'm seeing
20:40:13brixenthe rvm author has a setup to run various impls against the tiered benchmarks
20:40:31brixenlocal variables huh? hmm
20:40:39brixenthose should be screaming fast
20:41:24kstephensMy research for this presentation is two fold: 1) some common ruby idioms have MTOWTDI. 2) Different Ruby implementations perform differently.
20:41:47kstephensSo its about what code techniques perform best across implementation and on specific impls.
20:41:55brixenhttp://rvm.beginrescueend.com/benchmarks/2010-01-05/
20:48:29dbussinkkstephens: any specifics on the benchmark that was slower for you?
20:48:40dbussinkthe local variables is probalby the most interesting
20:51:36kstephenshttp://kurtstephens.com/priv/ruby/ruby_code_tweaks/slides/#45
20:52:13kstephensI'll have a new version up there shortly that has links to the individual benchmark files and results.
20:53:05kstephensIn the meantime: http://kurtstephens.com/priv/ruby/ruby_code_tweaks/slides/measurement/string_formatting-Rubinius.r b
20:53:26kstephenshttp://kurtstephens.com/priv/ruby/ruby_code_tweaks/slides/problem/string_formatting.rb
20:54:27kstephensThe local variable issue is just a speculation on my part.
20:54:54kstephensThe benchmarks where I introduced local variables in a loop appear to be a contributing factor.
20:55:10dbussinkcould also very well turn out to be a gc benchmark
20:55:15kstephensthat too
20:55:43kstephensThere does appear to be a threshold were GC is active enough to be a contribution.
20:55:54kstephenss/were/where/
20:56:24kstephensI haven't done any digging into rbx, I'm just measuring simple blocks of code in tight loops.
20:56:46kstephenspurely comparative analysis.
20:57:59kstephensI'll be adding more Problems/Solutions. Trying to despell some myths about the tradeoffs of idomatic ruby.
20:58:31brixenkstephens: our profiler lists GC activity
20:58:32kstephensMaybe rails could clean up some sloppy low-level code that is killing all of us :)
20:58:41brixenyou could profile the code you are benchmarking to see if it's GC heavy
21:00:03kstephensWe're still on Rails 1.2 here at work, so we can't just yet take advantage of wycats excellent rails 3.0 work. :(
21:00:53brixenkstephens: well, hopefully it won't be too hard to transition
21:01:16brixencus not sure any amount of knowledge is going to actually clean up Rails 1.2 code ;)
21:01:17kstephensOur code base is *enormous*.
21:01:53kstephensI've patched the fuck out of 1.2 for performance reasons.
21:02:11brixenfun
21:12:48evani'm back!
21:15:56dbussinkevan: wooohoo
21:15:59kronos_vanokstephens, why jruby 1.2 ?
21:16:29evanman, M for String#unpack is so wacky.
21:19:53kstephensjruby 1.2 was quick to install via apt-get :)
21:20:11dbussinkkstephens: also pretty much outdated already
21:20:12kstephensI'll probably build everything from latest soruce.
21:20:40kstephensyea I figured it already was.
21:20:51dbussinkkstephens: are you using stock ruby? because pthreads disabled / enabled can also make a lot of difference for 1.8
21:21:15kstephens1.8.7 is debian stock.
21:21:54kstephens1.8.6 and 1.9 are built from source. But I have not enabled pthreads, and I'm not doing any Threads in the benchmarks.
21:22:05kstephens1.9 is built from trunk.
21:22:17dbussinkwell, 1.8.7 debian stock has them enabled afaik
21:22:35kstephensgood point, I was planning on building 1.8.7 from trunk.
21:22:53kstephensI really don't want to build jruby :)
21:22:58kstephensbut I will.
21:29:40dbussinkkstephens: you don't have to, you can just download a binary from the website for 1.4
21:31:46kstephensI'll do that, tnx.
21:33:41kronos_vanoevan, I think we was wrong this moving array#hash to C++ layer. This way is faster only on array with size around 500 or less. On big arrays: http://gist.github.com/327133. I think it is because map :(
21:33:57evanI didn't say to
21:34:21evanoh, you did it the way I said
21:34:23evana different method
21:34:37evanwell
21:34:43evanleave it as is.
21:34:49kronos_vanohash_ and hash__ just for benchmarking
21:34:52evanI said we didn't need to do it now
21:35:01evanie, leave it ruby only
21:35:07kronos_vanook
21:37:06evanug.
21:37:27evanman, i'd prefer these "method X is very slow" tickets at least also had some fixes or profiling output or SOMETHING
21:37:41evanotherwise I feel like it's just someone pointing out a pothole on the street.
21:40:27dbussinkevan: well, there's the crash ticket to investigate ;)
21:40:39evanyep
21:40:41evani know.
21:41:26kstephensevan: what would you like for the String#% is slow ticket?
21:41:34evana fix? :D
21:42:05evansome profiling would be good, use - Xint -P <script> to get some profiling output
21:42:14evan-Xint -P <script>
21:42:18kstephensOk
21:42:31evankstephens: thanks for the ticket also
21:42:36evandidn't mean to bitch :P
21:42:44kstephensno, I get it.
21:42:54evanwe've given no optimization time to the printf code
21:49:30kronos_vanokstephens, what is "E!" for example in http://kurtstephens.com/priv/ruby/ruby_code_tweaks/slides/#108 near rubinius
21:49:53kstephensMeans it errored out
21:49:58kstephenssee my other ticket
21:50:18kstephensthats the SEGV I reported in the GC.
21:50:55evanok
21:50:58evani've got your ticket
21:51:01evani need to dig into it
21:51:08evancould you update the ticket with your platform info
21:51:10evanif it's not already there
21:51:14kstephenssure
21:53:07kstephensdone
21:55:29kstephensevan: I can generate rbx profile results for all my slides if you want.
21:55:47evansurely
21:56:04evani'll bet with some tuning
21:56:18evanwe can shave at least 10x off String#%
21:56:44evanthat's the kind of success i've had with tuning stuff that has never been touched optimization wise
21:56:51kstephensI hope at least 100x :)
21:57:11kstephenshttp://kurtstephens.com/priv/ruby/ruby_code_tweaks/slides/#45
21:57:35kstephensI wish I had more time to contribute a fix.
21:59:04evanis your scale for slide 46 right?
21:59:12evanperhaps it's like that to make a point
22:02:59kstephensthe scale is correct :(
22:03:11evanno, for 46
22:03:20evanfor 46 they're all below like 20 it looks like
22:03:26evani can barely see the bars
22:03:50evanoh, you use the same scale for all of them
22:03:56kstephensYea, I gotta tweek some of graph generation.
22:04:06kstephensSome of the graphs are too illustrative.
22:04:12kstephensand not useful.
22:05:37kstephensI'll annotate them with real numbers for clarity
22:19:36evanfor those in the SF area: http://www.sdforum.org/index.cfm?fuseaction=Page.ViewPage&PageID=622
22:19:48evani'll be on a panel tomorrow
22:26:56kronos_vanoIs spec ok? http://gist.github.com/327212
22:30:27evankronos_vano: i'd make the title be
22:30:48evanit "depends on the order of elements in the Array"
22:31:40kronos_vanoevan, tnx
22:42:59boyscoutUpdate spec for Array#hash: Add cases for same arrays with diffrent order - 8dbf339 - Ivan Samsonov
22:42:59boyscoutImprove Array#hash - 6625ff5 - Ivan Samsonov
22:46:22brixenkronos_vano: just for reference, in specs like that, you should probably indicate whether the case with 2 fixnums is a boundary condition relative to the one with 4 fixnums
22:46:33brixenkronos_vano: otherwise, what's the point of both those?
22:46:42brixenfixnums vs strings I understand
22:47:08brixenbut even in that case, you should have 2 example blocks
22:47:17brixenone with fixnums, one with strings
22:48:16boyscoutCI: rubinius: 6625ff5 successful: 3037 files, 12134 examples, 36496 expectations, 0 failures, 0 errors
22:56:10matthewdSo... per my rambling to myself over the weekend, Kernel.rand is broken, because it can return values higher than it should
22:56:35matthewdEasy fix is to check the result and loop on the (very unlikely) event it has done so
22:56:59evanmatthewd: sure
22:57:04evansubmit a patch and i'll apply it.
22:57:09matthewdAt the other end of the spectrum, would it be worth implementing MT or so in ruby?
22:57:18evanMT?
22:57:21evanno.
22:57:36evanit wouldn't.
22:57:51matthewdNot really as a solution to this, so much as just because I noticed we're using the posix call atm
22:57:54matthewdk
22:58:34matthewdMy reading of the docs suggests RAND_MAX isn't always 0x7fffffff, too... is that just not relevant on platforms we care about?
23:00:38evanthats not what 0x7ffffff means actually
23:00:55evanoh wait
23:01:00evanwhere do you see that value?
23:01:12evanug.
23:01:15evanwho wrote this?
23:01:19evanthis needs to be changed.
23:01:28matthewdSo, you obviously found it. :)
23:01:44evanwe need to remove all that reading from urandom
23:01:54evanno, i don't see the 0x7ff...
23:02:12evanbut i do some some code in entirely the wrong place.
23:02:22evanoh, in rand
23:02:23evangot it.
23:02:27evani was looking in srand
23:02:28evanum.
23:02:36evanno clue why we use 0x7f... there
23:02:42evanfeel free to do anything you want
23:02:51evanbarring a full MT implementation
23:03:07evanwe should still use srand(2) and rand(2)
23:03:12matthewdWell, that's RAND_MAX on current platforms, so is presumably to adjust to a more appropriate range
23:03:16matthewdk
23:03:57matthewdI think half the problem (of overage) goes away if you make it 0x80000000... but that's obviously still assuming the value of RAND_MAX.
23:04:20evani dislike the idea of a random platform constant in there
23:04:23matthewdBut even then, there are rounding issues, I believe
23:05:04matthewdYeah, I assume I'll find an example of how to actually get RAND_MAX somewhere (as in, an example of a different such constant)
23:05:26evanyou... might not.
23:05:43evani guess the code that gets the F_* values
23:05:44matthewdI'd hoped for a clue in platform/posix.rb, but was not rewarded
23:07:13evancheck out rakelib/platform.rake
23:08:23matthewdOkay, cool
23:15:55matthewdJust to complete my earlier reasoning, I was only considering MT for the rather dubious advantage of seed-compatibility with MRI
23:24:32evana pox on the house of quoted-printable!
23:24:48evanmatthewd: feel free to do a seed mix
23:24:59evanusing Time.now and Process.pid, etc.
23:25:05evanthats what MRI does, I believe.
23:27:47matthewdYup
23:28:42evanif you wanna implement MT for the seed
23:28:45evanthats probably fine
23:28:58evani'd prefer to not put a MT mixer pass into #rand though
23:29:01evanit would slow it way down.
23:29:11matthewdWhile I'm asking stupid questions... should we be aware of the timing attack against the top bit of the result (because of bignum vs fixnum)?
23:29:13evani'd expect, but i'm happy to be proven wrong.
23:29:50evanprobably.
23:30:01evan#rand should clamp all values to Fixnum
23:30:08matthewdYeah, I suspected as much. By seed compat, I mean having `srand(3);rand` return the same in both impls... but yeah, I highly doubt anyone would care
23:30:31evaneither via an explicit clamp (might sacrifice the data quality) or by just redoing
23:30:47evanaah
23:30:52evani'm not sure we need that level of compat
23:31:08evansince i think that MRI still just passes the srand value to srand(2)
23:31:12evanso it's still dependent on the system
23:31:24matthewdThe only possible reason I could think of wanting it was so any random benchmarks'd be doing the same thing :P
23:31:36evanheh
23:31:36evanyeah
23:31:56evani'd leave it up to the random impl
23:31:57kstephenslooks around guilty
23:32:08evanif they have variance based on clamping, etc, thats fine.
23:34:41matthewdFWIW, in a quick glance at http://ruby-doc.org/doxygen/1.8.4/random_8c-source.html, I don't think it touches the platform srand or rand
23:36:01evanaah ok
23:36:27matthewdI can't put C between Kernel.rand and rand(3), can I? In an ideal world, I'd keep the full 31 bits, and just use the top one as -ve, to stay within fixnum bounds
23:41:05evanwell, you could write it as a primitive
23:41:11evanthen you can write it anyway
23:45:09matthewdHrmm... I guess I'll start by writing it in ruby... the extra bit would only really be relevant when max is a bignum