Index

Show enters and exits. Hide enters and exits.

00:09:11seydargood evening children
00:11:32evanhi seydar
00:11:38evani see you've got a ruby project you're working on
00:12:09seydarevan: if you're thinking of amp, that's correct
00:12:16evani am.
00:12:54seydari'm tempted to ask for your thoughts. but lemme first give this another test run on rubinius
00:14:01benschwarzevan: we were going to call you at 5am
00:14:08benschwarzand we forgot :/
00:14:13evanhah
00:14:22evanon one hand, i'm sad you didn't
00:14:27evanone the other, i'm glad you didn't
00:14:27benschwarzhaha
00:14:34evanon the other.
00:14:38benschwarzrailscamp kicked ass
00:15:48evangood!
00:18:14slavahi evan
00:19:38evanhi hi slava
00:29:35slavaevan: I got the GC to trace operands in machine code
00:30:01evanhah
00:30:02evannice.
00:30:42seydarwhat does it mean to "trace operands"?
00:30:46seydarhypothetically if i didn't know
00:34:01jvoorhisseydar: i admire your insa^H^H^H^Hambition!
00:34:31brixenjvoorhis: join the club, we have long admired seydar's insanity :)
00:34:48jvoorhisyou guys have already covered the full hg format?
00:35:08slavaseydar: compiled code has pointers to data objects and other code blocks, and the gc needs to understand these pointers
00:36:15slavaevan: a few things still need the literal table though, but I'll be phasing those out and then removing the literal table
00:36:20slavaevan: it will reduce memory usage by a few megs
00:37:21evancool
00:40:38evanslava: i'm reworking how the JIT tranverses the bytecode
00:41:29slavawhat's changing?
00:41:35evanit's kind of a mess now.
00:42:01evani'm reworking it so that the JIT walks the opcode stream via the control flow
00:42:05evanand using a work list
00:42:17evanso that it only ever considers live code
00:42:34slavaoh, cool
00:42:40slavadoes dead bytecode come up often?
00:42:49evanyeah
00:42:51evanstuff like
00:42:53evanbegin
00:42:56evan return yield
00:43:00evanrescue Blah
00:43:04evan whatever
00:43:04evanend
00:43:25evanthere are some gotos and cleanup after the ret instruction which are dead
00:43:29slavaah
00:43:36evanwe'll improve the bytecode compiler to not emit those as well
00:43:40evanbut i have to do it in both places really
00:43:50evanbecause i don't want to work around JIT bugs by changing the bytecode compiler
00:52:01seydarpulling the most recent rbx code...
00:56:03seydarinteresting issue. running `rake clean` on my linux box gives me an undefined method error: http://pastie.org/712149
00:57:46evanhm.
00:57:48evanwell, just build it
00:57:50evandon't worry about clean.
00:58:46evanseydar: open an issue about that please.
00:59:28seydardid you get it as well though? I don't want to post it if it's my being dumb
00:59:46evani'm not trying right now.
01:00:46seydark. opening issue now, sir
01:02:12seydarissue opened
01:03:21evanthank you.
02:57:17evansweet, think i've fixed the JIT codegen bug.
08:21:31peterpantsas a new ruby coder, i was looking for multi-core use in the language and stumbled upon this project. how exactly does this work? if anyone cares to explain? i was kind of thinking in the directions of coding a game with ruby and wondered if rubinius could be used to increase performance?
08:45:38rueIn short, no
08:45:47rueRubinius is not a production system
08:45:51rue(Yet)
16:34:22kitallis\0/
17:04:17evanmorning.
17:11:03brixenmorning
17:11:50evangot that JIT codegen crash bug fixed
17:11:52evanyay.
17:11:55evangoing to push it.
17:12:02brixensweet!
17:12:10brixenalmost have install working
17:12:15brixenwhat a tangled mess
17:12:18evansweet
17:12:19evanyeah
17:12:25evanthink you'll be ready today?
17:12:32brixenI sure hope so
17:12:33evani'd like to get it released today
17:12:40brixenreally :/
17:12:41evanso I don't have to worry about it in cleveland
17:12:41brixenok
17:12:44brixenyeah
17:12:48brixenwhat time do you leave?
17:12:56evanwednesday at 11am
17:13:00evani can do it on wednesday too
17:13:01brixenyipes
17:13:02brixenk
17:13:02evanif we need to
17:13:27brixenwell, I'll need you to double check it of course
17:13:37brixenso be thinking of some idiotic install scenarios :P
17:13:45brixencus that's exactly what will be tried
17:14:06brixenlike, did you see supposedly running configure as root was rm'ing /dev/null ?
17:15:44evani saw someone indicate that
17:15:51evanbut i'm not sure what the cause was.
17:17:31evani'm not convinced it's configure's fault.
17:17:50brixenyeah, haven't investigated
17:26:26boyscoutFix JIT codegen bug. Fixes #80. - d6b53ad - Evan Phoenix
17:29:12boyscoutCI: d6b53ad success. 3004 files, 11460 examples, 35587 expectations, 0 failures, 0 errors
17:33:02lightcapanyone know why configure --enbable-llvm would have killed terminal? I saw an error about /dev/null permission denied and now I can't start up a terminal
17:35:33evanlightcap: really?
17:35:37evando you have the outptu?
17:35:41evani've never seen it before
17:35:45evanwe need more details to track it down
17:36:22lightcapevan: yeah, totally wierd.
17:36:32lightcapI'd give it to you if I could get more details :--)
17:36:34evanyou saw it just running "./configure --enable-llvm"
17:36:35evan?
17:36:39evannot rake?
17:36:39lightcapyeah.
17:36:42lightcapnope
17:36:42evanok
17:36:50evanconfigure is small
17:36:51evanone sec.
17:36:52lightcapit downloaded llvm it looked like
17:37:01evanah ok
17:37:03lightcapand then I got an error about /dev/null and permissions
17:37:18lightcapand every time I tried to do anything after I got the same /dev/null error
17:37:24evanooh.
17:37:28evanoooooooh
17:37:31evanoooooooooooooooh
17:37:31lightcapso I quit term
17:37:33lightcaplol
17:37:40evanfires gcc
17:38:31lightcapfirst thing I need to figure out is how to get a term back :-)
17:38:43evanyou'll probably have to reboot.
17:39:07brixenlightcap: did you run configure as root?
17:39:16lightcapwhat are you thinking happened?
17:39:28lightcapbrixen: I sudo'ed yeah.
17:39:33brixenlightcap: k
17:39:44lightcapoh hmm...
17:39:50lightcapactually I sudo'ed the first time
17:39:53lightcapand it failed.
17:39:53evani've got it.
17:39:56lightcapon a permission issue
17:40:06lightcapthen I sudo -s 'ed
17:40:09evanit's confusing why though it has worked for me fine
17:40:25lightcapokay...
17:40:56brixenevan: I'm disabling configure and rake if running as root too
17:40:57lightcapstill thinking I need to reboot?
17:41:07brixeninstall will prompt if it doesn't have perms
17:41:08evanbrixen: why?
17:41:18evanpeople can still do it on their own
17:41:19evanthats fine
17:41:21brixenwhy configure or build as root
17:41:34brixenless possible issues
17:41:51brixenif someone wants to override that, at least they know they are coloring outside the lines
17:41:56lightcapyeah I should have built non-root and then installed as root...
17:41:57lightcapoh well
17:42:15evanbrixen: we're not going to forbid it from running as root
17:42:18evanthats dumb.
17:42:33brixen*shrug*
17:42:50evanwe should just not require that they do it
17:43:00evanstuff like build systems and such will run it as root
17:43:21evanplus, systems could have a user that has the same perms as root
17:43:23evanbut not called root.
17:43:27evanso it's a loosing game.
17:43:56brixensure, that's true
17:44:06boyscoutDon't have gcc write to /dev/null, it's stupid. Fixes #85. - 067335a - Evan Phoenix
17:44:09evanok, fixed.
17:45:59boyscoutCI: 067335a success. 3004 files, 11460 examples, 35587 expectations, 0 failures, 0 errors
17:46:26evanI guess I figured that since " blah > /dev/null" doesn't create a new /dev/null
17:46:32evani cound have gcc write to /dev/null directly
17:46:45evanbut i guess it must rm it first
17:46:46evanthen open it.
18:03:35rueHa, here I thought I had cracked the case from yesterday and you already fixed it
18:06:43lightcapsorry, stuck in a client meeting... I'll be back in a bit
18:08:02lightcapthanks evan
18:08:15evanno problem.
18:08:17lightcapgood talk at rubyconf btw, excited for 1.0 :-)
18:08:23evanthanks!
18:18:17evanwonderful. bugs in 1.8's pack.
18:19:16evanon a 64bit platform
18:19:31evanif you pass a Fixnum using more than 32bits to anything wanting 32bits
18:19:47evanit happily accepts it and ignores the upper bytes
18:20:07evanwhich is counter to the code that validates that a Bignum passed in can fit in 32 bits.
18:21:22imajesyay!
18:22:39brixenugh
18:24:15evani'm making a short pass through Array#pack
18:24:24evanand sanitizing it a little bit
18:25:27brixencool
18:31:46evanmainly, seperating out some of the integer types
18:31:55evanand using FFI to do the actual int => string conversion
18:32:07brixennice
18:32:17evanmainly, MemoryPointer
18:32:28evanI added write/read long_long
18:32:33evanand also network_order
18:32:49evanwhich rotates memory as though it were an int of the specified size
18:44:59dbussinkevan: btw, if you're planning on a release, i think a lot of people will start reporting that rdoc / yaml issue because of failures during gem install
18:45:10dbussinkdunno how much people have rdoc / ri disabled
18:45:13evanok
18:45:28evani'm sure thats true
18:45:36evanare you just making that statement?
18:45:41evanor you trying to coax me into working on it ASAP?
18:45:51dbussinkhaha, no, not really
18:46:02dbussinkjust that it's a thing that will be reported a lot after a release i think
18:46:13evanok...
18:46:16evanso just a heads up?
18:46:26evanwhat error are you seeing now?
18:47:12dbussinkthe invalid subclass in rdoc, you already mentioned that too
18:47:17evank
18:47:18evanyeah
18:47:21evani'll take a look today
18:47:33dbussinkwhat's the policy on rdoc in general btw, since it's not there by default and gem install will also complain about that
18:48:15evanyeah
18:48:18evani'm dealing with that
18:48:24evanit's going to be a pre-installed gem
18:48:27evani've got that working locally.
18:48:50dbussinkah, cool :)
18:49:06dbussinkmemory pointer usage is a nice way to have platform dependency too :P
18:49:16dbussinkfor big endian / little endian stuff etc :)
18:49:38lightcapevan, so what's your theory on why I can't get a terminal then? (I don't want to reboot if there's a potential for my system not to come up again)
18:49:57evandbussink: yeah
18:50:09evanlightcap: because /dev/null is now not /dev/null
18:50:12evanit's a normal file.
18:50:20lightcapah
18:50:23evanyou need to reboot.
18:50:29evansorry :/
18:50:33lightcapand that'll happen on its own?
18:50:45evanOS X will fix it back up on reboot.
18:50:49lightcapevan: please, don't apologize. :-)
18:50:52lightcapcool
18:50:55lightcapbe back in a few!
18:54:20evani'm thinking about eventually implementing an Array#pack saving interptere
18:54:29evanparse the conversion into a set of objects
18:54:34evanwhich can be cached
18:54:43evanand then walked to perform the work
18:54:50evanlike the newer Dir.glob
18:54:52brixenthat would be cool
18:58:04evanesp. because the current impl runs a big regex scan to pull it apart
18:58:19evanand then iterates over it using integer comparisons
18:58:20evaner.
18:58:25evanstring comparisons.
18:58:27lightcapthanks evan, reboot seemed to do the trick
18:58:32evanoh good.
19:05:38lightcapso if I want to run rubinius in place of MRI what's the best way to do that? Just symlink /usr/bin/ruby to /usr/bin/rbx?
19:08:08dbussinklightcap: i'd suggest letting it stay next to ruby for now
19:08:16dbussinklightcap: but brixen is fixing the install procedure
19:08:21lightcapdbussink: ok.
19:12:56brixenlightcap: yeah, I'd invoke rbx specifically
19:13:07brixeneven once install in working :)
19:13:12lightcapokay :-)
19:13:25brixenour -S should work
19:13:32brixenso you can always do rbx -S rake ...
19:13:33brixenetc
19:13:36lightcapI have a bunch of scripts with hashbangs that reference ruby though
19:13:41brixenhrm
19:13:51brixenwell, then I'd use rvm
19:14:00lightcaps'okay, I shouldn't be doing that these days anyway with as many damn impls as there are out ther enow
19:14:00brixenrbx works with rvm now afaik
19:14:05lightcapok
19:14:43dwaitewaves
19:14:53brixendwaite: sup man?
19:15:14dwaitenot much! back in DEN
19:15:32dwaitebtw, my heavy-handed std::string approach didn't work
19:16:14dwaitein fact, it looked like some code someplace freed the returned c_str() from under me
19:16:34brixenyep
19:16:40brixenthat's what I hit too
19:16:56brixenI'd suggest looking at how mri does it
19:17:09brixenif it uses rb_str functions, we can probably do the same now
19:18:04wayneeseguinw00t
19:18:37dwaiteheya wayneeseguin
19:20:04boyscoutAdditional read/write methods for MemoryPointer - f149aa5 - Evan Phoenix
19:20:04boyscoutStart Array#pack cleanup - 361111d - Evan Phoenix
19:20:18wayneeseguin:D
19:23:14boyscoutCI: Build 361111d failed. http://ci.rubini.us/rubinius/builds/361111d9e559a06a148c9250d08aa274b0cfeea2
19:29:40evanbtw.
19:29:40dbussinkbad boy evan!
19:29:51evanoops.
19:30:44boyscoutAdd missing include - 9963b35 - Evan Phoenix
19:44:02dbussinkevan: it's not your day is it? ;)
19:44:37evaneh?
19:45:56dbussinkevan: still seeing failures on http://ci.rubini.us/rubinius
19:46:09dbussinkevan: i'm just being obnoxious i guess ;)
19:46:38evanwhy didn't boyscout report that....
19:56:15boyscoutUse proper long long conversion method - 66589a5 - Evan Phoenix
20:00:48boyscoutCI: 66589a5 success. 3004 files, 11460 examples, 35587 expectations, 0 failures, 0 errors
20:01:27evanoh good.
20:01:32evanmy mood just increased.
20:03:42dbussinkevan: good to hear :)
20:03:56dbussinkevan: i guess that was a doh moment ;)
20:04:26evanI should figure out lunch.
21:02:22binary42I don't have time to dig into it at the moment but I have a few more bugs if anyone wants to look at them. Most of them can be found by running my remix-stash specs. One odd one seems to be on constant lookup inside shoulda.
21:02:31binary42I'll file something later if nobody beats me to it.
21:04:17brixenbinary42: yeah, please do file a ticket if you can
21:04:36brixenmake it a composite if you need to (ie put it all in one ticket if that's easiest)
21:04:54binary42Yeah. Just at the office and my client has a race condition in javascript in IE... yay? I'll return to it soon.
21:05:03brixenugh, ok
21:05:08brixenfinds lunch...
21:05:22binary42brixen: Basically trying to make sure remix-stash works 100% on rubinius.
21:07:43dbussinkbinary42: how do you run the specs?
21:08:33dgtizedevan: I wonder if we could just split out Array::Packer and String::Pack as a full on extension?
21:09:09dgtizedsorry String::Unpacker
21:10:16evandgtized: i suppose we could
21:10:21evannot sure what use that would be
21:11:07dgtizedshared code between different ruby vm's
21:11:51evanwith who would we share this?
21:11:56evani mean, thats true of most of common
21:12:00evanand in that, it is in a library.
21:12:02evanthe kernel.
21:13:08dgtizedI dunno, maybe jruby and rbx could share that code
21:13:22dgtizedand for that matter
21:13:36dgtizedif there are bugs in the MRI version you could drop in the extension version
21:15:04evannah.
21:15:10evanthose are all interesting scenarios
21:15:21evanbut they all have a lot of circumstances
21:15:31evanif someone expresses a real interest in that, we'll discuss it.
21:15:35dgtizedk
21:15:43evani'd rather not complicate things now for that
21:16:43dgtizedthe one other thing, is that if it was using FFI, that would be a good test case to optimize FFI to work with across more then one platform
21:16:59evantrue enough
21:17:00dgtizedsorry more then one vm
21:17:05evanright
21:17:17binary42dbussink: rbx spec/spec.rb
21:17:25evanthat code is usable outside of rubinius as is
21:17:33evanso there is nothing that prevents people from trying that now.
21:17:44evanso long as they have FFI
21:17:56evanprobably need to do a little API sync with ruby-ffi first
21:18:15dgtizedyea, rbx still doesn't have the callback support does it?
21:18:22dgtizedand ruby-ffi changed some names too didn't it?
21:18:28evanyeah
21:18:32evanthey're out of sync
21:18:39evansomeone needs to sit down and sort it all out.
21:19:25dgtizedcurrently our ffi support is baked directly in right? Is it possible we could actually use the gem version and link up with capi?
21:19:34dgtizedand I realize that might be stupid for performance reasons
21:20:29evanit's important that it's tightly integrated
21:20:33evanthat being said
21:20:39evanthere are parts that ruby-ffi and rbx should share
21:20:41evanruby code wise
21:20:48evandoesn't have to be via a gem or anything
21:20:55evancould just be a set of .rb files that are copied into rbx
21:21:11evanso ruby-ffi and rbx would provide unique impls to build on
21:21:18evanand the rest would be provided by the .rb files they share.
21:21:33evanthere are a bunch of APIs in ruby-ffi I think need to go.
21:21:42evanthats one issue
21:24:43slavahi evan
21:24:48dgtizedlooks like for jruby it just loads the gem, but ignores a bunch of the libs in the gem for ones in jurby
21:24:48evanhi slavs
21:24:51dgtizedack jruby
21:25:12evandgtized: thats not surprising, wayne did both ruby-ffi and the jruby impl.
21:28:34evananyone use read_nonblock much?
21:30:36dbussinknot that i consciously know of :P
21:31:12evanit seems... funky.
21:31:21evanit sets the internal fd to O_NONBLOCK
21:31:24evanso
21:31:31evan@io.read_nonblock(5)
21:31:35evan@io.read(5)
21:31:41evanthe call to #read raises EAGAIN
21:31:45yakischlobayea its dumb
21:31:51evanbecause read_nonblock has changed the behavior of the @io fundementally.
21:32:10evani guess you can't really mix blocking and nonblocking reads
21:32:12evanthen.
21:34:18evanUG
21:34:20evanand it's inconsistent
21:34:25evan#read now raises EAGAIN
21:34:28evanbut #gets doesn't
21:34:35evanbecause #gets internally uses select() to detect data.
21:34:45yakischloba:p
21:36:18evanwhy exactly was read_nonblock added?
21:36:23evanwhats wrong with sysread?
21:36:32evanoh, right, sysread will still block
21:36:41evani guess people couldn't use IO.select + sysread?
22:15:34evanhm
22:15:49evani wonder if i should consider the fact that read_nonblock causes a future read to raise EAGAIN a feature or a bug.
22:16:54yakischlobaimo should set it back
22:17:05evanthats my take on it too.
22:17:20evanyakischloba: you might know
22:17:30evanwhat if i just call select() then read()
22:17:36evanis there a chance that read() might still block?
22:17:55evani guess if another thread happens to run between when the current thread runs select() and read()
22:18:20yakischlobaruby read() or system read()
22:18:22yakischloba?
22:18:29evansystem.
22:18:30evanread(2)
22:18:37evanand select(2)
22:19:27yakischlobai think thats the only way really
22:19:38yakischlobaa thread, that is
22:19:38evanwell, i can twiddle the O_NONBLOCK flag
22:19:43evanand twiddle it back after i do the read
22:20:39yakischlobawhat do you mean? you are considering using that behavior for rubinius?
22:20:51evani'm implementing IO#read_nonblock
22:20:54evanso i'm writing some specs
22:21:00evanand figuring out what behavior I want it to have.
22:21:20yakischlobaright
22:23:17yakischlobaso you're considering implementing what you and i consider to be the desirable behavior?
22:24:45evanwell, i'm implementing
22:24:49evanthats going to happen
22:24:55evanbut yeah, trying to figure out what the desired behavior is.
23:21:27evanhm, what should I write my ruby tip on this month...
23:30:41boyscoutFix IO#read_nonblock - 8f9c2c5 - Evan Phoenix
23:30:41boyscoutFlesh out IO#read_nonblock spec - 95b9384 - Evan Phoenix
23:30:51brixenevan: how to use IO well
23:31:00evanheh
23:32:09evanbrixen: hows it coming along there?
23:33:33brixenrunning specs
23:34:07brixenthere are so many moving parts scattered around
23:34:17brixenno tests
23:34:27brixenI don't even know how to write tests for this
23:34:29evanyeah, I know.
23:34:35brixenwhat C ext should I try building?
23:34:49brixenI need to try installing gems, gems w/ native exts
23:35:25evanrake is a good gem
23:35:25brixencrap, why is this hanging...
23:35:28evanto install
23:35:31brixenok, I'll do that
23:36:26brixenhrm, random hang, worked this time :/
23:37:28boyscoutCI: 95b9384 success. 3004 files, 11464 examples, 35591 expectations, 0 failures, 0 errors
23:37:45evanah crap
23:37:53evani'm not slowin' ya down by pushing commits am I?
23:39:27boyscoutRemove old assert. Fixes #82. - 7e7b917 - Evan Phoenix
23:40:31brixennope
23:40:35brixenI keep pulling
23:40:38brixenno conflicts yet! :)
23:40:55brixenI'm about to pull again
23:41:31evank
23:42:18boyscoutCI: 7e7b917 success. 3004 files, 11464 examples, 35591 expectations, 0 failures, 0 errors