Show enters and exits. Hide enters and exits.
| 00:00:06 | brixen | the spec is a good start |
| 00:00:23 | langenberg | are there actually test for MRI? |
| 00:00:39 | wifelette leaves the room. | |
| 00:00:40 | brixen | langenberg: there are some |
| 00:00:46 | brixen | in our repo: test/mri |
| 00:00:56 | langenberg | Because now I'm writing specs using the comments above the methods. |
| 00:01:17 | brixen | yeah, that's a good start |
| 00:01:35 | wycats enters the room. | |
| 00:01:38 | brixen | then do: bin/mspec -tr spec/ruby/1.8/library/base64/... to run them under mri |
| 00:02:13 | langenberg | Is it okay to copy to original documentation (MRI) and use it again for the Rubinius implementation? |
| 00:02:19 | brixen | langenberg: yeah |
| 00:02:25 | brixen | actually, what I'd suggest... |
| 00:02:33 | brixen | just write the specs and when they run under mri |
| 00:02:48 | brixen | you can make base64.rb run under rubinius |
| 00:02:53 | brixen | then just copy it from stdlib to lib |
| 00:03:01 | brixen | since it's already ruby |
| 00:03:28 | langenberg | Alright, will do that. |
| 00:03:32 | brixen | cool |
| 00:03:35 | brixen | thanks! |
| 00:04:05 | langenberg | np |
| 00:08:08 | defunkt enters the room. | |
| 00:12:41 | wycats leaves the room. | |
| 00:12:45 | cjheath leaves the room. | |
| 00:17:06 | rue | langenberg: Make sure not to rely on MRI RDoc |
| 00:17:16 | rue | We find 1-2 incorrect docs every week |
| 00:20:05 | brixen | right, but reading the docs to initially write the spec can work ok |
| 00:20:14 | brixen | just be sure to run them under MRI to validate |
| 00:20:47 | mosfet51 enters the room. | |
| 00:22:01 | langenberg | I'll |
| 00:22:37 | mosfet51 | I am new to ruby and I would like to know what is the status of rubinius ? |
| 00:22:42 | mosfet51 | or maybe first |
| 00:22:55 | mosfet51 | what is the VM actually used in ruby 1.9.0 ? |
| 00:23:12 | mosfet51 | I saw some referrrnces t oYARV ? |
| 00:23:35 | langenberg leaves the room. | |
| 00:23:37 | drbrain | YARV was merged into MRI 1.9, and is now MRI 1.9 |
| 00:23:37 | brixen | mosfet51: yes, yarv is now basically ruby 1.0 |
| 00:23:39 | brixen | 1.9 |
| 00:23:49 | drbrain | YARV had no name because, if accepted it didn't need one |
| 00:23:55 | drbrain | and if not, it didn't need one |
| 00:24:56 | langenberg enters the room. | |
| 00:25:16 | langenberg | guys I'm off to bed, nighty night. (I'll post a ticket when my Base64 spec/implementation is done) |
| 00:25:59 | brixen | langenberg: cool, thanks again |
| 00:26:05 | langenberg | bye |
| 00:26:09 | skaar leaves the room. | |
| 00:26:13 | langenberg leaves the room. | |
| 00:26:54 | hornbeck leaves the room. | |
| 00:27:15 | mosfet51 leaves the room. | |
| 00:32:38 | lopex enters the room. | |
| 00:35:22 | nitay_ enters the room. | |
| 00:36:15 | octopod leaves the room. | |
| 00:41:31 | jennyw_ enters the room. | |
| 00:41:48 | jennyw_ leaves the room. | |
| 00:41:57 | KirinDav leaves the room. | |
| 00:41:57 | KirinDav_ leaves the room. | |
| 00:42:06 | lopex leaves the room. | |
| 00:43:41 | KirinDave leaves the room. | |
| 00:50:12 | imajes leaves the room. | |
| 00:50:25 | imajes enters the room. | |
| 00:52:36 | nitay leaves the room. | |
| 00:52:36 | imajes leaves the room. | |
| 00:52:56 | imajes enters the room. | |
| 00:55:58 | twbray leaves the room. | |
| 00:58:53 | jennyw leaves the room. | |
| 01:19:49 | aotearoa enters the room. | |
| 01:19:51 | aotearoa_ leaves the room. | |
| 01:22:23 | aotearoa leaves the room. | |
| 01:25:41 | djwhitt enters the room. | |
| 01:26:02 | nitay enters the room. | |
| 01:28:09 | aotearoa enters the room. | |
| 01:29:01 | kwatch | [Q] I want to use erb.rb in Rubinius, but it is categorized in 'stdlib/' and not in 'lib/'. Why? What is problem using erb.rb in Rubinius? |
| 01:29:49 | djwhitt | kwatch: might just be that no one has tried it yet |
| 01:30:12 | kwatch | I see |
| 01:31:21 | kwatch | What do I do to move erb.rb from 'stdlib/' to 'lib/'? |
| 01:33:22 | djwhitt | well, I ran a simple test and it seems to work |
| 01:33:36 | djwhitt | I would suggest not moving it |
| 01:34:04 | djwhitt | instead just run rubinius like this ./shotgun/rubinius -Istdlib erbtest.rb |
| 01:34:35 | djwhitt | where erbtest.rb is a script that uses erb |
| 01:34:41 | technomancy leaves the room. | |
| 01:35:51 | brixen | kwatch: we just need some specs for it, and then we can move it over to lib |
| 01:36:08 | ragge leaves the room. | |
| 01:36:13 | brixen | kwatch: but stdlib should be in $: in rbx, so: require 'erb' should work |
| 01:37:54 | kwatch | thank you. I'll write spec file of erb.rb. |
| 01:38:22 | brixen | kwatch: super, thanks |
| 01:39:27 | aotearoa_ enters the room. | |
| 01:39:27 | brixen | kwatch: here's a command that will create some template files: bin/mkspec -tr -b spec/ruby/1.8/library/ -rerb -c ERB |
| 01:39:42 | brixen | kwatch: you can also do -c ERB::Compiler |
| 01:39:45 | brixen | for example |
| 01:40:53 | kwatch | thank you brixen, but bin/mkspec reports that 'invalid option: -tr'. |
| 01:41:54 | brixen | oh, hmm, le'me check right quick |
| 01:42:19 | brixen | kwatch: yeah, nm, -tr is for the other scripts, so they run under ruby instead of rbx |
| 01:42:24 | brixen | so, just drop the -tr |
| 01:43:04 | kwatch | thank you, brixen. Dropping '-tr' seems to be well. |
| 01:43:09 | brixen | cool |
| 01:45:26 | nitay_ leaves the room. | |
| 01:46:11 | enebo leaves the room. | |
| 01:47:57 | aotearoa__ enters the room. | |
| 01:53:05 | cjheath enters the room. | |
| 01:56:56 | wifelette enters the room. | |
| 01:57:44 | brixen | rue: 0f/0e! |
| 01:58:06 | brixen | rue: if you want to turn a 2.5 hr project into 1.5 days, just don't notice there's no ivars slot :P |
| 01:59:04 | wifelette leaves the room. | |
| 01:59:10 | wifelette enters the room. | |
| 02:01:02 | nitay_ enters the room. | |
| 02:01:15 | wifelette leaves the room. | |
| 02:01:40 | wifelette enters the room. | |
| 02:03:06 | nitay leaves the room. | |
| 02:04:18 | rue | brixen: Cool |
| 02:05:04 | d2dchat enters the room. | |
| 02:06:14 | brixen | rue: other stupid thing of course, small commits. I was trying to remove this thing in one go |
| 02:06:17 | brixen | painful |
| 02:06:27 | brixen | stupid == not using small commits |
| 02:06:54 | aotearoa leaves the room. | |
| 02:11:10 | wycats enters the room. | |
| 02:15:13 | ctennis leaves the room. | |
| 02:16:42 | aotearoa_ leaves the room. | |
| 02:22:02 | nitay enters the room. | |
| 02:23:38 | ctennis enters the room. | |
| 02:23:53 | _VVSiz_ enters the room. | |
| 02:25:36 | kwatch | [Q] is there any tool to test a certain spec? 'rake spec:ci' is too large to test only spec of erb.rb. |
| 02:25:51 | rue | bin/ci path/to/spec.rb |
| 02:26:03 | rue | Or bin/mspec if you want to run excluded by default too |
| 02:28:16 | kwatch | thank you, rue. 'bin/cgi path/to/dir' tests all spec files under path/to/dir. cool. |
| 02:30:27 | brixen | rue: one thing about the imac, the fans never spin up like they do on this mbp |
| 02:30:47 | brixen | rue: I had to have the fans replaced already, only about 10 mon old |
| 02:30:55 | obvio171 enters the room. | |
| 02:32:58 | rubyconsumer enters the room. | |
| 02:33:15 | imajes leaves the room. | |
| 02:34:35 | _ezmobiu enters the room. | |
| 02:40:21 | nitay_ leaves the room. | |
| 02:40:55 | tongueroo leaves the room. | |
| 02:41:56 | VVSiz_ leaves the room. | |
| 02:47:23 | obvio leaves the room. | |
| 02:48:54 | _mutle enters the room. | |
| 02:56:53 | cored enters the room. | |
| 03:01:25 | dysinger_ enters the room. | |
| 03:01:48 | dysinger leaves the room. | |
| 03:04:39 | mutle leaves the room. | |
| 03:05:20 | cored leaves the room. | |
| 03:09:07 | wycats_ enters the room. | |
| 03:09:34 | wycats leaves the room. | |
| 03:15:22 | _ADS enters the room. | |
| 03:18:35 | cjheath_ enters the room. | |
| 03:26:32 | nitay_ enters the room. | |
| 03:26:37 | defunkt leaves the room. | |
| 03:33:18 | nitay leaves the room. | |
| 03:37:08 | cjheath leaves the room. | |
| 03:39:05 | brynary enters the room. | |
| 03:44:41 | smtlaissezfaire enters the room. | |
| 03:46:44 | defunkt enters the room. | |
| 03:47:52 | smtlaissezfaire leaves the room. | |
| 03:49:04 | brynary leaves the room. | |
| 03:52:33 | MenTaLguY enters the room. | |
| 03:54:16 | agile enters the room. | |
| 03:57:51 | mae leaves the room. | |
| 03:58:15 | mae enters the room. | |
| 04:03:31 | wifelette_ enters the room. | |
| 04:03:52 | wifelette leaves the room. | |
| 04:09:00 | aotearoa__ leaves the room. | |
| 04:13:41 | smtlaissezfaire enters the room. | |
| 04:18:40 | boyscout | 6 commits by Brian Ford |
| 04:18:41 | boyscout | * Finally, completely remove old primitive. New stables.; 20917d9 |
| 04:18:42 | boyscout | * Renamed File::BasicStat to File::Stat. New stables.; c656db9 |
| 04:18:43 | boyscout | * Replaced code in old stat_file primitive. New stables.; a4c1117 |
| 04:18:44 | boyscout | * Replaced File::Stat with File::BasicStat (transition step).; e6ebe97 |
| 04:18:45 | boyscout | * Added StructStat. Added a field to File::Stat. New stables.; e0ad112 |
| 04:18:46 | boyscout | ... |
| 04:20:28 | headius | hey, brixen, can you repost that stat benchmark you had up earlier |
| 04:20:45 | brixen | http://pastie.org/148842 |
| 04:20:46 | brixen | :) |
| 04:21:13 | brixen | so, there's a perf regression with Stat.file? |
| 04:21:29 | brixen | but that's in the space of stuff that needs to be optimized anyway |
| 04:21:39 | brixen | particularly, math ops |
| 04:21:46 | headius | what's ./stat |
| 04:21:58 | brixen | the script at top |
| 04:22:14 | brixen | now our Stat.new is basically as fast as MRI |
| 04:22:19 | headius | oh, got it |
| 04:22:22 | brixen | and with 1.7-1.8 of C |
| 04:22:48 | brixen | k hopefully that doesn't blow up rubyconsumer |
| 04:22:52 | brixen | er rubuildius |
| 04:22:58 | brixen | back in a bit.. |
| 04:23:02 | nitay_ leaves the room. | |
| 04:23:20 | ezmobius leaves the room. | |
| 04:23:23 | rubyconsumer | Me either, brixen |
| 04:23:35 | headius | hmmm |
| 04:24:00 | nitay enters the room. | |
| 04:24:43 | headius | which numbers should be high |
| 04:26:12 | headius | oh, this is using rubinius-specific dirs |
| 04:26:17 | headius | no wonder the numbers made no sense |
| 04:26:47 | defunkt leaves the room. | |
| 04:27:05 | headius | I guess the C times don't have anything to do with the rest then, do they? |
| 04:27:11 | headius | they don't seem to run against the same set of files |
| 04:27:21 | brixen | headius: it's just using the *.rb under specs |
| 04:27:28 | brixen | there are 1645 of them in the repo |
| 04:27:58 | brixen | make that *_spec.rb |
| 04:28:07 | headius | ok |
| 04:28:11 | brixen | 1652 I guess |
| 04:28:14 | rubuildius | Brian Ford: 20917d9f1; build failed! http://rafb.net/p/T3fgTu96.html |
| 04:28:14 | headius | I was running in jruby dir |
| 04:28:16 | headius | there's no spec/ |
| 04:28:20 | brixen | dammit |
| 04:28:38 | brixen | well, that built fine on ey 64bit slice |
| 04:29:00 | brixen | oh lovely, damn stables |
| 04:29:10 | brixen | hmm, I'll try on my parallels ubuntu |
| 04:29:49 | headius | do you guys have stat implemented via ffi, or as a straight-up primitive? |
| 04:31:05 | headius | why do math opts particularly need to be optimized |
| 04:31:15 | headius | I don't understand that statement |
| 04:32:04 | brixen | the stat is a primitive, but it's only slightly slower with FFI |
| 04:32:18 | brixen | the biggest thing is I couldn't find the functions to get dev_major and dev_minor |
| 04:32:24 | brixen | so I left it as a primitive for now |
| 04:32:35 | headius | yeah, our stat is considerably slower |
| 04:32:42 | brixen | the math ops need to be optimized because right now it uses a fairly naive method for coercing |
| 04:32:48 | headius | we've never even looked at stat performance, are you seeing something specific that's a problem? |
| 04:33:00 | headius | hmm, naive how? |
| 04:33:03 | brixen | e.g. if you call 1.0 + 1, that goes to float, then up to Numeric, then back down to Float |
| 04:33:06 | smtlaissezfaire leaves the room. | |
| 04:33:11 | headius | we haven't done any specific math optimizations I know of |
| 04:33:24 | brixen | well, our Dir.glob uses stat a ton |
| 04:33:37 | brixen | and we were at 30sec when mri was at 11-12 |
| 04:34:04 | headius | oh, I see |
| 04:34:06 | brixen | headius: this is what I'm chasing: http://pastie.org/148889 |
| 04:34:08 | headius | yeah, we don't use stat at all there |
| 04:34:26 | headius | all, just trying to get dir glob faster |
| 04:34:31 | smtlaissezfaire enters the room. | |
| 04:34:53 | nicksieger | oh my |
| 04:34:55 | brixen | we also stat quite a bit compiling, which hopefully we can optimize |
| 04:35:08 | brixen | we stat compiler.rba like 12 times every file we compile |
| 04:35:53 | nicksieger | that seems excessive |
| 04:37:23 | richc enters the room. | |
| 04:37:44 | headius | yeah, out glob is pretty slow too |
| 04:38:08 | headius | it's a short benchmark, but it's a lot slower than MRI |
| 04:40:12 | boyscout | 1 commit by Brian Ford |
| 04:40:13 | boyscout | * New stables built on linux.; 77cba65 |
| 04:41:00 | pergesu enters the room. | |
| 04:41:46 | headius | yeah, looks like our glob is about 3x MRI |
| 04:41:58 | brixen | heh, 3x is not bad |
| 04:42:06 | brixen | or wouldn't be for us |
| 04:42:14 | headius | anything file or process related is always slow for us |
| 04:42:17 | headius | lots of extra layers |
| 04:42:37 | brixen | yeah, I was curious about that |
| 04:42:43 | brixen | is that for the jvm in general? |
| 04:42:59 | headius | yes, because the APIs presented have to be platform-agnostic |
| 04:43:08 | headius | so there's a lot of gymnastics happening under the covers |
| 04:43:28 | headius | and for places where we skip all that and go straight to the C layer, there's other hindrances to map native code and structures into Java objects |
| 04:43:57 | headius | it's not a huge price to pay to have JRuby work anywhere the JVM works, but it does slow some things down more than we'd like |
| 04:44:13 | brixen | true |
| 04:44:37 | brixen | seems like the jvm, being a particular piec of software on all the platforms, would be able to be faster |
| 04:44:56 | brixen | does it emulate missing stuff or something? |
| 04:45:16 | richc leaves the room. | |
| 04:45:51 | richc enters the room. | |
| 04:47:20 | skaar enters the room. | |
| 04:47:52 | wyhaines leaves the room. | |
| 04:48:49 | headius | in some cases, yes |
| 04:49:02 | headius | but more than that it tries to provide a view of such features that's platform-agnostic |
| 04:49:23 | headius | so there's a higher level of abstraction, which means more logic to get to that point |
| 04:49:53 | nitay_ enters the room. | |
| 04:50:15 | cjheath_ leaves the room. | |
| 04:50:59 | cjheath enters the room. | |
| 04:52:11 | nitay leaves the room. | |
| 04:56:10 | noclue123 enters the room. | |
| 04:56:39 | rubuildius | Brian Ford: 77cba6534; 4717 examples, 17231 expectations, 5 failures, 0 errors; http://rafb.net/p/JliLix77.html |
| 05:02:38 | rue | Ebening |
| 05:03:50 | brixen | evening |
| 05:04:17 | brixen | headius: well, I think some blame is on the api designers, posix isn't perfect but achieves something of the same thing without the perf penalties |
| 05:04:38 | headius | Java predates POSIX being prevalent on all systems |
| 05:04:48 | headius | windows and mac, for example |
| 05:05:13 | headius | that there's *still* no clean POSIX abstraction is an obvious failure of "the old Sun" which I'm actively trying to remedy |
| 05:05:46 | headius | we will very soon start pushing our POSIX layer as god's gift to Java platform developers |
| 05:05:53 | brixen | nice |
| 05:05:56 | smtlaissezfaire leaves the room. | |
| 05:05:57 | headius | performance warts and all |
| 05:06:04 | headius | (but performance warts mean someone will want to make it faster) |
| 05:07:18 | headius | hey, should I run any rubinius benchmarks tomorrow during my jruby talk? I was planning to only pummel ruby 1.9, but if you guys want... |
| 05:07:32 | brixen | hmm, I get no errors on gentoo but these errors on ubuntu |
| 05:07:43 | headius | all press is good press, so they say |
| 05:07:51 | brixen | headius: hmm, I haven't looked at them recently |
| 05:07:58 | rue | Sure, go ahead |
| 05:07:58 | brixen | I think we should at least be able to run them now |
| 05:08:16 | brixen | headius: when is your talk? |
| 05:08:23 | headius | 10AM |
| 05:08:41 | brixen | oh, probably not enough time to check in a bunch of perf enhancements then :P |
| 05:08:53 | brixen | actually, evan's sendsite should be awesome |
| 05:09:11 | brixen | we should see e.g. the stat calling the primitive approach C speed |
| 05:10:11 | headius | what does sendsite do |
| 05:11:13 | smtlaissezfaire enters the room. | |
| 05:11:27 | headius | heh, yeah, unless you're going to improve matrixbenchmark by an order of magnitude, don't bother |
| 05:13:17 | headius | still curious about sendsite though |
| 05:13:26 | headius | I know evan was looking at our CallSite some time back, is it related? |
| 05:13:29 | brixen | I haven't seen the code yet, but a sendsite is an object that will be used to implement cache |
| 05:13:45 | be9 enters the room. | |
| 05:13:47 | headius | ok, so it's our CallSite |
| 05:13:50 | brixen | evan said he's got a simple monomorphic cache, a primitive cache and an ffi cache |
| 05:13:54 | brixen | yeah |
| 05:13:55 | headius | hah |
| 05:14:08 | brixen | well, I should say, sounds like yes |
| 05:14:09 | headius | sounds familiar |
| 05:14:24 | brixen | he said similar to dlr and something else |
| 05:14:38 | headius | I haven't implemented the primitive and ffi/java integration caching yet, because they're not as heavily hit |
| 05:14:47 | headius | same logic though |
| 05:14:51 | rue | headius: A lot of the core arch is moving to a sort of functor pattern |
| 05:14:51 | brixen | cool |
| 05:15:17 | brixen | dammit, looks like struct generator is not working on linux for struct stat |
| 05:15:18 | headius | there is one flaw in our call site at present that may or may not affect you |
| 05:15:26 | headius | should I keep it a secret?! |
| 05:15:51 | rue | Tune in tomorrow! Same IRC time, same IRC channel! |
| 05:15:56 | headius | eesh, matrixbenchmark for 64 clocks in at 249s on rubinius |
| 05:16:02 | headius | ran it just for kicks |
| 05:16:15 | headius | that's probably array cost mostly |
| 05:17:48 | headius | I can't imagine the math ops are that big an issue |
| 05:18:49 | nitay enters the room. | |
| 05:19:23 | brixen | headius: what should the numbers look like |
| 05:19:36 | headius | YARV runs it in 21s or so |
| 05:19:46 | brixen | I think there's a ticket about matrix benches causing a sigbus or something |
| 05:19:48 | headius | MRI is 31s I think |
| 05:19:54 | brixen | ah, ok |
| 05:19:55 | headius | ahh, seems to be working ok for me |
| 05:20:07 | brixen | what's the command line you're using? |
| 05:20:32 | headius | shotgun/rubinius -I <matrix bench dir> <matrix bench dir>/MatrixBenchmark.rb |
| 05:20:38 | brixen | both array and string have some very de-optimized methods |
| 05:20:38 | headius | nothing fancy |
| 05:20:43 | brixen | I'll try it |
| 05:20:47 | headius | yeah, that's what I figured |
| 05:21:14 | headius | I'll be using it tomorrow as my non-micro benchmark example |
| 05:21:26 | headius | something that's doing real work across many methods and nontrivial data structures |
| 05:21:33 | brixen | so, darwin defines the st_mode field of struct stat to be a ushort |
| 05:21:36 | brixen | suck |
| 05:21:40 | headius | micro example will be a simple method dispatch bench, and pseudo-micro will be fib |
| 05:21:56 | nitay_ leaves the room. | |
| 05:21:58 | headius | unlike rubinius I have to constantly battle the idea that anything JVM or Java related must be slow |
| 05:22:14 | brixen | heh, yeah, C doesn't have a rep for being slow |
| 05:22:16 | brixen | but ruby does |
| 05:22:20 | brixen | and we've got a ton of ruby |
| 05:24:22 | headius | right |
| 05:24:31 | headius | but people still assume rubinius must be faster already |
| 05:24:44 | headius | or perhaps, they don't assume it's slower |
| 05:24:49 | headius | where they do assume JRuby's slow |
| 05:24:57 | headius | that blasted J means slow to so many people |
| 05:26:53 | MenTaLguY | the startup experience doesn't help |
| 05:27:46 | brixen | well, we are faster than mri on some stuff: http://pastie.org/pastes/147861 |
| 05:27:51 | brixen | look at Fixnum#<=> |
| 05:27:53 | headius | MenTaLguY: truly |
| 05:27:58 | headius | I wish I could do something about that |
| 05:28:02 | brixen | yeah, the startup is killer |
| 05:28:18 | brixen | everytime I run it, I feel like I'm stuttering |
| 05:28:19 | headius | with nailgun it improves a lot, but it's a bandaid |
| 05:28:21 | MenTaLguY | well, it sounds like we'll need to address the classloader thing on the MLVM side |
| 05:28:46 | MenTaLguY | but startup is important psychologically because it colors subsequent experience |
| 05:28:50 | headius | MenTaLguY: by most of my measurements, the cost of starting up is almost entirely classloading and verification, both JRuby and Java classes |
| 05:29:16 | headius | Java ME has a concept of "preverified" code that it doesn't try to verify again |
| 05:29:21 | headius | it signs it or sums it or something |
| 05:29:28 | headius | there's no such concept for SE |
| 05:29:37 | MenTaLguY | that's a shame |
| 05:29:56 | MenTaLguY | I think it's sorely needed |
| 05:29:56 | headius | this also plays into my understanding of the CLR |
| 05:30:03 | MenTaLguY | ? |
| 05:30:09 | headius | it signs assemblies so that once installed (and jitted) it can know they won't change |
| 05:30:13 | headius | because of the CLR's very static nature |
| 05:30:20 | MenTaLguY | nods |
| 05:30:37 | MenTaLguY | we definitely need to get some of that action |
| 05:30:45 | headius | again, nothing ever pre-jits on JVM, so this hasn't been considered |
| 05:31:06 | headius | although JVM guys have told me they've frequently kicked around ideas and prototypes for dumping jitted code to disk in a cache |
| 05:31:40 | headius | what pisses me off is that all the cool improvement ideas everyone else in the world has wished for they've already prototyped once and had thrown out by the idiots of "old Sun" |
| 05:31:55 | headius | thankfully those idiots are gone |
| 05:32:28 | MenTaLguY | I'm not sure pre-jit is really that useful |
| 05:32:36 | MenTaLguY | but being able to skip verification certainly is |
| 05:32:46 | MenTaLguY | or being able to pre-verify rather |
| 05:36:36 | richc leaves the room. | |
| 05:37:29 | headius | pre-jit or pre-verify is certainly useful for startup |
| 05:37:35 | nitay_ enters the room. | |
| 05:37:58 | headius | as anyone running ironpython will realize (ironpython takes forever to start up because it compiles everything and then CLR has to immediately jit everything) |
| 05:38:10 | brixen | headius: hah, yeah, we need to work on the way math ops coerce: |
| 05:38:10 | brixen | % time slices name |
| 05:38:11 | brixen | 36.19 6318 Numeric#do_coerce |
| 05:38:14 | rue | headius: Just call it HRuby, no-one will be the wiser |
| 05:38:25 | headius | don't think I haven't considered it |
| 05:38:28 | brixen | headius: that's the most expensive thing in the matrix benches |
| 05:38:36 | headius | brixen: figures |
| 05:38:56 | brixen | next worse: |
| 05:38:57 | brixen | 18.31 3197 Bignum#% |
| 05:39:09 | headius | mmmm tasty |
| 05:39:15 | headius | I don't know why your bignum stuff is slow |
| 05:39:36 | headius | an iterative fib benchmark on JRuby smokes every C-based impl of Ruby, including Rubinius |
| 05:39:51 | headius | and Java's bignum (BigInteger) is implemented in Java |
| 05:39:55 | rue | The coercion infra really needs help |
| 05:40:12 | headius | it just doesn't seem like there should be that big a gap |
| 05:40:29 | rue | headius: Most of it is method dispatch |
| 05:40:37 | rue | *wild guess* |
| 05:40:43 | brixen | rue: indeed |
| 05:41:29 | headius | perhaps so |
| 05:41:42 | headius | but method dispatch isn't so bad in rubinius |
| 05:42:05 | headius | on my test .68s versus almost 1s for YARV |
| 05:42:20 | headius | by far the fastest of the C-based impls |
| 05:42:42 | brixen | yeah, dispatch can be |
| 05:42:43 | brixen | http://pastie.org/148413 |
| 05:42:51 | brixen | look at the ffi s + s |
| 05:42:58 | brixen | vs the F.add s, s |
| 05:43:01 | headius | oh wait, maybe I was looking at the wrong one |
| 05:43:18 | headius | ok, rubinius fib is 0.68s versus YARV 0.41 |
| 05:43:36 | headius | rubinius method dispatch benchmark is 1.5-1.7 versus YARV 1x |
| 05:43:37 | brixen | what's 1.8? |
| 05:43:38 | headius | er |
| 05:43:39 | headius | 1s |
| 05:43:52 | defunkt enters the room. | |
| 05:43:52 | headius | 1.8 is about 1.55-1.7 on fib, something like 2.3-2.5 on method dispatch |
| 05:44:11 | brixen | interesting |
| 05:44:12 | headius | my system is a little twitchy, but those are rough numbers |
| 05:44:22 | headius | so both are definitely faster than 1.8 |
| 05:44:26 | brixen | dang, I threw away my C code to verify the offsetof macro |
| 05:44:29 | rue | headius: No, a single one is not so bad, but if you do 3-4 unnecessary ones per invocation it adds up |
| 05:44:39 | headius | rbx's problem is that it will always have to do many more calls |
| 05:44:40 | _ADS_ enters the room. | |
| 05:44:53 | headius | rue: how about 3-4 necessary ones? :) |
| 05:45:08 | rue | Then those are necessary elsewhere too |
| 05:45:21 | headius | well, that's not the point |
| 05:45:27 | rue | headius: Trace one of our numeric coercions sometime |
| 05:45:31 | headius | if you have to do 3-4 dynamic calls where other impls do 1 |
| 05:45:40 | headius | you need to be 3-4x faster to even reach parity |
| 05:46:04 | brixen | well, no |
| 05:46:11 | brixen | we need to be able to collapse those 3-4 to 1 |
| 05:46:14 | brixen | alternatively |
| 05:46:25 | headius | sure, by jitting or making them primitives |
| 05:46:34 | brixen | not primitives necessarily |
| 05:46:42 | brixen | we've got almost 0 opts |
| 05:46:51 | brixen | and a lot of poorly coded stuff in core libs |
| 05:46:59 | brixen | like assignments in loops |
| 05:47:01 | brixen | early branches |
| 05:47:03 | brixen | etc |
| 05:47:03 | headius | sure |
| 05:47:09 | headius | but method dispatch, for example, must be faster |
| 05:47:12 | brixen | it's really easy to rewrite some of this ruby code |
| 05:47:22 | headius | slower than YARV won't cut it when you have so much more ruby code |
| 05:47:30 | brixen | oh sure |
| 05:48:07 | headius | but I know perf hasn't been any sort of focus, so it's not a big deal |
| 05:48:19 | headius | so I'm not running jruby versus rbx tomorrow |
| 05:48:27 | headius | it would be pointless |
| 05:48:32 | headius | I'm taking on the big dog |
| 05:48:42 | brixen | ironruby |
| 05:48:46 | headius | hahah |
| 05:48:48 | brixen | heh |
| 05:48:52 | headius | no, YARV |
| 05:49:35 | _ADS leaves the room. | |
| 05:54:44 | nitay leaves the room. | |
| 06:00:50 | dewd leaves the room. | |
| 06:05:33 | brixen | why oh why is this stat stuff not working on linux |
| 06:05:49 | brixen | rue: what platform do you have handy? |
| 06:09:21 | rue | FreeBSD |
| 06:09:45 | benburkert enters the room. | |
| 06:09:58 | smtlaissezfaire leaves the room. | |
| 06:10:14 | headius | you know stat is different between 32 and 64 bit linux, right? |
| 06:10:21 | headius | the structure changes |
| 06:19:22 | kwatch | [BUG] shotgun/rubinius -e 'p binding' #=> NoMethodError |
| 06:19:42 | kwatch | but binding() seems to be implemented in Rubinius |
| 06:20:07 | kwatch | p binding #=> OK |
| 06:20:22 | kwatch | eval 'p binding()' #=> Error |
| 06:20:56 | brixen | headius: yeah, but it's getting the struct layout from gcc's offsetof macro |
| 06:21:04 | brixen | for each platform |
| 06:21:13 | brixen | and that seems to be correct |
| 06:21:16 | headius | hmmm |
| 06:21:47 | brixen | it's working for me on darwin and gentoo-64bit |
| 06:21:55 | brixen | rue: 64bit? |
| 06:22:47 | brixen | maybe it's an ffi issue |
| 06:22:50 | brixen | hm |
| 06:24:39 | kwatch | should I register new ticket about it? |
| 06:26:36 | binary42_ enters the room. | |
| 06:29:03 | brixen | kwatch: sure |
| 06:31:40 | mae leaves the room. | |
| 06:32:08 | mae enters the room. | |
| 06:32:34 | rue | Rebuilding |
| 06:38:32 | wycats_ enters the room. | |
| 06:39:54 | kwatch | thank you brixen, I have just now registered new ticket #314. |
| 06:42:07 | binary42 leaves the room. | |
| 06:42:39 | rue | 315 examples, 682 expectations, 0 failures, 0 errors |
| 06:42:55 | rue | 39 examples, 61 expectations, 0 failures, 0 errors |
| 06:43:09 | rue | 49 examples, 82 expectations, 0 failures, 0 errors |
| 06:43:24 | rue | file, file/stat and filetest |
| 06:45:19 | GMFlash leaves the room. | |
| 06:45:25 | GMFlash enters the room. | |
| 06:45:28 | _ADS | does anyone know about cygwin's auto-import? |
| 06:45:38 | _ADS | I'm down to 1 link error on cygwin |
| 06:46:01 | _ADS | multiple definition of __imp__timezone |
| 06:49:17 | wycats leaves the room. | |
| 06:50:03 | brixen | rue: cool, thanks |
| 06:50:11 | brixen | rue: dunno what's up with ubuntu |
| 06:50:56 | brixen | _ADS: sorry, haven't used cygwin in forever |
| 07:04:38 | wycats | hey Defiler |
| 07:09:57 | _ADS | so I faked out ffi_timezone for now, and I actually got a rubinius.bin on cygwin! |
| 07:10:15 | brixen | _ADS: woot! |
| 07:10:18 | brixen | nice work |
| 07:10:30 | _ADS | I still need to patch ucontext though |
| 07:10:43 | _ADS | right now it's stubbed out |
| 07:10:47 | brixen | well, it can't all be gravy :P |
| 07:10:57 | _ADS | I did find a good example of how to do it |
| 07:11:05 | brixen | cool |
| 07:11:21 | __johan__ enters the room. | |
| 07:11:37 | corundum enters the room. | |
| 07:19:38 | _ADS | so if I just keep going with rake build, I get the following error |
| 07:19:41 | _ADS | http://www.pastie.org/149636 |
| 07:20:22 | _ADS | is this b/c subtend is broken or haven't I even got into rbx yet |
| 07:21:22 | brixen | not in rbx yet |
| 07:21:30 | brixen | I checked in updates for that code |
| 07:21:41 | brixen | not sure why it was casting 0 to a pointer to a struct |
| 07:21:53 | brixen | I changed it to just create a struct on the stack |
| 07:22:12 | brixen | not sure of those changes made it into a tarball yet |
| 07:22:16 | brixen | are you using git? |
| 07:22:40 | _ADS | yes but i haven't pulled for a day or 2 |
| 07:22:53 | brixen | ah, yeah, just pushed it a couple hours ago |
| 07:23:10 | brixen | not positive it will make a difference, but it might |
| 07:23:18 | _ADS | new to git, what happens when I pull and I have changed files - it must detect, right? |
| 07:23:41 | brixen | it won't let you pull into a dirty dir, afaik |
| 07:23:49 | brixen | git checkout -b <name> to create a branch |
| 07:23:56 | brixen | it should take your changes with you |
| 07:24:06 | _ADS | better scan the git docs again |
| 07:24:09 | brixen | then, if you have > 1.5.3, you can use git stash |
| 07:24:24 | smtlaissezfaire enters the room. | |
| 07:24:55 | brixen | what version of git? |
| 07:29:05 | _ADS | 1.5.4 |
| 07:29:26 | rue | brixen: Input? http://pastie.org/149639 |
| 07:30:54 | brixen | heh, #3 is neat, but I think #1 is the easiest to read with one mod: a single - for open and a x for strickent |
| 07:30:57 | brixen | stricken |
| 07:31:06 | brixen | - Fix IO#syswrite |
| 07:31:12 | be9 | git pull is git fetch + git merge |
| 07:31:13 | brixen | x Make :ruby implicit |
| 07:31:22 | brixen | be9: yeah |
| 07:31:22 | wycats | anyone know anything about proc {|x,| x} semantics? |
| 07:31:36 | rue | Nope, never heard of that cat |
| 07:31:38 | be9 | if you pull onto a dirty dir, it'll try to merge |
| 07:31:39 | brixen | wycats: elaborate? |
| 07:31:41 | rue | N-uh, no sir |
| 07:31:54 | brixen | be9: you have to commit, right? |
| 07:32:00 | brixen | you can't merge if you haven't committed |
| 07:32:02 | brixen | afaik |
| 07:32:50 | brixen | _ADS: so, try just: git stash; git fetch; git rebase origin |
| 07:33:01 | brixen | _ADS: if you are on master |
| 07:33:22 | wycats | It seems to me that it's identical to a regular lasgn |
| 07:33:22 | wycats | and I have a patch that fixes a failing spec by doing just that |
| 07:33:34 | be9 | brixen: right |
| 07:34:27 | wycats | but I want to make sure there's nothing I'm missing |
| 07:34:49 | brixen | wycats: best person to ask about that is evan or ryan |
| 07:35:05 | brixen | wycats: as long as you don't break anything else, it's probably an improvement ;) |
| 07:35:31 | wycats | thoughts? |
| 07:35:53 | brixen | about what? |
| 07:37:33 | be9 | _ADS: you can do just git fetch and then git rebase origin |
| 07:37:44 | _ADS | brixen: is origin a keyword |
| 07:38:02 | rue | Origin is a reference |
| 07:38:34 | brixen | _ADS: cat .git/config |
| 07:38:43 | wycats | did I get disconnected? |
| 07:38:51 | brixen | _ADS: you should see remote "origin" |
| 07:38:59 | brixen | wycats: hehe, you must've |
| 07:39:05 | brixen | 23:34 brixen >> wycats: best person to ask about that is evan or ryan |
| 07:39:05 | brixen | 23:35 brixen >> wycats: as long as you don't break anything else, it's probably an improvement ;) |
| 07:39:08 | brixen | 23:35 wycats >> thoughts? |
| 07:39:17 | brixen | 23:35 brixen >> about what? |
| 07:39:28 | _ADS | remote "origin" Ok I think I understand |
| 07:40:00 | wycats | ? |
| 07:40:18 | brixen | wycats: you there? |
| 07:40:57 | brixen | toys with wycats :P |
| 07:41:44 | wycats | lol |
| 07:41:45 | wycats | I'm here |
| 07:41:49 | wycats | I just got all that at once |
| 07:41:51 | wycats | lol |
| 07:42:00 | brixen | heh |
| 07:42:05 | wycats | I think I bugged Evan enough for one night ;) |
| 07:42:37 | brixen | wycats: well, we can always revert if it breaks |
| 07:43:57 | rue | brixen: http://pastie.org/149639 :D |
| 07:44:27 | wycats | brixen: the thing is that there are specs for what things should compile into that fail |
| 07:45:38 | brixen | rue: hah! |
| 07:45:44 | brixen | rue: oh my eyes :P |
| 07:46:14 | brixen | | | |
| 07:46:17 | brixen | _ |
| 07:46:28 | brixen | rue: can you make a box out of those or something? |
| 07:46:53 | brixen | but really, I think: |
| 07:46:54 | rue | Not really, takes too much space |
| 07:46:56 | brixen | - this thing |
| 07:46:57 | brixen | and |
| 07:47:01 | brixen | x that thing |
| 07:47:04 | brixen | is good enough ;) |
| 07:47:15 | rue | I am just playing around. I do not really see any reason to show the remaining and the stricken at the same time |
| 07:47:15 | brixen | too much space?! |
| 07:47:36 | wycats | lol |
| 07:47:43 | wycats | brixen: I'm going to investigate a bit |
| 07:47:51 | wycats | seems it has even weirder semantics than I thought |
| 07:48:07 | wycats | but barelty |
| 07:48:39 | brixen | wycats: if you can find charles, he'll know about it too |
| 07:49:25 | wycats | this is pretty insane |
| 07:49:40 | wycats | http://pastie.caboo.se/149641 |
| 07:49:42 | wycats | check that out |
| 07:50:34 | rue | We have specs for these, no? |
| 07:51:03 | rue | Look at spec/ruby/1.8/language |
| 07:51:28 | be9 | you can just do "a, = 1,2" |
| 07:51:37 | be9 | a will be 1, not [1,2] |
| 07:51:48 | wycats | explain, if you dare |
| 07:54:36 | be9 | there's more fun stuff |
| 07:54:53 | be9 | if you do "b=(a,=1,2)", you get [1,2] for b in MRI |
| 07:54:58 | be9 | but true for b in Rubinius |
| 07:55:33 | wycats | I'm working on this stuff |
| 07:55:53 | be9 | went skiing |
| 07:55:53 | wycats | I'm trying to understand semantically what's happening |
| 07:56:33 | wycats | specifically, I'm trying to understand why the top line doesn't return 1 |
| 07:58:39 | d2dchat leaves the room. | |
| 07:58:50 | rue | You are passing a single argument |
| 07:59:03 | wycats | yep |
| 07:59:10 | wycats | in both cases, I'm passing [1,2] to the proc |
| 07:59:15 | __johan__ leaves the room. | |
| 07:59:17 | wycats | unless map does something crazier than I think |
| 08:00:15 | wycats | map uses yield |
| 08:00:38 | wycats | does yield have different semantics than call? |
| 08:01:16 | rue | No, but proc and blocks do |
| 08:01:46 | wycats | it's the same damn object |
| 08:01:55 | rue | Not it is not :) |
| 08:02:00 | wycats | :P |
| 08:02:12 | wycats | it's p in both places |
| 08:05:20 | wycats | so why specifically, are they different? |
| 08:06:22 | obvio171 leaves the room. | |
| 08:07:21 | wycats | the issue is that the proc object gets converted into the same bytecode in both context |
| 08:08:01 | pietia enters the room. | |
| 08:08:02 | wycats | contexts |
| 08:08:02 | wycats | while {|x,| x} means {|x| x} as a proc and {|x,*| x} as a block |
| 08:09:27 | rue | No, you are unwinding the Proc with & |
| 08:10:09 | wycats | the semantics are as I said though |
| 08:10:27 | wycats | what does "unwinding" entail? |
| 08:10:49 | rue | &p is same as {...} |
| 08:12:12 | wycats | right |
| 08:12:32 | wycats | what I'm trying to understand is why, in this case, the semantics are different |
| 08:12:50 | wycats | probably sounds like a broken record, because he's just not grokking it :P |
| 08:13:33 | _ADS | can you do a LIBS-= -lwhatever in a Makefile? |
| 08:14:46 | rue | wycats: Are you asking why Proc and block are different? Or why your code specifically does not do what you expect? |
| 08:15:00 | wycats | rue: I'm actually trying to make rbx specs pass :P |
| 08:15:17 | wycats | but yeah... I guess I'm asking how's they're different with respect to this semantic |
| 08:16:18 | _ADS | _ADS: apparently not |
| 08:16:49 | dbussink enters the room. | |
| 08:16:50 | rue | wycats: ri lambda |
| 08:17:07 | wycats | does |
| 08:17:22 | rue | _ADS: No, that would not work |
| 08:17:32 | wycats | rue: thanks a million /snark |
| 08:17:53 | wycats | "Equivalent to +Proc.new+, except the resulting Proc objects check the number of parameters passed when called." |
| 08:17:58 | wycats | does that explain something? |
| 08:18:11 | smtlaissezfaire leaves the room. | |
| 08:18:12 | wycats | :P |
| 08:18:39 | smtlaissezfaire enters the room. | |
| 08:20:04 | wycats | rue: so the thing is that the first instruction in both cases is cast_for_multi_block_arg |
| 08:20:18 | wycats | which is handling the semantics of array/typical args |
| 08:20:40 | wycats | it's actually an identical instruction sequence in both cases |
| 08:23:02 | _ADS | how do i catch the files generated when making rbx_struct_gen_bin? |
| 08:23:15 | _ADS | or where are they generated from? |
| 08:23:26 | _ADS | the temps are getting deleted. |
| 08:24:57 | wycats | rue: gotta hit the hay |
| 08:25:06 | wycats | maybe I'll have more luck with a fresh mind and cuppa joe |
| 08:26:42 | brixen | _ADS: you can rake --trace, but the file get's output essentially as runtime/platform.conf |
| 08:27:38 | dbussink | brixen: nice work in the stat stuff |
| 08:28:05 | brixen | dbussink: thanks, it's failing for some unknown reason on ubuntu |
| 08:28:12 | dbussink | brixen: but i see someone already found a bug |
| 08:28:21 | brixen | like 4 fileds |
| 08:28:33 | brixen | yeah, rubuildius :P |
| 08:28:44 | brixen | the maddening thing is that it passes on 64bit gentoo |
| 08:28:48 | dbussink | brixen: ah, there is also a lighthouse ticket :) |
| 08:28:54 | brixen | heh, ahh |
| 08:29:52 | _ADS | brixen: thanks. struct_generator is too much to decode this late. |
| 08:29:54 | _ADS | goodnight |
| 08:30:35 | brixen | _ADS: night |
| 08:30:42 | brixen | lh is sloooow |
| 08:30:58 | brixen | you'd think it was a rails app or something |
| 08:31:46 | brixen | ok, well, I'm getting the same failures as #315 |
| 08:31:51 | brixen | so that's good, I guess |
| 08:32:11 | dbussink | that means that it at least is reproducable |
| 08:33:08 | brixen | always nice |
| 08:38:57 | dbussink | is rubuildius also running on a virtual machine? |
| 08:39:27 | brixen | I don't think so |
| 08:39:35 | brixen | I think it's a PIII iirc |
| 08:40:03 | brixen | it would be really cool to get it on a set of machines, so there's not just this one failing build reported |
| 08:40:27 | dbussink | yeah, some sort of build farm that tests all kinds of archs |
| 08:42:03 | dbussink | hmm, this is definitely strange, it works ok in my 64 debian etch box, but fails on the 32 bit version |
| 08:44:30 | brixen | yeah, really odd |
| 08:44:36 | wycats leaves the room. | |
| 08:45:07 | brixen | gcc is generating those offsets with offsetof |
| 08:45:36 | brixen | unless perhaps different flags are given to gcc in the rakefile for StructGenerator than are used in compiling? |
| 08:47:09 | brixen | I wonder if they used enough thermal putty when replacing my mbp fans |
| 08:47:22 | brixen | sure seem to be spinning up very high a lot |
| 08:47:39 | dbussink | hmm, there are no parameters given to stat.field in the rakefile |
| 08:47:44 | dbussink | rakelib i mean |
| 08:47:49 | dbussink | what is the default in that case? |
| 08:48:13 | brixen | not sure, but I added them locally on ubuntu |
| 08:48:19 | brixen | doesn't seem to make a difference |
| 08:48:33 | brixen | and, the offset should be most important I think |
| 08:48:51 | brixen | for example, on darwin, I was getting a sign error, so I added the :ushort |
| 08:49:07 | dbussink | but isn't the offset also computed by the size of these fields? |
| 08:49:09 | brixen | but in general, looking at field by field, the wrong value seems to be there |
| 08:49:18 | brixen | no, shouldn't |
| 08:49:26 | brixen | rm runtime/platform.conf; rake --trace |
| 08:49:32 | brixen | you can see the C code it generates |
| 08:49:47 | brixen | uses offsetof macro to calc the offset, then sizeof() to get the size |
| 08:51:11 | dbussink | strange, because when i look at the 32 bit version it's actually wrong |
| 08:51:16 | dbussink | i mean 64 bit, dog |
| 08:51:18 | dbussink | doh |
| 08:51:46 | brixen | really? |
| 08:51:56 | dbussink | well, the casts are not all safe |
| 08:52:02 | brixen | ugh, 64bit is wrong but works, 32bit is right but doesn't? |
| 08:52:12 | brixen | hmm |
| 08:52:26 | brixen | that's why I'm more worried about the offsets |
| 08:52:42 | brixen | I'm doing a quick tweak to move major minor out of the primitive and then I'll look at linux again |
| 08:52:46 | dbussink | yeah, the casts probably don't break things, only some edge cases |
| 08:53:15 | brixen | well, for instance, here (ubuntu) st_blocks should be 8, it's 0 |
| 08:53:34 | dbussink | is that 8 in some other field? |
| 08:54:03 | brixen | atime is messed up, but ctime and mtime are fine |
| 08:54:25 | dbussink | aren't those shifted by one position then> |
| 08:54:27 | dbussink | ? |
| 08:54:37 | dbussink | so ctime == atime, mtime == ctime |
| 08:54:41 | dbussink | something like that |
| 08:55:06 | brixen | no, atime is dec 31 1969, mtime/ctime are right |
| 08:55:43 | brixen | actually st_blksize = 0, should be 4096; st_blocks = 4096, should be 8 |
| 08:56:10 | brixen | everything else looks right |
| 08:56:43 | dbussink | but isn't than atime 8 or something? |
| 08:56:58 | dbussink | because in your timezone that will probably result in a date on dec 31 1969 |
| 08:57:39 | brixen | ahh |
| 08:57:41 | brixen | heh, could be |
| 08:58:12 | kwatch | I wrote spec files for erb.rb. Where to send these files? |
| 08:58:42 | dbussink | kwatch: you should put them in spec/ruby/1.8/library/erb |
| 08:58:43 | brixen | kwatch: best would be a ticket on http://rubinius.lighthouseapp.com |
| 08:59:03 | dbussink | kwatch: and use git-format-patch to create a patch to put on lighthouse |
| 08:59:04 | brixen | kwatch: please use git format-patch also |
| 08:59:33 | kwatch | thank you brixen and dbussink. I'll try. |
| 08:59:36 | brixen | dbussink: so, I have blksize, blocks, atime in that order |
| 08:59:48 | brixen | offsets: 48, 52, 56 |
| 09:00:00 | brixen | size 4, type int |
| 09:00:25 | dbussink | hmm, isn't blocks probably 64 bit? because it should support larger files? |
| 09:00:37 | brixen | wondering that too |
| 09:01:13 | brixen | rdev is offset 32, 8, long; next is size: offset 44, 4, int |
| 09:01:56 | brixen | the frustrating thing is these are generated by offsetof and sizeof |
| 09:02:16 | dbussink | :#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE |
| 09:02:22 | dbussink | on 32 bit linux... |
| 09:02:34 | dbussink | so it should have size 8 |
| 09:03:39 | brixen | well, I wonder why offsetof is returning a different value |
| 09:03:50 | brixen | we must not be setting the same flags for gcc in both cases? |
| 09:04:54 | rue | So anyway |
| 09:05:04 | rue | We need to figure out something other thand offsetof |
| 09:06:09 | dbussink | i think offsetof should be fine, everything in c depends on it |
| 09:06:22 | dbussink | maybe it's somewhere in stuff like __USE_FILE_OFFSET64 |
| 09:06:41 | dbussink | that one part is compiled with large file support, another part isn't |
| 09:07:01 | brixen | right, I think we're not giving the right flags to StructGenerator |
| 09:07:18 | brixen | I was going to put some code in shotgun and double check the offsets when rbx is compiled |
| 09:07:25 | brixen | to test |
| 09:10:46 | pergesu leaves the room. | |
| 09:15:10 | dysinger_ leaves the room. | |
| 09:17:32 | rue | It is GCC only |
| 09:19:48 | dbussink | brixen: i know that on linux you have to explicitly enable large file support |
| 09:20:04 | dbussink | and on os x it's enabled by default afaik |
| 09:20:15 | dbussink | so it makes perfect sense that this is the cause of the bu |
| 09:20:16 | dbussink | bug |
| 09:21:10 | brixen | oh, ok |
| 09:21:23 | brixen | so, we just need to know what flag to give gcc in struct generator |
| 09:21:32 | brixen | and that makes sense since it works for you and I on 64bit |
| 09:21:56 | dbussink | http://www.suse.de/~aj/linux_lfs.html |
| 09:22:47 | dbussink | D_FILE_OFFSET_BITS is in shotgun/lib/Makefile :0 |
| 09:22:48 | dbussink | :) |
| 09:23:01 | dbussink | CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 |
| 09:23:03 | brixen | heh, just saw that |
| 09:23:11 | brixen | ok, I'll try that here |
| 09:23:49 | __johan__ enters the room. | |
| 09:23:56 | dbussink | still think we need to fix the types for the stat struct though, because otherwise we can't report a file size larger than 2gb for example |
| 09:36:40 | brixen | so, our sizes should always be 8 bytes, right? |
| 09:36:59 | brixen | I'm trying to avoid the PLATFORM.match stuff in plaform.rake |
| 09:37:10 | dbussink | well, they should match what is rubinius is compiled with |
| 09:37:21 | dbussink | is simply adding the gcc flag not sufficient? |
| 09:37:46 | dbussink | the flag won't hurt on systems that don't support it |
| 09:38:16 | brixen | right |
| 09:38:30 | brixen | yeah, it will then output the right size |
| 09:38:54 | brixen | as long as the FFI routines for accessing that field (i.e. wrapping it in a ruby obj) work ok, we should be good to go |
| 09:39:12 | brixen | boy, updating primitives is such a pita |
| 09:39:22 | dbussink | hehe, yeah, all kinds of stuff to consider |
| 09:39:28 | brixen | I wish they could be dispatched like normal |
| 09:39:56 | dbussink | if you push the fixes, i could fix up the types so no valuable information is thrown away by incorrect casting |
| 09:40:09 | dbussink | or did you tackle that too already? |
| 09:40:29 | brixen | not yet, but I think I'm almost done with this primitive change |
| 09:40:37 | brixen | I'll push the -D stuff too |
| 09:40:40 | brixen | and you can tweak it |
| 09:42:13 | dbussink | so you can get some sleep ;) |
| 09:43:26 | brixen | heh |
| 09:43:31 | brixen | I'm in the doghouse :P |
| 09:43:38 | brixen | barely got a 'goodnight' from my gf |
| 09:44:13 | dbussink | well, you're making us happy :) |
| 09:44:39 | brixen | I guess that's some consolation |
| 09:45:46 | manveru | so... how do you do a BlankSlate in rubinius? :) |
| 09:47:36 | dbussink | manveru: did you try? and if so, did you run into problems? |
| 09:47:48 | brixen | manveru: class BlankSlate < NilClass; end |
| 09:48:02 | brixen | manveru: I think evan's talk at rubyconf had a slide for that |
| 09:48:09 | brixen | or railsconf? |
| 09:48:26 | brixen | but the idea is, you can inherit from NilClass, so you don't have to jump through all those hoops |
| 09:48:58 | brixen | ugh! conflict with the .rba's, suck |
| 09:49:51 | dbussink | brixen: maybe you could write a "caveats when working with ffi" page :P |
| 09:50:10 | dbussink | brixen: guess you're the expert on it |
| 09:50:18 | manveru | dbussink: i did try |
| 09:50:25 | manveru | http://p.ramaze.net/472 |
| 09:50:30 | brixen | hm, perhaps add some to readme-developers |
| 09:50:37 | manveru | try yourself, it's pretty nasty :) |
| 09:51:19 | brixen | manveru: did you try inheriting from NilClass ? |
| 09:51:27 | brainopia enters the room. | |
| 09:51:42 | manveru | brixen: i'm searching for an implementation that works on 1.8/1.9/rubinius/jruby |
| 09:52:05 | dbussink | brixen: if i test that, i still get a lot of methods on blankslate |
| 09:52:09 | manveru | and well, NilClass inherits from Kernel |
| 09:53:17 | manveru | on 1.9 you can go with BasicObject, but i'm not sure if rubinius plans on that? |
| 09:53:27 | brixen | sorry, class Mu < nil |
| 09:53:36 | brixen | www.slideshare.net/evanphx/rubinius-a-tool-of-the-future/ |
| 09:53:54 | brixen | class BasicObject < nil; end :) |
| 09:54:15 | dbussink | why can i still can .methods on that? |
| 09:54:36 | brixen | oh damn these rba conflicts suck |
| 09:55:39 | manveru | manveru@delta rubinius-git/src/rubinius % ./shotgun/rubinius -e 'class B < nil; end; p B.instance_methods.size' |
| 09:55:40 | manveru | 61 |
| 09:57:15 | manveru | the normal BlankSlate has 2 instance methods |
| 10:01:05 | brixen | fuck I hate these stables checked in |
| 10:01:14 | brixen | I'm going to have to reapply all this by hand |
| 10:01:19 | dbussink | you can't just replace them? |
| 10:02:23 | __johan__ leaves the room. | |
| 10:05:51 | brixen | no, you can't |
| 10:06:21 | brixen | the .rba's have calls to the specific primitives |
| 10:06:39 | brixen | if the vm is out of sync, say because you renamed a primitive, it blows up |
| 10:07:07 | brixen | you have to have both the set of stables and the vm in a synchronized stat to compile the next set |
| 10:07:43 | brixen | I just did git format-patch and I'll apply them one by one, making new stables as I go |
| 10:11:36 | dbussink | sounds like incredible fun... |
| 10:12:07 | brixen | heh |
| 10:13:22 | brixen | if only I had Defiler's ssd |
| 10:13:34 | brixen | it takes a while to build each time |
| 10:13:54 | dbussink | buy it at company costs and claim that it increases your productivity enough to warrant it ;) |
| 10:14:44 | ragge enters the room. | |
| 10:15:29 | brixen | the awesome thing is hand editing these patches |
| 10:15:35 | brixen | git makes it so easy to do stuff |
| 10:35:09 | dbussink | stupid upgrades that need a reboot... |
| 10:35:27 | dbussink leaves the room. | |
| 10:39:28 | yaroslav enters the room. | |
| 10:39:52 | dbussink enters the room. | |
| 10:40:28 | dbussink | and back |
| 10:40:55 | dbussink | brixen: any luck get it working? |
| 10:40:59 | dbussink leaves the room. | |
| 10:41:03 | dbussink enters the room. | |
| 10:41:30 | dbussink enters the room. | |
| 10:41:47 | dbussink | hmm, i'm not seeing my own messages |
| 10:41:51 | dbussink | ah, now i am :) |
| 10:44:36 | boyscout | 7 commits by Brian Ford |
| 10:44:37 | boyscout | * New stables (hopefully to make rubuildinus happy).; 99dfc4d |
| 10:44:38 | boyscout | * Ensure StructGenerator uses the same flags as when compiling rbx;; 256c84a |
| 10:44:39 | boyscout | * Finally, removed old primitive. New stables.; 341f0a3 |
| 10:44:40 | boyscout | * New stables.; 1b83413 |
| 10:44:41 | boyscout | * Switched back to File::Stat.stat. Updated primtive.; 2ff4b27 |
| 10:44:42 | boyscout | ... |
| 10:45:37 | brixen | dbussink: ok, I'm running a test on 64bit |
| 10:46:48 | chris2 enters the room. | |
| 10:47:31 | dbussink | brixen: gonna run it on my machines too |
| 10:47:39 | brixen | cool |
| 10:48:51 | brixen | fuck |
| 10:48:58 | brixen | what is with these stables |
| 10:49:08 | brixen | not working on linux when i build them on osx |
| 10:50:18 | brixen | dbussink: my 32bit seems to hang in the specs, 64bit is going ok |
| 10:51:20 | dbussink | hmm, building fails on my 64 bit |
| 10:51:31 | hornbeck leaves the room. | |
| 10:51:42 | hornbeck enters the room. | |
| 10:52:11 | dbussink | Unable to compile extension into rmd160.so. Check compiler log. |
| 10:52:34 | rubuildius | Brian Ford: 99dfc4d72; build failed! http://rafb.net/p/xoy2BN30.html |
| 10:52:34 | dbussink | same on 32 bit linux |
| 10:53:21 | akshay enters the room. | |
| 10:53:36 | boyscout | 1 commit by Brian Ford |
| 10:53:36 | boyscout | * New stables built on linux.; acc9deb |
| 10:53:55 | be9 | How come stables differ at all? |
| 10:54:27 | brixen | be9: they are essentially a full set of precompiled bytecode files for all of kernel and lib/compiler |
| 10:54:53 | brixen | it's a bootstrap thing |
| 10:55:24 | lstoll enters the room. | |
| 10:55:49 | be9 | I mean, when you build them on osx and linux |
| 10:56:34 | be9 | With 99dfc4d I have a fuckup on 64bit (same thing with rmd160) |
| 10:59:28 | brixen | be9: not sure what's up with the conflict between osx and linux |
| 10:59:35 | brixen | they're supposed to be x-platform |
| 11:00:01 | be9 | brixen: that's my point :) |
| 11:00:29 | brixen | dbussink: hmm, something happend to class Mu < nil; end :( |
| 11:00:35 | brixen | it used to work |
| 11:01:46 | brixen | I bet I know why |
| 11:01:55 | brixen | anyway, sleep for me |
| 11:02:06 | rubuildius | Brian Ford: acc9deb76; build failed! http://rafb.net/p/hutWI831.html |
| 11:02:11 | dbussink | brixen: could you wait a sec? |
| 11:02:30 | brixen | uh, ok |
| 11:02:31 | dbussink | i just got the same build failure as rubuildius |
| 11:02:37 | lstoll leaves the room. | |
| 11:02:40 | dbussink | dunno if it's an easy fix |
| 11:02:59 | brixen | gah, we're going to have to figure this out |
| 11:03:08 | brixen | I built them on 64bit, it works there :P |
| 11:03:09 | be9 | BTW, I always get something like this upon build: /tmp/rbx_const_gen_tmp.1637.0:490: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’ |
| 11:03:17 | dbussink | brixen: the stables? |
| 11:03:24 | brixen | dbussink: yeah |
| 11:03:29 | dbussink | brixen: maybe they work better if build on 32 bit linux |
| 11:03:32 | brixen | be9: checkout the stuff in rakelib/ |
| 11:03:34 | dbussink | would be really nasty though |
| 11:03:53 | brixen | dbussink: yeah, the platform should not matter |
| 11:04:15 | be9 | binary diff may help& |
| 11:04:16 | brixen | but rubinius knows how to compile C stuff, I bet it's picking up a bad command or something on osx |
| 11:04:25 | brixen | linux is a serious pita |
| 11:06:18 | dbussink | really need to get ci running on various platforms |
| 11:06:31 | dbussink | so we know these kind of issues right away |
| 11:06:58 | be9 | like rubuildius64 :) |
| 11:07:08 | zenspider | eric's got his tinderbox that he was hoping to get running for rubinius, but it requires rubygems to work |
| 11:07:38 | dbussink | i think we need at least a linux32, linux64, a bsd like freebsd on both 32 and 64 and os x |
| 11:07:53 | dbussink | the latter is used by most devs, so there's no immediate need for that |
| 11:07:54 | brixen | dbussink: sorry, this problem on 32bit is different than before, I can't hand compile it |
| 11:08:01 | zenspider | osx comes in both flavors too |
| 11:08:27 | be9 | well someone has succeeded to build rubinius on cygwin :) |
| 11:08:29 | dbussink | os x is even more funky |
| 11:08:51 | zenspider | not sure how much (if at all) it affects rubinius, but it has for me on other projects |
| 11:08:51 | dbussink | be9: ah, who is that? |
| 11:09:04 | be9 | dbussink: saw today |
| 11:09:20 | dbussink | zenspider: Defiler has been toying with os x 64 bit, but i think he hit a pretty serious bug |
| 11:09:21 | brixen | dbussink: likely something in lib/bin/compile.rb |
| 11:09:37 | yaroslav leaves the room. | |
| 11:10:39 | dbussink | brixen: just to get some sleep, that would probably be more useful :) |
| 11:10:52 | be9 | dbussink: that chat has passed away in my channel log |
| 11:11:17 | dbussink | be9: then it should be in the online log probably |
| 11:12:29 | akshay_ enters the room. | |
| 11:12:49 | langenberg enters the room. | |
| 11:13:36 | be9 | dbussink: look for cygwin then. anyway, the future farm should include mswin too |
| 11:14:21 | be9 | I wonder will it be possible to compile Rubinius at least with Mingw or better with Visual C++ |
| 11:14:21 | dbussink | be9: yeah, as soon as we get it running on mswin it should yeah, but on mswin there's also the cygwin version, but the final goal is of course a mingw or vcc build |
| 11:14:46 | dbussink | not atm, there are a lot of posix dependencies |
| 11:18:46 | brixen | dbussink: just a wild-ass-guess, but it's probably related to the stat struct, since it works on osx and 64bit for me |
| 11:19:16 | dbussink | hmmm |
| 11:19:25 | dbussink | maybe more gcc calls that need the defines? |
| 11:19:49 | brixen | possibly |
| 11:20:17 | brixen | also, the only thing that is failing is the lib ext builds, so you should be able to compile/use rbx |
| 11:20:29 | brixen | the specs seem to hang for me on the continuation specs |
| 11:20:49 | brixen | anyway, sleeptime |
| 11:20:51 | brixen | :_ |
| 11:20:54 | dbussink | nite |
| 11:20:57 | brixen | night |
| 11:22:21 | pietia leaves the room. | |
| 11:23:51 | langenberg leaves the room. | |
| 11:24:22 | langenberg enters the room. | |
| 11:24:56 | cjheath leaves the room. | |
| 11:29:24 | akshay leaves the room. | |
| 11:30:53 | langenberg leaves the room. | |
| 11:36:00 | Swistak leaves the room. | |
| 11:37:04 | Swistak enters the room. | |
| 11:54:38 | lopex enters the room. | |
| 11:54:48 | langenberg enters the room. | |
| 11:58:34 | be9 | 32bit linux still fails on acc9deb |
| 11:59:00 | dbussink | yeah, we know |
| 12:00:52 | be9 | huh, think I'll try to at least compile rubinius on mSys under m$win |
| 12:01:26 | be9 | and 64bit linux still works on acc9deb :) |
| 12:02:18 | be9 | guys from msysgit project are having good progress lately |
| 12:02:51 | be9 | which opens up a possibility for msysrubinius |
| 12:05:15 | dbussink | be9: does msysgit work then? |
| 12:06:17 | be9 | dbussink: Not that fast, with some quirks, but it does. |
| 12:06:58 | dbussink | too bad brixen is gone, i think i've found the source of the 32 bit problem |
| 12:07:02 | Amberq40z4rh6d0 enters the room. | |
| 12:07:07 | Amberq40z4rh6d0 | it. see that experience virtual term to to compact two As use and least defined the and wouldn't |
| 12:07:09 | Amberq40z4rh6d0 leaves the room. | |
| 12:07:34 | be9 | %) what's that? |
| 12:08:02 | be9 | which is it, dbussink? |
| 12:10:10 | dbussink | Dir.glob is broken on 32 bit linux, probably because dirent entries now behave differently |
| 12:12:32 | Mollyo31j24vm9d0 enters the room. | |
| 12:12:33 | Mollyo31j24vm9d0 leaves the room. | |
| 12:14:11 | akshay_ leaves the room. | |
| 12:16:42 | __johan__ enters the room. | |
| 12:17:39 | dgtized leaves the room. | |
| 12:53:03 | langenberg leaves the room. | |
| 13:05:13 | codebrulee enters the room. | |
| 13:05:29 | codebrulee leaves the room. | |
| 13:12:10 | ctennis leaves the room. | |
| 13:12:30 | ctennis enters the room. | |