Index

Show enters and exits. Hide enters and exits.

00:02:55evannice: http://gist.github.com/441461
00:03:18sbryanteh?
00:03:26sbryantwtf, I can't open any new connections
00:03:47evanoh oh!
00:03:52evanwe are using packed! in Hash::Entry
00:03:53evanhahahah
00:03:55evani thought i turned that off
00:03:57evanAWESOME
00:04:01evani guess it's stable!
00:04:07evanman
00:04:09evanthis project.
00:04:16evanhalf the stuff i think i left them broken
00:04:26evanand look again and it's been in use for years
00:05:25evanoh man
00:05:33evani must have actually fixed it in the first pass through
00:05:42evanand all I remembered was ALMOST having it working
00:05:46evanthats hilarious.
00:11:53brixenheh
00:12:16sbryantnice
00:13:20brixenyo dawg, I heard you like building rbx with rbx so I need to put some rbx mojo to build melbourne correctly during bootstrap
00:13:31brixenponders
00:14:55sbryantis rbx going to start bootstraping itself?
00:15:15evanno reason not to
00:15:15brixensbryant: it already can, mostly
00:15:32brixenit's trying to load melbourne before it is built though
00:15:36brixenI'm trying to sort out why
00:15:48sbryantah neat-o
00:16:15sbryantso in the future it'll be able to build sans MRI?
00:16:40brixenonce you have rbx installed, yes
00:17:27brixenwell, I'm off to see imogene heap
00:17:33brixenhave fun tonight everyone! :)
00:17:42brixenrbx should build with 1.9 tomorrow
00:18:59evanbrixen: later!
00:37:48evanoh my
00:37:52evanauto packed ivars might be working.
00:37:56evanirb loads and runs.
00:45:28sbryantevan: nice.
00:45:52sbryantcan you tell me what that actually means?
00:52:30evanrad, core specs running with auto pack on
00:54:13evanprivate mem finished at 89M with auto pack on
00:54:18evanlets see what it looks like with it off..
00:55:01evan94M with it off.
00:55:14sbryantthat's not too bad
00:55:32evani'm going to have it incorporate superclass data now too.
00:55:38evani didn't do that first pass
00:55:50sbryantwhat does this all mean?!
00:56:03sbryantAs far as I'm concerned, magic and miracles, yo.
00:56:25evanthats right.
00:56:27evanGC is magic.
00:56:49evanI need to have some a way for the GC to print out an ascii wizard
00:58:49sbryantlols.
01:00:52sbryanthttp://tmp.liepins.de/magnets/?q=gc
01:04:18evanhehe
01:09:45sbryantevan: anything that needs attention?
01:10:13evanpack, but brixen and I have a strategy.
01:10:18evanyou can take a look at the tickets.
01:10:20evanor find new shit
01:10:23sbryantthe unread ones?
01:10:24evanby running your code under rbx
01:10:30evanthe open ones.
01:10:38sbryantalright.
01:10:49sbryantGot a few new apps that I can try
01:11:01sbryantthis time for a social media company!
01:11:17evanwoop!
01:12:08sbryantyeah, got a job at a company called vitrue
01:12:23sbryantNice to work with a team again.
01:12:45evanawesome!
01:12:55sbryantyeah, I'm excited
01:13:15sbryantIt's a little strange because I don't use social networks, save for twitter.
01:14:02sbryantSo, doing shit for facebook is a little strange for me but so far I'm doing alright.
01:14:05parndtso 1.8.7-p174 is a prerequisite for rbx?
01:14:21evanany 1.8
01:14:28evantomorrow any ruby probably
01:14:45parndtrvm install rbx forces 1.8.7-p174 even though I'm using p249
01:14:49parndtoh well
01:14:54evanyeah
01:14:57evani don't know why wayneeseguin did that.
01:15:01evanyou'd have to ask him.
01:15:05parndtwayneeseguin?
01:15:12evanhe's the rvm author
01:15:13parndtany response? (or sleeping)?
01:15:14parndthehe yeah
01:15:31parndtevan: sorry I realized that seemed confusing as soon as I typed that, I was prompting irc nickname
01:15:59evanah :)
01:16:40evannice
01:16:44evanshaved another 4M off
01:18:23sbryantevan: I forgot to ask. How was the conf presentation?
01:18:47evangood! tiring
01:18:50evani ended up giving 3
01:19:09sbryantnice, slides / videos up anywhere?
01:19:18evanI'll put the slides up
01:19:53evanthe 10min "keynote" is on railsconf.com
01:19:59evanlook an the right side, then click on the youtube account
01:20:11sbryantah okay. What topics did you cover?
01:22:31evanyou'll see :)
01:23:01sbryantlamer :-(
02:35:51slavaevan: did you see headius' blog post about jvm?
02:43:34dwaiteobviously, headius should fork the openjdk and turn it into just a ruby vm ;-)
04:40:43postmoderni dont think github supports importing from mercurial
04:40:48postmodernpretty sure OpenJDK is all on hg
06:05:28evanman, unicorn is finding some wacky edge cases
06:06:08slavaunicorn?
06:07:20evana webserver
06:07:26evanthat uses a lot of process/signal stuff
06:08:58slavaah
06:15:19boyscoutRun at_exit blocks and finalizers before exiting a fork. Fixes #372. - cf4a5a7 - Evan Phoenix
08:36:55boyscoutFix building with gcc 4.4.1. - a4d8992 - Brian Ford
08:51:55boyscoutAdd --cc to configure Script, so you can do 'rvm install rbx -C --cc=clang', as with MRI and REE. - 195fe44 - Konstantin Haase
08:52:34dbussinkbrixen: doing perror and perhaps even exit(1) might be good yeah
08:52:52dbussinkthere shouldn't be anything going wrong there
08:58:03khaasebrixen: still awake?
13:55:24sbryantmorning
13:56:57dbussinkafternoon :0
13:56:58dbussink:)
15:59:28evanmorning gents.
16:39:49brixenmorning!
16:39:51brixenlate night
16:39:59brixenevan: I think boyscout CI is hung
16:40:15brixenevan: also, what do you want to do re -Wunused-result?
16:40:27brixenshould we perror(), abort(), ignore...?
16:41:17evanperror() is fine.
16:42:25brixenk
16:45:12perezdhey, having issues with rbx 1.0.1 and hpricot ( https://gist.github.com/3ac2e4018eaa9301e480 ) Is this a known issue?
16:45:48evanyep
16:45:51evanhpricot isn't support.
16:45:53evansupported.
16:47:24brixenperezd: can you use nokogiri?
16:48:47brixenperezd: also, that looks like you are trying to load an MRI C ext in rbx
16:49:02brixenbecause you shouldn't even be able to get a .bundle compiling under rbx
16:49:33evanyou must have copied the .bundle from MRI
16:49:37evanwhich doesn't work under rbx
16:49:59brixenevan: so, can we add a distinguished symbol to our C ext and have .load_extension look for that symbol and fail to load if not found?
16:51:10evancertainly.
16:51:24brixenok
16:51:26evanwell, we can flip it
16:51:30brixenthat seems like a very good idea
16:51:32evanwe can look for rb_cString
16:51:35evanand if it exists
16:51:36evanbail.
16:51:58brixenexcept that we have rb_cString :P
16:52:07brixenwe need something mri doesn't have
16:52:35evanno we don't.
16:52:51evanwell
16:52:53evanthis is tricky.
16:52:55brixenah we have a define right
16:53:03evanwe need to create a symbol that the extension will define
16:53:16evanperhaps a function defined in ruby.h
16:53:27brixenthat's exactly what I was thinking
16:54:08evanwe'd need to do some experimenting
16:54:18evanbut totally doable.
16:54:28evanperhaps even use it as a failsafe
16:54:33evanie, define
16:54:55evanint RUBINIUS_VERSION() { return <a number> };
16:55:05brixenah that's cool
16:55:06brixensure
16:55:13evanso that we can detect extensions compiled against old versions of rbx and warn the user
16:55:21brixenabsolutely
16:55:24brixenexcellent
16:55:53evanthough
16:56:12evanwe need to figure out how to load the .bundle in a way that it dlopen won't complain
16:56:19evani guess that means RTLD_LAZY
16:56:29evanie, we don't want it to resolve symbols on load
16:56:33brixenahh
16:56:45evanagain, totally doable
16:56:49evanacutally, i'll do this later today
16:56:54brixenok
16:56:56evanbecause I want to redo how we load extensions anyway
16:57:03evanto use the FFI::DynamicLibrary stuff
16:57:14brixencool
16:57:25brixenwho broke twitter....
17:01:43imajesthat's what i was wonderin'
17:10:13sbryantAfternoon
17:13:33brixenhi sbryant
17:13:44sbryanthi
18:20:45brixenoh man, this is fun
18:20:59brixenbuilding rbx with rbx requires loading the newest signature file to build kernel
18:21:08brixenbecause that's what was used to build the rbx you are building
18:21:19brixenand the rbx you are building is used to build the ext like openssl
18:21:29brixenI suppose I could conditionalize that too
18:21:30brixenhmm
18:21:56brixenjust built rbx with rbx btw
18:22:02brixenall specs are running...
18:23:24evanyay!
18:24:05brixenyep, all passed
18:24:14evanawesome.
18:26:31brixenlyypanovvvvvvvvvvvvvvvvv!
18:26:54evanHe's back!
18:27:12brixenlypanov: did you see evan added custom callsite logic (a la invoke_dynamic) ?
18:27:27lypanovPoop
18:27:30brixenhahah
18:27:35lypanovLol
18:27:41lypanovFucking iPhone.
18:27:57lypanovI said "Oooo"
18:28:05brixenheh
18:28:14brixenthat's hilarious
18:28:20lypanovNope. Link? Commit log?
18:28:24brixensec..
18:28:25evanhah
18:28:38brixencommit hash 14407d5b7
18:29:15brixenlypanov: http://github.com/evanphx/rubinius/commit/14407d5b7
18:29:31evanbrixen: so this morning
18:29:36evani got thinking about a heap dump protocol.
18:29:41evani think i'm going to spike it
18:29:49brixensweet!
18:29:59brixenevan: did you look at VisualVM?
18:30:04evani have :)
18:30:12brixenshould be easy to have some of that
18:30:25evanwycats and I have talked about having a rails version of that
18:30:29evanconnected via query agent.
18:30:30brixenI'm going to make rake doc start a local sinatra site
18:30:32brixenyeah
18:31:04brixenwe could add that so you could do rbx <visual> or something in place of rbx console
18:31:14brixenrbx show_me_the_awesome :)
18:31:15evanexactly
18:31:21brixenrbx smta
18:31:26evanconsole has some new smarts btw
18:31:30evanrbx console --ps
18:31:34evanwill list all agents running
18:31:38brixennice
18:31:46evanif there are multiple and you start console, can choose one
18:31:53brixensweet
18:36:25evananyway, heap dump
18:36:35evanI thought of a good way to minimize the data i think
18:36:51evanby calculating layouts
18:36:56evanand reusing them
18:37:04brixenhmm
18:37:13evanso when you go to dump an object
18:37:15evanyuo look at the ivars
18:37:26evanand calculate a layout from the ivar list
18:37:38evanif the layout already exists, you reference it
18:37:45evanotherwise you introduce a new layout
18:37:53evanthat future objects can reference
18:38:10brixenok
18:38:18brixenhow do you know it already exists?
18:38:22brixenlike what's the handle?
18:38:28evana number
18:38:30evanwhich layout
18:38:47evanthe idea is that the data format is command based
18:38:56evanone byte for a command
18:39:18brixenok
18:39:22evan1 == new symbol
18:39:24evan2 == new layout
18:39:31evan3 == new object
18:39:44evanobjects reference other objects
18:39:49evanand objects reference a layout
18:40:04evansymbols are specialized because thats easy.
18:40:28evanthere would probably be 4 for fixnum
18:40:46brixensounds fun!
18:40:47evanthe reference are just numbers to previously seen things
18:40:57evanso new object might look like
18:41:20evan<2> <4> <1> <....>
18:41:24evaner
18:41:27evan<3> <4> <1> <....>
18:41:30evan3 == new object
18:41:43evan4 (an int) is the reference to the 4th symbol, for the name of the class
18:42:04evan1 (ant int) is a reference to the 1st layout, which says the names of the ivars in order
18:42:12evanthe rest is then the ivars specified by the layout
18:42:24evanas numbers, which are references to previously seen objects
18:42:26brixenI see
18:42:30brixengotcha
18:42:34evanoh, probably need an object reference id in there then
18:42:37evanso something like
18:42:46evan<3> <234> <4> <1> <....>
18:42:50evanfor the 234'th object
18:50:03evanmuhah
18:50:08evanauto packing objects passed the specs.
18:50:19brixenawesome!
18:50:46brixendid you do any perf testing?
18:52:21evanmy initial run showed a reduction of 94M to 85M
18:52:30evanin the memory usage at the end
18:52:37brixenoh sweet
18:52:40evani'll find out the memory of the whole run
18:52:41brixenthat's great
18:53:12brixenI'll take a 10% mem reduction any day :)
18:53:34brixenhow about runtime?
18:57:38evanseems fine.
18:57:47evanour allocation isn't mega fast
18:57:55evanand i've just added an extra conditional to the common case
19:08:21brixenour compiler signature stuff is working so well
19:08:24brixenreally pleased with it
19:08:30evanyeah
19:08:36evanreally happy to have that issues solved FINALLY
19:08:41evanonly took us, what, 3 years?
19:08:48brixenheh
19:08:50brixenless!
19:08:59brixenok, maybe it was 3 years
19:09:50brixenbut we had so much fun checking in .rba files :)
19:10:56brixenugh #376 :(
19:11:53brixentrying to load mri C ext
19:27:41evanyay! unicorn 1.0.0 is out and has endorsed rubinius support
19:27:46evanbrixen: yeah
19:27:50evani'm talking to wayne about it now.
19:29:01wayneeseguinw00t0
19:29:07evan:D
19:29:07wayneeseguinI <3 Unicorn
19:29:11wayneeseguinnow with Rubinius...
19:29:13wayneeseguinNERDON
19:29:32evanhah
19:32:50sbryantNice.
19:44:09atmosyo has anyone had issues installing json on rubinius from rvm ?
19:44:59evaneveryone has
19:45:12evantheir gem is broken
19:45:17evani've got an issue with them to fix it
19:45:23evanbut nothing has been done about it
19:45:29atmosk, is there a workaround ?
19:45:44evanuse json_pure
19:45:48evani should fork their gem and fix it.
19:45:57Defilerthen people could install your fork via bundler
19:46:06atmosi can't because i'm using a gem that depends on it i believe
19:46:15Defilerbundler will handle that
19:46:37Defileroh you mean you can't use json_pure?
19:46:42brixenatmos: can you use yajl ?
19:46:50Defileryajl has a nice JSON-compatibility mode
19:47:05atmoswill it resolve as a proper gem dependency though ?
19:47:20Defilernot if the gem just says it wants 'json'
19:47:35brixenwouldn't it be nice if gem deps could be API vs specific gem name
19:47:37atmosi guess i'll just go back to 1.8.7, who maintains the json gem ?
19:47:38Defilerin that case, you'll need to change the dependency for now sadly
19:47:51atmosbrixen: i'd rather people just fix their shit
19:47:53Defilerwhich I usually do by forking the gem and pointing bundler at my fork
19:48:05evanatmos: flori
19:48:09evanatmos: :(
19:48:11brixenatmos: I don't argue that, but it would be nice to say 'provides: JSON'
19:48:16evanyou can download the gem
19:48:17evanfix it
19:48:19evanand install the file
19:48:23Defilerwell, it would be nice to be able to say "I need something that can make JSON.encode() exist"
19:48:29brixenDefiler: yeah
19:48:32Defilerand then have any number of libraries be able to do that
19:48:34atmosyeah
19:48:35brixenthat's what I mean by API
19:48:38evanbrixen: virtual deps are something thats under discussion
19:48:40wayneeseguinatmos: !!!! xoxo! ;)
19:48:44brixenevan: sweet
19:49:34atmosis there a fork somewhere that actually works w/ rbx ?
19:49:40atmosor does that still need to be handled ?
19:50:38evanatmos: i've fixed it locally only
19:50:43evani can push the fix somewhere though.
19:51:09atmosyeah can you do that, i'll send the dude a message with a link to it and you can send him a pull req :D
19:51:14atmosguess i'll be going back to 1.8.7 for the time being
19:51:21evan:(
19:51:55evanok, i'm not gonig to be held hostage to the json gem.
19:52:00evani'll work on it today.
19:52:54brixenman, if only we had -Xzibit already: "yo dawg, looks like you want json in rbx, le'me help you with that..."
19:53:46evanperhaps today is the day for that.
19:53:52brixenhaha
19:54:08brixenno no, just work on heap dump
19:55:11evanhah
19:55:26evani'm going to commit packed ivar support
19:55:30evanit's running fine.
19:55:33brixensweet!
19:55:44brixenI'm going to commit some food to my belly
19:55:48evanthe mem savings in a full spec run are hard to see
19:55:54evani need more memory tools to figure it out
19:55:57brixenok
19:55:57evanthusly, heap dump.
19:56:06brixengood plan
19:56:19evanyeah, i'm going for food now too.
19:57:00Defileryou should heap dump by forking and leaving C4 on a timer in the old process
19:57:04Defilerand then cut to commercial
19:57:44evanDefiler: and show a clock at 2:59:55
19:57:50evan-Xbauer
19:58:11Defilerperfect
19:58:20Defiler-Xpowerhour
19:59:25asap18hm
20:00:14evanok, lunch time!
21:01:12goyox86Hi yo, people i was thinkin if somebody could help me to make Textmate ignore rbc files?
21:04:05brixengoyox86: hmm, I think you can add a default filter
21:04:07brixenlooks
21:04:17brixengoyox86: you mean for display or searching?
21:05:01brixengoyox86: look under preferences -> advanced -> folder preferences
21:05:31brixengoyox86: I have for File Pattern: !(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc|rbc)|/Icon\r|/svn-commit(\.[2-9])?\.tmp)$
21:06:55goyox86Done!
21:15:12fowlduckis there a way to not litter my project with .rbc files?
21:16:56BrianRice-workwhy is it a problem?
21:16:57evanfowlduck: not atm, no.
21:17:19fowlduckit's not a problem as much as it's undesirable
21:17:42brixenfowlduck: -Xcompiler.no_rbc
21:17:51brixenfowlduck: add them to .gitignore
21:17:58brixenexclude them from your editor
21:18:07brixenthey serve a useful purpose
21:18:25brixenbut if you want to compile everything from scratch, use that switch
21:18:41fowlducki'm sure they do, but they can serve a useful purpose in a directory other than the project one
21:19:19fowlduckor they can serve a useful purpose in a dot-directory that parallels the structure of the actual project?
21:19:45evanfowlduck: i'd happily consider a patch to do that.
21:20:10fowlduckwell, where would i start?
21:22:47evanfowlduck: i'm checking
21:22:52evanwe've moved it around recently.
21:22:54fowlduckcool, thanks
21:28:13evanfowlduck: so, check out line 115 of kernel/delta/codeloader.rb
21:28:24evanthats where we calculate the name to store the compiled version of a file as
21:28:35evanthats passed through straight to the code that writes it
21:28:45evanso if you change that to contain a path to a . directory or something
21:28:48evanit will just work.
21:28:54fowlduckoh, cool
21:29:48fowlducki have work-related stuff to do right now, but i'll come on later tonight and have a go at it
21:29:55evancool
21:30:09fowlduckthx
21:30:43brixenfowlduck: also, note that HOME is not really an option
21:30:53brixensince afaik, sudo sometimes does not change that
21:31:05evanthats true.
21:31:06brixenand you'd end up with root owned .rbc
21:31:10evanyou could fail quitely
21:31:15evanah yes
21:31:23evanactually, someone mentioned that to me
21:31:36evanthat we should make sure the .rbc files have the same owner and perms as the .rb file
21:31:45dbussinkeven su doesn't, you need to do su - in that case
21:32:01dbussink(setting home etc. that is)
21:32:21fowlduckso figuring out the location to put them will be the real trick...unless i put .rbc directories all over the place...
21:32:27fowlduckthat'd be ugly....
21:33:01evanit's an option.
21:33:15evanobviously the current tactic is simple
21:33:25evansimple enough that the only pain it's caused is visual pain.
21:33:36evanwhich is really saying something for caching algorithms.
21:34:12brixenthey are so easy to ignore for programs
21:34:16brixenlike git and editors
21:34:24brixenand python has lived with them for years and years
21:34:36brixenthey are only an issue because Ruby hasn't had them
21:34:46brixenif it had, we wouldn't be discussing this I think :)
21:35:21evanthats true
23:25:50boyscoutAdd ivar detection and automatic packed ivars - b70d0be - Evan Phoenix
23:32:15brixenevan: wrestling with ffi/x_generator stuff in the build and wondering why we have FFI::Generator::Task in lib
23:32:30brixenis that intended to be runtime available, or build-time?
23:33:07evanbuild time i'd guess.
23:33:10evani think the name is just funny.
23:33:16brixenbasically, we cannot in general add 'lib' to $: because 1.9 require semantics have changed
23:34:42evanyou've got free reign to do whatever
23:34:55evansounds like it's in the wrong place
23:34:57brixenwell, I'm mostly wondering how it was intended to be used
23:35:02brixenyeah, seems to be
23:35:05evanwe only use it at build time
23:35:11brixenk
23:35:54evanbrixen: on http://gist.github.com/442958
23:36:02evanautopacking took it from 240M to 59M
23:37:54tmm1[BUG: requested Object for unknown NativeMethod handle type]
23:38:04tmm1in the patron gem looks like
23:38:26evantmm1: weird...
23:38:33evantmm1: can you isolate it at all?
23:38:48brixenevan: wow, that's awesome
23:38:49tmm1http://pastie.org/1009393
23:39:04evanbrixen: it's slowing down ivar access atm
23:39:08evanso i've turned it off by default
23:39:12evanbut i'm working on the ivar stuff now.
23:39:35brixenok
23:39:39evantmm1: i'll bet you've got a extension compiled against MRI used in rbx
23:39:45evanwe're getting that a lot right now.
23:40:03evantmm1: how did you build that extension?
23:41:06tmm1$ ruby -rubygems -r patron/session_ext
23:41:12evanno no
23:41:13evanbuild
23:41:14tmm1triggers it.. i just did a gem install and i'm using rvm
23:41:18evanhow did you build it.
23:41:51evanmmm
23:41:51evanrun
23:41:54evangem env
23:41:58evanand gist the output
23:46:48brixenok, built with 1.9.1p378
23:46:48tmm1http://pastie.org/1009393
23:47:34brixentmm1: but did rvm copy your gems over or did you install directly?
23:48:55tmm1i just did a gem install on a fresh rbx install
23:49:09tmm1lemme just check out the code and try it
23:49:14brixenI'll try here
23:49:16evanhm
23:49:40evantmm1: is the C code for that available somewhere I can see?
23:49:44evangithub perhaps?
23:50:29brixenperhaps http://github.com/toland/patron
23:51:13tmm1yea that's it, i just cloned that and tried it by hand
23:51:21evanit's a bug in the library
23:51:23evanlook at
23:51:30evanhttp://github.com/toland/patron/blob/master/ext/patron/session_ext.c#L441-443
23:51:47evanI assume he meant to have INT2FIX(CURLAUTH_BASIC)
23:51:51evannot straight up CURLAUTH_BASIC
23:51:54evanwhich is just a random int
23:51:57evannot an object.
23:52:14tmm1ah
23:52:18evanin MRI, thats a time bomb
23:52:22evanif those constants were used
23:52:24evanit would just segfault.
23:52:36evanthats why we have these guards :D
23:52:51tmm1heh
23:54:09evantmm1: sorry we gave you the run around about miscompiled extensions
23:54:16evanwe've had that about 5 times in the last 2 days
23:54:42tmm1no worries, i understand
23:55:31tmm1alright lemme fix this and see if this rails app works
23:55:38evantmm1: coolness!