Index

Show enters and exits. Hide enters and exits.

00:34:45wayneeseguinevan: it copies one set of gems to another ... http://rvm.beginrescueend.com/gemsets/copying/
00:34:55wayneeseguinevan: It quite literally does a cp -Rf ... IIRC
00:35:02evandoes it rebuild all extensions?
00:35:03evanUG
00:35:09evanthats why people keep having issues with rbx on rvm probably then
00:35:10wayneeseguinI didn't think of this use case ;)
00:35:20wayneeseguinSO I think I'm going to have to make it do a 'gem pristine --all'
00:35:22evanthey're copying their MRI build extensions directly to run under MRI
00:35:26wayneeseguinWould that fix it ?
00:35:33evanwhats that do again?
00:35:52wayneeseguinIt essentially re-installs every gem in the GEM_HOME very fast, re-compiling any extensions
00:36:07evanif that forces the extensions to be rebuilt unconditionally
00:36:08evansure.
00:36:24wayneeseguinyes IIRC it's an unconditional rebuild, perhaps Defiler would know more?
00:36:27wayneeseguinI'll add it in
00:37:01evanplease try it.
00:40:21wayneeseguinBBHoss: When you're back around I have something for you to test :)
02:49:21toulmeanevan: you there ?
02:54:12toulmeanI would like to contribute a spec on method overriding.
04:33:16matthewdtoulmean: Should probably go in spec/ruby/language/, if it's something that's not covered
04:48:26toulmeanmatthewd: thx!
04:49:05toulmeanNow I can't write the correct spec for it it seems
05:03:45brixentoulmean: back, what's the issue?
05:04:06toulmeanhey brixen, let me open an issue for it
05:05:57boyscoutImported DL extension from 1.8.7. - b1aca38 - Brian Ford
05:05:57boyscoutMore C-API specs getting DL running. - 547e2ce - Brian Ford
05:05:57boyscoutMore C-API functions for DL. - d08d084 - Brian Ford
05:05:57boyscoutSpecs for rb_set_errinfo. - 01c1e42 - Brian Ford
05:05:57boyscoutChanged rb_set_errinfo to accept Qnil like 1.9. - f52585b - Brian Ford
05:05:57boyscoutMore C-API spec fixes to run with MRI. - 5377580 - Brian Ford
05:05:58boyscoutMoved C-API .h files to include directory. - 07e6ac4 - Brian Ford
05:07:00brixentoulmean: the next issue with rjb is some frozen weirdness in Hash
05:07:12toulmeanok
05:09:55toulmeanbrixen: http://github.com/evanphx/rubinius/issues/issue/327
05:10:03toulmeanI tried to make a spec to repro
05:10:26toulmeanbut it sounds like it's not a generic problem
05:10:52brixentoulmean: could you pls put bt's in <pre> tags
05:11:06toulmeanoh ok sure
05:11:21brixenthanks, makes it much easier to parse
05:11:43toulmeanbrixen: I can edit this after submitting it ?
05:11:49toulmeanoh yes
05:11:53brixenhm, do you have an edit link?
05:11:55brixenah ok
05:11:58brixenotherwise I can
05:12:20toulmeanit's all set.
05:12:31toulmeanFrankly it's a hard one I'm afraid.
05:12:38toulmeanmaybe not worth tackling yet
05:14:17toulmeanbrixen: ^^
05:14:24brixentoulmean: check out what I did to your repo link in you ticket :)
05:14:35brixenthat makes it much easier than manually searching for a line
05:14:35toulmeanI feel like I borrowed your brains for too long you know :)
05:14:46brixener your ticket
05:14:51toulmeanI didn't know github had that
05:14:57brixenyeah, pretty cool
05:15:00toulmeanthx, good to know
05:15:57brixenok, so another thing... :)
05:16:24brixeninstead of just the bt, pls put the whole thing, ie, the commond you ran and any deps needed to exec that cmd
05:16:44brixenI have no idea how to repro this otherwise
05:16:52toulmeanoh crap
05:16:54toulmeansorrt
05:16:55toulmeansorry
05:17:40toulmeanbrixen: ok done.
05:17:47toulmeanyou need to run rake spec
05:17:53toulmeanon buildr's trunk
05:18:12toulmeanyou need all the dependencies of buildr, as rake spec checks for them before running.
05:18:30brixenok, let's see if I can get to this point
05:18:31toulmeanyou did all the hard setup work already
05:18:36toulmeanok
05:19:26brixenoh, can I run this from the rjb clone?
05:19:37brixenyou mentioned something about building the rjb gem
05:20:09boyscoutCI: Commit 07e6ac4 failed. http://github.com/evanphx/rubinius/commit/07e6ac4589eacbf5766ae45eda399261c05830e3
05:20:16brixenack
05:20:19brixen:(
05:20:59brixenwe need to fix CI to point to the ci output instead of the commit link
05:21:54brixenman, these extensions are such a mess...
05:22:11brixenI need to get started on the build system
05:23:01toulmeanbrixen: oh yeah
05:23:14toulmeanI can send you the gem you know.
05:23:20toulmeanor you can create it
05:25:22brixenhow do I create it again?
05:25:32toulmeanyou like pain man
05:25:33toulmeanok
05:25:50toulmeanyou run rake --rakefile rjb.rake at the bottom of the project
05:26:04toulmeansorry at the root of the rake checkout
05:26:19toulmeanis watching the Lost finale
05:26:29toulmeanwhich makes him unable to think straight
05:26:48toulmeanthat should create the gem in the pkg folder
05:27:46brixenk, got it
05:28:27toulmeanyou will need to modify buildr.gemspec to change the rjb version
05:28:36toulmeanor just comment out the dependency rjb line there
05:29:00brixenchange it to what?
05:29:05toulmean1.2.1
05:29:13toulmeanand then to make it simple:
05:29:21brixenit built rjb-1.2.1.gem
05:29:25toulmeanyes
05:29:33toulmeanso you need to install that gem
05:29:37brixenok
05:29:41toulmean1.2.1 is the current rjb trunk
05:30:01toulmeanthen on Buildr to make it simple, run spec spec/core/application_spec.rb
05:30:09brixenbut, if I installed rjb with extconf.rb, why do I need to install the gem?
05:30:26toulmeanbrixen: because .... buildr checks for the gem
05:30:29toulmeannot the lib
05:30:33toulmeanok nvm
05:30:33brixenerg :/
05:30:41toulmeanjust run spec spec/core/application_spec.rb
05:30:54toulmeanwell you know, checking for gems makes kinda sense
05:31:03brixenyeah, that's fine
05:31:09brixenwhat version of rspec should I use?
05:31:25toulmeanlatest fine
05:31:28brixenk
05:31:46brixenI need to fix this CI build first
05:32:12toulmeantake time, please. I can try to isolate meanwhile.
05:46:35boyscoutForce reconfigure for C exts when cleaning. - e484ef7 - Brian Ford
05:54:19toulmeanbrixen: I'd like to help some more.
05:54:37toulmeanI run spec on another file and get an interesting bt:
05:54:41toulmeanbrixen: http://gist.github.com/411570
05:55:16toulmeanI think it's interesting for you. I am not sure how to help isolate it
05:56:14badboymoin
05:56:25toulmeanmoin
05:57:46boyscoutCI: Commit e484ef7 failed. http://github.com/evanphx/rubinius/commit/e484ef7997a9a0a9bdb3432a785f1048a2ef70b7
06:02:34brixendamn DL
06:03:00toulmeanbrixen: for the broken CI or my gist ?
06:07:59brixentoulmean: I'm working on CI
06:08:07toulmeank
06:08:20brixenI should say damn gcc
06:08:41brixenit's always a fucking crap shoot when something will work a particular way
06:08:48brixen</3 gcc
06:08:54scooprclang ftw ;)
06:08:59brixenno kidding
06:10:27toulmeanbrixen: well you can forget my gist, it was me being a clown again
06:10:49toulmeanrbx -S rbx -S spec something :)
06:11:01brixenhah
06:11:09brixenwell, I didn't even look :)
06:11:14toulmeangood
06:18:44brixenwell, what the hell
07:03:51boyscoutDisable DL for now. - 208d81a - Brian Ford
07:04:13brixenrbx is segfaulting when make execs it but not when I do it directly
07:05:40brixenerm, not segfault, StackError
07:12:49boyscoutCI: rubinius: 208d81a successful: 3463 files, 13859 examples, 41513 expectations, 0 failures, 0 errors
16:06:16evanmorning.
16:12:19matthewdevan: I haven't really investigated, but came across this a little while ago: Module.new.method_defined?(:dup)
16:12:57evan# => true
16:12:58brixenmorning
16:12:59evanso?
16:13:11matthewdNot in MRI :)
16:13:16evanscrew MRI.
16:13:24evanthats ridiculous.
16:13:31matthewdKernel.method_defined?(:dup) # => true
16:13:33evanwhy would that be false?
16:13:40matthewdBut not for other modules
16:14:14evanfucking A MRI
16:14:16evanand yet
16:14:23evan>> Module.new.method(:dup)
16:14:24evan=> #<Method: Module(Kernel)#dup>
16:14:28evanO_o
16:14:40matthewdM.methods.select {|m| M.method_defined?(m) } # => []
16:15:24evanwell, wait.
16:15:36evanmethod_defined? says an instance_method of the Module
16:15:41evannot if it responds to it
16:15:49evanso your code is of course false.
16:16:19matthewdBut so's M.methods, no?
16:16:26evanha
16:16:26evanno.
16:16:34evanthats the methods that M, the object, has.
16:16:35evanlike
16:16:37evanObject.new.methods
16:16:41matthewdOh, right
16:17:06evanwell
16:17:26evanthis bug you've found is because we use find_method_in_hierarchy in Module#method_defined?
16:17:32evanwhich, because of other method lookup semantics
16:17:35evanalso searches Object
16:17:48evanwhich, in this case, is wrong.
16:19:34evanthats the only reason this that's true.
16:19:51evani'm not exactly sure why we're checking Object as well
16:19:54evanto tell you the truth.
16:20:18evanbut you can try removing the code on line 138 of module.rb
16:20:20evanand rerun the specs
16:20:22evanand see what happens.
16:26:09evananyone quite famaliar with eventmachine?
16:26:34DefilerI wish I were; trying to get there
16:27:31evani'm trying to figure out how the depths of it are supposed to work when Ctrl-C is hit
16:27:39evanie, how it's main run loop is interrupted.
16:28:08matthewdevan: Not that easy :) spec/ruby/core/module/module_function_spec.rb:105
16:28:48evani don't see how that matters at all.
16:28:53evandid the call to module_function fail?
16:29:00matthewdYeah
16:29:01evani need you to tell me why
16:29:04evannot just what.
16:29:10evanor, where in this case.
16:29:24evani can't read minds.
16:29:40evanok, well, i guess some code needs to check Object and some code not.
16:30:11evanadd a spec, then add a flag to that method
16:31:11matthewdFair enough... I really just figured it was more of a binary "does everything pass" question.
16:31:53evanit was, but you should fix it too!
16:31:56matthewdBut yeah, for now, I need to get some sleep... but I'll come up with a spec and attempt to fix it tomorrow.
16:33:00DefilerI've assumed it has some trap for SIGINT in there and then propagates a 'cancel' event
16:33:08Defilerbut I haven't actually seen that piece of code
16:33:40evanmatthewd: ok, well put in an issue
16:33:47evanand maybe someone else will get to it.
16:34:10brixenmatthewd: yes, pls open issues, don't sit on bugs you know about
16:34:25brixenmatthewd: if you want to say "I'll fix" you can, too
16:40:19cyndisany comments about this? https://gist.github.com/df807c5ccf63243976e2
16:40:53evancyndis: why do it?
16:41:09evanoh, for end_proc
16:41:12cyndisyes
16:41:15evani had to scroll all the way down
16:41:23evanwell, get rid the curry method on Proc
16:41:56cyndishow should i pass the parameter then?
16:42:38evansome other way.
16:42:49cyndisok.
16:42:51evanand writing directly to AtExit is very bad form.
16:43:05cyndisok
16:43:21cyndisi'll think of something.
16:44:09evani'd be fine with adding an alternate at_exit API that allows you to pass arguments
16:44:32evanthats a better solution.
16:44:41cyndishmm, ok
16:44:58toulmeanbrixen: think I could try to code the JVM loading code using FFI and live with it. For now I'll make sure my buildr specs pass on Windows 7.
16:45:04toulmeanwith jruby
16:45:20toulmeanthanks for all the help
16:45:46cyndisshould i just make at_exit take parameters of have a different method?
16:46:12evanno.
16:46:20cyndis*or
16:46:37cyndiswhich?
16:47:00evanyou should add a method under Rubinius that is your enhanced at_exit
16:47:07cyndisok
16:47:13evanthat allows you to pass an object that responds to #call, and any number of arguments for it
16:47:38evanit can put those things in an array and add the array to Rubinius::AtExit
16:47:43cyndisyes, i'll do that
16:47:52evanyou then need to change loader.rb to understand what to do if the element in AtExit is an array
16:54:08brixenevan: halp http://gist.github.com/412119
16:54:25brixenevan: if I invoke rbx directly with the string the make --debug shows, it works fine
16:54:39brixenif make invokes it, that runtime str is wacked
16:54:43evanmake?
16:54:52brixenyes, in the DL ext
16:55:06brixenit subprocesses rbx to run a ruby script to gen the call back functions
16:55:22brixensee the gist
16:55:24evanno clue
16:55:26evanhonestly.
16:55:28evani'd have to debug it.
16:55:34evani'm frusterated with EM right now.
16:58:20cremesis the behavior for Array undefined when you delete elements from it during an &each block?
16:58:30evanyes
16:58:34evanuse delete_if
16:58:36cremesshoot
16:58:51cremesgotchya
16:59:23brixencremes: thanks for reminding me, I'll add that to my post
16:59:40cremesbrixen: any time...
17:35:57Defilerevan: OK, so.. eventmachine scenario..
17:36:12Defilerit is in the middle of a section it has protected by 'rb_disable_interrupts'
17:36:17Defilermeanwhile, you mash ctrl-c
17:36:27Defilerit finishes that section, and re-enables interrupts
17:36:40Defilerdoes MRI at that point start unwinding the loop to handle the SIGINT?
17:38:47kronos_vanoevan, http://mitkokostov.info/resources/results.pdf Rubinius so fast on recursion tests because of method inlining/inline cache?
17:42:07evanwhich tests?
17:42:35evanbe specific.
17:42:39evani don't know which ones you mean.
17:44:50kronos_vanoevan, factorial fib tak tarai
17:45:12evanah, yes, method inlining and method caches are the reason
17:45:22evanbecause the inlining inlines fib into itself
17:45:33evanwhich decreases the number of iterations by 2x
17:45:52evanthe inlined fib can actually inline fib again.
17:46:04evanwhich reduces the loop iteration a lot more.
17:47:33scooprso_sieve seams to stand out nicely too
17:49:45evanyeah, thats an interesting one
17:49:47evani should check out the code.
18:01:32brixenevan: I have questions when you have a minute
18:01:44evango for it.
18:02:46brixenI'm trying to understand vm/vm.hpp:180 in the context of this gist http://gist.github.com/412203
18:03:11brixencheck_stack is called from vm/instructions.cpp:116
18:03:25kronos_vanorrr. still can not build rubinius :(
18:03:59evangist the output of 'rake'
18:04:01kronos_vanohttp://gist.github.com/412209
18:04:30brixenkronos_vano: gist git status
18:04:32evankronos_vano: do you have changes?
18:05:07brixenkronos_vano: also gist ./configure --show
18:07:04kronos_vanorrrr
18:07:08kronos_vanogit stash
18:07:13kronos_vanoand everething works
18:07:18kronos_vano*everything
18:07:21evanthats why I asked if you had changes
18:07:24evanwhat were they
18:07:27evanare they, rather.
18:09:49brixenevan: so, the first arg to VMMethod::interpreter is state, and you pass &state to check_stack, which reinterprets as an intptr_t and cmps with stack_limit_
18:09:55brixenI don't understand how that works
18:10:17brixennor why the eff this would fail under make, but not when I exec rbx from rbx
18:10:44evanyou sure thats what is breaking?
18:10:52evani'll walk you through it anyway
18:11:00brixenyes
18:11:04brixenI'll update the gist
18:11:37evanok, the stack_limit_ is set to an address that is the start of a 'red zone' on the stack
18:11:48evanif we pass it, we should assume we're close to the end and raise a StackError
18:11:48brixenhttp://gist.github.com/412203
18:12:05evan&state is passed only because it's a variable on the stack
18:12:15brixenbut in this case, the VMMethod::interpreter is only called once
18:12:22brixenok, so that makes sense if we were recursing
18:12:23evanand thus it's address on the stack is what we'll use to test how deep the stack is
18:12:28brixengot it
18:13:03brixenI suppose I could read the make source
18:13:19evanwait, how is rbx being called that causes this problem?
18:13:37brixenfrom make
18:13:44evanthe gist is confusing
18:13:51evanit appears you're calling mkcallback.rb directly
18:14:02evanor is that being called from inside make?
18:14:07brixenyes
18:14:15evannot a yes or no question
18:14:16evan:)
18:15:10brixenmake execs @$(RUBY) $(srcdir)/mkcallback.rb > $@
18:15:21brixen$(RUBY) is /home/brixen/devel/rubinius/bin/rbx
18:15:21evanand you added gdb --args in there
18:15:22evan?
18:15:25brixenyes
18:15:36evanwhat is breakpoint 2
18:15:47evana break on VMMethod::interpreter?
18:16:09brixenyes
18:16:17brixenbr 1 is Environment::run_file
18:17:12brixenif I were in some other invocation of VMMethod::interpreter, I could understand this failing
18:17:57evanis, perhaps, make setting some weird ulimit?
18:18:03brixencan make change the way the stack grows?
18:18:26evanmaybe there is a bug here.
18:18:40evanmaybe for some reasoning running it under make caused to manifest
18:18:49evani did just fix a bug with stack_limit_
18:19:02evandouble check that stack_limit_and stack_size_ are set properly.
18:19:25brixenso 0xbfd13bb0 => 3218160560, but stack_limit_ in that gist p's as -1075752383
18:19:52brixenI don't trust gdb for shit though, since the std::string printing was a total red herring
18:20:59evanbrixen: add a print in check_stack
18:21:05evanand run it.
18:21:11evanso you don't have to depend on gdb
18:21:17brixenk
18:24:52Defilerevan: This looks right, right? http://github.com/evanphx/rubinius/commit/3ec71eb2f9fbd7b994eff09558c859cefafb8d01#L20R2526
18:25:09evanyep.
18:25:30DefilerIt felt a little lame to make visit_push_rubinius be so similar to the other one that calls push_system_object
18:25:43evannah, thats fine.
18:25:49Defilerbut I didn't want to mess with the existing one by refactoring it
18:25:51evanyou could refactor it out if you'd like.
18:25:51Defileryeah
18:26:00Defileris it cool if I do that?
18:26:09evansure.
18:26:18evanok, yay, fixed EM
18:26:25evan^C now exits it's run loop now.
18:27:29evanI just had to understand that EM actually does nothing with it.
18:27:33evan*eyeroll*
18:29:51scooprcould you rephrase that as a paraphrased matrix quote?
18:30:39evan"What was said was for you alone."
18:33:41evanbrixen: ok, i'm about done with this EM bug, then I can help ya.
18:34:12brixenn/p
18:34:28brixenhttp://gist.github.com/412241
18:34:37brixenI'm trying to figure out setting stack_limit_ now
18:37:13evanit's crappy atm.
18:37:22evanit's set a few places.
18:37:27brixenthis is happening on ubuntu 9.10 as well, but that uses gmake 3.81 also
18:37:39brixen9.10 32bit
18:37:42evanbrixen:
18:37:46evan(in /Users/evan/git/rbx/lib/ext/nkf)
18:37:46evanmake: *** No rule to make target `ruby.h', needed by `openssl_missing.o'. Stop.
18:37:47evan:/
18:37:53evani just updated
18:38:00brixenyou need a rake clean
18:38:41brixensomeday soon our build will not suck
18:38:43brixenpromise
18:38:53evani just removed the openssl Makefile
18:38:54evanand it's going now.
18:39:03brixenyeah, that's what rake clean does
18:39:18evanthe biggest thing about some future build system is how to handle interact with stuff like the openssl extension that uses Make.
18:39:26brixenindeed
18:39:51brixenand a way to force a clean build directly
18:40:01brixensomewhat like configure forces a reconfig
18:40:10brixenbut without user intervention
18:40:34evanright.
18:41:13Defilerevan: I'm not really going to leave all these comments in, because they are kinda dumb.. but are they correct?
18:41:16Defilerhttps://gist.github.com/05745e55c47cbbadaaa6
18:41:58evans/examples/values/
18:42:02evanotherwise fine.
18:42:31boyscoutCheck async events and raise an exception via rb_thread_select. - ff84fbf - Evan Phoenix
18:43:05evantoulmean: you around?
18:43:12evanbrixen: ok, any luck?
18:43:15toulmeanevan: yep
18:43:20evananyway I can repro it
18:43:25evantoulmean: ok, one sec, i need to help brixen
18:43:39toulmeanno pb
18:47:32evanbrixen: i ran the dl makefile and it seemed to go without issue
18:47:43brixenevan: no, other than when running rbx directly, the value for stack_limit_ is different
18:47:46brixenwhat platform?
18:47:51brixenit works fine on os x
18:47:51evanOS X
18:47:55brixenof course :)
18:47:58evanok, what platform is in broken on
18:48:01evani think i missed that.
18:48:03brixentry on somethisg deb or ubuntu
18:48:10brixenit fails on elle
18:48:17brixenor ubuntu 9.10
18:48:17evanok
18:48:21brixenthe 2 I've tried it on
18:48:27brixenboth use gmake 3.81
18:48:40evanhm. ok.
18:48:47evani'm builing on elle now.
18:49:11evanOS XS uses gmake 3.81 too.
18:50:00brixenah, indeed
18:50:18boyscoutCI: rubinius: ff84fbf successful: 3463 files, 13859 examples, 41513 expectations, 0 failures, 0 errors
18:50:18evanso we need a different differential
18:51:03evanok know, it's probably wrong that stack_limit_ is a intptr_t
18:51:07evanit should probably be a uintptr_t
18:53:40DefilerI'm packaging an llvm for 10.3.1 now
18:53:54Defilerare those checked in somewhere, or are they just on the webserver?
18:54:20evanwebserver
18:54:36evanwhat is your host triple on that machine?
18:54:49evanDefiler: you might want to hold off as well
18:55:05evani'm about to merge a branch that puts us on LLVM 2.7
18:55:18Defilerx86_64-apple-darwin10.3.1
18:55:48Defilergcc 4.2.1
18:55:50evanthere is a 10.3.1?
18:55:51evan:/
18:55:53Defileryeah
18:56:01Defilerright now only the i5 and i7 stuff
18:56:18evanok, well, put the tar.gz on drop.io or something
18:56:23evanand i'll put it in the right place on elle.
18:56:26Defilerbut will be in 10.6.4 everywhere, I believe
18:56:28Defilerk
18:59:33evanbrixen: how did you start gdb in the makefile?
19:00:01evanit won't give me the gdb output
19:00:13brixen@gdb --args /home/brixen/devel/rubinius/vm/vm $(srcdir)/mkcallback.rb
19:00:14toulmeanevan: about to go for lunch in 10
19:00:22evanthat doesn't seem to work for me.
19:00:23toulmeanI will be back in an hour after that
19:00:28brixenunder callback.func rule
19:00:29toulmeanping me whenever
19:00:32evanbrixen: yeah
19:00:40evantoulmean: ok, got time for a quick question?
19:01:11brixenevan: so, in vm.hpp:170 s == 0x0 when I invoke rbx directly, and under gdb...
19:01:11toulmeanok sure
19:01:12brixenBreakpoint 2, rubinius::VM::set_stack_size (this=0x9ac1ce0, s=-1048577) at vm/vm.hpp:170
19:01:15toulmeanevan: ^^
19:01:24evantoulmean: for issue 327
19:01:30evani don't really follow whats wrong.
19:01:37evanyou've defined a trace method that takes an argument
19:01:38toulmeanyep ok.
19:01:43toulmeanyes
19:01:47evanbut then you call it with no arguments
19:01:51evanso whats the issue?
19:01:51toulmeanand then I try to access a OpenStruct
19:02:03toulmeanwith the trace method that is interpreted without arguments
19:02:15evanum
19:02:18evanopensturct?
19:02:23evani see nothing about OpenStruct anywhere
19:02:24toulmeanerr, yes
19:02:34evanthe issue doesn't mention OpenStruct
19:02:39toulmeanBuildr::Application extends Rake::Application
19:02:41evanso i've got no clue what you mean
19:02:53toulmeanwhich has an option method, which returns an OpenStruct
19:03:02evanis application.options an OpenStruct?
19:03:04toulmeanevan: my sincere apologies if I'm not making sense.
19:03:07toulmeanyes.
19:03:12evanok, thats the missing info
19:03:12evan:)
19:03:27evanalso, what do you mean "bent"?
19:03:27toulmeanthe thing is, I could not reproduce it with a smaller spec.
19:03:39toulmeanlet me see my description
19:04:41toulmeanoh. We are in a bent situation because we are using that accessor, with an overridden class, in a yield, with a method with the same name defined in the default nm
19:04:48evanno bent
19:04:54evani don't know what you mean by "bent"
19:04:55evan?
19:05:01evanyour vocab is puzzlingi
19:05:05evando you mean bad?
19:05:12evanweird? strange?
19:05:15brixenbent == not straight
19:06:04brixendeviate from a straight course or path
19:06:08brixenanyway, that's how I read it
19:06:21toulmeannot a straightforward situation
19:06:29toulmeansorry again... that's my French
19:06:37brixentoulmean: haha
19:06:43toulmeanok let me try to repro again with a smaller spec where I use a OpenStruct
19:06:47brixentoulmean: are you saying, "pardon my French" ?
19:06:55toulmeanand yes I can certainly do better with bug reports
19:06:55evantoulmean: ok, you mention an accessor, etc.
19:07:03evancould you please write out the scenario verbosely
19:07:04toulmeanno I'm actually French.
19:07:08brixenheh
19:07:10toulmeanyes
19:07:16evandon't assume i know which accessor you mean, which class you mean, etc.
19:07:27toulmeanevan: ok put me that one on hold, and I'll work on making it reproducible
19:07:35toulmeanor will close as too difficult to repro
19:07:35evanok
19:07:50brixenevan: re gdb output, make sure you don't redirect that
19:07:55brixenie no > blag
19:07:58brixener blah
19:08:11evanbrixen: DOH.
19:08:14evantoulmean: ok, thank you.
19:08:21brixenevan: that's ok, got me too
19:13:35evanbrixen: well, zoinks.
19:13:41evanstack_limit_ is pretty much wrong.
19:14:11brixenseems so :)
19:14:45brixenhow would you know the stack grows the other way on a platform?
19:14:47evanwell, thats bizarre.
19:14:51brixenjust out of curiosity
19:15:01evangetrlimit(RLIMIT_STACK, &rlim)
19:15:04evanis say that
19:15:18Defilerhttp://supremetyrant.com/ruby/llvm-x86_64-apple-darwin10.3.1.tar.bz2
19:15:18evan(gdb) p rlim.rlim_cur
19:15:19evan$1 = 4294967295
19:15:22Defilerand http://supremetyrant.com/ruby/llvm-x86_64-apple-darwin10.3.1.tar.bz2.md5
19:15:45evanI think clamp it
19:15:47evanstupidly.
19:15:52evanand then do a subtraction
19:15:56evanwhich gives us a negative value.
19:16:26evanmake must be resetting the ulimit on the stack
19:16:29evanto max.
19:16:31evanie, 4G
19:16:36brixenhmm
19:16:37brixenok
19:16:44evanmy init_stack_size is wrong.
19:16:51evanlet me see about fixing it...
19:17:49evanhrm
19:19:52evanah ok
19:19:53evani see
19:19:59evanrlim_cur is 4G
19:20:08evani clamp the redzone to 1M
19:20:18evanbut 4G - 1M is outside of the range of a signed int
19:20:24evanand cStackDepthMax is a signed int.
19:20:35brixenahh
19:22:38evani'm testing the change now.
19:22:55evani find it strange that make sets ulimit.stack to unlimited.
19:22:56evanbut whatever.
19:24:32brixenit is weird
19:32:37evanheh
19:32:43evanthis is pretty funny actually
19:32:47evani'm glad I tested it
19:32:53evanbecause with a limit of 4G (basically)
19:32:57evani can't add it to anything
19:33:03evanbecause it wraps around back to the original value every time
19:33:04evan:D
19:34:10brixenheh
19:34:43evanhm, how should I handle this...
19:35:02evanperhaps always clamp it to 1G of stack
19:35:03brixenmaybe we need -Xstack_size
19:35:05brixenyeah
19:35:10brixensomething smaller
19:35:10evan1G is A LOT of stack
19:35:14evanA LOOOOOT
19:35:15brixenno kidding
19:36:49Defilerhrm, suddenly getting this after pulling: make: *** No rule to make target `ruby.h', needed by `openssl_missing.o'. Stop.
19:36:50evanmaybe 128M?
19:37:03evanDefiler: rake clean or rm lib/ext/openssl/Makefile
19:37:04Defilerlib/ext/nkf
19:37:14evanit's really in openssl
19:37:15Defileryeah this is after a nuke of all build products
19:37:26Defilerlet me try again I guess
19:40:01brixenDefiler: openssl uses extconf.rb and a Makefile
19:40:06brixenit doesn't play well
19:40:11brixenbut this situation is rare
19:40:17brixenI changed where ruby.h lives
19:40:38Defileraah
19:41:09Defileroh, I see what I did.. I nuked, packaged llvm, pulled, reconfigured, built
19:41:20Defilerit's probably going to work fine when it is done rebuilding this time
19:41:32brixenwe have no way to force a clean build
19:41:41brixenwhich we need to do from time to time
19:41:46DefilerI should name my shell history file .legacy_of_madness
19:43:26evanbrixen: ok, got it fixed by clamping the stack size to 128M
19:43:47evanno one should need more that 128M of stack </famous_last_words>
19:43:52brixenheh
19:43:59brixenwe'll add -Xstack_size in that case
19:45:01Defiler-Xenterprisemode
19:45:05brixenhaha
19:45:16evanDefiler: YES.
19:45:18Defiler-Xseriousserverwepaidalotfor
19:45:30evanwe should probably go for
19:45:42evan-X-mode=enterpriselevel:11
19:45:48brixen-Xrubinius_maximus
19:46:07brixenunfortunately, that cannot all go in one switch
19:46:11brixenit must be 40
19:47:24brixenevan: grabbing some food...
19:47:29evanme too
19:47:34evani'm about to commit the fix for you.
19:48:40brixenevan: are you going to re-enable building DL?
19:49:03Defiler--nextoption="enterprise.mode" --@ultra-11
19:49:13Defilergot to have position sensitive arguments
19:49:24brixenfo sho
19:49:34boyscoutfactor out some jit code from push_cpath_top and push_rubinius - 254ec08 - Wilson Bilkovich
19:49:44brixenthat is, if you want to be taken seriously
19:50:31Defiler-1 --lastoptionwasabout="something"
19:52:32evanbrixen: i'll let you do that.
19:56:47kronos_vanohttp://gist.github.com/412344 1.75x String#[] speed up
19:57:34boyscoutCI: rubinius: 254ec08 successful: 3463 files, 13859 examples, 41513 expectations, 0 failures, 0 errors
19:57:53Defileroh yeah, definitely
19:58:05Defilersome of those lines in red are really not smart :)
19:58:24evankronos_vano: nice! if it passes all the specs, commit it!
19:58:40kronos_vanoevan, of course it passed :)
19:58:45evankronos_vano: :D
19:59:01Defilerdoes that need to be self.size there?
19:59:17evancould have @total
19:59:39kronos_vanohm.
19:59:50kronos_vanoI should try
19:59:58Defileryeah I think use @total where you are calling 'size' now
20:00:23kronos_vanomm may be @num_bytes ?
20:00:39evanyes
20:00:42evan@num_bytes
20:05:25boyscoutHandle very large values from getrlimit properly - 149a517 - Evan Phoenix
20:16:38maharg128M of stack could be low with certain kinds of large-object-on-the-stack C++ code
20:17:18boyscoutCI: rubinius: 149a517 successful: 3463 files, 13859 examples, 41513 expectations, 0 failures, 0 errors
20:23:14dwaiteouch, 128M on a stack?
20:23:33slavathat's a pretty big stack
20:24:02dwaiteI think 8M is a pretty big stack :)
20:28:58boyscoutSpeed up String#[] and String#=~ - 6559f4d - Ivan Samsonov
20:36:52boyscoutCI: rubinius: 6559f4d successful: 3463 files, 13859 examples, 41513 expectations, 0 failures, 0 errors
20:38:26evanmaharg: if you have such an example, please show me :)
20:52:07brixenwell, that was bizarre, just got 500 errors running on ubuntu 9.10 that weakref_alive? is a private method
20:52:10brixenwhich it is not
20:52:26evanweird...
20:52:28brixenran again, changing nothing, and they all pass
20:54:13evan:/
21:06:54brixenevan: so, I've been pondering how to gen stuff for c-api specs
21:07:01evank
21:07:02brixenmy conclusion is, I'm not going to
21:07:06brixentoo complex for no real gain
21:07:08evanhah
21:07:12evani agree
21:07:14brixeninstead, I'm going to define some C macros
21:07:20evansince almost every one is different
21:07:22evank
21:07:31brixenmri defines RUBY, we define RUBINIUS, so jruby can define JRUBY
21:07:41brixenthen, they need to give some thought to what they will support
21:07:49brixenand annotate the C files accordingly
21:08:06brixenalso, I need to make configure.rb output capi/include/version.h like MRI does
21:08:23brixenwhich has C macros for RUBY_VERSION_MAJOR, MINOR, etc
21:08:41brixenbecause we've started adding c-api that mri does not have
21:08:55brixenand if jruby wants to collab on a better c-api, we need to be able to handle that
21:09:01evanok, back u
21:09:02evanup
21:09:04evanthats all fine
21:09:09evanwhat is our goal?
21:09:22brixenrunning the C-API specs on multiple impl
21:09:32evanwhy do we need to change them from their form to run them on, say, jruby?
21:09:33brixenwithout adding a bunch of complexity
21:09:43evanfrom their current form, that is.
21:09:46brixenbecause jruby will not support all the functions
21:09:59brixenjust like MRI does not support rb_thread_blocking_region
21:10:16brixenyou can't load that lib on MRI unless that spec is #ifdef'd in the C file
21:10:24evansure
21:10:31evanso why not put #ifdef guards around those specific things
21:10:33brixengit show 5377580cc
21:10:36brixenwe will
21:10:40brixenthat's my whole point
21:10:42evanand have a way to configure a header file that will define them
21:10:50brixenbut it needs to be easier
21:11:12brixeneg #ifdef IMPL(RUBINIUS, 1, 8, 7)
21:11:13evanah, ok, i see.
21:11:18evanew.
21:11:22brixenthat's what I mean by adding some C macros
21:11:23brixeneww
21:11:24evanwhy force it to be on the impl and version?
21:11:29evanwhy not per feature?
21:11:35brixenhuh?
21:11:47brixenmri adds rb_hash_lookup in 1.8.7
21:11:56brixenit does not exist in 1.8.6
21:11:59evanok, here's my thought
21:12:03brixenrb_set_errinfo is adden in 1.9
21:12:06evanyou want to add platfrom version guards
21:12:20evanwhich implies a relationship between a version and functionality in that version
21:12:23evancorrect?
21:12:28brixenyep
21:12:48evanwhy not instead require that the guard be for the functionality directly
21:12:50brixenwe can have a bunch of #ifdef HAVE_BLAH
21:13:31brixenhow would you express "for the functionality directly"
21:13:32brixenin C
21:13:52evanand then each impl provides a header file that defines the proper things for the functionality they support
21:14:01evanwell, in that commit you have
21:14:06brixenso a bunch of #ifdef HAVE_BLAH ?
21:14:08evan#ifdef HAVE_RB_HASH_LOOKUP
21:14:12evanis a simple way.
21:14:12brixensure
21:14:24evanthen jruby just needs to #define HAVE_RB_HASH_LOOKUP
21:14:26evanto run it.
21:14:32evanthat lets us cut it up nicely
21:14:42evanand not hardcode version requirements in the specs
21:14:45brixenit's more semantic, yes
21:15:12brixenit means we (me) have to maintain that file for MRI too
21:15:18evana halfway measure is to provide a meta-syntax
21:15:24evanthat the specs are generated from
21:15:24brixenwhich I guess is no more than I would anyway
21:15:25evanie,
21:15:32evan@feature rb_hash_lookup
21:15:35evan....
21:15:36evan@end
21:15:49evanwe'd run that through a script
21:15:51brixenI do not want to generate it from the specs
21:15:55evanthe output would have an #ifdef guard
21:16:04evanand a call to rb_define_method at the bottom
21:16:23evansure, i'm just thinking of a way to simplify the guards
21:16:31brixenthat means mucking with all the existing guard stuff
21:16:38brixenI want this to work with existing mspec guards
21:16:53brixentagging, platform guards, etc
21:17:26evansure sure
21:17:28evanjust a thought.
21:19:18evanyou can't do
21:19:19evan#ifdef IMPL(RUBINIUS, 1, 8, 7)
21:19:20evanbtw
21:19:37brixenwhy not?
21:19:38brixen##
21:19:50brixenwill that not expand?
21:20:03brixenI mean #if IMPL
21:20:49evanhow do you define IMPL?
21:21:04evanhttp://www.cims.nyu.edu/cgi-comment/info2html?(cpp)If
21:21:05evanbtw.
21:22:29toulmeanok I tried again to reproduce using a simpler structure issue 327 - in vain
21:22:48toulmeanI will document how I get there instead. I'll try to make it obvious.
21:23:45evank
21:23:49evani can try to run the specs also.
21:23:55evanthats probably my best bet.
21:24:11toulmeanevan: the spec of Buildr ? Yes. That's what I'll try to doc
21:24:20evanyes
21:24:23evanspecs of Buildr.
21:24:35toulmeanyou will reproduce for sure if you bin/rbx -S spec path/to/buildr/spec/java/java_spec.rb
21:24:48toulmeanbut... you might need to install dependencies first.
21:25:18evancan you document how to run the specs?
21:25:21evanthat would help
21:25:29toulmeanyes.
21:25:35evanthanks!
21:26:15brixenevan: yeah, I was just trying to make the #ifdef guards easier, HAVE_FEATURE works fine
21:26:56evanHAVE_FEATURE is more straightforward
21:27:01evanit's just a little tedious
21:27:01brixenindeed
21:27:03evanbut thats C for ya.
21:27:07brixenright
21:27:13brixenbut explicit is better
21:27:15evanwoo!
21:27:20brixenand less headaches
21:27:26evannari's book with the rubinius chapter just arrived!
21:27:32brixenhah, nice!
21:27:37brixenit's in japanese, no?
21:27:47evanoh man, i so want to read it!
21:27:51evanyeah, it's in japanese
21:27:52brixenheh
21:27:52evanthats ok!
21:28:00brixenget to studying
21:28:02evani'm proud to have a copy even if i can't read it (yet)
21:29:33evanhehhe
21:29:49evanit's really incredibly fun to see our ObjectHeader class in a book.
21:30:02brixentake a picture!
21:30:10brixenI suppose I should order the book...
21:30:19brixenI'm trying to not order any more paper books
21:30:29brixenI have 1000lbs of paper books :/
21:30:30evanwell, maybe hold out of this then
21:30:46evansince it's a pure art thnig for me
21:30:49evansince I can't read it.
21:30:59Defilerwe should hire norio wakamoto to read it aloud http://www.youtube.com/watch?v=9V1AEvN8VZs
21:31:25brixenDefiler: haha
21:31:33evanhttp://skitch.com/evanphx/dfyty/cam
21:31:45brixenwoot!
21:31:54brixenthat is awesome
21:32:20Defilerit should have a bmx bike on the cover
21:32:32Defilercrashing through a dinosaur
21:32:44Defilerridden by a liquid terminator
21:32:49evanhaha
21:34:34evanoh! he goes over c-api!
21:34:41evan(i think)
21:34:53evani'm infering things from diagrams mostly
21:36:00toulmeanevan: ok I updated the bug with a path for reproduction at the bottom.
21:36:04toulmeanYou can hate me now...
21:36:28toulmeanI might need to send frosty beverages your way (both of you guys) once this stuff runs.
21:37:44evani wonder how much it would be to get the Rubinius chapter translated.
21:37:49evantoulmean: :D
21:38:38evantoulmean: ok, i'm about to fix another bug
21:38:42evanthen i'll switch to yours
21:43:12brixenhm, rjb uses OBJ_FREEZE in one spot, but of course that exposes some sort of bug with freeze
21:43:35brixenand I'm segfaulting in LookupTable::store
21:43:41evan:/
21:43:43brixenso, maybe coffee first
21:43:50evangood plan.
21:43:53brixen:)
21:47:32boyscoutRe-enable building DL extension. - e99f097 - Brian Ford
21:47:47brixencrosses fingers
21:48:40toulmeanback in da game!
21:48:48evannari: i got the book!
21:48:50evanthank you so much!
21:48:56evanit's so much fun to see Rubinius details in a book
21:49:20narievan: You're welcome!
21:51:52evannari: now I must start learning japanese!
21:52:13narievan: wow!!
21:52:45somebodyๆ—ฅๆœฌ่ชž :)
21:52:53brixennihon go!
21:53:27brixennihon go wa tottemo omoshiroi desu nee
21:53:33kronos_vanooO
21:53:41brixensorry, I cant write that in kanji
21:53:47brixenbut I know how to say it :)
21:53:53kronos_vanohaha)
21:54:40nariGood nihon-go :)
21:55:08brixenjuu-go nen mai, nihon go o benkyoo shite imashita
21:55:19brixenunfortunately, I stopped
21:55:24brixen*sob*
21:55:44evanbrixen: holiday bonus if you can translate the Rubinius chapter by the winter holidays!
21:55:48brixennari: can I order a book? :)
21:55:48evan:D
21:55:58brixenevan: haha, don't tempt me :)
21:56:00evanbrixen: it's on amazon.jp
21:56:16brixenevan: but do I need to read Japanese to order from amazon.jp??
21:56:19brixen:)
21:56:49evani think you can do it without
21:56:55evani'd tell you what to search for
21:56:58evanbut i don't know how to type it!
21:57:31evanfound it
21:57:32evanhttp://www.amazon.co.jp/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E 3%83%A7%E3%83%B3%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E5%AE%9F%E8 %A3%85-%E4%B8%AD%E6%9D%91-%E6%88%90%E6%B4%8B/dp/4798025623/ref=sr_1_12?ie=UTF8&s=books&qid=1 274738237&sr=8-12
21:57:36evanZINGO
21:57:39brixenI of course searched for 'Rubinius garbage collectors'
21:57:40evandamn dawg.
21:57:50evanI put some escape codes in your url so you could escape your url.
21:58:17brixenheh
21:58:25brixenevan: my search got me the book!
21:58:35brixenit's the guy with a kid on his shoulders, yeah?
21:58:56naribrixen: yeah!
21:59:00brixen(that's what your link brings up)
21:59:04brixenheh, how did I know
21:59:25brixen3,360?? that's going to have to wait a bit
21:59:30brixenoh, yen, nvm
21:59:34boyscoutSpec showing Object's includes are search as a last resort - 3d5896b - Evan Phoenix
21:59:34boyscoutSearch Object's includes also. Fixes #328 - 836d4b5 - Evan Phoenix
21:59:34evanhahahah
21:59:39evanbrixen: hahah
21:59:43brixenheh
21:59:46brixenjust keeeeding
21:59:52evanit's $35
22:00:05evanactually, what is rate...
22:00:21evanoh, 90
22:00:37evanso $37
22:00:50evana lot cheaper than a lot of books here
22:01:13brixenI added it to my wish list
22:01:19kronos_vanoAs I remember someone want to release 1.0.1 today :)
22:01:21brixenevan: you should send me yours and I'll translate it for you :)
22:01:32evanbrixen: i'll bringing it to railsconf.
22:01:36brixenheh
22:01:36brixenok
22:03:05brixenI had an awesome kanji dictionary/learing tutor on my zaurus
22:03:16brixenI wonder what there is for the iPad these days
22:03:26toulmeanevan: brixen: think the code I have for rjb is good enough I can do a pull request on it ?
22:03:31brixener learning, not learing
22:03:40evantoulmean: which?
22:03:42brixentoulmean: what code?
22:03:56toulmeanerr, my fork you guys helped me with the instructions
22:04:05toulmeanremember ? RBASIC ? RHASH_TBL ?
22:04:26evanoh oh
22:04:33toulmeanurl: http://github.com/atoulme/rjb/
22:04:34evani thought you had the main rjb repo!
22:04:35evansoryr
22:04:38evani forgot
22:04:41evanlet me look over it
22:04:44evani'm starting in your bug
22:04:50evani'll check out the code after that.
22:04:56toulmeanmy bug doesn't load rjb ....
22:05:04evanum
22:05:06toulmeanI can tell rjb now compiles with rubinius.
22:05:08evanwhy does your bug say to istall it?
22:05:24evanwhat should I set JAVA_HOME to?
22:05:38boyscoutCI: rubinius: e99f097 successful: 3463 files, 13859 examples, 41513 expectations, 0 failures, 0 errors
22:05:42brixenprabably JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/
22:05:47brixenthat's where it is for me
22:05:58evank
22:06:35brixentoulmean: we should probably add a HAVE_RB_HASH_FOREACH and use that in code
22:06:43brixenrather than RHASH_TBL == 1
22:06:53toulmeanbrixen: yes :) but it's up to you
22:07:11brixentoulmean: well, we'd likely accept a patch for that :)
22:07:12evannever do RHASH_TBL == 1
22:07:14evanalways do
22:07:17evan#ifdef RHASH_TBL
22:07:29evan0 is a fine value for it to be defined to
22:07:35toulmeanevan: aha, but see the code fragment here:
22:07:47brixentoulmean: vm/capi/include/defines.h if you want to add that
22:07:57toulmeanbrixen: will do
22:08:28toulmeanevan: http://github.com/atoulme/rjb/blob/master/ext/rjb.c#L1783
22:08:36brixenok, never got that coffee, bbiab...
22:08:49evantoulmean: yes, if i'ts defined
22:08:54evandon't test that it's 1
22:09:05toulmeanevan: well it's defined in other cases
22:09:10toulmeanthat's my point.
22:09:11evanshow me
22:09:14evani don't get what you mean.
22:09:15brixenwe define it as 1
22:09:20toulmeanevan: http://github.com/atoulme/rjb/blob/master/ext/rjb.c#L1783 ?
22:09:23brixenso you can't just go on it being defined
22:09:34brixenthat's why HAVE_RB_HASH_FOREACH would be better
22:09:34evani define it as 1 just to have it be defined
22:09:37evanthis is the wrong way to do it
22:09:38evanyes
22:09:46evanwe need to use HAVE_RB_HASH_FORACH
22:09:51evanwtf
22:09:53brixenheh
22:09:55evanwhy is rake setup asking for my password?
22:10:05brixenit sudo installs
22:10:07evanok ^C that.
22:10:15evan....
22:10:18brixenyes, I've advised toulmean on that :)
22:10:21evannot for long.
22:11:13evanthis is prety weird
22:11:37toulmeanevan: file a bug...
22:11:49evanok
22:12:02evana rake task that install gems seems pretty weird.
22:12:07evanpersonally.
22:12:43evanalthough it's clever
22:12:51toulmeanevan: how do you install gems from a gemspec file ?
22:12:57evansince it uses rubygems and it's own gemspec to figure out whats missing.
22:12:59toulmeanI looked for that recently
22:13:02toulmeanyep
22:13:09evantoulmean: you don't normally
22:13:13evanyou make it a gem
22:13:15evanand install it
22:13:18evanand let rubygems handle it
22:13:23evani guess since most people use it via a gem
22:13:25toulmeanwell it's stupid too - as brixen remarked, you need to install rjb as a gem, not extconf.rb, otherwise it complains.
22:13:27evanthey don't do this weird rake setup
22:13:37toulmeanyeah it's for devs
22:13:41toulmeanaka you ppl
22:13:45evan:)
22:14:07evanwell, I removed ' << "sudo " ' and it's a bit saner
22:14:11slavayo evan
22:14:43toulmeanevan: patches on issues.apache.org/jira/browse/BUILDR
22:14:48evantoulmean: ok.
22:14:52evanslava: hello sir.
22:19:22evantoulmean: ok, i've got the failure
22:19:29toulmeancool
22:20:57slavaevan: you wrote a gtk binding for ruby at some point right?
22:21:46evani worked on some a very long time ago.
22:21:54evani didn't write them from scratch
22:22:12slavadid you manage to integrate the gtk event loop with ruby's IO event loop?
22:22:16evanyeah
22:22:27slavacan you point me to your code, or a gtk api?
22:22:34evanglib (the lower part of gtk) had some hooks for integrating it's event loop with something else
22:22:38evansure one sec
22:22:42evani'll have to look it up again
22:22:56slavano rush
22:23:12slavaa gtk binding was contributed to factor, and we need to sort out the event loop business
22:23:24evanthere is http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-set-poll -func
22:23:55evanto switch threads within the poll func though, you'd have to save the stack
22:23:59evanwhich i think you do anyway
22:24:36slavaactually, it looks like instead of replacing the poll func, I can just call g_main_context_add_poll ()
22:25:40slavathanks
22:26:40evanare you going to use it's event loop then?
22:28:09slavayes
22:28:15slavaand stick our epoll / kqueue into it
22:28:17slavawith a callback
22:28:19slavawe do the same thing on OS X
22:28:20evanah cool
22:28:22evanaah
22:28:28evandidn't realize you inverted the loop that way
22:28:30evanmakes sense
22:28:34slavawe don't have to take over the event loop per se, just some mechanism to stick a bunch of FDs into it
22:28:36evaneasy to graft your loop onto it
22:28:39evanthan the other way around
22:28:42slavayeah
22:28:44evans/easy/easier/
22:28:50slavaon OS X, you can't run the event loop yourself
22:28:56slavaI already went through the pain of making everything generic here
22:29:12evan:)
22:30:00evantoulmean: figured it out
22:30:10evanfor some reason, trace is being added a public method on Object
22:30:21evanwhich is keeping OpenStruct#method_missing from being run.
22:30:47toulmeanevan: but, but, why can't I reproduce it then ?
22:30:49toulmeanI don't get it.
22:31:02evanyou can.
22:31:15evanhttp://gist.github.com/412510
22:31:17toulmeansorry I meant: I tried to repro at a smaller scale
22:31:25evani don't know what you changed
22:31:27evanso i can't say
22:31:36evanthere is a bug somewhere
22:31:43evanthat is causing trace to become public
22:31:45toulmeanevan: sounds what I wanted to produce, however, you're not in a spec
22:31:47evani'm working on finding it now.
22:32:02evani asked for a repro
22:32:03evannot a bug fix
22:32:18evani don't need the repro to be in the exact atmosphere of the bug
22:32:20toulmeanI am thinking doing a def trace at the root of the spec method didn't trigger it
22:32:24toulmeanoh sure
22:32:26evanjust something that demo's the bug
22:32:33toulmeanI know... I agree...
22:32:41evani repro in the spec would be close to a bug fix
22:32:49toulmeanI just wasn't able to reproduce within a spec file.
22:32:51toulmeanoh ?
22:32:53toulmeanok
22:32:53evanwhy you can't repro in smaller in the spec? i don't know, thats what i'm working on.
22:33:13toulmeanok - hey don't get me wrong. I wish I had helped more.
22:33:34evanit's no problem.
22:33:41evanwhen someone can't get a smaller repro
22:33:44evanany repro is good.
22:35:13toulmeanI'll keep that in mind. Thanks for sharing.
22:35:46evanno prob.
22:35:54evani'll have the bug fixed shortly i hope.
22:37:57toulmeanevan: just for the thrill I pasted your code inside a spec and could not reproduce then. My guess is that whenever inside a spec methods are defined on Object, rather in a contained space
22:38:25evani don't follow you
22:39:53toulmeanevan: I pasted your code at the end of spec/ruby/language/super_spec.rb
22:40:14toulmeaninside a block: it "should call method_missing even though a method with the same name but different parameters is defined" do
22:40:21toulmean#paste Evan's code
22:40:22toulmeanend
22:40:32toulmeanrun that with spec
22:40:45evantoulmean: why would you do that?
22:41:06toulmeanevan: that's not how you reproduce bugs ?
22:41:15evani repro them in a standalone script
22:41:17evanlike I showed you
22:41:22toulmeanmy apologies. That's how we do it with buildr.
22:41:30evanrunning that straight in a spec might not work
22:41:36toulmeanyes: we value specs as reproducible scenarios
22:41:37evanbecause it's got interactions with the toplevel
22:41:40toulmeanyes, looks like it.
22:41:43toulmeanyep...
22:41:45evanand specs are run in instance_eval
22:42:11toulmeanevan: ok. Now I know why I could not repro in a spec. That was my interrogation.
22:42:14brixenevan: remember all methods at toplevel are private
22:42:21brixenwe never fixed that
22:42:24evanbrixen: they're supposed to be.
22:42:29evanbut they don't appear to be.
22:42:29brixenyes
22:42:33evanoh wait
22:42:33brixenwe don't do it right
22:42:36evanhaha
22:42:37evanreally?
22:42:40evani thought we fixed this?
22:42:40brixenI had a half patch
22:42:42brixenyes,
22:42:43brixenon
22:42:45brixener
22:42:46brixenno
22:42:46evanwell shit on me.
22:42:48brixen:)
22:42:49evanthats the bug.
22:42:52brixenyes
22:42:56slavaa half patch?
22:43:00slavais that a patch with just the - lines in it?
22:43:00brixenthere's the issue of knowing when you are at the top
22:43:07evanthere is an easy fix.
22:43:08brixenslava: no, it half worked
22:43:12brixenle'me see if I have it
22:43:37evanemit "push_variables; set_toplevel_scope" as bytecode at the top of a script
22:44:02brixenevan: very old but http://gist.github.com/412523
22:44:23brixenthere are complications
22:44:39brixenlike the fact that eval("def foo; end") is not private
22:44:48evanew.
22:44:53evanthis is very complicated.
22:44:53brixenhah
22:44:57brixeneww
22:45:07evanok, i'm going to ignore this
22:45:08brixenthat's how you recommended trying to fix it
22:45:09evansorry :)
22:45:12evani was wrong.
22:45:17brixennow we know
22:45:18evanway too complicated.
22:45:41evanactually, i've got a quick fix i'll bet.
22:45:46brixenit was also 8 months ago
22:46:01brixenas long as it works
22:46:08brixenprobably some specs for this missing
22:46:14evanwhy can't I do it even if it doesn't work?
22:46:16evanyou're no fun.
22:46:21brixen:)
22:47:52brixenhmm, as I recall, I wanted to emit something at the top of a script
22:47:56brixenbut you didn't want that
22:48:07brixenI guess we'll see what the fix is :)
22:48:46evanoh how the tides have turned Mr. Ford.
22:48:52brixenheh
22:50:13brixentoulmean: how much do you know about rjb C code?
22:50:25toulmeanbrixen: pretty much nothing.
22:50:42toulmeanI know it segfaults on me every now and then.
22:50:44dwaiterjb?
22:50:51brixentoulmean: heh, ok
22:50:54toulmeanI also listened carefully to you and your advices
22:51:01toulmeanand plugged holes till it compiled.
22:51:07dwaiteasks the googles
22:51:26toulmeandwaite: look for ruby java bridge
22:51:26brixendwaite: ruby-java bridge
22:51:36dwaiteoh :|
22:51:39toulmeanyes.
22:51:41brixendwaite: it loads the jvm in a C ext and does horrible things to it
22:51:41dwaiteisn't that unmaintained?
22:51:43brixenI mean, with it
22:51:52dwaitethat jvm totally had it coming
22:51:57brixenheh
22:51:58slavawill jruby's upcoming C ext support be able to run rjb?
22:52:00toulmeandwaite: well the maintainer released 1.2.0 for SL
22:52:10brixenslava: hopefully! :)
22:52:21toulmeanjruby uses FFI
22:52:30toulmeanwe don't rely on rjb with JRuby
22:52:35toulmeanwe tap in the JVM directly
22:52:48toulmeanwe have an interface to use either RJB or JRuby transparently
22:52:48brixentoulmean: don't you use JI on jruby?
22:52:50dwaiteoh wow
22:53:01toulmeanbrixen: sorry ? Java Integration ?
22:53:03toulmeanyes
22:53:03dwaiteso it looks like it works fine as long as you stay away from the Thread class?
22:53:08toulmeanyes
22:53:11brixentoulmean: ok, so JI not ffi?
22:53:12toulmeanwell we do javac
22:53:19toulmeanbrixen: correct.
22:53:21brixenok
22:53:28toulmeanthough we also use FFI for other stuff
22:53:32toulmeanoh well.
22:53:33brixencool
22:54:07toulmeanI hope the changes I made to rjb on your advice can be accepted by the maintainer.
22:54:10evanbrixen: https://gist.github.com/6af3a63948cf384d9782
22:54:15toulmeanWe can go over them together
22:54:21dwaiteI must have been thinking of the ruby cocoa bridge
22:54:22toulmeanor not.
22:55:10brixentoulmean: did you change it to HAVE_RB_HASH_FOREACH ?
22:55:17toulmeannot yet.
22:55:18brixentoulmean: I can add that to rbx quickly
22:55:21brixenok, you should
22:55:29brixenbefore you send a pull request
22:55:37toulmeanbrixen: ok. Let me give you a patch for it.
22:55:54brixenevan: woot!
22:56:10brixenevan: always love to see '# hack' in your commits :)
22:56:19evan:D
22:56:20brixenprobably means loads of fun in the future for one of us
22:56:23brixen:)
22:56:26evani'm going to extract it into a method
22:56:30evan#for_script?
22:56:30brixenheh ok
22:56:36dwaitedef hack
22:59:58toulmeanbrixen: should I remove define RHASH_TBL 1 ?
23:00:03brixentoulmean: yes
23:00:05toulmeanok
23:00:08toulmeanthen readying.
23:00:29brixenshould just be #ifdef HAVE_RB_HASH_FOREACH .... #else ... #endif
23:00:52evanoh, I think I had it as 1 so that the user would get a syntax error
23:00:55evanif they tried to use it.
23:00:59brixenyeah
23:01:32toulmeanevan: why not do as you did for RHASH ?
23:01:51evanthats fine
23:01:52evando that.
23:01:56toulmean#define RHASH(obj) assert("RHASH() is not supported")
23:01:56evani don't recall off hand
23:01:57evanhonestly.
23:02:02toulmeanevan: ^^
23:02:04brixenok, so this is fun
23:02:09evanyeah, you can do that.
23:02:24brixentoulmean: see register_class in rjb.c
23:02:29toulmeanah I pushed already. I'll recommit and will rebase.
23:02:42evanok, i get further into the buildr stuff
23:02:44brixentoulmean: it does rb_hash_aset, but rjb_loaded_classes is frozen
23:02:44evanand get a crash
23:02:52evani'll be nice and continue to debug this new issue.
23:02:53evan:)
23:03:01toulmeanevan: thx.
23:03:05brixenevan: what is your crash?
23:03:11evanone moment
23:03:12evani'll show you.
23:03:20toulmeanevan: you're on Mac right ? We have all our specs pass on Mac with JRuby and MRI
23:03:23evansomething is rjb_s_load
23:03:24evanit appears.
23:03:26evantoulmean: yep.
23:05:40brixentoulmean: so, since this uses st_insert on MRI, it gets around this frozen hash of loaded classes
23:05:54brixenhates freakin frozen
23:06:04toulmeandefreeze ?
23:06:11brixento such thing
23:06:18toulmeanit's a nice puzzle.
23:06:21brixenuse of frozen is so lame
23:06:29brixener no such thing
23:07:06brixentoulmean: see if he'll accept #ifndef RUBINIUS around OBJ_FREEZE in rbj.c
23:07:08evancalling initargs crashes.
23:07:13brixenthere's only one use
23:07:22evan initargs = (GETDEFAULTJAVAVMINITARGS)NUM2ULONG(getdefaultjavavminitargsfunc);
23:07:24evanO_o
23:07:46slavawhy not make OBJ_FREEZE a no-op?
23:08:07brixenslava: because ppl use the fucking thing
23:08:13evanwhat the fuck rjb.
23:08:18slavaand they rely on it failing if you mutate a frozen instance?
23:08:25brixenslava: we tried to avoid it
23:08:37brixenslava: no, in this case it's modifying the st table directly
23:08:44brixenslava: which has no frozen checks
23:08:50brixenslava: MRI is a ghetto of C code
23:09:15brixenslava: er, yes, they do rely on things failing
23:09:17toulmeanlots of love in the air right now...
23:09:23brixenslava: or they spec that they fail
23:09:31slavabut I mean from CAPI
23:09:38slavanot calling freeze on an object in ruby code
23:09:55brixenppl implement Ruby behavior from C code
23:10:01slavatrue
23:10:04brixenit wouldn't get us much but complaints
23:10:19toulmeanfor the pull request, ok if I list everyone in there ? That's a lot of people.
23:10:36slavayou guys should write a paper about your CAPI work and publish it at some software engineering conference
23:11:04evanslava: might not be a bad idea.
23:11:18brixenthat's a great idea
23:11:44toulmeank sending pull request
23:11:46toulmeanhave at it
23:12:13toulmeanok changing the rjb code to use the shiny new flag.
23:12:30brixentoulmean: did you push yet?
23:12:48toulmeanbrixen: pushed rubinius
23:13:03toulmeanbrixen: http://github.com/atoulme/rubinius/commit/ad7e95d3dff2f800581c0850c83b6f056eedd481
23:13:22brixentoulmean: I mean rjb
23:13:29toulmeanno, hey, on it
23:13:55evanoh my oh my oh my
23:13:57evanrjb.
23:14:05evanyour disgusting.
23:14:10evanyou're, rather.
23:14:39evanbrixen: you were remarking about getdefaultjavavminitargsfunc = rb_funcall(rb_funcall(rb_funcall(jvmdll, rb_intern("[]"), 2, rb_str_new2(GETDEFAULTJVMINITARGS), rb_str_new2("IP")), rb_intern("to_ptr"), 0), rb_intern("to_i"), 0);
23:14:42evanweren't you?
23:15:05brixenevan: when I said I tried not to look directly at the code... yes
23:15:20evanI need to go get a welding mask
23:15:31evanor coffee.
23:15:33evanlets go with coffee.
23:15:36brixenthat is why I elected to try running DL over converting to ffi :)
23:15:37toulmean:)
23:15:49toulmeanbrixen: got a small issue
23:15:51toulmean#ifdef HAVE_RB_HASH_FOREACH
23:15:51toulmean rb_hash_aset(rjb_loaded_classes, clsname, self);
23:16:08brixentoulmean: yeah, that's a problem
23:16:13toulmeanthis doesn't look quite right to me, that's the result of the permutation
23:16:18toulmeanone more flag you think ?
23:16:20brixenI'll add RB_HASH_ASET
23:16:21brixenyes
23:16:24brixener HAVE_
23:16:31toulmeanbrixen: I can do it ?
23:16:35evanwhy in the name of all that is good in the universe do they call out to DL to get a symbol
23:16:41evanis fucking dlsym() to hard?!?
23:16:44brixentoulmean: I'm commiting your patch
23:16:48toulmeancool
23:16:51brixentoulmean: but you're not putting them in the right place
23:17:10toulmeanI am not ? I reused the location of RHASH_TBL
23:17:24brixenyeah, the HAVE_ should go in defines.h
23:17:28toulmeandamn
23:17:32brixenI'll push in a 1/2 sec
23:17:34toulmeanok
23:18:00brixentoulmean: push rjb so I can pull that and test
23:18:04brixenbefore I push to rbx
23:23:39brixentoulmean: what should I do after I run 'Rjb.load "", ["", ""]' ?
23:29:48toulmeanone sec guys, got summoned back in java world
23:30:01toulmeanbrixen: after you did that, try loading a class
23:30:19toulmeanlet me see
23:30:29toulmean-> http://rjb.rubyforge.org/
23:30:53toulmeanStr = Rjb::import('java.lang.String')
23:30:59toulmeansounds like the right thing to test
23:31:29boyscoutAdded C-API HAVE_ macros for Hash. - 3540c3c - Brian Ford
23:31:50brixentoulmean: ok
23:32:14evando you have rjb running?
23:32:21evanit's still crashing for me trying to open a JVM
23:32:23brixenevan: loads
23:32:31evanoh
23:32:32evani know why.
23:32:42evani've almost got this solved
23:32:47evanDL is truncating a void* to an int
23:32:50evanand loosing bits
23:32:52evanand you're on 32bit
23:32:54brixenahh oops
23:32:55brixenyeah
23:32:55evanso it's not loosing bits.
23:34:13slavaI wish C and C++ were stricter about their integer types
23:34:17toulmeanis pulling rubinius real quick
23:34:28evanslava: me too.
23:34:29toulmeanas soon as I have the right HAVE flags set, will push
23:34:33evan>> 4401926628.to_s(2).size
23:34:34evan=> 33
23:34:41evanbrixen: ^^^ *eyeroll*
23:34:55evanwho needs that 33rd bit anyway
23:34:59evanwhat a space hog.
23:35:02brixenheh
23:36:20evanit doesn't help that INT2NUM got implemented the way you'd think
23:36:23evanie, taking an int
23:36:30evanwhere as in MRI, INT2NUM takes a long.
23:36:59slavadoes mri work on win64? it would have the same issue as above there because sizeof(long)==sizeof(int)
23:37:09slavapresumably they want intptr_t but that is C99
23:37:33evanin this case, i think dl would just fail.
23:37:42evanbecause it's casting the thing to long no matter what
23:37:47evanso dl is just busted on win64
23:38:25toulmeanwe tend to recommend jruby on windows in general
23:38:34toulmeanand win7 64 bits... jruby, definitely
23:38:52toulmeanok I pushed my rjb changes to take the latest flags into account.
23:39:07slavawin7 64-bit is my fav OS at the moment :)
23:39:15toulmeanslava: you too ?
23:39:26toulmeanlove it. Inside VirtualBox... in a managed, small window
23:39:28slavaMS finally did something right
23:39:31slavaouch
23:39:38slavaat least full screen it man
23:40:03toulmeanslava: got two screens, one 24", the other 15. I don't care so much for Win7.
23:40:05evanhah
23:43:21boyscoutCI: rubinius: 3540c3c successful: 3463 files, 13860 examples, 41514 expectations, 0 failures, 0 errors
23:47:04evanbrixen: ok, I'm getting a "unable to modify frozen object (TypeError)"
23:47:05evanfinally
23:47:33brixenevan: sweet
23:47:38brixenjust comment it out :)
23:48:19brixenthere's one use of OBJ_FREEZE and rjb uses st_insert on that hash
23:48:31evan*eyeroll*
23:48:50brixenI suppose we could add rb_hash_aset_I_dont_care_if_its_frozen_beatch
23:49:47evanrb_hash_set_this_shit
23:49:54brixenman, I have builder installed, I can load it... why can't buildr specs load it
23:50:11evanwhat do I comment out?
23:50:15evanto get past this frozen thing
23:50:22brixengrep OBJ_FREEZE
23:50:25brixenthere is only one :)
23:50:27evanin rjb?
23:50:30brixenyes
23:50:31brixenrjb.c
23:51:00evanpeople are insane.
23:52:29brixenagreed
23:52:39brixenbetter...
23:52:42brixenother people are insane
23:52:44brixen:)
23:54:33toulmeanbrixen: so you have buildr installed ?
23:54:59toulmeanmaybe we can not freeze that stuff. What is it used for ?
23:56:11evanyou can't
23:56:17evanit's totally invalid.
23:56:19evanit's freezing a hash
23:56:22evanthen adding stuff to it.
23:56:24toulmeanlooks like they freeze the classes they load on initialization ?
23:56:37toulmeanthen we can change the code to not freeze the hash ?
23:56:43evanyes
23:56:44evanwe should.
23:56:49toulmeanok let's do it ~!
23:56:52evanhey!
23:57:16evankendall :: git/buildr ยป ~/git/rbx/bin/rbx -S spec spec/java/java_spec.rb .......
23:57:16evanFinished in 0.187141 seconds
23:57:16evan7 examples, 0 failures
23:57:25toulmeanah here we go
23:57:38brixentoulmean: http://gist.github.com/412578
23:57:53toulmeanbrixen: oh nicer
23:58:31toulmeanbrixen: committing and pushing that
23:58:32brixenfor the love of all things good, WTF
23:58:42brixentoulmean: ok
23:59:20brixenevan: what version of rspec did you install?
23:59:32evan1.3.0
23:59:34evani changed the gemspec
23:59:37brixenargh
23:59:40evanto allow for >= 1.2.9
23:59:54brixenI have 1.3.0 too