Index

Show enters and exits. Hide enters and exits.

00:02:30lypanovnight *
00:02:32lypanov leaves the room.
00:02:33wycatsnite!
00:02:36wycatsagardiner: yep
00:02:45jp_tixhi, I'm trying to build rubinius on freebsd - ´rake build´ gives me some errors from the oniguruma makefile (something about "missing separator")
00:02:49jp_tixany ideas?
00:07:58agardinerwycats: it seems like you might also want to know the default value for optional args
00:08:07wycatsyep
00:08:08wycatsI do
00:08:16wycatsbut I don't know exactly how to simply pull that off
00:09:44agardinerhuh... that's strange compiler/local.rb:141 takes an arg indicating if a method arg is default, but doesn't record that anywhere
00:10:02wycatsit doesn't provide the actual defaults
00:10:05wycatsdefaults are CRAZY
00:10:16wycatsI guess I would be ok with storing the default parsetree
00:10:40KirinDave enters the room.
00:10:47wycatsArgument nodes have the default nodes inside
00:11:00agardinerwell... defaults, however crazy, must be being stored in the literals tuple, no?
00:11:32wycatsthey don't need to be literal
00:12:23wycatsand no
00:12:25wycatsthey're not in there
00:12:26agardinerand its not in the literals...
00:12:26wycats0 elements
00:12:47wycatsthe defaults get converted to bytecode
00:12:48agardineryeah - thought that's where it would go, but i was wrong
00:12:52wycatsI want to get the Array parsetree
00:13:36agardinerhmmmm
00:14:11agardinerdoes that help you? you need to resolve it to something in ruby ultimately...
00:15:09wycatsI could probably use the compiler to resolve it
00:15:22wycatsit would be nice to have a sexp.to_ruby
00:15:56agardineryeah, it would! but this seems like redoing something the compiler has already done
00:16:33cored enters the room.
00:18:15agardineri guess the whole side-effects thing makes asking for the default value problematic
00:18:44agardinerwhat is you use case for this in merb?
00:19:18wycatsdef foo(bar, baz = "1", baz = "2") and /foo?bar=hello&baz=goodbye
00:19:32wycatsshould call foo("hello", "1", "goodbye")
00:20:35agardinerdid you mean to have baz in the def twice?
00:20:44rightondev leaves the room.
00:21:31wycatsno
00:21:33wycatsI meant bar
00:21:39wycatsbar, baz, bat
00:22:11agardinerhehe, yeah... i was having a wtf moment there! :-P
00:22:17wycats;)
00:22:21wycatsw.t.f. mate
00:22:44rightondev enters the room.
00:23:47agardinerso really, you want to allow a default to be used in between specified param values... what keyword args would give you?
00:25:21wycats?
00:26:34agardineris this what merb uses parsetree for? generates a method call with all args, replacing defaults with any specified values, and using the defaults where no value is specified?
00:27:42agardinerso in your example, you are generating the call foo("hello", "1", "goodbye") from the method def and the supplied args?
00:31:31gnufied enters the room.
00:32:51wmoxam leaves the room.
00:35:42wycatsprecisely
00:35:56agardinerwell, that is pretty cool!
00:36:00bugfux enters the room.
00:36:14agardinerand now i understand your problem! :-)
00:37:00wycats;)
00:37:14agardineryou know, the bytecode is all there to do what you want...
00:37:18wycatsI'm kinda ok with just having args and no defaults, but the defaults would be a bonus :)
00:37:28wycatsagardiner: If I want to interpret arbitrary bytecode, yeah
00:37:31wycatsand hope it doesn't change
00:38:12wycatsI guess I could look for push_literals in order
00:38:25benburkert leaves the room.
00:39:59agardinernah, that won't work
00:40:22agardinerliterals like 0, 1, 2, true. false, nil are not stored in the literals tuple
00:40:50benburkert enters the room.
00:40:53wycatsbut you can look at the opcodes
00:41:01wycatsoic
00:41:52wycatsthey get set_local_from_fp
00:42:00dewd leaves the room.
00:42:25wycatsso you can look for the set_local instruction
00:42:39agardinermy point before was that almost everything you need is in the method already - you just need a way to call the method that doesn't use normal call semantics, and a slight tweak to passed_arg
00:42:55agardinermaybe using Undefined...
00:43:23agardinercourse, it would probably break stuff
00:43:30wycatsprobably
00:43:38wycatsI'd rather store the info we already have into the cm
00:43:57wycatsmaybe it could be a compiler options
00:44:02wycats:metadata => true
00:45:12agardinerwell, if you wanted to go down that path, you could even write your own generator and plugin to the compiler that way
00:45:23agardinerthen you'd have access to anything/everything
00:46:05wycatswhich is what Evan suggested ;)
00:46:09wycatsare you now seeing it?
00:46:23agardinerahh... yeah, kinda
00:46:39agardineri guess i've not yet convinced myself there isn't another path
00:46:42wycatsdo you now agree with him?
00:46:44wycatsah
00:47:54pietia leaves the room.
00:48:16kofno enters the room.
00:49:18agardinerso, let me understand where you were going with looking for the set_local instructions...
00:49:28agardinerhow would this help?
00:49:37wycatsset_local_from_fp
00:49:45KirinDave leaves the room.
00:49:46defunkt enters the room.
00:49:47wycatsthe op looks like :baz, slot#
00:50:24pietia enters the room.
00:50:52wycatsso you know the arg
00:51:09wycatsfrom .args, or by looking at set_local_from_fp
00:51:30agardinerwithout the code preceding it, you don't know what the default value would be though...
00:51:41wycatsyou have to find the pushes as well
00:52:14agardinerbut the joy of default args means this could be arbitrarily complex...
00:52:18wycatscorrect
00:52:23wycatswhich was my initial statement
00:52:29wycatsif you restrict to literals, you'll be somewhat ok
00:52:33wycatsyou look for the list of pushes
00:52:36wycatsand then match up the slots
00:53:17agardinersure, if you restrict what you'll allow for the default, the problem is reduced
00:54:06agardinerbut this simpler case could also probably be handled in simpler ways
00:54:10wycatsyep
00:54:43agardinerat the end of the day, you want to dynamically generate ruby code though, right?
00:54:54wycatsyep
00:54:57wycatsnot ruby code
00:55:00wycatsas much as ruby objects
00:55:18antares_ leaves the room.
00:57:23agardinerruby objects? are you generating the method calls, or defining new methods on the receiver?
00:58:27wycatsI'm making method calls
00:58:38wycats.send(:meth, ...)
00:58:54agardineryeah, that's what i thought...
01:05:43wycats;)
01:06:56agardinerits frustrating isn't it? the info you need is in the literals tuple (except for the handful of special cases), but it isn't necessarily a single literal...
01:07:33binary42_ enters the room.
01:07:44pietia leaves the room.
01:10:03agardinere.g. def foo(bar, baz = Foo.bat, bat = Proc.new { puts "hehe" })
01:10:51agardinereverything you need to call the method with args that match the defaults is there, but you have to decode it to work out what to send...
01:15:35agardinerwhich seems like a path to insanity
01:15:56cored leaves the room.
01:16:58agardineryou know, you may be able to convince evan to keep the sexp around on a CM...
01:18:00probablycorey enters the room.
01:19:46agardinerotherwise, i'm coming to the conclusion that you will either need to parse the source or write your own generator
01:22:00agardinertrying to piece this back together after it has been compiled is like trying to put humpty dumpty back together... :-(
01:22:20binary42 leaves the room.
01:25:07KirinDave enters the room.
01:26:18Fishy5 enters the room.
01:33:56menator enters the room.
01:34:36wmoxam enters the room.
01:35:58KirinDave leaves the room.
01:37:03vatic42_ enters the room.
01:37:26macournoyer enters the room.
01:49:02binary42_ leaves the room.
01:50:18wycatsagardiner: yep
01:50:23vatic42 leaves the room.
01:50:26wycatsI think I need the sexp to stick around
01:50:33wycatsit's not like it's a massive amount of stuff
01:50:49wycatslike I said, maybe it needs to be an option
01:50:56KirinDave enters the room.
01:57:53geekounet enters the room.
02:10:25KirinDave leaves the room.
02:14:53Fishy5 leaves the room.
02:17:40rueOMG, the Pope is back :D
02:19:23brixenheh
02:19:27brixennot just any pope
02:20:01rueWe should get a copy
02:20:15rue"Rubinius is the future of Ruby" -- Pope Benedictus
02:20:48ruebrixen: Oh, I totally forgot to follow up on the Radiant stuff
02:21:06brixenrue: that's ok, much to do
02:21:23rueI could not get the Archive feature to work for the life of me so I hacked the solution you probably saw
02:21:56brixenwhat part wasn't working?
02:22:22ruePlus the layout to just show child pages.. it all started when I was trying to add the compiler intro to Docs
02:22:58ruebrixen: Setting it on News does not create the "bloggy" style page at least here on FF 2
02:23:14brixenahh, hmm
02:23:35brixenwell, thanks for adding the other content
02:23:54rueSo I wrote those snippets and fought with the frigging CSS for entirely too long
02:24:46VVSiz_ enters the room.
02:25:28brixenyeah, the CSS can be a bitch
02:25:39brixenI'm sure we can hand that off to ey
02:25:52brixenI just wanted to get something up, and I'd like to consolidate all docs on rubini.us
02:25:57brixenvery polished and professional
02:26:00rueDefinitely
02:26:10rueThat is mainly why I added the childlist layout
02:26:38brixencool
02:26:50rueIt would be nice if we can borrow someone from there to spend a bit of time on it
02:27:18brixenyep, definitely
02:27:31rueI would be happy to do maintenance etc. but could definitely use someone who can use Photoshop etc. to get a nice graphics layer set up
02:27:44brixenagreed
02:27:54brixenI want to be able to tweak content, but we need the design polished
02:28:07brixenI am partial to the header :)
02:28:44brixenand I definitely want the page area to stand out, unlike the old, all-black site
02:28:52rueYeah
02:28:53rubyconsumer leaves the room.
02:28:55brixenbut the rest was literally 2 hrs of work
02:29:05brixen(and it shows :P)
02:29:23menator leaves the room.
02:29:25rubyconsumer enters the room.
02:29:28rueI do like the logo but I think a smaller one would be nice (or maybe make it vertical or something)
02:29:39rueIt takes 1/3 of the page at a normal resolution
02:29:46brixenyep, we can definitely shrink that
02:29:48rueWell, that + navigation
02:30:04brixenI didn't do it because it's so crisp and I don't have the original psd file
02:30:08rueAnd I keep kinda thinking about the BMX bike :D
02:30:13rueSure
02:30:16brixenI only have a png
02:30:28brixenheh, bmx racing stripes ftw!
02:30:42VVSiz leaves the room.
02:30:44brixenwe could put those speed marks on the logo
02:30:47rueAlthough in all seriousness, I am a big proponent of "looks good in black and white on stationery" style logos
02:30:53brixenlike the r is reving up and taking off
02:30:59rueHehe
02:31:10brixenright, well, that logo can be inverted nicely for stationary
02:32:04rueI think my current favourite logo on the web is.. dammit, what is the company name? 9 something
02:32:25brixenso, I've got a working FFI File::Stat to replace the primitive that passes on OS X
02:32:26rueWith the inlaid leaf logo in green-red-yellow
02:32:30brixenI wonder if I should commit it
02:32:40rueHehe, feeling a bit gun-shy?
02:32:42brixenhmm, dunno if I've seen it
02:32:55brixenwell, linux is broken and I don't want to be in hot water for that
02:33:01rueI will see if I can find it.. the 9 whatever I see on Rails sites
02:33:07brixenyesterday it was, revert it if it breaks other platforms
02:33:15brixentoday it is, fix it if it breaks
02:33:16brixen:/
02:33:27rueYeah, I think it might be safest to wait until evan is back in LA
02:33:29rueAnd fed :P
02:33:32brixenahh
02:33:35brixenheh
02:33:41brixenthe food factor
02:37:23ruehttp://journal.kittensoft.org/ I like the new theme, lucid finally works OK on Mephisto
02:37:56brixenyeah, looks good
02:41:41rueUgh, now I will spend hours trying to remember what that 9 something is really called
02:42:55rubymaverick enters the room.
02:44:10geekounet leaves the room.
02:44:40brixenhmm, well this mostly works on linux
02:44:47brixenproblem it, can't find 'stat' to attach
02:45:12brixenwhich makes no sense because the primitive calls that function, so it must be linked in
02:45:37brixenand we attach to a bunch of other functions
02:45:38brixenarg
02:48:51ruestat could be a macro
02:48:54wmoxam leaves the room.
02:49:05rueBut it should be pretty POSIX
02:49:09brixenhmm, good point
02:49:23brixenthat could be a problem
02:49:36brixenbut perhaps there's a flag to use the function version, right?
02:49:54rueWell, all libc implementations should have their exported stuff listed somewhere
02:49:58_mutle enters the room.
02:51:34rueHuh, why can I not delete a bookmark folder
02:55:23bugfux leaves the room.
02:55:43mutle leaves the room.
02:55:55brixenrue: you are indeed, right
02:56:02brixenit's basically a macro
02:56:18brixenit would be a function if we had LFS enabled
02:57:32agardinerwycats: you still around?
02:59:28rubymaverick leaves the room.
03:00:40brixenrue: I can see this being a general problem, perhaps we need a function stub generator for FFI similar to const/struct generators
03:00:43brixenrue: what do you think?
03:03:26rueThat would kind of defeat the purpose
03:04:00brixenheh, suppose so
03:04:08rueI have to research to see what dlopen etc. say about macroed definitions.. but this would be a prime case for the hierarchical Platform setup
03:04:23brixenyep, definitely
03:04:59rueWe implement POSIX and if someone reports a problem, easy to fine-tune
03:05:19rueI wonder if architectures could be implemented via modules
03:06:12brixenand mixed in?
03:06:14brixenthat would be slick
03:06:24brixenso, did you check out this ffi link from lypanov?
03:06:30brixenit's pretty interesting so far
03:06:47rueI think it might get too fancy. Initially I was thinking just Platform->Generic->Specific->Hardware
03:06:53bugfux enters the room.
03:07:11rueNah, have not read it yet but did bookmark
03:07:14rueIt looked nice
03:07:19bugfux leaves the room.
03:08:07brixenI'm going to some guy's talk on haskell's ffi on monday
03:08:11brixenI better read up
03:08:17rueCool
03:08:26bugfux enters the room.
03:08:56brixenyeah, I've neglected this local resource, there's at least one prof at oregon graduate institute on the haskell design board
03:09:07brixenand there's a local functional lang group
03:09:46brixenor there was a prof, I haven't looked in a couple years
03:28:02maxpenguin leaves the room.
03:29:32cremes_ leaves the room.
03:35:17jtoy enters the room.
03:47:02krisps enters the room.
03:49:33dewd enters the room.
03:49:39menator enters the room.
03:53:30KirinDave enters the room.
03:53:36boyscout1 commit by Wilson Bilkovich
03:53:37boyscout * Failing spec for 'super' behavior; 5be84fc
03:57:58lopex leaves the room.
03:59:07rubuildiusWilson Bilkovich: 5be84fce2; build failed! http://rafb.net/p/MjpoId35.html
03:59:52DefilerWas the build already failing? Because it runs fine here
04:01:04boyscout2 commits by Wilson Bilkovich
04:01:05boyscout * Rubinius now passes all 'super' specs; 6b2f05a
04:01:06boyscout * Correct behavior of Module#set_visibility; 1d8f826
04:01:59Defilergreen bar baby
04:02:38benburkert enters the room.
04:03:07KirinDave leaves the room.
04:03:37bugfux leaves the room.
04:05:00_ADS leaves the room.
04:09:22rubuildiusWilson Bilkovich: 6b2f05af4; build failed! http://rafb.net/p/ysD04g40.html
04:09:32rueDefiler: Not so green bar :P
04:09:54DefilerYeah, well, it was already failing on Linux :)
04:12:12agardinerwycats: i think i have a solution for ya, re default args
04:12:27DefilerCool. Down to one (real) failure in the rake test suite
04:12:39brixenvery cool
04:13:31rueDefiler: Excuses ;)
04:14:43Defilerrue: You will notice that I totally separated the spec, exclude, and implementation commits this time, you picky bastard :)
04:16:11rueHehe, I appreciate that
04:18:06DefilerOh man singleton.rb is terrible
04:20:28DefilerAlso, it totally doesn't work on Rubinius
04:20:53rueYes, Singleton, Delegator and Forwardable all pretty much suck goat testes
04:21:02brixenDefiler: did you see that class Mu < nil; end; Mu.instance_methods => [] no longer works
04:21:05DefilerI will take a look at it tomorrow, though. Time for THe Wire
04:21:12Defilerbrixen: You mentioned that, yeah
04:21:14brixenoh, heh
04:21:17brixenyou like the wire?
04:21:23brixensomeone just highly recommended it
04:21:23DefilerIt is easily the best show on TV
04:21:26brixenawesome
04:21:32brixenwe just finished 6 feet under
04:21:38brixenthat's the best I've ever seen :)
04:21:48brixenI'll have to watch it
04:21:52DefilerSquare that and you have the quality 'factor' of The Wire
04:21:58brixennice heh
04:22:06krisps leaves the room.
04:22:44Defilerbrixen: When you have a chance, take a look at the 'MS4' spec I added to super_spec. Awesome bug.
04:22:57Defilersuper was calling the method that called super :)
04:24:31brixenheh, ok
04:24:50DefilerOh.. another thing that I have been meaning to mention to you
04:25:03Defilerplatform_is :darwin, :version => '1.8.5'
04:25:15DefilerPeople seem to think that that says 'platform is darwin running version 1.8.5'
04:25:27rueDefiler: Those will all be fixed up :)
04:25:29DefilerSo we should consider making it work that way
04:25:39rueOnce the slacker gets his changes in ;)
04:25:50DefilerOK. Just wanted to make sure it was on the list
04:26:17ruebrixen: You know, I think there is a huge market for my little app right here on this channel
04:26:46DefilerIt is AMAZING coming home to my real computer after a few days using my laptop
04:29:41rueHeh, what kind of setup do you have there?
04:30:23Defiler8GB Mac Pro with a solid state disk
04:31:53brixenrue: indeed
04:32:07DefilerMan, rake has some terrible code in it
04:32:15brixenDefiler: you and your 10 sec build on your ssd :P
04:32:21brixenis jealous
04:34:41DefilerJim doesn't accept rake patches, right?
04:34:51DefilerI know I have never gotten a reply to any of the ones I have sent
04:36:36rueI would assume he does, Jim is pretty good about that.. are you putting them on the tracker?
04:37:47DefilerThere is no tracker
04:38:03Defilerhttp://rubyforge.org/projects/rake
04:39:38d2dchat enters the room.
04:41:11DefilerI am getting pretty tempted to implement a rake alternative that runs regular Rakefiles without modification
04:41:45d2dchat leaves the room.
04:41:59DefilerI suspect I can do it in 10% of the code
04:42:06d2dchat enters the room.
04:42:14rueProbably
04:42:20DefilerEarlyTime is insane
04:42:21d2dchat leaves the room.
04:42:43DefilerHere's another way to implement a Time object that is earlier than all other Time objects
04:42:46DefilerTime.at(0)
04:43:09agardinerhehe
04:43:34brixenwe really need some sort of autoconf I think
04:43:45Defiler(yeah, I know negative offsets exists, but not every platform supports them, so they never happen in the wild)
04:44:15brixene.g. on ubuntu gutsy, major() is defined in sys/sysmacros.h and that is wrapped in ifdef __USE_BSD in sys/types.h
04:44:26DefilerEven if I absolutely needed a custom Time class that was always 'early', I feel like I could probably do it without Thread.critical
04:44:27agardinerDefiler: doesn't EarlyTime return -1 when compared with another EarlyTime instance, or something?
04:44:28macournoyer leaves the room.
04:44:41Defileragardiner: Yeah, but it doesn't seem to rely on that behavior
04:46:06agardinergeez...that probably means i didn't need to jump through half the hoops i did when i implemented a DatabaseTask subclass for a project a while back... :-P
04:46:11boyscout2 commits by Brian Ford
04:46:12boyscout * Reworked File::Stat to use FFI instead of a primitive.; 19a26d0
04:46:13boyscout * Additional specs for File::Stat#rdev, #rdev_major, #rdev_minor.; 54c4a4c
04:47:02brixenrue: have you looked at the failures on linux by chance?
04:47:24brixenthat commit works on linux, fwiw
04:51:17rueNope
04:53:54DefilerOoh, new version of git is super cool
04:54:07DefilerReceiving objects: 100% (2407/2407), 393.01 KiB | 148 KiB/s, done.
04:54:13rubuildiusBrian Ford: 19a26d040; build failed! http://rafb.net/p/JgTlag20.html
04:54:17Defilertells you how fast it is downloading the clone, etc
04:57:15wycatsagardiner: speak, and I shall soak in your knowledge
04:57:17wycatsHey Defiler
04:57:29DefilerYo
04:57:45agardinerok, i was thinking more about the possibility of changing the behaviour of passed_arg ever so slightly
04:57:48Defilerwycats: I thought of an even simpler way to implement the gems feature we were talking about (re: json)
04:57:50wycatsso Jamis tried to use Ruby/DL, and it fatal flaw is lack of 64-bit support
04:57:55Defilerwycats: I will sleep on it and give it a shot tomorrow
04:57:57wycatsDefiler: tell me
04:58:19Defilerwycats: Basically.. you as the gem author know which other gems are compatible
04:58:33wycatsme as the dependedee, yes
04:58:34agardinerso that it checks if an optional arg was passed the value Qundef, and if so, it treats the arg as not passed
04:58:43rueMan, Markdown is so much nicer than Textile
04:58:44Defilerwycats: So, if we just let the 'depends on' list contain arrays as well as gem names..
04:58:51wycatsoooh
04:58:52wycatsyes
04:58:56wycatsthat would work perfecto-lee
04:58:57Defilerwycats: e.g. = "foo", ["json", "json-pure"]
04:59:02wycatsyeah
04:59:04wycatsthat works great
04:59:10DefilerI can make rubygems realize that that means there is a choice/branch
04:59:13wycatsyou don't need system-wide virtual gems
04:59:15wycatsjust locally
04:59:31wifelette_afk enters the room.
04:59:34wycatsalso, I added support for CompiledMethod#args, but I gotta ask Evan if he's cool wit' it
04:59:47DefilerThe only drawback is that people with older clients will have trouble installing your updated gem when you use that feature
04:59:57wycatsyeah... fuck them :P
05:00:00Defiler:)
05:00:09wycatsI'll add a s.requirement that says to update your Rubygems
05:00:22wycatswere you heading to bed or do you have a sec?
05:00:34DefilerI have a sec.. but I am otherwise planning to watch some TV
05:00:38wycatsah
05:00:38wycatshttp://pastie.caboo.se/150222
05:00:44wycatsthat's my #args impl
05:00:47wycatsit's really stupid simple
05:01:08wycatsI just wanted ppl to look at it before I showed it to evan, to forestall me being horrifically bad and getting the beat down
05:01:16wycatsit's like 10-15 diff lines
05:01:29rueHeh, it takes a while to generate this page: http://rubini.us/dokumentation/introduction-to-the-compiler/
05:01:48ruebrixen: Incidentally, why is it doKumentation? Does the correct spelling break something?
05:01:52Defilerwycats: What does this accomplish?
05:02:02wycatsit gives you .args on CompiledMethod
05:02:13wycatswhich returns an array of required, optional, and splat
05:03:08DefilerI believe you still need to add this field to the 'hints' file as well, but otherwise it looks right
05:03:21Defiler[required, optional, @arguments.splat && @arguments.splat.name]
05:03:27wifelette_afk leaves the room.
05:03:31wycatsI didn't add it to hints because I didn't add it to the list of indexed ivars
05:03:39Defileris a cool trick with &&. Heh
05:03:42boyscout1 commit by Eero Saynatkari
05:03:43boyscout * Converted compiler intro to Markdown syntax.; ef463a8
05:03:50wycatsDefiler: no sarcasm, right :P
05:04:00DefilerNo sarcasm
05:04:06wycatshttp://pastie.caboo.se/150224
05:04:20DefilerYou need to make this into a real field, unless I am confused about how the whole thing works
05:04:30DefilerOtherwise it won't stick around after it is compiled out to disk
05:04:38wycatsgot it
05:04:44brixenrue: yeah, evan's got a rewrite rule on doc* I think
05:04:49DefilerAlso, that funny-semicolon-oneliner thing at the top is meant for indexed ivars only, hence the 'intimidating' formatting
05:04:53brixenrue: it never gets to the app
05:04:54wycatsI was under the impression that indexed ivars were an optimization
05:05:14DefilerThey are.. but that doesn't mean that the thing they are optimizing for isn't important
05:05:25DefilerThey are a cooler replacement for 'put' and 'at'
05:05:31defunkt enters the room.
05:05:35wycatsIt's still an ivar, unless using indexed ivars preclude using regular ones
05:05:41wycatsprecludes*
05:05:54wycatshey defunkt
05:05:58agardinerevan has also said he doesn't want fields accessed using put/at any more, i think
05:06:02DefilerRight
05:06:06defunktyo wycats
05:06:24Defilerwycats: indexed ivars become fields, rather than regular ivars
05:06:32wycatsright
05:06:35wycatsso it'll work
05:06:37Defilerwycats: ..but this should be a field in case we need to access it from C, etc, at least in my opinion
05:06:39wycatsbecause I'm using a regular ivar
05:06:41wycatssure
05:06:42wycatsgot it
05:07:06wycatslast time I discussed it with evan, he was dubious about the entire prospect, but I think that's because Iw as being dense about the implementation
05:07:10wycats(i.e. asking too many questions)
05:07:11DefilerIf you leave it as a regular ivar, move the accessor for it away from the field accessors, at least
05:07:15DefilerOtherwise, confusetastic
05:07:22agardineroh yeah
05:07:31agardineri thought it was a field! :-)
05:07:34wmoxam enters the room.
05:07:38brixenme too
05:07:42wycatsI'm adding it as a field
05:07:43wycats:P
05:07:57brixenwycats: confusing fields with ivars == boom
05:08:04wycatsnah... it's exploding
05:08:12wycatsbecause somewhere the # of fields is set as 18
05:08:20wycats"Attempted to access field 18 in an object with 18 fields"
05:08:20DefilerYou have to update the system hints file
05:08:23wycatsdid
05:08:26Defilerand then rebuild the vm
05:08:29KirinDave enters the room.
05:08:30wycatsgot it
05:08:34wycatsso a simple rake != adequte
05:08:45wycatsrake rebuild?
05:08:55DefilerIt should be, but it also wouldn't surprise me if nobody had made it smart enough
05:09:00brixenwell, there should be a dep on hints if there isn't one
05:09:08wycatsit def. didn't work :P
05:09:12wycatsso I'm doing rake rebuild
05:09:12Defilerrake clean:shotgun build:shotgun should do it
05:09:18Defiler..but rebuild is fine too
05:09:21wycatstoo late ;)
05:09:22wycatsk
05:09:23rubuildiusEero Saynatkari: ef463a83d; build failed! http://rafb.net/p/LAWehZ65.html
05:09:34DefilerSo, the other comment I have is this..
05:09:34brixenwycats: see if you can add a dep to build shotgun if hints changes
05:09:50wycatsin rake?
05:09:56wycatsRakefile?
05:10:02DefilerWe are going to need to think of a way to load up the AST at runtime, in order to be able to get the parse tree back for, say, a Proc
05:10:12Defiler..and when we do that, this feature will be obsolete
05:10:13wycatsDefiler: that would be killer
05:10:22wycatsDefiler: see, our conversation at acts_as
05:10:33wycatsI know that... we use the parse_tree in MatzRuby
05:10:39DefilerI talked to Evan about this today, and his suggestion was to store the AST in the .rbc file, but not load it until it was requested
05:10:49agardinerwycats: so, i think i have a way to avoid having to store the sexp or reverse engineer the bytecode to get the default argument handling the way you want it
05:10:51DefilerI know you know it. I am just talking to the IRC log here :)
05:10:59wycats:)
05:11:04wycatsDefiler just suggested the solution
05:11:17agardinerits much simpler than that too!
05:11:17wycatsdo we have a mechanism for storing stuff in the RBC that lazily loads in
05:11:25wycatsfine... tell me ;)
05:11:45agardinerso, say you've got a method def foo(bar=1, baz=2)
05:11:56DefilerWe do not currently have such a mechanism (re: lazy loading)
05:12:02Defiler..but it wouldn't be particularly hard
05:12:02agardinerand you want to call foo with a value for baz, but not bar
05:12:09ruewycats: The lazy loading part is fairly simple unless you need really fine granularity
05:12:10DefilerThen again, nothing is particularly hard compared to eval
05:12:13KirinDave leaves the room.
05:12:31wycatsDefiler: yeah, but eval was a feature-complete requirement ;)
05:12:38wycatsso it was legit to spend ungodly hours on it
05:12:41DefilerSo is this, in my opinion
05:12:47wycatsniiiiice
05:12:49Defiler(runtime parse tree from compiled objects)
05:12:55wycatsit makes us compatible with 1.8.6
05:13:00wycatsfor people who use parse_tree
05:13:18wycatsotherwise there would be classes of 1.8.6 apps you could not run in rbx
05:13:21wycatsdespite subtend
05:13:29DefilerI think it is retarded to have a programming language that can redefine a method when it is called the first time..
05:13:35Defiler..but not be able to manipulate the AST :)
05:13:53wycatsthis feature would allow manip of the AST?
05:14:05DefilerSure
05:14:09wycatsso cm.ast = [...] would recompile it?
05:14:19wycats(psuedo)
05:14:19DefilerSure
05:14:25wycatsthat would be really sick
05:14:48DefilerThat would be really easy (once we had the AST)
05:14:59DefilerOne more method on CM, one more method on Compiler
05:15:02Defilerbang done
05:15:12wycats:-D
05:15:13wycatsyay
05:15:33wycatsthat would be worth blogging about ;)
05:16:19DefilerPeople don't want to hear about easy shit like lisp macros in Ruby
05:16:20dewd leaves the room.
05:16:41agardinersome people do :-P
05:16:42wycatssure they do
05:17:02wycats"You can do Lisp Macros in Ruby (in Rubinius)"
05:17:08wycatsI guarantee you'd get a ton of hits
05:17:29rueNah
05:17:43DefilerI guess you don't have the sarcasm font installed :)
05:17:49rueShould write an article about irony on IRC I think
05:17:59Defiler..but yeah, would be a cool feature
05:18:27KirinDave enters the room.
05:18:52thewoolleyman enters the room.
05:19:01mae leaves the room.
05:19:17wycatsdamn
05:19:26agardinerwycats: so, can i tell you about my solution to your default arg problem now?
05:19:29wycatsthat's because you're writing it in vim
05:19:30agardiner:-)
05:19:33wycatsagardiner: certainly
05:19:46wycatsif you were in emacs, you could turn on the sarcasm minor mode :P
05:20:13agardineri made a small change to passed_arg, so that if you pass Qundef in place of an arg, it returns false
05:20:27agardinerthat way, you get the default arg value, even though you passed a value in that arg position
05:20:45agardinerthis allows you to do foo(Undefined, 3) and get the default arg value for bar
05:21:00RyanTM leaves the room.
05:21:06agardiner(at least, it would if Undefined actually == Qundef)
05:22:15wycatsweird
05:22:16wycats:P
05:22:34Defilerx86 gcc is surprisingly few lines of code
05:22:37DefilerI had no idea
05:22:48wycatshow few?
05:23:00rueagardiner: I disagree with that unless I misunderstand
05:23:12wycatsrue: me too
05:23:16agardinerwhy's that?
05:23:17Defilerabout 17,000 lines of actual C code, like 24,000 'machine description' files that detail all the instructions
05:23:20wycatsit doesn't sound like it solves the problem, even
05:23:26wycatsDefiler: so it's smaller than Rails ;)
05:23:27rueUndefined should never be used by client code
05:23:35wycatsrue: I disagree with that
05:23:37rueThat is what happened to nil
05:23:42wycatspeople should be allowed to use Undefined
05:23:45rueNo, never.
05:23:48wycatsnil is different
05:23:56wycatsnil is a regular value
05:24:03wycatsUndefined would be used only in method descriptions
05:24:22rueA MethodDescription is not exactly client code
05:24:26wycatsno
05:24:29wycatsnot a MD
05:24:31wycatsdef foo(bar)
05:24:38wycatsit's not "what happened to nil" -- things natively return nil
05:24:52ruenil was meant to be what Undefined is now.
05:25:02wycatswhen?
05:25:03wycats0.1?
05:25:05rueBut people use it, which is why we now need Undefined.
05:25:12wycatsnot "people"
05:25:13wycatsMatzRuby
05:25:18wycatshe does return Qnil
05:25:24rueYes
05:25:25wycatsin C functions that bind to Ruby
05:25:26wycatsok
05:25:34wycatsthen your assertion is not really true ;)
05:25:45rueI do not understand how that is
05:25:48menator leaves the room.
05:25:55rueBut Undefined should never appear in a method call
05:25:58rueEver
05:26:00wycatsthe issue is not that people started using a pristine thing
05:26:07wycatsthe issue is that Matz started doing it
05:26:18wycatsoh
05:26:24wycatsyou shouldn't do foo(Undefined)
05:26:31wycatsbut you should be able to do foo(x = Undefined)
05:26:38wycatsdef foo(x = Undefined)
05:26:44rueYes
05:26:49agardinerand that is being done
05:26:52wycatsfine
05:26:53KirinDave leaves the room.
05:26:56wycatswe don't disagree then
05:27:11wycatsDefiler: It's amazing how many things are smaller than Rails
05:27:12wycats:P
05:27:18wycatswe should make a list
05:27:19agardinerthe ability to call a method and indicate that no value is being passed for an arg is what is needed
05:27:50rueagardiner: The correct solution to that, in my opinion, is keyword arguments
05:27:56wycatsI gotta grab dinner
05:28:02wycatsrue: keyword arguments rock hard
05:28:03agardinerAgreed, but that is a much larger change
05:28:12wycatsI'll be back soon
05:28:18Defilerwycats: haha.. like that 'things that happened while Duke Nukem Forever was in development' page
05:28:22wycatsagardiner: pastie me an irb session doing what you want
05:28:25wycatslol
05:28:35rueI think "exposing" Undefined will lead to bad habits
05:28:54agardinerIts already exposed... unless you mean Qundef?
05:29:15agardinercause the problem i have now is that Undefined = Object.new, not Qundef
05:31:20pastiewycats: http://pastie.org/150229 by agardiner.
05:31:40agardinerthere's a hacky example of what i mean
05:32:06agardinerUndefClass.new1 is a primitive that returns Qundef
05:35:32rueI am really leery about this, need to mull it over.
05:35:57brixenwe need real macros in ruby
05:36:07agardineryes please!
05:36:09rueAt the very least Undef must be a singleton. Make it Kernel.Undef
05:36:13brixenruby2ruby is a huge hack and should never be used, despite that I've used it myself
05:36:19DefilerWe need the awesome def foo(**keys) thing from RubyConf 2005
05:36:26brixenwe keep dancing around this broken part of ruby
05:36:35brixenand we need keywords, yes
05:37:02brixenif we have macros, we can quit being dependent on the particulars of the sexp, pt, whatever
05:37:16brixenand any code that uses ruby2ruby can be ported
05:38:28Defilerbrixen: If you feel like staying up, you could make this code run on rbx: http://rafb.net/p/7Bcwhh77.html
05:38:31brixenrue: the new sendsite stuff gets a ton of activity :P
05:38:48brixenDefiler: :P
05:39:02brixenI'm trying to debug linx atm
05:39:06brixener linux
05:39:16DefilerFine, shirk your responsibilities
05:39:21brixenhah
05:40:09Defiler klass.private_class_method :new, :allocate
05:40:11Defileroh god
05:40:50Defilerclass Middle < Up
05:41:01Defilerloathing fills me like a black tidal wave
05:44:46kofno leaves the room.
05:47:13DefilerI guess I need to write specs for singleton. Ugh
05:47:19Ingmar_ leaves the room.
05:48:00DefilerSomebody apparently thought that this was a helpful set of test outputs
05:48:01Defilerhttp://rafb.net/p/U4wBJn58.html
05:48:03Ingmar enters the room.
05:48:47drbrainDefiler: run the weakref "tests"
05:50:29Defilerdrbrain: Do you know who wrote singleton? It looks like it was added in 1999 as revision 520 of MRI
05:50:35kwatch leaves the room.
05:50:42Defiler..but the comment is just '1.4.0'
05:50:53Defiler..and given the style, I have trouble believing it was really matz
05:51:34drbrainI don't know
05:51:36DefilerOh, actually.. maybe it is
05:51:42DefilerThe revision 520 version is wildly different
05:52:39brixenyou don't really realize what a "dynamic language" is until you trace dispatch in the vm
05:52:57brixenthe new sendsite stuff get a *ton* of activity
05:53:39DefilerSendSite is totally awesome
05:54:30drbrainDefiler: at some point in time they added thread-safety to Singleton
05:54:36drbrainmaybe between 1.6 and 1.8
05:54:41Defiler'thread' 'safety'
05:54:52Defiler'added'
05:55:17brixenDefiler: loading loader.rbc, which is a small file, line 1130 of cpu_instructions.c gets hit over 11,000 times
05:55:37drbrainDefiler: all the Thread.critical stuff
05:56:02Defilerbrixen: Nice
05:56:25Defilerdrbrain: Yeah, I was just being mean and making fun of Thread.critical
05:57:18brixenDefiler: that's before it gets to like line 19 of the file :)
06:05:21brixenDefiler: what's the command to turn on excessive tracing?
06:06:28DefilerRBX="rbx.debug.trace=1" will do it
06:06:36brixenthanks
06:06:38Defiler..but doing it from inside gdb can be more convenient
06:06:41brixenyep
06:07:53brixenm->s->excessive_tracing :)
06:08:02brixenI just need something to search for
06:08:50TheVoice leaves the room.
06:09:49wycats leaves the room.
06:14:01wycats enters the room.
06:14:52wycatsdamn... MBP didn't recover from sleep
06:14:56wycatswhat, if anything, did I miss
06:15:39olegandreev enters the room.
06:16:59drbrainin the 5 minutes you were gone? nothing
06:17:49brixenwycats: and in the next 5 min, what you didn't miss in the last 5 will be here: http://www.donttreadonme.co.uk/rubinius-irc/
06:17:53brixenwycats: ;)
06:18:13wycatsI was gone around an hour ;)
06:18:22wycatsbrixen: thx for the link
06:18:28brixennp
06:20:50jeremydurham enters the room.
06:21:12wycatsagardiner: that requires actually CALLING the method
06:22:14wycatsbrixen: did you see the crazy code from RC2005 Defiler was referring to?
06:22:37agardineryeah - it avoids the need for having to determine what the default value is when you call the method - you just call it with the args you have, passing Undefined for the ones that weren't specified
06:22:54wycatsagardiner: true
06:22:57wycatsit solves my use-case
06:23:05wycatsDefiler: do you need help with those specs?
06:23:33agardinerand handles arbitrarily complex default args as well
06:23:34DefilerFor singleton?
06:23:36wycatsyep
06:23:38Defilerplease oh please.. go for it
06:23:43DefilerI am going to go watch some TV
06:23:44wycats;)
06:23:49agardinerincluding defaults with side-effects
06:24:12wycatswhere should I start?
06:24:17wycatsit's not exactly a small topic
06:24:56DefilerStart with the basic "instance gives you something useful, but you can no longer say TheClass.new" stuff, I guess
06:25:07wycatsgot it
06:25:27DefilerMaybe see if you can whip up a spec that would fail if it didn't have a mutex
06:25:35Defiler..but those are hard
06:25:39wycatsbrain explodes :P
06:25:45wycatsget thee to a tv-ery
06:25:51DefilerCan do
06:26:27wycatswe don't have any singleton impl yet, right?
06:27:51agardinerDebugger (lib/debugger) is a sort-of singleton
06:28:00wycatsgot it
06:28:01agardineronly a single active instance allowed
06:28:31agardinerbut when quit, singleton instance can be released
06:28:36wycatsI think I'm going to have trouble coming up with the edge-cases
06:29:39agardineryou mean cases like two threads calling instance at the same moment?
06:29:42wycatsyes
06:29:49wycatsor even coming up with that ;)
06:31:17Defilerwycats: We have lib/singleton.rb
06:31:24wycatsright
06:31:31wycatsbut it doesn't work?
06:31:34Defilerwycats: Which exposes some terrible bug in Rubinius that I will track down tomorrow
06:31:40wycatshaha
06:31:42Defiler..but once we fix that, it should work fine
06:31:45wycatsinvestigates...
06:31:50wycatsI didn't think it was that complex
06:31:54wycatsprivate :allocate, :new
06:32:00wycatsshould be like 80% of the impl
06:32:01DefilerIt isn't. I suspect it is that line right there that breaks rbx
06:32:11wycatsoh right
06:32:18wycatsrbx has issues with privatizing new
06:32:18Defilersince we, uhh.. actually call those damn methods, unlike MRI
06:32:24wycatslol
06:32:28wycatsyeha
06:32:33wycatsI remember having that issue with String
06:32:42wycatsthere's a spec that says that some .new is private
06:33:31wycatsI guess I could start by just speccing all the lines in the readme
06:33:49DefilerReally totally walking away now.. but this is a nice article http://steve-yegge.blogspot.com/2008/02/portrait-of-n00b.html
06:34:01agardineri'm outta here too... later
06:34:05wycatspeace out folks
06:34:10agardiner leaves the room.
06:34:11wycatshopefully you will have some singy specs
06:35:51wycatsyou tryinna say something Señor Defiler!
06:36:02lstoll leaves the room.
06:43:40aotearoa leaves the room.
06:46:58ezmobius enters the room.
06:50:26ezmobius_ enters the room.
06:52:50wycatswe don't support ObjectSpace.each_object(Foo){} right?
06:53:00wycatsto count the number of objects of some class?
06:53:06defunkt leaves the room.
06:53:49akshay enters the room.
06:54:11wycatsDefiler: if you ever come back... there are a few specs for singleton
06:54:20ezmobius leaves the room.
06:57:55cjheathAnyone here that can answer a quick qn about how MRI and RUbinius instantiate singleton class objects?
06:58:04cjheathSpecifically,
06:58:47cjheathwhen an object is created, its singleton class contains a superclass pointer to the thing that obj.class will point to,
06:58:57cjheathand an empty included modules array.
06:59:07cjheathWhich means it's redundant.
06:59:39cjheathDoes either interpreter instantiate the singleton class in a lazy (copy on write) type of fashion?
07:00:17cjheathi.e. only when def obj.method, or obj.extend happens.
07:00:21cjheath?
07:00:24cjheathAnyone know?
07:00:47rueOurs always have a metaclass
07:01:05wycatsis there a way I can see rubildius' last results?
07:01:10cjheathok, tx. Do you know why?
07:01:17wycatsbecause I just merged from remote and I get 4 errors
07:01:38cjheathi.e. if no instance methods, no included modules, then it's not needed...
07:01:41wycatsFile::Stat is exploding
07:02:20wycatsrubuildius: what were the last results?
07:02:53cjheathrue: does that mean that two separate allocations occur, or are these agglomerated into one?
07:05:03ezmobius_ enters the room.
07:05:20akshay leaves the room.
07:05:44cjheathezmobius, you might know the answer to the qn I've just been asking... got a mo?
07:06:48cjheathWhen a new object is created, its metaclass contains no (instance) methods, no included modules, only a superclass pointer. Why does it need one, couldn't that get created on first change?
07:07:30cjheathSeems a shame to create 2 objects when you'll mostly only ever use one.
07:07:37brixenwycats: pastie
07:07:41brixenwycats: and what platform?
07:07:48wycatsbrixen: I may not have recompiled
07:07:51wycatsI'm investigating
07:07:56brixenwhat platform?
07:08:01wycatsLeopard
07:08:07brixenyeah, you should be fine
07:08:39wycatsis there a git unstash?
07:09:08ruegit stash --apply
07:09:19wycatsand that just pulls the stash back into uncommitted?
07:10:43ezmobiuscjheath: i'm not sure of the answer to that. i'd probably ask evan when hes about
07:10:59wycatsit's probably just an optimization
07:11:06brixenI thought Defiler said recently our bignum is slower than MRI
07:11:15brixendoesn't appear to be for + anyway: http://pastie.org/150250
07:11:21wycatsthat way the metaclass gets stashed in the rbc
07:11:36cjheathok, tx. I'll ask again. Seems like an important optimization, if you don't need to create 2 objects.
07:12:30wycats:)
07:12:37cjheathsince most objects never get an instance_def or an extend.
07:13:09ruecjheath: I think it might complicate logic, though
07:13:46cjheathPretty simple actually - when someone asks for the metaclass, if the class pointed to in the object is tagged as not a metaclass, make one now.
07:13:57wycatsBTW: brixen: wicked job on CI... it runs fast enough to actually be useful
07:14:09ruecjheath: Thinking more like method lookup
07:14:15ezmobiuswhat is the proper test to see if I am running under rubinius ? os there a RRUBY_PLATFORM or something?
07:14:18brixenwycats: heh, I can't take credit for that
07:14:24wycatsbrixen: I know
07:14:28wycatsbut it makes your job easier ;)
07:14:32cjheathSure, but if there's nothing to look up, you don't need it.
07:14:33boyscout1 commit by Yehuda Katz
07:14:34boyscout * Adds support for CompiledMethod#args; 6471cf0
07:14:56brixenezmobius_: we have RUBY_ENGINE
07:15:01brixenwhich should be rbx
07:15:12ezmobiusand will that be nil in mri?
07:15:16brixenyep
07:15:16wycatsno
07:15:18wycatswhaaa?
07:15:20brixenwell, it won't be set
07:15:21jtoy leaves the room.
07:15:27ezmobiusk thx
07:15:27wycatsit'll throw an error
07:15:35wycatsyou have to do RUBY_ENGINE rescue nil or something
07:15:41brixenezmobius_: you'll need Object.const_defined? :RUBY_ENGINE
07:15:49wycatsgit stash --apply doesn't work
07:15:55wycatsI need to pull my shit out of the stash ;)
07:15:59brixenwycats: define "doens't work"
07:16:11wycatsit doesn't pull the stash back out into my WC
07:16:11brixengit stash apply stash@{0}
07:16:13brixenfor example
07:16:25wycatsyeah... that isn't what someone told me to do ;)
07:16:25brixengit stash list for what you have
07:16:33brixenman git-stash ;)
07:16:37wycatsdid ;)
07:16:52brixenwell, so "doesn't work" needs elaboration then
07:16:53rueezmobius_: How was the conf?
07:17:02ezmobiusit was fun
07:17:08rueI have not seen any reporting out of there for some reason
07:17:18ezmobiusevan and i procrastinated til the last minute but had no trouble filling the 3 hours ;)
07:17:21wycatsbrixen: and that did
07:17:29brixenwycats: ok, cool
07:17:33wycatsezmobius: because everyone wanted to just hear about it ;)
07:17:39wycatsthey lapped it up
07:18:51rueHu, three hours? That is a long presentation
07:19:01ezmobiusit was a charity session
07:19:14jtoy enters the room.
07:19:14rubuildiusYehuda Katz: 6471cf0ee; build failed! http://rafb.net/p/mfVZ8q61.html
07:19:22rueOh, you had to give out soup too?
07:21:21ezmobiushmm require 'yaml' blows up on head. didn't used to
07:21:37wycatswtf... I ran ci
07:21:39rueThere have been some regressions these past few days :)
07:21:59wycatssegfault...
07:22:00wycatswtf.
07:23:05brixenwycats: don't mind that
07:23:20brixenwycats: linux is broken due to some of the sendsite stuff, likely
07:23:23wycats:/
07:23:29brixenI've spents some time trying to debug it
07:23:37brixenthe one thing I know for sure, it segfaults :P
07:23:42wycats:P
07:23:55wycatsI think evan added something today and said "fuck it if it fails in Linux"
07:24:06brixenwell, he said "fix it"
07:24:19brixenbut doing so isn't trivial, unless you are evan ;)
07:24:24wycats;)
07:24:24ezmobiusheh
07:24:37wycatsI have conflicts on my branch and just want to delete the branch and start over
07:24:39brixenI'd really love to see his gdb session for something like this
07:24:48wycatsbut it won't let me leave the branch until I resolve
07:24:56brixenwycats: git reset --hard
07:25:01brixenif you don't care if you lose stuff
07:25:07wycatsI don't
07:25:08wycatsthx
07:25:37wycatscan I get a diff on a stash item?
07:25:44brixenwell, you can show it
07:25:48brixengit show stash@{0}
07:25:51brixene.g.
07:26:03brixenyou can probably git diff stash@{0} HEAD
07:26:21brixenor just git diff stash@{0}, but I've not tried that
07:26:25wycats"Cannot restore on top of a dirty state"
07:26:30brixena stash is just a "commit"
07:26:33wycatsright
07:26:33brixenyeah
07:26:56brixenwhat are your changes?
07:27:05wycatssingleton specs
07:27:09brixenhmm
07:27:12brixenI'd do this:
07:27:18brixengit commit your changes
07:27:24brixengit stash apply <whatever>
07:27:31brixengit revert -n <hash for your commit>
07:27:45jtoy leaves the room.
07:27:48brixenthe -n will not create a new commit
07:28:00brixenit will leave the changes
07:28:08langenberg enters the room.
07:28:31brixenwycats: I guess the question is: why are you stash applying in a dirty dir?
07:28:55wycatsyeah... I figgered it out
07:28:58wycatsI was being retarded
07:29:01brixenok, cool
07:30:20wycatsok... if I have something like Foo._load.should == Foo.instance, where does that go
07:30:25wycatsfoo_load or foo_instance?
07:32:21brixenfoo_load
07:32:26brixenbecause that's what the expectation is on
07:32:42brixenwhat is Foo.instance?
07:32:49brixene.g. try to use literals, not computed values
07:32:52brixenif possible
07:33:07brixens/e.g./i.e./
07:34:51wycatsthis is for singleton
07:34:55wycatsso the singleton has an instance
07:34:59wycatsFoo.instance
07:35:06wycatsit also has a _load (a private load)
07:35:40rueYou can use shared behaviours for that
07:36:17rueMm, well, actually in this case it is probably appropriate. But specify against the object_id
07:39:24lstoll enters the room.
07:48:06gnufied leaves the room.
07:49:01wycatsrue: instead of just ==?
07:49:11langenbergHow do I spec a method that calls 'print'?
07:49:23brixenwycats: well, in this case you want obj identity, right?
07:49:31brixenso, obj.equal? other
07:49:39Fullmoon leaves the room.
07:49:40brixenor obj.equal?(other).should == true
07:50:03brixenlangenberg: take a look at lambda { blah }.should output(stdout, stderr)
07:50:12brixenlangenberg: mspec/matchers/output.rb
07:50:17brixenor grep
07:50:46brixenlangenberg: also, look at the CaptureOutput class in mspec/capture.rb
07:50:46ruelangenberg: ^^ or s/output/output_to_fd/g if it turns out it is too high level
07:50:48wycatsbrixen: cool
07:51:17brixenlangenberg: right, what rue said if you really need to check that it goes to a filedes
07:51:40brixenif you don't care, and just want to see what got printed, use should output()
07:52:03langenbergyeah, okay
07:52:19wycatsbrixen: we don't have be_eql, right?
07:53:13brixenwycats: nope
07:53:21wycatssuck
07:53:35_ADS enters the room.
07:53:50wycatsso you do .eql?(...).should == true?
07:54:01brixen.equal?()
07:54:03brixenbut yeah
07:54:54wycatsare those identical?
07:55:40rueNo, #equal? is an object_id check
07:57:54wycatsthat's not what ri says
07:58:09wycatsri Object#eql? says that it's an alias
07:58:40wycatsoic
07:58:41wycatsI lied
07:59:45aotearoa enters the room.
08:00:10wycatshaha... my singleton specs pass in MatzRuby but explode all over the place in Rubinius
08:08:14nex3 enters the room.
08:09:08benburkert leaves the room.
08:09:46boyscout1 commit by Yehuda Katz
08:09:47boyscout * Added singleton specs (and reorganized stale one):; dfdf909
08:13:57nex3Is there a Rubinius disassembler?
08:14:06rubuildiusYehuda Katz: dfdf90968; build failed! http://rafb.net/p/p2ql4H62.html
08:14:23nex3There's a reference to "compiler/bytecode/disassembler.rb" in the docs, but it doesn't seem to exist anywhere
08:15:09brixennex3: that was for compiler 1
08:15:15brixenthe current compiler is compiler 2
08:15:21nex3Oh, okay
08:15:25nex3So no disassembler?
08:15:26brixenthere is a Iseq#decode
08:15:38brixenbut it needs to be hooked up into a disassembler
08:16:02brixenso, no disassember right now
08:16:22nex3That's better than Iseq#each(&:puts) :p
08:17:47pietia enters the room.
08:22:41_ADS leaves the room.
08:23:24lstoll leaves the room.
08:24:02lstoll enters the room.
08:25:44dbussink enters the room.
08:35:35ezmobius_ leaves the room.
08:35:36ezmobius leaves the room.
08:42:43dbussinkmorning
08:45:14krisps enters the room.
08:50:10kwatch enters the room.
08:58:34brixenmorning dbussink
08:58:46dbussinkbrixen: still not asleep?
08:58:50brixenso, this is the sort of thing with mri that is maddening
08:58:56brixendbussink: not quite, but very soon
08:59:03dbussinkbrixen: any luck with the linux failure?
08:59:09brixen1.0.coerce "2" => [2.0, 1.0]
08:59:20brixen1.0 + "2" => exception
08:59:32brixenBignum.coerce "2" => exception
08:59:39b