Index

Show enters and exits. Hide enters and exits.

00:00:01evanwhy did you change size_to_type to return :char_array as it's default type?
00:00:07evanin kernel/platform/ffi.rb
00:00:09ctennisnothing was showing up on the channel
00:00:27ctennisI don't remember now
00:00:30ctennisSeems like it was necessary for something else
00:00:35evanit's not a valid change.
00:00:38evanneeds to be changed back
00:00:46ctennislemme take a look see here
00:00:47evanit's not a valid fix that is.
00:00:51dbussinkblegh, no .each yet in ffi.rb
00:01:23evanthen where is config_hash used...
00:01:30evanoh, ctennis added that too
00:01:32evanctennis: ?
00:01:47dbussinkevan: it's in a method that is probably used after bootstrap in complete
00:01:52dbussinkis complete
00:02:21evandbussink: you should be able to use Array#size and Array#[] though
00:02:26evanFFI.layout uses those
00:02:35evanand it's called quite early.
00:03:53Arjen_ leaves the room.
00:04:23dbussinkhmm, what is probably available for hash then
00:04:24dbussink?
00:04:32benburkert enters the room.
00:04:48evanwhy hash?
00:04:58evanHash#[] is available
00:04:59evanyeah
00:05:02dbussinkbecause RUBY_CONFIG is a hash
00:05:11dbussinkand i have to loop through it
00:05:20evanit's available
00:05:37ctennisevan: there was something broken at the time, and this change fixed it, though I can't seem to recall what it is now
00:05:48ctennisevan: but anyway, I can change it back..
00:05:53evanplease do
00:06:15dbussinkevan: but how can i loop through a hash in this case then? or is keys available?
00:06:25evandbussink: you can find out yourself
00:06:29evanlook in kernel/bootstrap/hash.rb
00:07:20dbussinkevan: doh :)
00:07:37evanyou might need to add keys to bootstrap/hash.rb
00:07:40evanthats very easy
00:08:07drbrainI love git:safe_push
00:08:31boyscout3 commits by Eric Hodel
00:08:32boyscout * Cleanup documentation.; 5fcdb7f
00:08:33boyscout * Import RDoc changes from trunk. Fixes some formatting problems in doc/vm; 8e2b607
00:08:34boyscout * Remove extra \; 51e5916
00:13:52dbussinkevan: hmm, how easy should it be?
00:14:23boyscout1 commit by Caleb Tennis
00:14:24boyscout * size_to_type should return :int as default; ed74e26
00:14:42evandbussink: relatively.
00:14:44evani'd think.
00:14:44ctennisevan: was there another issue? colloquy seems to only be giving me part of the details..
00:15:01evani was wondering where config_hash was used
00:15:22dbussinkevan: because i'm moving over keys to the bootstrap version, but that for example uses << on array
00:15:34ctennissocket.rb was where I first put it
00:15:35evanhm
00:15:45mae enters the room.
00:16:07dbussinkevan: although that looks like something that could be moved to array bootstrap
00:16:12evandbussink: use ary[ary.size] = val
00:16:19enebo enters the room.
00:16:20evaninstead of <<
00:16:25evanleave the core version
00:16:33evanjust add a basic version to bootstrap
00:17:38ctennisevan, would you prefer I get rid of config_hash and just make do in socket.rb ?
00:17:58evani think it's fine where it is
00:18:02evanjust curious what it was used for
00:18:17ctennisconvenience
00:18:23evanin socket.rb
00:18:27evanto get platform constants
00:18:29evani'm assuming.
00:18:30ctennisright
00:18:46ctennisI need to iterate over them and actually const_define them
00:18:53ctennisor const_set, or whatever it's called
00:24:06dbussinkevan: and we hit the next problem, no regexp available
00:24:20evanwhy do you need regexp?
00:25:03dbussinkevan: i think i can do this with sub strings too
00:25:09evanyou'll have to
00:25:34rubuildiusCaleb Tennis: ed74e2677; 4725 examples, 17259 expectations, 0 failures, 0 errors
00:25:35rubuildiusEric Hodel: 5fcdb7f91; 4725 examples, 17259 expectations, 0 failures, 0 errors
00:25:36dbussinkhmm, i see no sub string stuff in string bootstrap
00:25:55evanyeah
00:25:56dbussinkevan: problem is that the keys are something like rbx.platform.typedef.etc
00:26:02dbussinkand i need the etc part
00:26:45evanadd a simple String#substring to bootstrap
00:26:53ctennisso if I have 3 failures for bin/ci on my machine but there aren't any via rubuildius, is that an issue?
00:27:30evanif str.substring(0, 16) == "rbx.platform.typedef"
00:27:44evankey = str.substring(17, str.size)
00:31:55meisdave enters the room.
00:31:57KirinDave leaves the room.
00:33:32KirinDave enters the room.
00:34:28agile leaves the room.
00:35:50enebo leaves the room.
00:38:06brixenDefiler: did you perchance try using #ifdef for bignum so we can use mp_init_set_int on 32bit platforms?
00:48:54dbussinkevan: it is a problem that i changed bootstrap/kernel.rb:71 to read Unable to send #{meth} on #{self} instead of Unable to send #{meth} ?
00:49:06dbussinkbecause that made at least my life easier when debugging
00:51:53dbussinkok, moment of truth, building with the new ffi types
00:53:33lopex leaves the room.
00:55:20daesan enters the room.
00:56:21drbrainwhat is doc/compiler_audit.txt?
00:57:36perplexes leaves the room.
00:58:16perplexes enters the room.
01:03:09dbussinkbrixen: man, what a work for a single bugfix that seemed so insignificant ;)
01:04:25brixendbussink: heh, sounds like you are putting the smack-down on it :)
01:04:42dbussinkbrixen: going for the whole nine yards
01:04:54dbussinkbrixen: but it's looking good
01:05:05dbussinkbrixen: only some nasty bootstrap stuff that i had to go through
01:06:19dbussinkbrixen: i really like the integration with platform.conf, looks clean and where it belongs
01:06:19brixennice
01:06:32brixenyeah, makes a lot more sense
01:07:11b3b0p leaves the room.
01:07:43dbussinknow you can use :size_t, :uid_t, :dev_t and all that niceness in ffi's
01:08:08brixenthat is awesome, seriously
01:08:41brixenFFI, imo, is ideal for extending, so this is good
01:09:17dbussinkbrixen: yeah, all file stat specs are ok on linux now :)
01:09:25brixensweet
01:09:35twbray_ enters the room.
01:09:52brixenI can't wait till there are no more C bindings for stuff like db adapters, image libraries, etc
01:10:07brixenI've pulled out serious hair getting stuff like that running at times with rails
01:11:25boyscout6 commits by Dirkjan Bussink
01:11:26boyscout * Remove excludes for File#stats specs; c3988a4
01:11:27boyscout * Let the POSIX methods use the new FFI types; e80c737
01:11:28boyscout * Add FFI types loading; def9cae
01:11:29boyscout * Fix typo in FFI types generator; 5ac51e7
01:11:30boyscout * Added Hash and String bootstrap functionality for FFI types; d9a6618
01:11:31boyscout ...
01:11:39brixenwoot!
01:11:50brixencsotw
01:12:05brixenour tools are getting sharp
01:12:10dbussinkcsotw?
01:12:21brixenchange set of the week
01:12:30brixennominate on the ml
01:12:43brixensomething evan started a while back
01:13:10dbussinkhmm, anyone aware of the warnings on 64 bit?
01:13:21dbussinkIn function ‘rbs_uint_to_numeric’: warning: comparison is always false due to limited range of data type
01:13:28brixenyeah, just saw those today
01:13:55brixenwe should poke Defiler, he's the 64bit pro :)
01:14:29dbussinkit's bed time for me anyway
01:14:37dbussink2:14 am here atm
01:14:41brixenyikes
01:14:44brixenwell, thanks!
01:15:03dbussinki was just getting close, so then you just want to finish :)
01:15:09dbussinkrue knows all about that ;)
01:15:14brixenheh, yeah
01:16:00dbussinkthis could probably fix those ffi dirent issues we had too
01:16:27brixenlikely
01:16:35brixenwe can revisit eventually
01:16:44dbussink64 bit looks all ok too
01:16:47brixenstability is a big plus
01:16:51brixennice
01:16:58dbussinkso bed time
01:17:00dbussinknite!
01:17:05brixennite!
01:17:34dbussink leaves the room.
01:24:40rubuildiusDirkjan Bussink: c3988a4a9; 4728 examples, 17262 expectations, 0 failures, 0 errors
01:26:36evannice
01:32:30Yurik enters the room.
01:35:11jeyr enters the room.
01:36:04KirinDave leaves the room.
01:39:15antares_ enters the room.
01:39:41Yurikhey antares_
01:39:48antaresYurik, hey
01:44:10KirinDave enters the room.
01:44:21drbrainI am broken!
01:44:30evanheh
01:44:46drbraintries rebuild
01:45:07loincloth enters the room.
01:47:39nicksieger leaves the room.
01:47:45drbrainyay!
01:49:03boyscout1 commit by Eric Hodel
01:49:04boyscout * Remove weird files that obviously aren't documentation.; 3b57c18
01:52:05teXnomancy leaves the room.
01:52:41squeegy enters the room.
01:52:57meisdave leaves the room.
01:56:11nicksieger enters the room.
01:59:43rubuildiusEric Hodel: 3b57c1825; 4728 examples, 17262 expectations, 0 failures, 0 errors
02:00:23Defilerbrixen: We could use an ifdef, sure
02:00:39Defilerbrixen: ..but the version I wrote should be identical to set_int on a 32bit box
02:00:51Defilerbrixen: I just conditionalized the number of loops
02:01:14DefilerOnce those things that are uints are moved to defines, it will compile down to the same machine code
02:02:15DefilerWho changed rbs_uint_to_numeric? The new definition is retarded
02:03:12DefilerHrm.. well.. that is too strong a word.. just.. shortsighted
02:04:36evanDefiler: i fixed that
02:04:37evanme
02:04:39evanno it's not
02:04:44evanthe old way is broken
02:04:47DefilerI agree
02:04:57evanbecause C doesn't change bit patterns when you cast between signed and unsigned
02:05:08DefilerOh, no.. I wasn't talking about that part.. that fix is totally right
02:05:17evanoh
02:05:18evanwhich part
02:05:21DefilerIt is the FIXNUM_MAX thing.
02:05:31evanthats what i changed.
02:05:48DefilerI am going to wrap it in an #if, since if FIXNUM_WIDTH is greater than the size of an unsigned int, it doesn't need to check
02:06:46evanit just always makse a bignum then?
02:07:11DefilerIt always fits in a Fixnum if FIXNUM_WIDTH >= (sizeof(unsigned int) * 8)
02:07:25evanoh, i see.
02:07:27evangotcha
02:07:34brixenDefiler: well, the cost of creating a bignum is about the same as the cost of addition
02:07:40brixenwhich is really costly
02:07:51DefilerYeah, libtommath is wicked badass
02:07:54brixenand on 32bit, it will do that internal loop 1/2 as much
02:08:02brixenwhen creating a Bignum
02:08:51brixenDefiler: bignum + bignum is about 2x faster than bignum + fixnum, so I was hoping to improve that a bit
02:09:12wycatsI'm gonna try and tackle Zlib::Deflate tonite
02:10:53brixenDefiler: or am I missing count = sizeof(unsigned long) * 2?
02:11:11twbray_ leaves the room.
02:11:53Defilerbrixen: 'missing'?
02:12:08macournoyer enters the room.
02:12:16brixenwell, I always get confused, what is sizeof(long) on 32bit?
02:12:22Defiler4
02:12:28brixenok, we're all good then ;)
02:12:29Defiler(on UNIX)
02:13:12Yurik leaves the room.
02:15:00perplexes leaves the room.
02:15:52DefilerIs it just me, or does cpu_instructions.c take way longer to compile these days?
02:16:43smtlaissezfaire enters the room.
02:16:48evanit's you.
02:16:56evanit changes as I work on it
02:17:01evanbecause the inlining changes.
02:18:12perplexes enters the room.
02:19:12DefilerOK. Just checking. :)
02:19:41perplexes leaves the room.
02:21:08DefilerIs ci running clean for people?
02:21:20DefilerI got some weird stuff when I rebased just a moment ago
02:22:02brixenI think drbrain mentioned some failures, but then everything was ok. perhaps rebuild?
02:22:19Defilerk
02:22:23brixenI'm off in my own world ;)
02:22:30brixenrubuildius seems happy
02:27:23Defilergit reset --hard <commit has prior to thing I want to kill> is the way to uncommit something, right?
02:27:29Defilerhas = hash
02:29:42evanyeah
02:29:54brixendestructively
02:30:10brixenif you want to kill softly --soft :P
02:30:42obvio171 enters the room.
02:33:57wycatskill --me --softly
02:34:28jbarnette leaves the room.
02:36:56wycatsmake that kill me --softly
02:41:03agile enters the room.
02:45:54VVSiz_ enters the room.
02:47:02KirinDave leaves the room.
02:47:04obvio leaves the room.
02:49:32_mutle enters the room.
02:49:48mutle leaves the room.
02:52:39gdagley leaves the room.
02:54:09twbray enters the room.
02:54:41drbrainbrixen: `rake rebuild` fixed it for me
02:56:53brixencool
02:58:10Defilerevan: Is there a standard-ish built-in #define for 64-bit-ness?
02:58:42evanlike
02:58:51evanto detect you're on a 64bit platform?
02:58:54DefilerYeah
02:59:02evannot that I know of
02:59:04twbray leaves the room.
02:59:16DefilerThat sucks. I wish sizeof was defined at preprocessor time
02:59:37evanwe have a config #define for it
02:59:55DefilerOh yeah
03:00:06evanCONFIG_WORDSIZE
03:00:16evan#if CONFIG_WORDSIZE == 64
03:03:09twbray enters the room.
03:03:16rubyconsumer enters the room.
03:03:53VVSiz leaves the room.
03:04:55boyscout1 commit by Wilson Bilkovich
03:04:56boyscout * Don't check the value of a uint on 64bit systems; it always fits in a Fixnum; baafab1
03:05:21DefilerNot as clean as I want it, but all of the tricks to get at sizeof-like things at prepro time are worse =(
03:06:57DefilerAlso, this is the best post on usenet http://groups.google.com/group/comp.std.c/msg/4852afc61a060d89?dmode=source
03:09:27binary42 enters the room.
03:11:11drbrainDefiler: definitely
03:11:47DefilerWhen you get slammed that hard, it is time to change your email address and never look bac
03:11:50Defilerk
03:12:23brixenDir.glob is our canary in a coalmine
03:12:33brixenI had it at 45 sec, down from 95
03:12:39brixennow it's back to 68
03:12:42KirinDave enters the room.
03:12:42brixendangit
03:13:11brixenthat was just from changing some math ops, not the dir code
03:13:50DefilerI consider that a strong endorsement of our development plan
03:14:20DefilerWe are going to have a smooth, polished stone when we are done :)
03:14:29rubuildiusWilson Bilkovich: baafab120; 4728 examples, 17262 expectations, 0 failures, 0 errors
03:14:50smtlaissezfaire leaves the room.
03:15:13brixenhmm, my benches run the same, wtf
03:18:01meisdave enters the room.
03:18:53brixenand now so does the glob bench
03:19:17DefilerAny chance you had some disk-intensive thing running in the background at the time?
03:19:23DefilerAlso, is this bench somewhere where I can run it?
03:19:45smtlaissezfaire enters the room.
03:19:47brixenI'm pretty sure I didn't have anything else running
03:19:57brixenI just looked byt, it was 68 sec
03:19:58brixenwho knows
03:20:27brixenDefiler: http://pastie.org/151130
03:20:47brixenI'm only 3sec off the bottom now
03:20:51brixen3sec longer
03:21:26brixenoh, nm, that run had profiler running
03:22:35brixennot th 68sec one, the 47sec one
03:22:48brixenit's so nice to have a fast profiler
03:23:10brixenso, yeah, without profiling it's 44.3
03:24:44antares_ leaves the room.
03:24:50wycats"must have been before my time"
03:24:54wycatsthat's almost an XKCD
03:25:25DefilerI get 55.8
03:27:38DefilerThe 'stat and Float fixes' are local to your machine, right?
03:27:47brixenno, one sec..
03:28:18brixenI don't remember the rev of the first set, but the second as after 359166e7
03:28:43DefilerMaybe I am in dev mode or something
03:29:16brixenthe first set I ran probably here: be478db9a1
03:29:29brixenbefore the first attempt at the stat fixes :P
03:30:37brixenDefiler: do you feel like writing the for loop compiler plugin? it'd sure be nice
03:30:38be9 enters the room.
03:32:32DefilerI can give it a shot, yeah. Feel like writing up a description or specs of how it should work?
03:33:55DefilerOK, that's better. 35 seconds without dev mode
03:34:03brixenahh, yeah
03:34:15brixenso, for(init, cond, loop) { }
03:34:32brixenfor(i = 0; i < size; i += 1) { }
03:35:04brixentranslates to: i = 0; while i < size do ... i+=1 end
03:35:17DefilerSounds good
03:35:41DefilerHopefully the grammar doesn't strip away empty/useless semicolons
03:35:52brixenyeah, wasn't sure about that
03:35:55DefilerOr else it will be hard to make for(i = 0;;;) work
03:36:07brixenevan said it would be pretty easy
03:36:09skaar leaves the room.
03:36:12DefilerYeah, I agree
03:36:30Defilersimilar transformations already happen for 'for x in zarg'
03:36:32brixenwell, we don't necessarily have to support deviant versions like for(;;)
03:36:38brixennice
03:36:50brixenwe have loop equiv to for(;;)
03:36:56headius enters the room.
03:37:11brixenit's just a lot nicer than using while, compact and simple
03:37:25DefilerYeah, it is a good construct
03:37:40brixenI remember when I was first learning C, a friend *hated* the for loop
03:37:46brixen(we both came from apple basic)
03:38:00brixenit just didn't make sense to him
03:38:03brixenheh
03:38:10brixenhe was still thinking in line numbers
03:38:47brixeninteresting experience in cognitive dissonance
03:39:18DefilerSo, have you figured out where the bottleneck is on Dir glob?
03:39:23DefilerIt is surprisingly slow. Heh
03:42:01drbrainDefiler: it's shittily implemented, for starters
03:42:02KirinDave leaves the room.
03:43:01DefilerWell, that's a pretty good reason, yeah
03:43:12headiusevening
03:43:18drbrainhow fast is File.fnmatch?
03:45:57brixendrbrain: I haven't benched it, but wouldn't be hard to
03:46:35brixenFile::Stat was taking a lot of time, because the primitive was doing a lot of extra work
03:46:48brixenthe new one is about 3x faster and close to mri
03:47:06brixenbut, File.file? or File.directory? is still slow
03:47:17DefilerDon't forget File.door? :)
03:47:22brixenheh
03:48:25drbrainDir.glob seems to spend all it's time in #fnmatch
03:48:29drbrainerr, .fnmatch
03:48:56brixendrbrain: you profiled it?
03:49:13brixenwhen I profile it, still the majority of time is in File::Stat#initialize
03:49:33drbrainhttp://rafb.net/p/kk2oTH83.html
03:49:42drbrainthat should be the equivalent amount of work
03:52:18drbrainyeah, so Dir.glob isn't the problem, fnmatch is
03:53:25DefilerOuch, yeah.. fnmatch is giga-slow
03:53:45brixenheh, yeah
03:54:44brixenthat's what I get profiling that bench: http://pastie.org/151354
03:55:19DefilerMake sure you pass a number, btw.. ARGV.shift.to_i doesn't do anything useful with no arguments. Heh
03:55:58brixenyeah, I changed it to use ENV
03:56:01drbrainoh, yeah
03:56:23DefilerThe first time I ran it I was all "omg fnmatch is badass on rubinius"
03:56:35drbrainan obvious improvement would be to pull out the static subs Hash
03:59:10DefilerIs this one of those scenarios where the platform fnmatch has totally different semantics from the matzruby one?
03:59:58DefilerBecause this seems like an ffi or primitive waiting to happen, at first glance
04:02:08brixenDefiler: http://pastie.org/151359
04:02:21brixenwhen I wrote the first fnmatch, I didn't feel like porting that
04:02:33Defilerjaezus
04:03:16drbrainfnmatch needs to be rewritten to not use regexps
04:03:19brixenbut then the number of regexp transforms seems to have grown a bunch
04:03:24Defiler"CompareImpl: too large len" is a sweet error message
04:03:45drbrainDefiler: "block should not cheat" is the best error message
04:03:51brixenwe should probably write a simple parser for it ala Sprintf one
04:03:52DefilerI concur, doctor
04:05:01smtlaissezfaire leaves the room.
04:05:15brixenDefiler: also, the landscape has changed, a year ago regexp was orders of magnitude faster than char by char testing
04:05:18DefilerSo, does matzruby implement this in the pasted manner because it behaves differently from the UNIX version?
04:05:23DefilerOr because they want it to work the same way everywhere?
04:05:40brixenprobably both, I don't recall the particulars
04:06:02DefilerIt seems like we should make an effort to use the platform version if it is possible somewhere
04:06:22brixenof course, shell has no **
04:06:34brixenunix fnmatch implements the globbing rules of the shell
04:06:47DefilerOh yeah. I remember this discussion. Evil.
04:06:57brixenyeah
04:07:43brixenand windows is just a giant glob, so yeah, x-platform is a plus
04:08:07drbrainfnmatch ain't that big
04:08:41drbrainit's, like, 1/3 the size of Dir.glob
04:09:06brixenDefiler: and jruby's port of it is a lot nicer to look at
04:09:58brixendrbrain: feel like knocking it out, since Dir.glob is probably still fresh in your mind? ;)
04:10:21drbrainDir.glob was forgotten as soon as I finished it
04:10:23brixencall it the 'matz zone'
04:10:29brixenheh
04:11:42drbrainthere was a moment of "fucking linked lists" and then I was done
04:11:47drbrainthat's all I remember
04:12:00loincloth leaves the room.
04:15:41smtlaissezfaire enters the room.
04:16:54headiusmod_rubinius eh?
04:17:10drbrainheadius: Dir.glob
04:17:19headiusfun on a bun
04:17:48headiuswhat about it
04:19:38ezmobius leaves the room.
04:19:49drbrainbrixen wants me to do my Dir.glob magic with File.fnmatch
04:19:59headiusyou get all the fun jobs
04:20:24headiuswe went through a half-dozen impls just during my time on the project
04:20:44headiusI think the straight-up port we have now was ola's work, with a fairly deep refactoring by tom
04:21:16headiuswe still run into problems on windows because MRI totally changes its behavior in several places for windows
04:21:29evanis getting his NPR on
04:21:43drbrainis getting his rm on
04:22:35drbrainString#% is my favorite templating language
04:22:49femtowin enters the room.
04:23:59boyscout1 commit by Eric Hodel
04:24:01boyscout * Clean up after converting from textile; 52733a2
04:25:56drbrainwhat's doc/block_arg_spec.rb ?
04:27:45KirinDave enters the room.
04:30:03twbray leaves the room.
04:34:29rubuildiusEric Hodel: 52733a276; 4728 examples, 17262 expectations, 0 failures, 0 errors
04:36:44brixenI think that was a test evan wrote when working on it way back
04:36:51evanyeah
04:36:52evana test
04:36:56evannuke thy file!
04:40:21fork enters the room.
04:42:02drbrainnuked
04:42:57_ADS enters the room.
04:43:22dewd leaves the room.
04:47:05djwhitt enters the room.
04:48:37headius leaves the room.
04:49:50_ADS enters the room.
04:52:01djwhitt enters the room.
04:55:52djwhitt enters the room.
04:56:01djwhitt leaves the room.
04:56:40djwhitt enters the room.
04:57:35jtoy enters the room.
04:59:17evanhas a crazy idea.
04:59:31agardinerdo tell!
04:59:36evanyou'll like it
04:59:37evan:D
04:59:43agardinercrazy ideas are great! :-D
04:59:48evanso, i'm working on implementing the macro ops stuff
04:59:57agardineroooh!!! neat
05:00:04evani'm doing it in a different way that that paper though
05:00:14evani'm not implementing a code cache
05:00:48evanevery method is getting it's own set of blocks of code
05:00:53evanthat simplifies things a bit
05:01:13agardinerevery method == every CM?
05:01:22evanso, the other thing that paper talks about is that you can't inline operations that contain function calls
05:01:27evanyeah method == CM
05:01:31agardinerright
05:01:35evanso
05:01:42evanI /think/ i've found a way around that.
05:01:43evan:)
05:01:45agardinerbecause it breaks the flow
05:01:50agardinerwtf?
05:01:51evanno actually
05:02:19evanyou can't inline operations taht call functions because assembly code to call functions is typically position dependent
05:02:34evanin that, the call is relative to the address of the instruction
05:02:42evanthats how PIC does it.
05:02:53agardinerright, yeah - branch +/-
05:03:08evanso if you copy that code, the offset from the instruction address is wrong
05:03:13boyscout2 commits by Eric Hodel
05:03:14boyscout * RDocify (but not hooked into anything yet).; edc440c
05:03:15boyscout * You are not documentation, be gone from my realm\!; 11c51bd
05:03:28agardineri think i see where you are going...
05:03:31evansooo, here's my idea.
05:03:44evanno instructions do direct function calls.
05:04:08evanany function that needs to be called from a instruction are instead accessed via a proxy struct
05:04:14evanwhich contains a function poiters
05:04:15evanso
05:04:19evancpu_open_module(...)
05:04:20evanbecomes
05:04:24evanproxy->open_module(...)
05:04:42evanie, I'm by hand making the code completely position independent
05:04:43agardiner...clever!
05:04:53evanproxy is a local to all this code
05:05:00evanso it's just access off the stack
05:05:09evanso everything works great
05:05:14agardineran extra indirection, but should easily be paid for by the savings
05:05:19evanEXACTLY.
05:05:20doshea leaves the room.
05:05:30agardinerfuck, that sounds really clever
05:05:35drbraincoughs "hopefully"
05:05:39evanwell
05:05:41agardineri wonder if it works... :-)
05:05:50macournoyer leaves the room.
05:06:02evanthe function indirection costs almost nothing compared to a normal function call
05:06:13evanbecause the cpu is so memory bound
05:06:27agardineryeah... and indirection is great for flexibility...
05:06:29DefilerThat will make macro fusion super easy, right?
05:06:41evanas long as the memory stays in the cache, the one extra instruction is immeasuarable
05:07:10evanagardiner: right! so this actually fits in with eventually putting a Task into debug mode
05:07:15boyscout2 commits by oleg dashevskii
05:07:17boyscout * Merge branch 'master' of git@git.rubini.us:code; a4d034c
05:07:17boyscout * Made a real precedence_spec.; 83a3726
05:07:26evanby swapping out a struct full of function pointers for debug versions
05:07:32agardineryeah... that's what i was thinking! :-P
05:09:21agardineralthough... opcode fusion is probably really bad for debugging!
05:09:36agardinerthere are no longer individual opcodes to step over
05:10:08evanright
05:10:22evanwell, we'll just build in the ability to do the old behavior
05:10:24agardinerbut that can probably be managed by enabling/disabling fusion during bytecode compilation
05:10:26evanso that there is no fusion
05:10:55agardinerso if you want to debug a CM, you just recompile the bytecodes without fusion
05:11:37evanyep
05:11:56agardinerand then the proxy stuff still exists in the opcodes anyway, so you can leverage that to insert debug hooks
05:12:01evani'm using the autorelease MemoryPointer support to store the compiled code in a stable address too
05:12:02agardinercool!
05:12:47evanhm
05:12:54evani think i'm going to have activate_method to be a primitive
05:12:59noclue123 enters the room.
05:13:30agardineroh?
05:13:39evanyeah
05:13:40djwhitt leaves the room.
05:13:49evanit's kinda silly as an instruction
05:14:30djwhitt enters the room.
05:16:18agardineryeah, especially as its never called except via asm
05:16:27evanyea
05:16:28rueWell, this does not bode well for my sleep schedule
05:16:36evanwhat doesn't?
05:16:37evanyou sleepy?
05:16:42rueJust slept from 4 to now :P
05:16:46evanha!
05:17:00agardinergeez, we're gonna need a real good clean out of the opcodes before 1.0... starting to build up a bit of cruft
05:17:04rueOn the upside, I will be here to keep dbussink company
05:17:15ruehttp://journal.kittensoft.org/2008/2/13/platform-abstraction-musings
05:17:23agardinerrue: you started full-time with EY yet?
05:17:25rueI posted my overview of the platform stuff
05:17:31rueagardiner: Yep, yesterday officially
05:17:37agardinerwoot!
05:17:57rubyconsumer leaves the room.
05:18:22rueevan: Dunno if there is anything new in that but I tried to compile it quick
05:19:19evancool
05:19:52evanagardiner: yeah, i think that i'm going to prune out the send_* instructions too
05:20:11evangetting rid of the 'optimized' ones that have a fixed arg count
05:20:29agardineri was going to go through and put asserts into deprecated opcodes...
05:20:36rubuildiusoleg dashevskii: a4d034cdb; 4766 examples, 17422 expectations, 0 failures, 0 errors
05:20:37rubuildiusEric Hodel: edc440c85; 4728 examples, 17262 expectations, 0 failures, 0 errors
05:20:45agardineri think i saw you do that with one recently?
05:20:57agardineranyway, its a good way to be sure an opcode is deprecated
05:21:02evanyeah
05:21:12evanjust make sure the compiler isn't emitting them
05:21:17evanand the stables don't call them
05:21:23evanthen we'll add sassert() to them
05:21:27evanfor a week
05:21:30evanthen we should just nuke them.
05:21:52agardinerhave to replace them with something though, as a filler
05:22:04agardinerotherwise the bytecode changes
05:22:13evantrue
05:22:18evannoop perhaps?
05:22:25evani guess asserts is fine
05:22:31evanuntil we can nicely push out a bytecode change
05:22:47agardinerthat's gonna be tricky...
05:22:59agardinerprobably have to do it in two passes
05:23:36michael enters the room.
05:24:19evanyeah
05:25:40twshelton leaves the room.
05:26:01rueEating breakfast, then I will finish up the sort and finish wsgi
05:26:38evanwow
05:26:43evanyou are completely off time wise.
05:27:26evanHAWT
05:27:26agardineron eastern european time...!
05:27:28evanit's working!
05:27:36rueI will see how this works for a few days ;)
05:27:41agardiner^5s evan
05:27:45evani've almost got bootstrap/archive.rbc running
05:27:50DefilerWe need full time-zone coverage in IRC so that we can always be here to talk to trolls. :)
05:27:58evanfusion has turned it from 6 ops to 2
05:28:51agardinertwo? wtf! why isn't it 1? :-D
05:29:13boyscout1 commit by oleg dashevskii
05:29:14boyscout * Remove tests that have been superseded by precedence_spec.; 5c75721
05:29:15evanheh
05:32:17evancrap
05:32:32agardineroh-oh...
05:32:51evanok, i'm going to take a short break.
05:33:13agardinerk
05:39:31rubuildiusoleg dashevskii: 5c75721d5; 4764 examples, 17420 expectations, 0 failures, 0 errors
05:40:12tmpkSay, is the mark-sweep in shotgun marking objects directly?
05:40:17tmpkI.e.: iobj->Marked = TRUE;
05:43:46agardineri don't belive so
05:44:16agardinermarks are kept separate from the object so that you can fork at little cost
05:44:46tmpkYeah, which is why I'm a bit confused.
05:44:56tmpkvoid mark_sweep_clear_mark(STATE, OBJECT iobj) { iobj->Marked = FALSE;
05:44:58tmpk}
05:45:54tmpkI'm wondering how well CoW will work with a compacting mature space.
05:46:21tmpkI guess it depends how the compacting is done.
05:47:55agardinermark_sweep_clear_mark is not called on most object's
05:48:09agardinerlooks like it is used for contexts or something
05:48:27agardineralso, i'm not sure if the mature space is compacting at present
05:50:59tmpkThat would be an interesting problem: try and minimize movement while also minimizing fragmentation.
05:51:17tmpkCan you tell me a bit about contexts?
05:52:06agardinersure
05:52:12agardinerwhat do you want to know?
05:53:47daesan leaves the room.
05:55:00tmpkMy understanding is they're used to implement some form of continuations?
05:55:20agardinerwell, continuations are just easy to do with contexts
05:55:52agardinerbasically, they are like a stack frame, but they are actually first class objects stored on the heap
05:56:02agardinerand each context has a pointer back to its caller
05:56:45tmpkCan I copy it by value?
05:56:48agardinerso continuations are easy - just save the context at the point you want to be able to resume later
05:56:49tizianobis enters the room.
05:56:58tmpkAh, okay.
05:57:26tmpkWhere in the source tree should I dig if I want to look at how they're implemented?
05:57:31agardinercontexts have a dup method
05:57:32defunkt enters the room.
05:57:52agardinerwell, contexts are partly in Ruby and partly in C
05:58:43agardinerthe ruby side is in kernel/bootstrap/context.rb and kernel/core/context.rb
05:59:02agardinerin the bootstrap file, you'll see a number of primitive calls
05:59:22agardinerthe code for the primitives is in shotgun/lib/primitives.rb
05:59:46agardinerthis in turn will call various C functions
06:00:35agardinerthis will lead you pretty deep into shotgun
06:00:58tongueroo leaves the room.
06:01:02rueMan, we are *close* to 5k
06:01:32agardinernah, still a coupla hundred off
06:01:43agardinerprobably take a week
06:02:00femtowin leaves the room.
06:02:36smtlaissezfaire leaves the room.
06:02:42tmpkAh, primitives.rb is C embedded in Ruby?
06:02:58tmpkThanks, I'll go digging. :)
06:02:58agardineryeah
06:03:27agardinernp! :-)
06:03:55femtowin enters the room.
06:05:09noclue123 leaves the room.
06:08:16tmpkRubinius has a monomorphic inline cache?
06:08:37agardinerit used to
06:08:42agardinernow it has something better
06:08:52tmpkDo tell. :D
06:09:21agardinerThe cache has been replaced by the notion of a SendSite
06:10:00agardinerDifferent sendsite implementations are used for different types of method calls
06:10:42agardinera basic sendsite for normal method calls implements a monomorphic cache
06:10:57agardinerbut there are other sendsites optimised for primitive calls and ffi calls
06:11:38cjheath_ leaves the room.
06:11:44agardinerand plans for other sendsite variations in the works
06:16:09RyanTM leaves the room.
06:16:31tmpkAre all cached methods kept in one place?
06:17:13tizianobis leaves the room.
06:17:28tmpkIt looks like the GC is running through an array of them.
06:17:53agardinerwell, sendsites hold a reference to a Selector, which in turn points to a method
06:18:05agardinerand all Selectors are kept in an array
06:18:33twbray enters the room.
06:18:53tmpkWhy the extra indirection?
06:19:07agardinermethods can be overridden
06:19:28agardinerso send sites point to a selector, and the selector is updated when a new method overrides an old one
06:19:42agardinerthat way, all the send sites don't need to be flushed
06:19:50tmpkAh, got it.
06:20:23agardinerSelectors also keep references to the sendsites that reference them
06:20:34agardinerso you can find out every place a method is called from
06:20:41agardinerwhich is pretty neat
06:20:48tmpkDamn, I want that at work.
06:20:53agardinerhehe
06:22:10tmpkWell, cross fingers that by this time next year I can. o.o-b
06:26:34brixenagardiner: do you think super vs super(a) would be faster?
06:27:00brixenagardiner: since I won't be passing anything different than was passed to the method
06:27:19brixeni.e. would it result in less stack manipulation?
06:28:51twbray leaves the room.
06:28:55michael leaves the room.
06:28:56agardinerbrixen: not certain, but i don't think it will make a difference
06:29:02brixenok
06:29:12agardinerall super calls ultimately pass through the same dispatch logic
06:29:35brixenright, curious what happens before the ultimate ;)
06:30:10brixenI can bench it, just thought you might know
06:30:19agardinerdid you check the bytecode for the two different calls?
06:30:35agardinerthat should indicate whether there is anything extra going on
06:30:35brixenyeah
06:30:40cjheath enters the room.
06:31:14brixenthe diff is zsuper vs e.g. [:super, [:array, [:lvar, :a, 0]]]
06:31:39brixenbut the asm looks the same
06:31:54agardineryeah, i think zsuper and super are normalized in the compiler
06:32:04agardinerso if the asm is the same, there's no diff
06:32:05brixenyeah, makes sense
06:34:13defunkt leaves the room.
06:35:38defunkt enters the room.
06:38:03rueHuh, it actually looks like it was right
06:38:19rueAn actual reduction from ~45s to 0.2s o.O
06:38:44brixenrue: that's awesome!
06:39:00agardinerwow! nice work
06:39:10kofno_away leaves the room.
06:39:11brixenit was taking 18sec to Dir[] specs, 13 of that was sort
06:39:37be9has just succeeded to run "rake distclean rebuild" with rubinius. rake can be turned self-hosted :)
06:39:42agardiner> two orders of magnitude!
06:39:53brixenbe9: nice!
06:40:07agardinerbe9: awesome!
06:40:14agardinerthings are really rolling along...
06:40:18be9brixen: rake distclean is VERY slow though. maybe due this stuff with Dir[]
06:40:36brixenyeah, likely
06:43:10be9btw how profiling can be done in rubinius?
06:44:04brixenbe9: shotgun/rubinius -rprofile <script>
06:44:07brixenis one way
06:44:08agardinergotta run... cu l8r
06:44:12brixenagardiner: later
06:44:14be9brixen: ok
06:44:22agardiner leaves the room.
06:45:42jbarnette enters the room.
06:50:53matrixise leaves the room.
07:09:43rueHmm, I wonder if rbx can manage this
07:10:21ruestrings = ('aaaaaaaaaaaaaaaaaaaa'..'zzzzzzzzzzzzzzzzzzzzz').to_a
07:11:14meisdave leaves the room.
07:13:57be9rue: MRI isn't specifically good at this
07:14:25rueI want to see a bit how the VM holds up
07:14:48rueAt this point we are sorting in-place anyway
07:16:27twbray enters the room.
07:22:51benburkert leaves the room.
07:27:58jtoy leaves the room.
07:30:46brixenrue: in mri, you can do 0xffff_ffff << 0xffff_ffff
07:30:52brixenI don't recommend it, but you can
07:31:06brixenwe don't allow the second arg to be a bignum
07:32:52aotearoa enters the room.
07:35:19be9hmm, ran "rake distclean" under rubinius -rprofile, http://pastie.caboo.se/151421
07:35:40be9wassup with String#[]?
07:43:37brixenbe9: it needs work
07:43:55brixenbe9: we have a move_bytes primitive on ByteArray that is fairly new
07:44:02brixenwe need to use it
07:44:13brixenall of String needs review and opts
07:45:02brixenString is about 25% of that profile
07:45:20be9so, the stats are not cumulative, as I see
07:45:24brixenin just the top 6 slots
07:45:34brixenbe9: the profile?
07:45:43brixenit's a sampling profile, so statistical
07:46:03be9i see
07:48:56be9wonder where these 10% are spent in String#[]
07:51:42brixendepends on the arguments to it
07:51:49brixenString#[] is quite the method
07:52:18brixen#substring is pretty high in the profile
07:52:51brixenso I'd guess a lot of [n,m] or [n..m]
07:53:48be9yeah, there're no calls to subpattern seen
07:55:22be9now [] is nearly as expensive as gsub - what a nonsense
07:56:59lstoll enters the room.
07:59:27evanbe9: running -rprofile during distclean is odd
07:59:34evani'm not sure what you're profiling there
07:59:39evani guess compiling kernel/
08:01:07scooprI'm guessing his profiling rbx running rake more than anything
08:01:28evanhe's running rake via rbx?!
08:01:30michael enters the room.
08:01:33brixenyeah
08:01:37d2dchat leaves the room.
08:01:41brixenmost of the work is in the compiler though
08:01:44evanooh
08:01:45KirinDave leaves the room.
08:01:48evanso i see.
08:01:48scoopr083936 * be9 has just succeeded to run "rake distclean rebuild" with rubinius. rake can be turned self-hosted :)
08:01:51evanwell
08:01:51brixenI guess it would be hard to profile rake
08:02:05evanhis profile would just be the work rake did
08:02:46brixenevan: so all the Compiler:: stuff is compiling rake then?
08:03:01evanlikely
08:03:06brixenmust be, it subprocesses the commands
08:03:07evanor the stuff in rakelib/
08:03:07brixenyeah
08:03:39be9yeah, that's it
08:04:13evanrun with -ps too
08:04:26evani'm curious what the selector distribution is.
08:05:06brixenwe have such fun tools now!
08:05:16be9evan: will do now
08:06:33evanbrixen: :D
08:06:54evanso, Squeak has a MessageTally class that is basically the same as our Sampler
08:06:55evanyou do
08:07:02jtoy enters the room.
08:07:15evanMessageTally spyOn [ run alot: 10000 ]
08:07:27evanand it outputs some stats on what the block did.
08:08:33brixenhmm, that's nice
08:08:46brixenI wonder how we could do that
08:08:55evanexactly the same
08:08:59brixenjust add a method to Sampler I suppose
08:08:59evanwe'd have to restrict it
08:09:14evanso that we're only spying on one block at a time
08:09:19evansince the Sampler is global
08:09:45brixenbut we can reset the sampler from ruby, I thought
08:09:55evansure
08:10:07evanbut you can't have 2 Thread's running spy_on at the same time
08:10:13evanbecause the results will mix
08:10:17brixenah right
08:10:18be9evan: only output selectors count, 1609
08:10:28evanbe9: could you pastie the other output?
08:11:04be9evan: http://pastie.caboo.se/151426
08:11:41evanone thing the Squeak sampler does that I need to add is it adds if a primitive is running
08:11:48evanthat makes the sampler output more clear
08:11:58evanright now, if a primitive runs a lot
08:12:13evanthen the person that called the primitive shows up as the busy one
08:12:14evannot the primitive
08:12:30jbarnette leaves the room.
08:12:55brixenevan: oh, I was going to ask you about that
08:13:00fork leaves the room.
08:13:03brixenwhen I ran it with the math ops
08:13:05be9evan: could the cumulative stats be collected just as gprof does?
08:13:13brixenI didn't get the method calling the primitive
08:13:37brixenevan: look at line 15 of core/sampler.rb
08:13:40brixenI got that message
08:13:43evanbe9: cumulative in what way?
08:14:10evanbrixen: huh. interesing.
08:14:37evanbrixen: could have happened while the MethodContext was being initialized is all
08:14:42be9evan: you ever saw gprof's output? there's a plain profile and a cumulative one
08:14:54evanyeah
08:14:54michael leaves the room.
08:14:58evanwe can do all that
08:15:01evanwe have all the data
08:15:09evansomeone just needs to code it in core/sampler.rb
08:15:28be9evan: ok :) cumulatives are great in finding bottlenecks
08:18:06_ADS leaves the room.
08:18:43brixenhah, specs are so bomb
08:19:20thehcdreamer enters the room.
08:19:59pietia enters the room.
08:23:58aotearoa leaves the room.
08:26:51aotearoa enters the room.
08:33:29GMFlash leaves the room.
08:36:26lstoll leaves the room.
08:50:18octopod enters the room.
08:52:09boyscout2 commits by Brian Ford
08:52:10boyscout * More numeric cleanup. Added Bignum comparison primitives.; d57c464
08:52:11boyscout * Reworked Fixnum, Bignum arithmetic primitives.; f7ff8d7
08:52:19dbussink enters the room.
08:52:33brixenmorgen dbussink :)
08:52:50dbussinkbrixen: morning
08:52:52dbussinkbrixen: still up?
08:53:02be9dbussink: morning
08:53:05brixenheh, for a bit
08:54:02rueMorning
08:54:27dbussinkwow, 3 mornings for me :P
08:59:42dbussinkbrixen: any luck on speeding up fixnum / bignum?
08:59:48w1rele55 leaves the room.
09:00:50w1rele55 enters the room.
09:01:16_mutle leaves the room.
09:03:19brixendbussink: yeah, indeed
09:03:52brixendbussink: one sec, I'll update the paste
09:04:28rubuildiusBrian Ford: d57c46448; 4764 examples, 17420 expectations, 0 failures, 0 errors
09:05:28dbussinkbrixen: which paste?
09:05:36brixendbussink: http://pastie.org/151073
09:05:59brixenbignum + fixnum and vice versa can be optimized further with a change to how bignums are created
09:06:21dbussinkreally nice :)
09:06:56brixenwell, it's a better approach really
09:07:04ragge enters the room.
09:07:09brixenBignum, Fixnum, and Float are primitive types
09:07:21jero5 leaves the room.
09:07:38Arjen_ enters the room.
09:07:45brixenthe implementation will allow you do math with other classes that act like those, but there's no reason not to have them be as fast as possible
09:08:50dbussinkwell, like a famous dutchman said, elegance is not a dispensable luxury :_
09:08:54dbussink:)
09:10:35mutle enters the room.
09:11:51brixenheh
09:13:35dbussinkrue: what do you think of the type abstraction i put in?
09:19:39twbray leaves the room.
09:21:45ruedbussink: Looks good
09:21:53rueWe want to split it up still but it works nicely
09:22:10ruedbussink: http://journal.kittensoft.org/2008/2/13/platform-abstraction-musings
09:22:15dbussinkyeah, i've read it
09:22:32rueOK, yep, that was the idea I bounced
09:22:41dbussinkgood thing we probably don't need anything below posix right now ;)
09:23:07rueActually, I think we are already doing various workarounds for platforms
09:23:33rueHrm.
09:23:43rueI do not like this array.sort {1} spec
09:23:58dbussinkdon't worry about the result
09:24:16dbussinkthe only thing that it should spec is that it doesn't fail because of an endless loop
09:24:29rueMRI is not stable there either
09:24:37dbussinknope, i already saw that too
09:25:02rueHm, that was causing an endless loop?
09:25:03dbussinkbut we already discussed that the result doesn't matter, only that it shouldn't fail
09:25:28dbussinkyeah, because nothing was equal to the pivot, so the same right was pushed down each time
09:33:18defunkt leaves the room.
09:35:27hornbeck leaves the room.
09:35:36hornbeck enters the room.
09:41:31mernen leaves the room.
09:45:24dbussinkwe really need something to set global gcc parameters that apply everywhere, from make shotgun to the struct/const/type generators
09:51:00boyscout2 commits by Dirkjan Bussink
09:51:01boyscout * Add LFS to ConstGenerator; 3b60986
09:51:02boyscout * Add LFS to TypesGenerator; fc373eb
09:52:29GMFlash enters the room.
09:55:23wifelette leaves the room.
09:59:03femtowin leaves the room.
09:59:23GMFlash leaves the room.
09:59:31GMFlash enters the room.
10:02:34chris2 enters the room.
10:04:37rubuildiusDirkjan Bussink: 3b60986f3; 4764 examples, 17420 expectations, 0 failures, 0 errors
10:07:50be9 leaves the room.
10:10:00boyscout1 commit by Dirkjan Bussink
10:10:01boyscout * Move erb.rb from stdlib to lib, as it has specs now; af164d1
10:11:34wycats leaves the room.
10:13:04dbussinkbrixen: dunno if your still there, but the coercion changes broke some Date specs
10:14:03langenberg enters the room.
10:16:50brixendbussink: ah, ok I'll check them
10:19:28rubuildiusDirkjan Bussink: af164d1a5; 4764 examples, 17420 expectations, 0 failures, 0 errors
10:23:05brixenI need to add the library specs into ci
10:23:25dbussinkwill get us over the 5000 instantly ;)
10:23:30scooprdid someone here once plan on making a "cspec" or, something like rspec, but for specifially testing c code?
10:24:21brixenscoopr: yeah, I did
10:24:46brixenbut it ended up looking like C, so I'm not sure the benefit
10:24:57brixenhaven't looked at it in months
10:25:07brixendbussink: ah, Rational hmm
10:25:24imajes leaves the room.
10:25:35scooprah
10:25:36brixenwell, our 2 Rational specs pass heh
10:25:51scooprcould you still show an example what it ended up being?
10:26:55brixenscoopr: one sec, looking for it
10:27:03scooprI'd feel more comfortable if there were even some mechanism of testing our c++ codebase when I feel like it, and somehow all the macro/template trickery I've seen hurt my eyes
10:28:36brixenscoopr: http://pastie.org/151456
10:28:45brixenscoopr: that doesn't run, it's just different ideas
10:29:44scooprah right
10:30:51brixenscoopr: I was dubious that it would end up much better than just using something like: http://cutest.sourceforge.net/
10:31:02scooprI was looking at cutest too
10:31:34brixenalso, I thought that as cuby/garnet came along, I might get better ideas ;)
10:31:46scooprheh
10:38:36dbussinkbrixen: http://rubinius.lighthouseapp.com/attachments/11731/0001-Implement-File.truncate-passes-specs.patc h
10:38:45dbussinkbrixen: he's using :off_t right away :)
10:38:48dbussinkbrixen: i like it :)
10:40:31brixennice!
10:42:17raggethat's me... really awesome work with the ffi stuff
10:42:34brixenwell, this is odd: a = Rational(1,2); a.coerce 1 => [R,R]; 1.coerce a => [Float, Float]; a.coerce a => No method 'coerce' on an instance of Rational.
10:42:56dbussinkthat should just give a shouldn't it?
10:43:02dbussinkragge: thnx :)
10:43:35brixendbussink: well, oddly, there's #coerce on a if called with 1, but not with a?
10:43:39raggemy first patch though, hope it is ok... had a little fight with git format-patch...
10:45:16hornbeck leaves the room.
10:45:49dbussinkragge: looks sane to me
10:46:47brixendbussink: hah, Rational#coerce rational.rb:329
10:46:59brixenthat's a stupid library
10:47:13brixen"um, I don't know how to coerce myself. punt"
10:47:35dbussinkthat's really stupid
10:48:29brixenwhat's the default for Numeric#coerce then? try to make it a float?
10:49:01dbussinklooks like it doesn't have that coerce function
10:49:07brixenI suppose if defined obj.coerce Float(obj)
10:49:29lvmc enters the room.
10:51:56brixendbussink: yep, looks like Numeric#coerce should call #to_f if #coerce is defined in the obj, but it supers
10:52:29brixendbussink: ok, simple fix
10:52:42brixenI confirmed that works
10:52:53brixenbut, I think I'll sleep some now :)
10:53:09dbussinklooks like 3 am might be a good moment to do that
10:53:16brixenheh
10:53:21brixencatch ya on the flip side
10:53:24dbussinknite!
10:53:27brixennite!
10:53:33brixen(deja vu)
10:53:50boyscout1 commit by Dirkjan Bussink
10:53:51boyscout * Update excludes for File#truncate; c968d5c
10:54:19dbussinkragge: there you go :)
10:56:57mae__ enters the room.
10:57:13maeto
10:57:41maeherro
10:59:31VitaRara leaves the room.
10:59:47raggedbussink: thank you...
11:00:00raggedbussink: seemt like this one can be closed now no? http://rubinius.lighthouseapp.com/projects/5089/tickets/56-support-for-__int64_t-types-in-ffi
11:00:25dbussinkragge: ah yeah, i'll close that
11:01:39mae__ leaves the room.
11:01:48mae__ enters the room.
11:02:09boyscout1 commit by Dirkjan Bussink
11:02:10boyscout * Module#undef_method should accept string parameter, not only symbols by Nikolai Lugov ...; c894a6c
11:02:14brixendbussink: shh :P simple fix. I had intended to push the #coerce closer to the classes (e.g. Fixnum), but didn't finish it
11:02:21maehmm
11:02:45dbussinkbrixen: hehe :)
11:03:03boyscout1 commit by Brian Ford
11:03:04boyscout * Return #coerce to Numeric from Integer.; 39fe528
11:03:05brixendbussink: all better
11:03:18cris_kiev enters the room.
11:03:45dbussinkbrixen: now go to sleep, i order you! :p
11:04:16brixenok!
11:04:28rubuildiusDirkjan Bussink: c968d5c29; 4770 examples, 17433 expectations, 0 failures, 0 errors
11:04:50mae__ leaves the room.
11:05:56hassox leaves the room.
11:06:48dbussinkragge: you know the drill if you want to be able to commit yourself?
11:08:33raggedbussink: pastie pubkey to evan?
11:08:40Arjen_ leaves the room.
11:08:50Arjen_ enters the room.
11:09:06dbussinkragge: yeah, but you'll have to wait until he awakes :)
11:09:27Arjen_ leaves the room.
11:09:47halorgiumdbussink: wouldn't it make sense to have another git repo which had the pubkeys :)
11:10:08halorgiumthen it'd be implicit for commiters to be able to allow new members
11:10:48raggedbussink: no hurry... i think it might be good for me to push the first few patches manually, ie. through other people...
11:12:46dbussinkragge: be more confident
11:13:20dbussinkhalorgium: well, that could go haywire, dunno how other people think about that
11:13:44dbussinkragge: you can always ask for a review in here, if you pastie something
11:14:26rubuildiusBrian Ford: 39fe52858; 4773 examples, 17439 expectations, 0 failures, 0 errors
11:14:33halorgiumdbussink: of course it could
11:14:50halorgiumbut you have post-receive-pack hooks to stop that
11:16:23raggedbussink: ah, yes, of course... that sounds calming :)
11:16:36Arjen_ enters the room.
11:20:15tizianobis enters the room.
11:20:30hassox enters the room.
11:22:18rueHuh, weird