Index

Show enters and exits. Hide enters and exits.

00:05:10Zoxcbrixen, do you still use shell scripts?
00:05:52brixenwe use config.guess iirc
00:05:58brixenbut that can be special cased
00:06:10Zoxcmakefiles or some custom thing?
00:06:17brixenthe only requirement to build on windows will be a working MRI
00:06:34brixenwe don't use makefiles but some of the external libs do
00:07:08Zoxcdo you depend on shebangs?
00:07:13brixenwe've been slowly building out our build system to be pure ruby
00:07:22brixenI haven't gotten to the external libs yet
00:07:45brixenwhatever we depend on that doesn't work on windows will be changed or special-cased
00:07:51brixenthat's the short answer
00:07:58brixenthe long answer is "try it"
00:23:19brixenman I really don't think all this special-casing for string interpolation is worth it
00:23:28brixenfor some stupid edge cases
00:23:51brixenif ppl write "#{}" and it runs slow, tough shit
00:24:05yakischloba:(
00:24:16brixensrsly
00:24:21brixenwhy should we worry about that
00:24:25brixenor "#{foo}!
00:24:33brixener "#{foo}"
00:24:47yakischlobawhat special casing are you talking about?
00:24:52brixenif you can see that foo.to_s makes sense there, fuck that
00:24:59brixenyou == programmer
00:25:27brixen"#{foo}" turns into essentially "" << foo.to_s
00:25:35yakischlobayea
00:26:02brixenbut evan's on vaca and wrote this compiler output
00:26:08brixennot sure I want to veto it :)
00:26:33brixenit's shitnest of logic though
00:27:00yakischlobaoh. well evan is always about protecting people from themselves heh.
00:27:00brixenfor "#{}", "#{foo}", "a #{}", "#{} a" ...
00:27:08Zoxc"#{foo}" is always a string isn't it?
00:27:15brixenyes
00:27:26brixenit's exactly the same as foo.to_s
00:27:36mistergibsononly slower?
00:27:37Zoxcto_s may not return a string?
00:27:40brixenit calls #to_s on foo to construct the string
00:27:54brixenZoxc: yeah, I know
00:28:00brixenI say fuck those ppl
00:28:09mistergibsonthat's the spirit
00:28:21brixenZoxc: how else are we supposed to get a string?
00:28:24ZoxcI always use #{} because it can be faster =P
00:28:32brixenwhy would it be faster?
00:28:37brixenhow how how?
00:28:37Zoxcbut I'm not sure what you're talking about there
00:28:41yakischlobahah
00:28:55brixenI'm talking about this literal "#{foo}!
00:28:58brixenfuck
00:28:59yakischlobayea its like to_s except requires processing of the original string to figure out what the programmer wanted
00:29:00brixen" not !
00:29:16Zoxche added some optimization for it?
00:29:20brixenyes
00:29:31botanicusbrixen:I'm not getting what's the trouble?
00:29:39brixenand it missed an edge case
00:29:40brixenget this
00:29:46brixen"#{foo}"
00:29:48brixen:)
00:29:59yakischlobaheh
00:30:05brixenbotanicus_: huh?
00:30:42botanicusbrixen: what's the trouble with interpolation? I mean interpolation's fine, isn't it? Better than 'str' + ' str'
00:30:59brixenI'm not talking about interp in general
00:31:03brixenwhere did I say that?
00:31:18brixen"#{foo}" being used in place of foo.to_s
00:31:22brixenor "#{}"
00:31:25brixenliterally!
00:32:12brixenbotanicus_: and "{foo}#{foo}" is the same as foo.to_s + foo.to_s
00:32:26brixenhow do you think interp works? magically?
00:32:56Zoxcwell it always returns a string and tends to be faster :)
00:33:04brixenZoxc: show me the benches
00:33:11brixenwhat's this tends to be faster bs?
00:33:18brixenfaster on what?
00:33:29Zoxcyou can preallocate the whole string
00:33:51brixenyou can build the whole string in a prealloc'd buffer, yes
00:34:02brixenthat's what the string_build insn does
00:34:15brixenthe *compiler* though has special cases to not pass "" to the insn
00:34:23brixenand those special cases add up to a nest of code
00:34:31yakischlobacan rbx not do that with str + str1 + 'foo' + str2 or some such?
00:34:44brixenhence my original statement: optimizing for "#{foo}" is BS to me
00:35:11ZoxcIsn't removing the "" parameters to the string_build thing pretty easy?
00:35:18brixenoh god
00:35:24brixengo home everyone, it's xmas
00:35:27yakischlobahahahaha
00:35:32ZoxcI'm home ;D
00:35:32mistergibsonhehe
00:35:36mistergibsonI am home
00:35:44brixenI am home too!
00:35:50Zoxcsplendid
00:35:51brixenholy shit, that's the problem :D
00:36:04mistergibsonhome, or office, or jumping jack spot?
00:36:11mistergibsonhard to tell at some point
00:39:43botanicusBTW how is it going with 1.9 support in Rubinius? I *really* love to use rubinius, but I need 1.9
00:40:09brixenbotanicus_: we have a one_nine branch that has most of the core lib methods done
00:40:22brixenwe need to port the parser changes
00:40:27botanicusbrixen: I know about it, but what about syntax?
00:40:30botanicusI see, yeah
00:40:35brixenshouldn't be hard
00:40:43brixenjust not a priority pre 1.0 final
00:40:50botanicus:/
00:41:15botanicusI don't get why's everyone ignoring 1.9. It's a year since 1.9.1 was released.
00:41:17brixenjust don't use 1.9 syntax ;)
00:41:27brixenyeah, 1.9.1 is amazing
00:41:30brixenso stable
00:41:33brixenand everything
00:41:51Zoxcsyntax is the reason to use 1.9 =P
00:42:02brixentalk to Defiler about how often 1.9 segfaults on him
00:42:13botanicusbrixen: I'm using 1.9 syntax, i.e. the hash syntax is better with key: "value"
00:42:16brixenZoxc: what's so special about 1.9 syntax?
00:42:28brixenit's superficial at best
00:42:42botanicusbrixen: OK, the stability isn't great, but it's fast and it has many improvements
00:42:57brixenimprovements in?
00:43:05brixenonly reason I'd use 1.9 right now is m17n
00:43:12brixenthe syntax is meh
00:43:17Zoxcwell I like the block locals and parameters
00:43:18brixenthe methods are mostly in 1.8.7
00:43:46brixenparameters are mostly fluf
00:43:55brixenblock locals? mm same
00:44:19brixenhow did we ever write ruby apps before 1.9 zomg??
00:44:20botanicusbrixen: better scoping approach, same args parsing for procs as for methods, Method#parameters (OK, it's 1.9.2, but hey) ... etc ... IMHO really many improvements.
00:44:21ZoxcI find 1.8's way of doing stuff insane and inefficent :/
00:44:31ZoxcI didn't write ruby apps before 1.9 :D
00:44:48brixenbotanicus_: what is better about scoping?
00:45:01Zoxcyou get block locals
00:45:20Zoxc(thread safety! :D)
00:45:25brixenhuh?
00:45:45brixenyou guys are justifying it to yourselves, not me :)
00:45:57brixenspeed and m17n, I'll agree on
00:46:05brixenthe rest is mostly superfluous
00:46:12brixenbut we'll implement it eventually
00:47:16botanicusbrixen: I haven't use 1.8 for ages honestly so I don't remember the exact case, but I'm sure there is more reasonable approach to (not) introducing new scope after some keywords.
00:47:27botanicusBut can't remember, I'm just use to 1.9 now.
00:47:30brixenheh
00:48:10botanicusinstance_exec is also handy
00:48:18brixenwe have that
00:48:42botanicusYep, but it's not standard in 1.8 AFAIK
00:48:56brixenthere's been a patch for 1.8 forever though
00:49:07brixenppl have been using that for what 4 years?
00:49:07botanicusAnyway are there any recent BMs of Rubinius vs. other implementations?
00:49:16yakischlobayea that was a rael blocker for me
00:49:32brixenbotanicus_: you can check out evan's rubyconf talk
00:49:48brixenhe's got a framework he's working on for reasonable bench comparisons
00:51:42botanicusHmm I can find just http://rubyconf.org/talks/21-rubinius-in-one-act-or-rubinius-a-war-on-two-fronts
00:51:53botanicusBut no videos or so :/
00:52:17brixenno video yet
00:52:24brixenit'll be on confreaks site
00:52:42brixenI think they had to redo a bunch of the videos
00:52:48brixenbecause of sync issues
00:57:20yakischlobais llvm enabled by default now?
00:57:25brixenyes
00:57:29brixenin master
00:57:32yakischlobaok cool.
00:57:33brixennot in rc1 tarball
00:57:39yakischlobak
00:59:15mistergibsonI thought it was pretty spiffy how it pulled the latest during clone/build
00:59:54mistergibsonI'm so used to gnu autoblek stuff
01:02:55mistergibsonanyone work with llvm group's clang much?
01:04:24mistergibsonI rather like the idea
01:05:30brixenclang is an awesome idea
01:05:35brixendid you see the post?
01:05:42brixenclang compiles llvm and clang now
01:06:02brixen http://blog.llvm.org/2009/12/clang-builds-llvm.html
01:06:22brixenok, I've got nokogiri installing
01:07:01mistergibsonsweet
01:07:22mistergibsonis it pushed?
01:07:34brixendouble checking that the compiler test cover these stupid edge cases
01:07:42mistergibsonalways good :)
01:07:44brixenwe had holes before
01:07:49brixenwhich is how this happened
01:09:39brixenoh look, another edge case
01:10:55ruebrixen: Your attitude stops being funny after a while, too. You ought check it.
01:12:15brixenrue: um, go drink some eggnog?
01:12:44rueAs I said.
01:13:58yakischloba:/
01:15:49brixenrue: honestly, I have no idea what you are talking about
01:15:53brixenso STFU
01:15:54brixenhahah
01:16:18brixenle sigh
01:16:30brixenyou guys think I'm kidding about these edge cases
01:16:38yakischlobalets see if i can push him over the edge
01:16:46yakischlobabrixen: how much faster is rbx than mri?
01:16:49brixen"#{}#{}" is quite different than "#{}"
01:17:00yakischloba:p
01:17:01brixenyakischloba: heh, it depends
01:17:08brixenuniversal answer :)
01:17:15mistergibsonI suppose I can help a bit spotting new ones - I tend to pound and sniff pretty well when I get fixed to do it.
01:17:31brixenmistergibson: almost there
01:17:37mistergibsoncool
01:17:42brixenETA a few minutes/hours
01:17:44brixen:)
01:18:34mistergibsonno worries, I'm just sitting around in my robe and funny had indulging myself
01:18:43brixenTMI dude
01:18:44mistergibsonerr... hat
01:18:45brixenheh
01:18:55mistergibsonhaha
01:19:02brixenah me and my shitty 'tude :P
01:19:26Zoxcbrixen: evan removed #{} too?
01:19:30mistergibsonhrm, which reminds me ... a little butter-rum tottie is in order
01:19:31brixenI think I'll try to merge the specs later, that should bring a smile
01:20:08brixenZoxc: well, "#{}" -> "" << "", and you wouldn't want to send that to string_build
01:20:21brixenso that becomes push_literal ""; string_dup
01:20:24brixenin insns
01:20:30Zoxcisn't that "" << nil.to_s?
01:20:35brixenno
01:20:37brixenit's not
01:20:54brixenit's "" << ""
01:22:28Zoxcdef nil.to_s; "hello" end; "#{}" => "hello"
01:22:53brixens(:dstr, "", s(:evstr))
01:23:05brixenis what I get from parse_tree_show
01:23:43brixengreat
01:23:49wycatsevan, brixen: I have interesting news
01:23:59brixenevan's not here
01:24:02wycatsoh well
01:24:04wycatsyou will like it too
01:24:04brixenheh
01:24:20wycatsso Rails has a few performance regressions due to new features
01:24:30wycatsnamely instrumentation and SafeBuffer
01:24:31brixenin rbx?
01:24:32wycatshowever...
01:24:36wycatsno... in general
01:24:38brixenoh, in rails
01:24:39brixenok
01:24:39wycatsmore ruby code == slower
01:24:40wycatsright
01:24:42wycatshowever...
01:24:47wycatsthe regressions barely hit rbx at all
01:24:53wycatswith the new features, rbx is faster than 1.9
01:24:54brixensweet!
01:25:02brixenthat's awesome
01:25:09brixenwho was asking about benchmarks? :)
01:25:12rueSabotaging libraries is always a good way to leapfrog.
01:25:15wycats(1.9.2 appears to have a performance regression in general, so I'm comparing 1.9.1)
01:25:24wycatsbrixen: I'm doing a perf post
01:25:28wycatsrue: the features are useful
01:25:30brixencool
01:25:35wycatsthe SafeBuffer one is actually crucial
01:25:38ruebrixen: I just do not need to hear bitching about not pursuing something after expressly being told not to
01:26:19ruewycats: Yeah, I saw those in some blog post or another. But I think the strategy is sound ;)
01:26:21brixenZoxc: look what you did! I can't exit irb now http://gist.github.com/263453
01:26:55brixenrue: are you talking about mkmf?
01:27:02brixenthat was like 8 hrs ago
01:27:05Zoxcno errors in my irb =P
01:27:09brixengive me some context next time
01:27:11wycatsrue: instrumentation is nice too
01:27:15wycatsbasically free is rbx
01:27:18brixenZoxc: are you in 1.9?
01:27:19wycatsexpensive in MRI
01:27:28Zoxctested in 1.8 and 1.9
01:27:59brixenZoxc: haha, seriously, I can't ^D to exit
01:28:08brixenI had to type 'exit'
01:28:08wycatsbrixen: testing jruby now
01:28:14brixenwycats: cool
01:28:42wycatsthey beat both 1.9 and rbx
01:28:45wycatsby a bit
01:28:58rueHm, actually no...this instrumentation is some third-party thing
01:29:04wycatsrue: ?
01:29:20ruewycats: You have a blog post, changeset or very brief summary of the instrumentation features?
01:29:41rueI recalled a post, but it was something external
01:29:41wycatsI can show you the code ;)
01:29:46rueHa
01:29:50wycatstbh it would be worth looking at what we're doing with SafeBuffer and either offering us suggestions or looking at what you guys can do about it
01:30:25wycatsrue: http://github.com/rails/rails/blob/master/activesupport/lib/active_support/notifications.rb
01:30:37wycatshttp://github.com/rails/rails/blob/master/activesupport/lib/active_support/notifications/fanout.rb
01:30:42wycatshttp://github.com/rails/rails/blob/master/activesupport/lib/active_support/notifications/instrumen ter.rb
01:30:48wycatsin total not much code
01:31:01brixenZoxc: well, I'll have to run this by evan
01:31:15brixenZoxc: we have a special case for an empty evstr node :/
01:31:20wycatsusage: http://github.com/rails/rails/blob/master/actionpack/lib/action_view/template.rb#L39-42
01:31:27rueTa
01:31:36brixenZoxc: it would be easy to change it back though
01:32:23ZoxcI should remove "" arguments to my string building function :D
01:32:37brixenZoxc: you should, it's fun!
01:32:51Zoxcprobably just to if statements
01:32:52rueI do not recall if the empty evstr and global empty string were benchmarked but I would venture they were
01:32:53wycatsbrixen: I found a bug in the compiler related to [*foo]
01:32:55Zoxctwo*
01:33:14wycatsbrixen: I'll try to reduce it to a simpler case
01:33:19brixenwycats: ok
01:33:56wycatsbrixen: is there any way for us to improve the performance of an ivar wrt rbx
01:34:00wycatswe're adding an ivar flag to String
01:34:04wycatsthat gets checked all the fucking time
01:34:21brixenwycats: yes, we have the ability to use literal ivars as fields
01:34:22wycatshttp://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/string/output_ safety.rb
01:34:30wycatsbrixen: is there anyway I can hint that to you?
01:34:31brixenpacked ivars indexed by offsets
01:34:42brixenyou can, but you won't need to
01:34:42wycatsor do you just do it?
01:34:44brixenlook at Hash
01:34:53brixenit's not generalized yet
01:34:57brixenbut it will be soon
01:35:06wycatsfor instance this method: http://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/string/output_safety.rb#L6-9 should really be essentially free
01:35:20brixenugh with all the massive links :P
01:35:29brixencan we get a bit.ly bot in here?
01:35:31brixenheh
01:35:39wycatsbrixen: :/
01:35:41wycatssorry
01:35:45wycatssame with html_safe?
01:35:48brixenyeah
01:35:50wycats:emo: that we have to do defined?
01:35:58wycatsit's because or stupid warnings
01:36:11brixenthose will automatically be packed
01:36:28brixenwell, they are packed when the first instance of a class is created
01:36:50wycatsthe whole html_safe? business should basically jit down into something super-simple and stupid
01:36:59brixenso, on String, not so easy
01:37:03wycatsbecause it essentially is just flags and flag-checking
01:37:05wycats:/
01:37:05wycatsyeah
01:37:12wycatscuz you already initialized string
01:37:19wycats(for sure)
01:37:35wycats?
01:38:02brixenthe size would be finalized for the class when the first instance is created
01:38:04wycatssomething like http://bit.ly/8vXXDu is taking up like 10% of total template rendering time now
01:38:08wycatsright :/
01:38:33wycats(hopefully the bit.ly will make you happy ;) )
01:38:39brixenhehe
01:38:49brixendepends if you're gonna post 50 more links
01:39:11brixenmakes it hard to follow convos in the terminal
01:39:14wycatsagreed
01:39:17brixenwycats: you use ichat?
01:39:22brixenadium?
01:39:24wycatsbrixen: adium
01:39:29brixenah ok
01:39:36wycatsykatz@engineyard.com and wycats@gmail.com
01:40:03mistergibsonwish there was an adium port for linux, pidgin just doesn't quit cut it sometimes
01:40:11brixenwycats: I was just assuming you were using a windowing app for IRC
01:40:11wycats:/
01:40:33wycatsbrixen: currently am but I don't always
01:40:38wycatsso I understand your pain
01:41:48wycatsthis doesn't seem like the fastest way to do this: s.to_s.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
01:41:52wycatscomes from ERB
01:41:57wycatsfor one thing... why not gsub!
01:42:04wycats(not sure if that helps rbx)
01:42:19rueWas it tested only flagging explicitly safe strings?
01:43:02rueYou only need to check in limited cases since unsafety is contagious
01:43:28wycatsrue: correct
01:43:38wycatsrue: every string is considered unsafe
01:43:47wycatsas is a combination of a safe and unsafe string
01:45:57rueRight, yeah, without much overhead there is not much room for improvement
01:46:25wycatsrue: since the operation is so common I was thinking about manually inlining some of this
01:46:42wycatslike... not bother with also_html_safe?
01:47:20rueWell, you could just take the result of the two without checking
01:47:31wycatsyep
01:47:35wycatsand set the ivars manually
01:47:41wycatsit seems like a bunch of overhead for no obvious reason
01:47:44rueRight..
01:48:17wycatshttp://gist.github.com/263459
01:48:39wycatsobviously returning result
01:48:54rue"Extra" ivar access is still going to be slower for rbx than is working with the slots when it comes down to that
01:48:59wycatstbh: http://gist.github.com/263459
01:49:11wycatsrue: rbx is going to need to be able to handle this case
01:49:45wycatsbrixen: getting: dlopen(/Users/wycats/Code/active/rubinius/lib/ext/melbourne/ruby/melbourne.bundle, 9): no suitable image found.
01:49:55rueIt can *handle* it, sure
01:50:08wycatsrue: I mean
01:50:14wycatsrbx should be able to handle this case via slots
01:50:46rueYou could also dispense with the defined? check
01:50:56wycatsrue: 1.9 prints a warning if we do that
01:51:05wycatsmegafail
01:52:00rueThat is tricky to do with live String objects without reserving slots which then increases memory usage somewhat
01:52:07rueNeed to initialize it
01:52:18rueDunno if that actually results in a perf gain, though.
01:52:33brixenwycats: you are getting that doing what?
01:52:41brixenI have no idea what platform, etc
01:52:48wycatsbrixen: I fixed it by switching to 1.8.7p174
01:52:53wycatswas on OSX system ruby
01:53:59brixenok
01:54:09brixenI've got SL here to install on my other lappy
01:57:33wycatshehe
01:57:48wycatsI was able to slightly improve the perf of that gsub thing by doing each_byte and case
01:58:04wycatshttp://gist.github.com/263461
01:58:59wycatsmuch slower in 1.8 of course
01:59:35wycatsslower on jruby as well, presumably because they have a fast gsub
02:05:49wycatsyah... jruby has super-fast gsub
02:08:18wycatssometimes it would be nice to preallocate N slots in Arrays or Strings
02:11:03wycatsanyhow, I can easily get better perf than the gsub version on rbx but that's mainly because the gsub version is so slow
02:19:48brixencomplications
02:19:54brixenfinds food
03:34:06slavahappy holidays rubinius hackers
03:34:51brixenyou too slava!
03:36:20mistergibsonI'm still recovering from Post-Festivus wrestling matches
03:36:24brixenheh
03:39:29brixenmistergibson: I haven't forgotten your burning desire to install nokogiri
03:39:41mistergibsonno worries
03:39:44brixenI had to review some related spec failures
03:39:56mistergibsonthorough is all good dude
03:40:01mistergibsonI can waite
03:40:07mistergibsonerr... wait
03:40:12brixenstring interpolation has some serious tendrils
03:40:18mistergibsonI see
03:43:43brixenbasically because the AST nodes for /#{a}/ and related dynamic strings all inherit from the node for "#{}"
03:44:22mistergibsonis this a feature or a bug?
03:44:31brixenthe inheritance?
03:44:44mistergibsonbeing a noob smart ass really
03:44:47brixenheh
03:44:54brixenwell, it's neither really
03:45:01brixenjust a good way to organize it
03:45:11mistergibsonbut that leads to the issues you sighted earlier on performance, etc
03:45:19mistergibson?
03:45:40brixenuh, well the perf opts from using string_build insn relate to these, yes
03:45:55brixenthey're all dynamic strings under the covers in a way
03:46:17brixenbut this case of "#{a}" or /#{a}/ is very special
03:46:29brixenone sec...
03:46:53brixenhere's the deal http://gist.github.com/263493
03:46:55mistergibsonok
03:47:03brixenthe key line is at #2
03:47:15brixenthe comments at the bottom take you through it
03:47:38brixenbascially, the string that 'a' points to was not getting dup'd
03:48:03mistergibsonoh
03:48:11brixenso, checking_message modifies it inadvertently by injecting into "#{target}"
03:48:30brixenbut only dynamic strings really have this problem
03:48:45brixenbecause /#{target}/ is going to get passed to Regexp
03:48:55brixenwhich would use a copy to create the object
03:49:21brixenbut since dregx node inherits from dstr, the dregx bytecode will have an extra string_dup insn
03:49:27brixenI think I'm just going to punt on it
03:49:45mistergibsonwhat would be the work around?
03:49:51brixensimplest solution is just toss out the dumb opts for "#{a}"
03:49:59mistergibsonk
03:50:03brixenI don't think there's reason for them
03:50:09brixenbut I've made them work
03:50:27mistergibsonI never really worked with dynamic strings per se
03:50:44brixenI could try to refactor the code for dstr and use a subset in dregx
03:50:45mistergibsonas a noob I tend to keep things extremely simple
03:50:58brixenbut that's a lot of work for optimizing "#{a}"
03:51:10brixenyeah, simple is usually better
03:51:12mistergibsonindeed
04:11:47wycatsbrixen: http://gist.github.com/263504
04:16:49brixeni don't know what those #s mean
04:17:22brixenI see jruby has 666 on something
04:17:25brixenfigures
04:17:29brixenheh
04:19:44wycatsha
04:20:07wycatshttp://gist.github.com/263504
04:20:11wycatsbrixen: it's microseconds
04:20:28brixenoh ok
04:20:30wycatsoverhead is the overhead just to get in and out of a controller
04:20:45wycatsindex is render :text
04:20:54wycatsthen the rest are self-explanatory
04:20:59brixenbasically, you've got R3 smokin' fast
04:21:17wycatsr3?
04:21:24brixenrails3
04:21:31wycatsah yeah
04:21:34wycatsespecially improved on rbx
04:21:58brixenblast, just rm'd my test script
04:22:01brixenbleh
04:22:21wycats:(
04:22:28wycatsbrixen: I think the Rails 3 code is just better
04:22:31wycatsrbx likes good code ;)
04:22:50brixenindeed
04:22:55brixenon both accounts
04:22:56wycatsbut also, it isn't as unhappy with some new features we added
04:23:03wycatslike instrumentation
04:23:09wycatswhich eats away at some of the gains
04:35:40wycatsbrixen: is there an equiv. to .at(n) in Array for []=
04:39:19brixen#set_index
04:39:23brixenyou mean in rbx, right?
04:40:08slavawow, clang is almost able to compile itself
04:40:14brixenslava: yeah!
04:40:18mistergibsonpretty cool huh
04:40:18brixensweet huh
04:40:35mistergibsonI'd like to see how it does with ObjC
04:40:35slavayeah, its a major milestone for a C++ compiler
04:40:42slavaI think its much further alongw ith ObjC than C++
04:40:53mistergibsoncool
04:41:23wycatsbrixen: yah in rbx
04:41:38brixenwycats: #set_index is a primitive
04:41:57wycatsbrixen: and []= is aliased
04:42:05wycatsso there's no win by using set_index vs. []=
04:42:17wycatsbrixen: I'm optimizing zip
04:42:39brixenyes, []= is aliased
04:42:53brixenI should say, #set_index is backed by a basic primitve
04:42:59brixenthere's still fall-back code
04:43:04brixenfor funky shit
04:43:45mistergibson... goin' down in the city ...
04:43:58brixenmistergibson: you all toasty?
04:44:12brixenI'm gonna install nokogiri one more time and push this
04:44:18mistergibsonindeed, got my comfy thick robe and my cow had on ... I'm set
04:44:26brixenheh
04:44:33mistergibsonerr... hat
04:44:41mistergibsonfingers are also very fat just now
04:44:48brixenhah
04:45:24wycatsbrixen: Array.new appears to be dominating
04:50:27boyscoutMore compiler string interpolation specs. - a241091 - Brian Ford
04:50:27boyscoutMake string interp specs pass. - 34654ea - Brian Ford
04:50:27boyscoutRemoved dead compiler code for string interp. - fe1a11f - Brian Ford
04:50:27boyscoutChanged compiler specs related to "#{a}". See below. - 0874ccf - Brian Ford
04:50:43brixenmistergibson: give it a whirl
04:50:51mistergibsonk, thanks
04:55:22mistergibsoncompiling
04:55:36mistergibsonprefixed to /opt/rbx
04:55:46mistergibsonjust to be that way
04:57:29brixenmistergibson: you can do the multi-dir way
04:57:42brixenthere's individual options for bindir, libdir, etc
04:57:55mistergibson--prefix=/usr ?
04:58:03brixen--help ;)
04:58:14mistergibsonyes, rtfm ... gotcha
04:58:25brixenwe could also add a --fhs perhaps
04:58:30mistergibsonnoted, I'll experiment this a way fer a spell
04:58:33brixenthat puts the stuff where that would expect
04:58:45mistergibsoncool, thanks for supporting that
04:58:57brixenwhat's the official reference on that?
04:59:03mistergibsonhold preeze
04:59:07wycatsbrixen: -P is giving me: Error: signal SIGSEGV
04:59:11brixenI don't mess with linux much these days
04:59:22wycatshttp://gist.github.com/263518
04:59:35brixenwycats: eww, me too
04:59:47brixenouch
05:00:04brixenoh der
05:00:14brixenyou have to use -Xint with the profiler for now
05:00:18wycatsis there an alternative to Array.new(n) for making an Array of n size?
05:00:18mistergibsonthis is what I reference: http://www.pathname.com/fhs/pub/fhs-2.3.html
05:00:22brixenit doesn't play nice with the jit yet
05:00:26wycatsbrixen: but it won't be accurate
05:00:26wycatsk
05:00:34brixenor the jit doesn't play nice with the profiler
05:00:44brixenwycats: it will be *more* accurate in a way
05:00:53wycatsstill segc
05:00:54wycatssegv
05:01:02wycatswhen doing bin/rbx -P -Xint kernel/zipping.rb
05:01:16brixenack
05:01:19brixensuckas
05:01:29brixenI guess don't use -P then :)
05:01:34wycatsha
05:01:34brixenwycats: file a ticket
05:01:35wycatsnice
05:01:41brixenI'm sick of working on rbx tonight
05:01:43wycatsI want to see what's taking all the time ;)
05:01:44wycatshaha
05:01:44wycatsok
05:01:59mistergibsonyou've done a yoman's job sir, I thank you
05:02:07wycatsyeoman ;)
05:02:08brixenheh
05:02:10mistergibsonfind a nice microbrew and relax
05:02:13mistergibsonwhat you say
05:02:15wycatsor did you mean yo-man
05:02:19brixenI should probably sync the specs back to rubyspec
05:02:19mistergibsonhaha
05:02:26brixenbut I want to do something fun
05:02:39wycatshttp://github.com/evanphx/rubinius/issues/#issue/128
05:02:53wycatsbrixen: see avatar ;)
05:02:56brixenwycats: thank you
05:03:08brixenwycats: I may, but not tongiht
05:03:09mistergibsonI have to wait for it to hit the $2 theatre
05:03:19mistergibsonbut I hear it is outstanding eye candy
05:04:29brixenwycats: you should have put :-P in your ticket title :)
05:04:39wycatsbrixen: I will edit it
05:04:49brixenyou don't have to on my account
05:05:06wycatshttp://github.com/evanphx/rubinius/issues/#issue/128
05:05:28brixenoh, fun-erific http://gist.github.com/263519
05:05:49brixenthanks gcc
05:05:59brixenwhen's that clang supposed to be ready? :)
05:06:30wycatsit's done no?
05:06:47mistergibsonhrm getting some E's and F's on tests
05:07:00brixenheh, "confused by earlier errors, bailing out" that makes 2 of us
05:07:19brixenmistergibson: paste me the output with your platform info
05:07:24mistergibsonk
05:07:29brixenfires up vbox
05:07:40mistergibsonwhat constitutes platform info for you?
05:07:42wycatsdo ti
05:08:02brixenarch, os, version
05:08:05mistergibsonk
05:09:31mistergibsonis there a log I of the build and tests that would be better?
05:10:11brixenjust your terminal
05:10:14mistergibsonk
05:11:48brixenwycats: hrm, evan changed some block stuff recently
05:12:10brixenwycats: damn you, can't you just not break stuff for a while
05:12:20brixener, I mean tell me stuff is broken :P
05:12:33wycatshaha
05:13:02mistergibsonflooded my terminal buffer: going all 'rake > output.txt'
05:16:38mistergibsonhttp://pastie.org/756207
05:18:57brixenwhere is the dev dir you build in?
05:19:19mistergibson/root/Downloads/rubinius/rubinius
05:19:21brixenare you running like sudo rake here?
05:19:26mistergibsonno
05:19:43mistergibsonI usually build as root
05:19:46brixenare you running as root?
05:19:53brixenok
05:19:54mistergibsonon the build part yes
05:19:57brixenwell, you shouldn't
05:20:01mistergibsonok
05:20:02brixenbut alas, ppl do
05:20:03mistergibsonno worries
05:20:14mistergibsonI just got so used to it from the old days
05:20:20brixenheh
05:20:31mistergibsonalright, I'll mend my evil ways and it elsewhere
05:20:31brixenin the old days, I was very careful never to do almost anything as root
05:20:44mistergibsonodd, I went the other way
05:20:47mistergibsonhrm
05:21:11brixenI'll check these specs, they normally do not run
05:21:19brixenbecause you have to be superuser to run them
05:22:04mistergibsonI see
05:38:59brixenthis sucks, I can't rake build:debug
05:55:45mistergibsonno errs building as std.user
05:59:51mistergibsonnokogiri installed fine
06:05:02mistergibsonrice install broke - something about rb_gc_register_address not declared in scope
06:05:13brixenok
06:05:20brixennot surprising
06:05:24brixenI'll look at rice
06:05:26mistergibsonworth a shot
06:05:32brixenyep
06:05:47mistergibsonno sweat - long term thing
06:06:05brixenthe deal with the C-API is we will support as much as we can
06:06:12brixensome stuff we just can't support
06:06:14mistergibsonyeah, no worries
06:06:19brixenso we may need to send a patch to them
06:06:26mistergibsonperhaps
06:06:37brixenI'll probably work on getting mysql and postgres to install first
06:06:40mistergibsonyou do much with garbage collectors in general?
06:06:47mistergibsonI see
06:06:50brixensome
06:06:55brixenI've been learning
06:07:06brixenI know the basics of how ours works
06:07:13mistergibsonI wanted to get even into a chat on it
06:07:24mistergibsonmono uses 8 patterns of the 12 I know of
06:07:25brixenyeah, evan's the man
06:07:29mistergibsonk
06:07:32brixengc, vm, jit, compilers
06:07:37mistergibsoncool
06:07:41brixenhe's amazing
06:07:48brixenI can say that cus he's not here :)
06:07:54brixenheh
06:07:54mistergibsonhehe
06:08:02brixenhe already knows that though
06:08:12brixenrbx has some rockin tech in it
06:08:23mistergibsonyeah, I get that impression
06:08:23brixenand we're just getting started, actually
06:08:34mistergibsonis this the rebirth?
06:08:40brixenof?
06:09:00mistergibsonI caught - four years for this project so far, then a project stop, then ... ?
06:09:11mistergibsondon't really know the history
06:09:16brixenwell, it's been public just over 3 years
06:09:21mistergibsonuncle google abouty cruft
06:09:28brixenevan announced it at rubyconf 2006 in nov
06:09:31mistergibsonk
06:09:36brixenI learned about it in dec 2006
06:09:51brixenwe've done 2 vms, 4 compilers, 2 gcs
06:10:06brixenwell, 3 vms counting the prototype evan did in ruby :)
06:10:14mistergibsonwow
06:10:19brixenthen translated that to C
06:10:23mistergibsonk
06:10:26brixenthen to C++
06:10:31mistergibsonoof
06:10:31brixenwhich was a huge improvement
06:10:46mistergibsoncan you just port that to objc for me pretty please?
06:10:47mistergibsonhehe
06:10:50brixenwe didn't think we'd get to the jit by 1.0
06:10:59mistergibsonyou did though
06:11:02brixenheh, nah macruby has objc covered
06:11:11mistergibsonexcept for Tiger
06:11:16brixeneww :P
06:11:19mistergibsonand that's the rub
06:11:28brixenwho runs Tiger?
06:11:32mistergibsonman, I cannot tell you how *many* old Tiger boxes out there
06:11:49brixenwell, rbx should work on it
06:11:52mistergibsonmaybe its because I live in the cheap seats
06:12:06mistergibsonindeed, was looking at the old RubyObjC stuff
06:12:08mistergibsonfor Tiger
06:12:19mistergibsonno other choice as I see it
06:12:25mistergibsonno gc in Tiger
06:12:31mistergibsonso, no MacRuby
06:12:50brixenyeah, we should be able to get RubyCocoa working
06:12:52brixenprobably
06:12:58brixenI haven't looked at it
06:13:05mistergibsonactually I kinda like the RubyObjC approach
06:13:11mistergibsonsmall and very simple
06:13:51mistergibsonit has all the classic limitations of a bridge, but It has very few things in it from which you build all else
06:14:13mistergibsonwhich means, I can use it with mgStep, GNUStep, etc
06:14:26mistergibsonits not exaclty Cocoa-centric
06:14:38mistergibsonat least, that's what I see
06:14:42brixenwe should try
06:14:50mistergibsonall built on ffi I think
06:15:20mistergibsonits old code (2007), but I can't see any reason to abandon it
06:15:40mistergibsonthe author went to Nu (lispish) withing Cocoa name space I think
06:15:49brixenoh no shit?
06:15:53mistergibsonyea
06:15:54brixenI followed Nu a bit
06:16:03brixenI didn't realize that was the same guy
06:16:08mistergibsonnot bad, but I wanted to stick with ruby if possible
06:16:11brixenI have nu on my other laptop
06:16:11mistergibsonyup
06:16:19mistergibsonhe did the docs for RubyCocoa
06:16:38brixenNu would compete well with clojure I'd think
06:16:45brixenexcept the jvm is truly awesome
06:16:54brixenbut syntax-wise
06:18:12mistergibsonyeah, mysql would be nice. I plan on building around sinatra and sequel
06:21:21brixenman 282 failures, 334 errors running rubyspecs with 1.9.2 head
06:21:23brixenle sigh
06:21:46mistergibsonits christmas eve man, grab a brewski
06:21:59brixennone here
06:22:02mistergibsonpizza bob, pizza
06:22:05brixenand I'm not going to the store :)
06:22:17mistergibsonyeah, friggin freezing outside
06:22:29mistergibson30F says my gnome panel
06:25:09wycatsbrixen: I love how well rbx is handling Rails code
06:25:20wycatsany special Ruby code is basically free on rbx
06:25:36brixenwycats: that is so awesome to hear
06:25:40brixenmakes my day
06:25:54wycatsbrixen: :)
06:25:58brixenmistergibson: 27F here
06:26:01wycatsI've been messing with html_safe? etc.
06:26:25wycatsnot only can I look at rbx for tricks (from taint), rbx is taking the extra 2-3 lines in stride
06:26:42brixensweet
06:27:11mistergibsonhrm, sqlite3 wont go in
06:27:17mistergibsonwarnings treated as errors
06:27:40brixendang
06:27:41brixenok
06:27:51brixenI used to have that off for extensions
06:27:56brixenI must have broken it
06:28:00mistergibsondoh
06:28:11brixenI redid ext building
06:28:22brixenit's still lame
06:28:28brixenbut such is rake
06:28:30brixenPOS heh
06:28:53brixenI have a plan though, if only wycats would stop breaking stuff
06:29:00brixener reporting stuff :)
06:29:16mistergibsonhaha
06:29:18wycatsbrixen: ha
06:29:24wycatsI thought I had someone broken something
06:29:26mistergibsonno news is good code eh?
06:29:27wycatswith my mind
06:29:49brixenhere goes, pushing my first gem via gemcutter....
06:30:02brixenwycats: you probably did :)
06:30:03mistergibsondrum roll please
06:30:30wycatsjedi powers
06:30:39wycatsmaster yo(hu)da
06:30:43mistergibsondark meat or light meat?
06:30:52mistergibsonhaha, nice
06:31:00mistergibsonuse the schwatz!
06:31:28brixensweet! swoosh and it's gone
06:32:10brixenwycats: funny, I always though you spelled it yu(ho)da :P
06:32:25brixenwhere's evan with the ICE BURN followup?
06:32:26brixenheh
06:32:55wycatsbrixen: yehuda ;)
06:33:38brixenwycats: I know, just keeding ho ho ho
06:33:45wycatsha
06:40:36wycatsbrixen: seems like JRuby's big weakness is how slow it is before JITing
06:40:46wycatsit's hidden in their bench numbers but it really blows
06:41:36wycatsrubinius is now comfortably ahead of 1.8 across the board on my tests
06:41:39wycatswhich is a pretty huge deal
06:43:43brixenthat's awesome
06:43:51brixenyeah, jruby is working on their new compiler
06:44:00brixenshould get their interp #s up
06:44:26brixenmeanwhile, we'll be moving our jit #s closer to the jvm :D
06:47:13boyscoutUpdated MSpec source to e728be1e. - dbdb9cb - Brian Ford
06:47:13boyscoutUpdated CI specs to RubySpec 6f74a317. - 461befe - Brian Ford
06:47:13boyscoutUpdate CI tags for sync'd rubyspecs. - 3985b6d - Brian Ford
06:47:25brixentwo-way rubyspec sync wasn't too bad
06:47:37brixensnuck in releasing a new version of mspec too
06:47:54brixenI just need to stay on top of it weekly
06:49:40brixenI'm really impressed with gemcutter
06:49:44brixenlike, very
06:49:57brixenit's interesting to contrast hoe with gemcutter
06:50:11brixenwe need more gemcutters and less Ho(e)s :)
06:52:16brixenhrm, where is this picking up -Wall
06:56:24brixenugh, sqlite3 gem now depends on ffi gem?
06:56:57brixenas of dec 19th
06:57:03brixenwell hum
06:59:06brixenor not
06:59:16brixenthis layout on gemcutter.org is confusing
07:01:42brixenmistergibson: install the sqlit3-ruby gem, not the sqlite3 gem
07:02:03brixenwe'll have to talk to the maintainer about ffi dependencies
07:06:24mistergibsonk
07:06:59boyscoutDon't put -Wall in rbconfig CFLAGS by default. - bb8f168 - Brian Ford
07:10:50brixenwhy is have_func('rb_str_set_len') failing in mkmf when we have that function?
07:25:25wycatsbrixen: Rubinius on Rails 3 is across the board faster than 1.9 on Rails 2.3 ... so nobody can say Rubinius isn't production ready
07:25:45wycatshttp://gist.github.com/263504
07:27:52brixenawesome blossom
07:28:05brixenI've almost got mysql installing too
07:28:51brixenwhat's the deal with the regressions in 1.9.2?
07:30:24brixenlooks like rbx is within striking distance of jruby on R3 too
07:30:39brixennot bad for 3yrs vs 8yrs
07:30:48brixenand writing a vm, gc, and jit :D
07:32:14wycatsbrixen: indeed
07:50:46mistergibsonrbx rocks, great job guys
07:51:16wycatsindeed
07:52:32brixenit is great to see
07:54:28mistergibsonmight want to wash all that code down with some tasty blues: http://64.62.252.134:5100 mp3
08:07:02mistergibsontime for a cat nap with a cow hat
08:27:14wycatshttp://gist.github.com/263504
08:27:26wycats1.9.2 is faster when I build from scratch
08:27:29wycatsrvm is fail wayneeseguin