Index

Show enters and exits. Hide enters and exits.

00:47:19Zoxcis there a way to execute the block in some self context without defining a method on that context?
01:10:23jaribZoxc: instance_eval ?
01:15:21Zoxcyeah, I just forgot that you could send an existing block to it :/
01:48:32benschwarzWheres that evan at?
01:53:14evanyou rang?
02:01:44benschwarzevan: so here I sit, uglier than last month
02:01:52benschwarzwith no donation from ephoenix
02:02:00evani was waiting to see all the pictures
02:02:08evanso I could donate approriately.
02:02:15evan11 and 18 are my faves.
02:02:34benschwarzI've got one to take today
02:02:42benschwarzI missed a couple through the month through travelling
02:02:54benschwarzgot an idea for a last photo?
02:03:07evanmaybe reaching to grab the ass of a little boy?
02:03:11evanor maybe thats taking it too far.
02:03:13benschwarzerm
02:03:20benschwarzwomen are already terrified of me
02:03:20evanyeah, lets back slowly away from that idea.
02:03:31evannow turn and RUN!
02:03:46benschwarzhaha
02:03:48evani'm going to throw $100 into the pot right now.
02:04:01benschwarzfucking brillient
02:04:06benschwarzbrilliant
02:04:38evanwith the knowledge that should I ever have prostate problems while on vaca down under
02:04:40evani'll be safe.
02:05:33benschwarzand hopefully not having to take the prostate test "down under"
02:06:36evanpretty sure thats par for the coarse after age 40.
02:06:43evanso i've got 10 years of bliss left.
02:07:17benschwarzI'm holding on to my time
02:07:32benschwarzand enjoying the "no innys in the outie hole" status
02:07:44evanhah
02:08:01evanwe've all heard stories of guys that get "EXIT ONLY" tattoo across their butt cheaks.
02:08:09evanI wonder what the proctologist must say.
02:08:20evanwell, if you check your account
02:08:28evanyou'll see a fat check from Uncle Evan.
02:08:37evanor electronic payment, as the case may be.
02:10:19yakischlobathinks this is a weird conversation to walk into and promptly retreats
02:10:31benschwarzits all about rbx yo
02:13:58evanyakischloba: you need to be dynamic in these trying times.
02:14:09yakischloba:)
02:16:05evanujihisa!!!!!!!!!!!!!!!!!!!!!!!!!!!
02:16:18ujihisaevan!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
02:16:51evanyou've out done me again with !s
02:16:55evannext time I shall prevail!
02:18:23ujihisahi :)
02:18:26ujihisahahaha
02:19:38evanon rubinius related news
02:19:44evanI have found the source of the supurious hangs.
02:19:53evanspurious.
02:20:08evanthe solution requires some thought though.
02:21:01evanin weird news, I get a sacajawea dollar coin today at a parking garage. Strange.
02:21:50ujihisahttp://images.google.com/images?client=safari&rls=en&q=sacajawea%20doller&oe=UTF-8& ;um=1&ie=UTF-8&sa=N&hl=en&tab=wi
02:21:54ujihisastrange.
02:22:45evanyep, thats the one.
02:23:20evanthe problem with large demonination coinage in the US is that
02:23:26evan1) no machines take them
02:23:30evan2) you never have them with you
02:23:42evan3) 1 causes 2, 2 causes 1
02:24:31ujihisalol
02:25:28ujihisaI've heard that no US people use coins except quaters
02:27:05evanthat is generally true
02:27:13evanyou use the other coins for parking meters sometimes
02:27:44ujihisaI see
02:28:23yakischlobahas a big pile of change on the desk that he has no use for
02:32:09ujihisaOne of my friends collected such like one
02:32:21ujihisaHe had a huge pile of change
02:32:59ujihisaWhen I was very poor, he gave it to me, and I used it to survive
02:33:11ujihisa(joking
02:34:19evanhehe
02:34:22evanpoor ujihisa!
02:34:29evanmaybe I should send you this dollar coin
02:34:35evanit would probably cost at least a dollar to send it though.
02:34:36ujihisa($)
02:37:49ujihisaShipping cost increases O(log n) while total money increases O(n)
02:38:01ujihisaSo we can ignore the shipping cost when n is infinity
02:42:08evanwell, thats good to know.
02:42:18evanfor when I'm shipping you a universe-in-a-bottle
02:43:04ujihisathe bottle may be very handy
02:43:25evanit might have infinite mass, and there for have no mass
02:43:29evanso it might be easy to ship
02:43:31evanwe'll never know.
02:44:12ujihisawe'll never know.
02:44:26ujihisaI found a photo of a handsome guy http://www.flickr.com/photos/tmaedax/4128581024/
02:46:00evanha!
02:46:06evanI've got some weird facial expression though.
02:46:21ujihisahaha
02:48:01ujihisainstantaneous shot
02:55:50boyscoutVastly improve "missing end" syntax errors - 7537128 - Evan Phoenix
02:56:04evanThe tyranny of "syntax error, unexpected $end, expecting kEND" is OVER
02:57:01evanI give you:
02:57:11evanmissing 'end' for 'class' started on line 3
02:57:40evanno longer must you hunt to try and figure out what didn't get closed.
02:57:55evanit's my early holiday gift to all rubinius users!
02:58:02evanI should do a blog post on it.
02:58:06evannow... dinner!
02:58:06will_lthat sounds awesome
02:59:58boyscoutCI: 7537128 success. 3005 files, 11472 examples, 35615 expectations, 0 failures, 0 errors
04:46:38will_lWhat's a magic comment? I'm reading through the compiler and parser bits I've seen it pop up a few tiems
05:04:12evanwill_l: it's a comment of the form
05:04:17evan# -*- foo -*-
05:04:56will_lwhat are they for?
05:06:35will_loh, encoding types?
05:07:13evan1.9 uses them for encoding
05:07:27evanin rubinius, i've made any available to the compiler
05:07:34evanright now, you can enable a compiler transform with one
05:07:40evanthats how array zen is enabled atm.
05:12:31will_lI'm looking at the Parser stage, and I've tracked things down to the file_to_ast call in melborune. It looks like this is taken care of by the grammer?
05:12:48will_lgrammar
05:14:03will_lis this the part that's the MRI parser that i've read about?
05:14:24evanyeah
05:14:34evanfile_to_ast is hooked up to the MRI parser we imported
05:15:00boyscoutAdded --show option to help configure debugging. - e93211e - Brian Ford
05:15:43will_lthen once there's the ast, melboune visits itself around and we have a nice ruby ast
05:16:04evansort of.
05:16:15evanwhen you call file_to_ast
05:16:30evaninternally, a C NODE* tree is built
05:16:32evanjust like in MRI
05:16:42evanbut we then walk that tree and call methods for each node seen
05:16:57evanthe called methods create AST node instances and return them
05:17:12evanso the internal visitor turns a NODE* tree into the ruby AST tree
05:17:23evanAST tree ug. That's like ATM machine.
05:17:59boyscoutCI: e93211e success. 3005 files, 11472 examples, 35615 expectations, 0 failures, 0 errors
05:20:38will_lah ok thanks. There's a lot of hopping around, but it's starting to make sense
05:22:17will_lalso, not to pester, but I got a doc patch in the other week and I don't think I got the bit yet
05:23:39evanoh!
05:23:41evansorry about that.
05:23:44evanwhats your github name?
05:23:54will_lno worries. It's "will"
05:24:12evanThere ya go!
05:26:21will_lthanks!
05:34:43brixenhave bit, "will" commit :)
05:35:02brixendamn, closing... bbiab
05:35:15will_lI had some fun with my github username http://will.github.com/make_me/beautiful/
05:36:44brixenhaha
05:38:16will_lhah, also that reminds me I had a stab at implementing ruby in ruby over a year ago http://github.com/will/fauxbinius/ ;)
05:38:54will_lIt's a bit harder than that I've come to realize
05:44:31evanthe motto of that should be "Is it live or is it Memorex?"
05:44:54evanjust pushed out a blog post about the enhanced syntax errors.
08:47:11dbussinkevan: so what causes the weird hang?
11:29:00rueThe Github ticket interface is slow to move around in
11:47:48manverurue: i use the api to get the tickets and browse offline...
11:49:21manveruanw, what i wanted to ask, does EM run on rbx?
11:51:13rueAh, good idea
11:51:27rueDunno about EM, I think someone did get it to compile, though
11:52:13manverugot compile issues, doesn't EM have an FFI implementation?
11:52:42manveruhmm, seems not
11:52:59manveruok, i'll just try whether ffi-tk works
11:53:00rueWhat do you see compiling?
11:53:30rueFFI does not have callback support currently, which may be a problem
11:54:00manverumight take a while to get that error again, had to nuke my rvm
11:54:10manveruuh, yeah, huge problem
11:54:33manverui handle all the key events that way...
11:55:53rueIt has not been an acute-enough itch up to now
11:57:06manveruheh
11:57:13manveruwell, i guess ffi-ncurses would run
11:57:35manveruthat doesn't need callbacks
12:14:38dbussinkmanveru: i saw someone tweet that all specs / tests passed for EM
12:16:57rueAt any rate, a compile error compilation would be handy
12:24:07manveruyeah
12:24:15manveruif i can ever get it to build again ^^;
12:32:05rueI dunno if rvm got fixed...there was some problem with it trying to install Rake, but that should be solved
12:33:52manverumy issue is probably that the install of 1.8.7 fails
15:01:26khaasemanveru: rue: the rvm issue is fixed
15:12:23wayneeseguinThere was an issue? :)
15:19:02rueI talked at you about it ;)
15:27:33wayneeseguinoh haha
15:27:42wayneeseguinsorry, so busy I'm going crazy
15:27:42wayneeseguin:)
17:06:12brixenmorning
17:06:16brixenagardiner!!
17:06:41agardinerbrixen! howdy
17:06:43agardiner:-)
17:06:49rue`def foo(a = 1, *b, c); puts :yay; end`
17:07:31evanbrixen: "super { |x| }" uses zsuper :/
17:07:35rueActually, make that `def foo(yeahforreals, a = 1, *b, c); puts :yay; end`
17:07:36evani'm fixing the compiler now.
17:07:49brixenevan: erg, ok
17:08:05Zoxcshould a benchmark that takes 4s on MRI use 120-240s and really slowdown X11 with rbx?
17:08:08evanzsuper, for when you sort of want the other stuff!
17:08:19rueHeh
17:08:22evanZoxc: maybe!
17:08:26evandepends on the benchmark
17:08:26rueZoxc: Elaborate?
17:08:57rueOh, a trick question
17:09:04rueNo, it SHOULD not ;) It might, though
17:09:50agardinerbrixen: So I fired up the debugger today for the first time in ages, and hit an interesting problem immediately...
17:10:14agardinerseems rbx handles "%s" % "" differently to MRI
17:10:22brixenagardiner: hrm
17:10:38ruebrixen: --show is good
17:10:40agardinerI found the problem, but it was a bit of a surprise to me
17:10:54brixenrue: cool
17:11:04agardineri didn't know that *"" returns nil, but *"a" returns "a"
17:11:19brixenagardiner: um, ugh
17:11:51Zoxchttp://binrapt-shares.googlecode.com/files/rbx_test.tar
17:12:20agardinerthe problem is in string#%, where we spat args to pass to sprintf
17:12:40slavahi guys
17:12:45brixenhi slava
17:13:45evanZoxc: in the future, please just paste them.
17:13:57rueSec, going to find some tape
17:15:21dwaitegood morning
17:15:41evanmorning!
17:15:43dwaitebrixen: want me to resend that patch?
17:15:54rueHi ho
17:16:04dwaiteevan: I moved bstring into melbourne and removed it, libcchash, libmquark and libmptr_array
17:16:10Zoxcknow of any multi-file pastebins?
17:16:23dwaitewell, some of bstring in, I left out a lot of the bits we don't use
17:16:38dwaiteZoxc: gist.github.com ?
17:17:00brixendwaite: yes, could you redo the patch against evan's changes
17:17:05evandwaite: sweet.
17:17:16brixendwaite: and post a gist here so evan can look at it
17:17:18evanbrixen: what is g.state.super ?
17:17:43Zoxcgist doesn't seem to accept files as input
17:17:48brixenevan: sec..
17:17:54evanZoxc: you still have to paste them into it.
17:18:00evanZoxc: there is a command line gist tool you can use though
17:18:40dwaitebrixen: I'll see if I can post a partial one. unfortunately, the removal made the patch size explode
17:18:45rueevan: Building Melbourne before the rest using the appropriate GCC works OK, though it is inelegant.
17:19:16evanrue: how so?
17:19:17brixenevan: it's a place to put super info on that generator
17:19:25evanwho puts it there?
17:19:32brixenI'm looking heh
17:19:56brixena method should
17:20:25evank
17:20:29evani've got the fix none the less
17:20:29brixena defn defs
17:20:30evanjust curious.
17:21:07evanbtw, changing ast/sends.rb didn't cause the kernel to get recompiled
17:21:10evandid we change that?
17:21:49brixenno, it should
17:22:00brixenevan: git show 0deaf013d
17:22:12evana deaf commit!
17:22:17rueThat is in lib though?
17:22:28brixenevan: and 5d2851bf
17:23:00evanUG. i'm getting an unbalanced stack now. :/
17:23:10rueevan: Mind, I dunno if there is a reasonable way to improve it, but having to grapple with two unrelated compiler chain choices in one workflow is just meh
17:23:33ruebrixen: ^^ re #91.
17:23:35evanrue: well, they're not grappled together
17:23:46evanor rather, they shouldn't be
17:23:49brixenevan: hmm, yeah there is a problem not recompiling kernel, I'll fix it
17:23:57evanare we reused the Makefile generated for MRI on rbx?
17:24:03evanmaybe thats the issue
17:24:05evanwe shouldn't be doing that.
17:24:17brixenwe should not be using any Makefiles in extensions now
17:24:26brixenle'me look at this ticket..
17:24:35evanbrixen: melbourne still has an extconf.rb
17:24:51evanno Makefile though, so perhaps the extconf.rb is cruft.
17:24:54dwaitehttp://gist.github.com/245576
17:24:54brixenit is
17:25:11brixendwaite: does that cleanly apply?
17:25:18dwaitebrixen, evan: still big, but I left out deleting the bits in external_libs
17:25:40dwaiteI rebased it ten minutes ago, but didn't pay attention if there were more posts :)
17:25:58brixenok
17:26:47evanif it applies cleanly, compiles, and passes the specs
17:26:49evanthen commit it.
17:28:01rueWe are building an actual MRI extension though, right?
17:28:45evanyep
17:28:50evanmelbourne is built twice
17:28:52evanonce for MRI
17:28:53evanonce for rbx
17:28:54brixendwaite: yeah, go ahead
17:29:08rueIn that sense it is fine that one may need to use different flags or whatever, it is just that this is in the same workflow as building the rest of rbx so there is no convenient way to separate the two toolchains
17:29:25brixenrue: why do they need to be separate?
17:29:30brixenie what does separate mean?
17:29:43evanrue: is this because to build an MRI extension, you need to use gcc-4.2
17:29:47dwaitebrixen: I was really holding off to see if you had any tests you wanted to run to make sure my new quark impl isn't a performance regression. Although, I don't think the old implementation was super-streamlined either :)
17:29:49evanbut you want to build RBX with 4.3
17:29:50evan?
17:29:54rueYes
17:29:56evanAH
17:29:59evanput that in the ticket
17:30:02rueOr, 4.0 for MRI
17:30:03brixendwaite: we'll address it if there are
17:30:04evani think i've just put 2 and 3 together
17:30:09dwaitebut if you are fine with me tossing it in, we can always fix that if it turns out to be a prob
17:30:10evanand gotten 5!
17:30:13dwaiteyep, ok
17:30:15evan</monday math joke>
17:30:38rueIt should already be there :)
17:30:39evanbrixen: rue has a valid point
17:30:45evanbrixen: when we compile an MRI extension
17:30:57evanwe should just ignore the rbx CC variables and such
17:31:02evanand use whatever is MRI's rbconfig.rb
17:31:30evanrue: if it's there, my brain didn't distill it
17:31:32brixenevan: sure
17:31:59brixenevan: except that we won't always be bootstrapping with MRI
17:32:09brixenso we can't just pull out the rbconfig.rb stuff for MRI
17:32:17dwaitek, I'm going to do a fresh build 'just to make sure', should be 15 minutes
17:32:27brixenwe need to add platform-specific settings for building the MRI ext
17:32:41brixendwaite: sounds good
17:32:44evanbrixen: right, lets just hack special MRI specific code in there for now
17:32:50evanthis is a unique situation
17:32:50brixenevan: yes
17:33:01evanso a unique (aka hack) solution is warranted.
17:33:10brixensure
17:33:18evani think i'm going to start calling all my hacks "unique solutions"
17:33:27evan"check out the unique solution I did!"
17:33:41dwaitecall it situational driven design ;-)
17:34:49evanwOO!
17:34:51rueNot so much driven as getting a ride
17:35:11evanwe'll need a a flow chart of X driven design pragmas out there these days
17:35:17rueevan: I may have edited since
17:35:19evanwhich one you should be using
17:35:24evanrue: yep! i got it now.
17:35:33evanbrixen: check out ast/sends.rb line 606
17:35:35ruebrixen: Yeah, it is not a straightforward issue
17:36:05rueEssentially doing the MRI build separately is the correct solution, it is just not optimal
17:36:28evanrue: how do you build MRI extensions now?
17:36:33evando you pass CC= in everytime?
17:36:43evannot rubinius related stuff
17:36:45evanjust normal extensions
17:36:59dwaitefor example, I had to do a quite unique solution as part of this because I incorrectly assumed that Hash<const char*> and EqualTo<const char*> would carry over from the stl hash map extension
17:37:15dwaiteso my hash was hashing and indexing by pointer value rather than string contents
17:37:31dwaitebut the bootstrap uses MRI CFLAGS/CXXFLAGS, so DEV isn't honored
17:37:35rueevan: I rarely build them for 1.8 anymore, but that is probably how it would have to be
17:37:44dwaiteI have a really unique patch to make it honored :)
17:37:45evanrue: ok
17:37:48evanrue: wanted to double check.
17:38:09evandwaite: heheh
17:39:09dwaiteI really dislike how languages 'give you' reference/pointer-wise hashing and equality concepts for free and by default
17:39:27rueI could possibly rebuild but I vaguely recall some issue; nevertheless, I think someone will potentially actually be tied to a particular MRI build
17:39:30evanlanugages being C++ stl :)
17:39:36dwaiteand java
17:39:42evanoh yeah
17:39:45dwaiteand CLR
17:39:48brixenevan: yes, line 606?
17:39:50evanthey hash via Object.hash be default don't they
17:39:54evanbrixen: pretty sure that line is wrong
17:40:07evanblock_arg is a setter (BlockArgument object) for the block
17:40:08evannot a getter
17:40:12evanso i'm removing it.
17:40:30rueOh, right, that is what I was asking before...I thought lib/ did not force a kernel rebuild
17:40:31evanand having zsuper use push_block if there is no explicit @block set
17:40:47brixenevan: it could very well be wrong, super was a bit of a mess
17:40:54evanbrixen: ok, wanted to doublec heck.
17:40:55brixennothing in there should be taken as 10 commandments :P
17:41:01evani've got it sorted now.
17:41:05brixensweet
17:41:18dwaitewhat would be the best way to not have to put ./lib on the load path for MRI
17:41:37dwaitehmm
17:41:38rueRUBYLIB?
17:42:31rueOn the other hand, I am not sure about kernel code relying on lib code to that tight a degree
17:43:01brixendwaite: for 1.9, that's probably the preferred solution
17:43:26brixendwaite: well, if you mean for loading the compiler, I'm changing that
17:43:39brixenso running mri will not use -Ilib to require the compiler
17:43:42dwaiteahh excellent :)
17:43:55brixensince that fucks up stuff with RUBYOPT=rubygems for instance
17:47:33boyscoutWrite a new quark implementation in C++ for the compiler - 8e2acc8 - David Waite
17:47:33boyscoutRemove now-unused libbstring, libcchash, libmquark and libptr_array - 05e8492 - David Waite
17:48:26boyscoutCI: Build 05e8492 failed. http://ci.rubini.us/rubinius/builds/05e8492c82b267e57fa80d1f7746406538585ab9
17:48:50brixendwaite: hehe welcome to the jungle!
17:49:09brixenman, having to support building on 1.8 and 1.9 and all these install options now is carazy
17:49:22dwaitenoo
17:49:23brixenwe need to get some more/better CI in place
17:49:34evanack
17:49:39evani should change CI to not use -q
17:49:43evanso we can see what it's doing
17:49:43evanone sec.
17:50:30evanumm.
17:50:37evandyld: lazy symbol binding failed: Symbol not found: _quark_from_string
17:50:47dwaiteon.. huh?
17:51:18dwaiteso its failing on link?
17:51:26evanI had to remove all the .o files from melbourne
17:51:32evanit didn't properly recompile things
17:51:36dwaiteahh
17:51:50dwaiteit might be an issue with extern "C"'s
17:52:31dwaitebut I tried with (apple gcc) 4.0, since its the oldest compiler I have
17:52:56evanerg. yeah, i had to clean out all melbourne build artifacts to get it to go
17:52:57evanhere
17:53:29dwaiteaha, yeah
17:53:53dwaiteit didn't have any sort of dependency tracking to rebuild things that depended on quark, and the symbol subtley changed
17:54:00dwaitequark_from_string -> melbourne::quark_from_string
17:54:14evanright.
17:54:30evantrying to see if i can get rake to remove the build artifacts
17:54:36evanso everyone doesn't have to do this manually
17:57:21evanm, i think this will do it
17:57:21evanone sec.
17:59:32dwaitedoes a drumroll
17:59:38evanone sec!
18:00:23rue*tap, tap*
18:00:56dwaitestarts to break into a drum solo
18:01:13evani'm getting there, i'm getting there.
18:01:55evanchilax brohiam.
18:02:32boyscoutPull apart the yacc error message, report only the good part - f534f37 - Evan Phoenix
18:02:32boyscoutProperly handle a block passed to zsuper. Fixes #103. - be625fa - Evan Phoenix
18:02:32boyscoutDepend .o files on their own Rakefile - 49dc0e8 - Evan Phoenix
18:02:53dwaiteback in 30
18:04:21boyscoutCI: Build 49dc0e8 failed. http://ci.rubini.us/rubinius/builds/49dc0e8e62bca99d135b817a86896e91f669db54
18:04:35evan:/
18:04:38evanstill not reported.
18:06:57boyscoutInclude the string header - 6324fc5 - Evan Phoenix
18:08:26rueHm, Activity Monitor is pretty nice
18:09:33rueParticularly Sample
18:10:00boyscoutCI: 6324fc5 success. 3005 files, 11472 examples, 35615 expectations, 0 failures, 0 errors
18:52:43rueMm, C++ string "handling"
18:56:24dbussinkevan: what is the cause of the spurious hang?
18:56:26dbussinkis having one right now :P
18:57:23rueAttach!
18:57:50rue(This is also why I always build:debug ;)
18:58:59dbussinkrue: well, evan said he found it, so i'm curious :)
19:23:49dwaiteI'm a little sad now, I wrote ptr_array and mquark for rubinius, and now they are no more
19:25:42evanheh
19:25:54evantheir essence lives on in other code
19:27:30brixendwaite: never mourn dead code
19:27:49brixenthere lies the road to attachment, ego, and suffering :)
19:28:51rueTruep
19:32:53evanThe past is but a workshop of horrors.
19:33:41dbussinkevan: did you see my question?
19:34:00evanyes
19:34:02evansorry
19:34:18dbussinknp, just wondering
19:34:20evanbasically, i changed it so the the JIT walks the opcodes via the control flow
19:34:23evanusing a work list
19:34:33evanwhich means that the code is walked in any order
19:34:37rueHm, apparently my Bank of America account is "undre imediate attack" and must be "clsoed down" right away using this handy link they provided
19:34:48evanbut the JITVisit class expected it to be walked top to bottom
19:35:02evanso right now, it's easy for exception handlers to not get properly unregistered
19:35:21evanwhich means that commonly an ensure which is reraising an exception reraises it to itself
19:35:24evanthus hanging itself.
19:35:43dbussinkthat's a really tricky one :)
19:35:50evani'm not sure if a VM is hung or hanged
19:35:57evanbut it's stuck none the less.
19:36:04dwaiteI still want to remove bstring, but now I feel a bit more confortable doing that via something like pegarus :)
19:36:10dbussinkmaybe stuck is the best description then ;)
19:36:14evan:)
19:36:35evanactually, we probably have had this bug before
19:36:40evanbecause the code for doing this is pretty brittle
19:36:50evanit's being redone as we speak.
19:37:00dbussinkhehe
19:37:17dbussinkevan: btw, what's your opinion on stylistic things like using return on the last line etc.?
19:37:44evani flip flop on that
19:37:51dbussinki see that in the code :P
19:37:53evanbut typically just have the thing I want to run at the end
19:37:59evanor I try to
19:38:02evaneven though I think it looks wierd
19:38:12evanif you want to explicitly return something
19:38:19evanthen I think that the return keyword is prudent.
19:38:22evangenerally.
19:38:33evanexcept where it detracts
19:38:33evanlike
19:38:36evandef foo
19:38:40evan ary.map { ... }
19:38:42evanend
19:38:43dbussinkevan: well, i usually use return to break early, otherwise i just use the last statement way
19:38:49evana return there adds nothing
19:38:53evandef foo
19:38:54evan a = nil
19:38:57evan <something blah>
19:38:58evan a
19:38:59evanend
19:39:01evanimho
19:39:07evanreturn a at the end is clearer.
19:39:12evanbut i do try not to do that
19:39:15evanbecause I know most people don't.
19:39:27dbussinkhow about using the return of an if statement?
19:39:36evanlike?
19:40:06brixendbussink: paste your gist
19:40:16dbussinkevan: https://gist.github.com/b6055f5b4892b4e8afbb
19:40:21brixenit has lots of good examples to discuss
19:40:40evani don't really like the 2nd one
19:40:45dbussinkbrixen: i have a pretty big one atm
19:40:58evanmainly because it's hard to know if you intend to use the return value of if as the return value
19:41:01evanor if it's a bug.
19:41:08evanit's all about intention
19:41:19evanthe value of an if is used so infrequently
19:41:25dbussinkbrixen: i'll grab some out of what i have now
19:41:30evanthat i never intend for someone to use it.
19:41:35dbussinkevan: personally i prefer the second one, but that's me
19:42:34evansure, but i think you'd get a lot of "umms" if you asked people
19:42:43evan"what is the value of an if with a false condition"
19:42:50rueI almost never explicitly return from a conditional
19:43:06dbussinkwell, i think it's highly debatable :)
19:43:08evanbecause of those umms, people don't have the intention that it's used.
19:43:14dbussinkalso depending on your background etc.
19:43:14rueIn first case, I would flip that around
19:43:22rueIf you want to be explicit
19:43:44evandbussink: i'd probably read the 2nd one as "he doesn't care what the return value is"
19:43:53rue`return unless lm = blah mah moogi`
19:43:54evandbussink: not "he wants to return nil if the condition was false"
19:44:20evanlvar assigns on the far right hand side are hard to read
19:44:22rueI almost never explicitly return *after* a conditional, I should say.
19:44:24evanis my only nit with that.
19:44:25dbussinkevan: well, the doesn't care to me implies nil, but i can see how that can also trick people sometimes
19:44:44evandbussink: you better care that it implies nil
19:44:48evanbecause thats what you're returning.
19:44:57dbussinkevan: i do, so therefore i use it
19:45:10evanyou're confusing me.
19:45:14dbussinkevan: but it's less clear for people who don't know the semantics
19:45:18evan"well, the doesn't care to me implies nil" <= ?
19:46:05evanin my opinion
19:46:16evanthere is little upside in depending on that semantic
19:46:16eneboevan: You have a commit I can look at for your parser syntax error reporting magic?
19:46:36evani prefer a little more typing fore more clarity
19:46:42evani don't get paid per keystroke.
19:46:47evanenebo: i do!
19:46:49eneboThe truth is that beyond jruby adding it we can probably push it back to MRI since they also probably hate those messages
19:47:36dbussinkevan: hehe, well, for me both are clear and i find the return approach to be more verbose, but that's my opinion
19:47:39evanenebo: http://github.com/evanphx/rubinius/commit/7537128aa905b1721a58c719d25e44604a5ed6fe
19:47:49evanis more verbose a bad thing?
19:48:13evanimho, it's better to communication your intention to the next developer
19:48:21evanthan to worry about the terseness of your communication to the compiler
19:48:31evanesp. since they turn into nearly the same thing
19:48:56evanit's not an absolutely maxium of course
19:49:03evanand i'd kill someone that went overboard in that dept
19:49:07evanbut it's a happy medium
19:49:19evanwe all just find that happy medium at different places is all.
19:49:23evani don't really have a big issue with it.
19:50:00evanenebo: you just need a stack of <number, string> objects
19:50:19evanand then some carefully places push's and pop's
19:50:26evans/places/placed/
19:50:45dbussinkevan: here are some other things i would like your opinion on: https://gist.github.com/424b2ce3948666af9864
19:51:01eneboevan: yeah I figured you needed to maintain potential entry/exit points for relevent tokens
19:51:51evandbussink: lines 40 and 41 should be indented
19:51:52brixendbussink: I'm not a fan of the key? change :(
19:52:01evanotherwise it's very, VERY easy to miss the and
19:52:29dbussinkevan: 30 / 31 you mean?
19:52:39evanno.
19:52:41evanin the gist
19:52:44evan40 and 41
19:52:45eneboevan: Yeah this is pretty simple and I don't think will impact perf if we pre-allocate the stack (and on overflow grow)
19:52:48dbussinki think i updated it :)
19:52:51dbussinkevan: if you reload?
19:53:05evanok, 31 and 32 now.
19:53:13evanyou gotta tell me if you reload it!
19:53:18evanupdate, rather.
19:53:18eneboLargely code is not so deep so calculating a reasonable stacksize default will not be hard
19:53:22dbussinkbrixen: well, the !! is also used in other places
19:53:29dbussinkevan: didn't know you were that fast ;)
19:53:34brixendbussink: still not a fan
19:53:39evanenebo: huh?
19:53:53dbussinkbrixen: well, that could mean the other places should be changed too
19:53:55evanyes, i'm not a big fan of the !! mnemonic
19:54:01evanyeah, those should be changed as well.
19:54:08evan!! has bad intention, imho.
19:54:11eneboSorry just saying stack maintenance can almost be free for this feature if we pre-allocate the stack
19:54:24dbussinkevan: there is no other to_bool kind of thing is there?
19:54:25evanah yeah
19:54:37eneboOur parser still needs to get faster not slower
19:54:38evanenebo: even a depth of like 20 or something is probably way more than any code will hit.
19:54:48eneboevan: yeah that is what I figured
19:54:53brixendbussink: no, it doesn't mean other places need to be changed
19:55:06brixendbussink: there is one place that !! is reasonable that I know of
19:55:06evandbussink: brixen added a #to_bool
19:55:20brixendbussink: changing #key? like that totally obscures it
19:55:28brixenI'd veto that change unless evan allows it
19:55:35evani'd prefer the current impl.
19:55:38evanit's clear
19:55:45evankey? is true if find_entry returns anything
19:55:50evanotherwise it's false
19:55:57brixensimple
19:55:59dbussinkand compared to find_entry(key).to_bool ?
19:56:09evanyou can't actualy say it easily with !!find_entry(key)
19:56:17evandbussink: nah
19:56:22evannothing added
19:56:27evanonly clearity taken away.
19:56:34dbussinkevan: but how are you on the first ideas?
19:56:43evanwhich first ideas?
19:56:48evanyou mean the other ones in this file?
19:56:58evaneof? is fine
19:57:03evaneql? is fine
19:57:03dbussinkthe first ones, 4,5,6 and 10,11,12,13
19:57:05evanthe change is fine
19:57:07evani mean
19:57:16evanfix the indent on ==, then it's ok
19:57:27evanline 41 should stay
19:57:38dbussinkevan: how do you feel on the return value of an assignment thing? probably no because of clarity right?
19:57:41evanline 52 should stay
19:57:47evanthe last one is ok
19:57:55evanyep.
19:58:00dbussinkevan: how are you on using () in general?
19:58:09evanit's too easy for it to appear that the return value of the method as anything
19:58:28dbussinkevan: btw, these are some things that are inconsistent now anyway, so hence i want to point them out
19:58:35evanpersonally, when it's something with no reciever and no args and you know it's a method
19:58:42evani prefer using ()
19:58:48evanbecause it communicates the intention to the user
19:59:09dbussinkwell, i've also seen places where calling methods and not using () was advocated
19:59:23evani find that more confusing that with ()
19:59:30evani don't know what the argument for no () is
19:59:38evanless typing is not a valid argument, btw.
19:59:48evanagain, unless you get paid per byte.
19:59:52dbussinkbrixen: was that something you prefered or do i remember that wrong?
20:01:26brixenI don't use () unless it makes it clear
20:01:34brixenwith no arguments, no () can be misunderstood
20:01:48brixenif there are arguments, I never use () unless syntax requires it
20:01:56evanme too.
20:02:02brixenyou cannot look at these things like absolutes
20:02:05brixenthey aren't
20:02:06evanagain, because passing arguments makes it clear that you're calling a method.
20:02:16evanyeah, style is a feeling.
20:02:16brixenright
20:02:19dbussinktrue, but some places look a bit out of place
20:02:20evanlike love.
20:02:23evanit's different for everyone.
20:02:28brixencommunication is the point!
20:02:29dbussinkwhere my feeling was tickling
20:02:40dbussinksome places it tickles harder than others though
20:02:41evanyes, and like love, communication is the key to a long lasting relationship.
20:02:43brixenand remember, people comprehend things in chunks
20:03:02brixenif you have to string 10 things together, you are raising the cognitive burden
20:03:16dbussinkbtw, on a side note, any reason why attr_accessor is returning true?
20:03:27evanwhat should it return?
20:03:28dbussinkin kernel/alpha.rb
20:03:33dbussinkmri returns nil
20:03:40evanno reason.
20:03:47dbussinkjust like kernel/delta/module.rb sets up
20:03:51evannot that it geneally matters
20:03:53evanright
20:04:01evanbecause the alpha one is just to load stuff in the kernel
20:04:08evanthe real one is what matters.
20:04:23brixenwho uses the return value of attr_accessor?
20:04:33brixenespecially if it's nil
20:04:34brixenhaha
20:04:47dbussinkbrixen: i have no idea, but that's the reason i was wondering why it's true in kernel/alpha.rb
20:04:56brixen*shrug*
20:05:29evanit's fine to fix
20:05:36evanand you probably should
20:05:43evanbecause we've communicated noise to you
20:05:45evanwhich is our fault.
20:05:55evanthe explicit true communicates that it means something
20:05:57evanwhen it doesn't.
20:06:48dbussinkevan: hence me asking about it :)
20:06:53evanexactly.
20:07:00evanthis just goes to my point
20:07:11evanthat clearly communicating to the next programmer is one of the most important qualities
20:12:13ruedbussink: `find_entry(key) != nil`
20:12:27evanthats pretty good.
20:12:37evanclearly communications the intention
20:13:07rueA #to_bool might be handy, though
20:13:17dbussinkrue: there is a to_bool already
20:13:24evanwe have one, but I don't really like it.
20:14:15dbussinkrue: but i like the idea, adding it :0
20:14:16dbussink:)
20:14:27dwaiteI still think conditionals should support coercions
20:15:08dwaiteI want to create really negative objects who always are considered false
20:16:05evanplease no.
20:16:35dwaitecurrently all of my objects are really positive
20:17:19boyscoutReturn value of attr_reader, attr_writer and attr_accessor should be nil - e5d76b1 - Dirkjan Bussink
20:17:19boyscoutSome small stylistic changes to simplify the expressions - 53a9c32 - Dirkjan Bussink
20:17:19boyscoutPrefer using do / end for multiline blocks - 54c5fd8 - Dirkjan Bussink
20:17:19boyscoutSimplify Hash#key? - 0a2a702 - Dirkjan Bussink
20:20:22boyscoutCI: 0a2a702 success. 3005 files, 11472 examples, 35615 expectations, 0 failures, 0 errors
20:21:06dbussinkon a side note, ordered tickets and reserved hotel for the phusion tech talk at google next week, so crossing the pond then :)
20:22:24evancool!
20:23:19dbussinkactually just filled in the web thingy for the visa waiver program
20:23:29dbussinkthe next step in making me feel unwelcome :P
20:23:36rueThat fucking asinine thing
20:24:02rueI, honestly, really hate crossing over because of the hassle they give me even though I am a resident.
20:24:26dbussinkrue: i've never had any really big issues
20:24:37dbussinkthe most nasty check i ever had was actually at schiphol airport
20:24:54dbussinkguess they want to crawl up the ass of the americans or something
20:25:10evanand they do!
20:25:20dbussinkhehe
20:25:23evanI nearly got a full body search at schipol a while ago
20:25:40evangot the whole "so, did you go to any coffee shops?" line of questioning
20:25:50evanand then the complete search of everything I had.
20:25:53dbussinkwell, i still suspect that i don't have a lot of problems because i've visited the pentagon once and was probably screened for that :P
20:26:07evanI think they took the lining off my bag actually
20:26:10evanit was hilarious.
20:26:53dbussinkthat's really rediculous
21:43:25eneboevan: Do you guys have an AST dumper like our -S ast command (just prints out the tree)
21:52:04rueenebo: compile should allow you to see that
21:52:52rueenebo: $ vm/vm compile -A file.rb
21:53:00eneborue: cool thanks
22:05:13boyscout-E does not produce sexp. - d37ccf0 - Eero Saynatkari
22:08:09boyscoutCI: d37ccf0 success. 3005 files, 11472 examples, 35615 expectations, 0 failures, 0 errors
22:32:08ujihisahttp://merbist.com/2009/11/30/lots-of-rubies-now-what/
22:32:19ujihisa> Rubinius – use if you want to know what’s going on in your code
22:32:22ujihisainteresting
22:37:57rueWait, MacRuby never released benchmarks?
23:07:37evanmerbist appears to be down for me.
23:07:43sbryantsame here
23:08:43rueSlashdotted, probably.
23:10:50sbryantI guess merb doesn't scale. LOLOLOLOLOLOLOLOLOLOL
23:28:43evansbryant: ICE BURN
23:29:07sbryanthah
23:29:57sbryantTIME FOR BAKING!
23:32:32evanuptime is hard, lets go shopping!!