Index

Show enters and exits. Hide enters and exits.

00:03:39kronos_vano1.8.7 have tests like http://gist.github.com/405741 for non-windows plaform. Should we pay attention to the tests?
00:05:15evankronos_vano: are you still going through the MRI tests?
00:05:40kronos_vanoYep. Some times
00:05:43spastorino1evan: i can create a pastie when this run finish for you to see
00:05:50evanspastorino1: ok.
00:05:52kronos_vanothere are still some failing tests
00:05:52spastorino1i'm running the whole test suite
00:06:40kronos_vano*Sometimes
00:06:54spastorinoevan: i'm running mysql and postgresql tests also
00:06:59evanspastorino: ok.
00:07:07spastorino;) thx
00:13:56kronos_vanoevan, Is it known issue that _id2ref doesn't work in eval?
00:14:06evanshow me.
00:14:25kronos_vanohttp://gist.github.com/405754
00:14:51evanyou're wrong.
00:14:59evanremove the eval
00:15:01evanjust run the code without it.
00:15:08evanwhat happens then?
00:15:21evani suspect it's jsut that i don't have _id2ref handling object_id's for Fixnums
00:16:31kronos_vanoAh. But, anyway this is error.
00:16:44evanopen an issue.
00:16:52kronos_vanook
00:17:21evanhello explody from gemstone.
00:17:31explodyhowdy
00:29:26boyscoutAdd vim syntax file for instructions.def - 1216737 - Evan Phoenix
00:29:36brixenevan: thanks!
00:29:37spastorinoevan: just twitter the output of the tests
00:29:46spastorinotwitted*
00:29:57evanum.
00:29:59evanjust give me the url.
00:30:02brixenhaha
00:30:14evantwitter makes a pretty bad paste board.
00:30:26brixenevan: we should put a BERT backend in rbx that marshals over twitter
00:30:34evanhehe
00:31:05evanspastorino: have you run them on MRI lately?
00:31:10evanbecause i thought they didn't pass there either
00:31:14evanbecause they found a bunch of bad tests.
00:31:21spastorinohttp://pastie.org/966837
00:31:28spastorinoevan: yes
00:31:38spastorinothere are some failures on MRI
00:32:01spastorinoi can do a pastie for you
00:32:24evanand?
00:32:27evanyes
00:32:32evanplease pastie those
00:32:54spastorino7 failures on AR
00:33:42evan:/
00:33:51spastorinoevan: http://pastie.org/966851
00:34:23spastorinoyou can see there a lot of warnings on AP i run the tests before i remove the warnings
00:34:52evanAP?
00:35:01spastorinoevan: ActionPack
00:35:08evanok
00:35:12evanso
00:35:12spastorinonope sorry ActionMailer is the one that warns
00:35:20evani see really 4 errors
00:35:24evanthe 2 memcache ones
00:35:27evanand 2 ones related to timezone
00:35:32spastorinoyes
00:35:36evanok
00:35:39spastorinoreally nice
00:35:43evanyeah!
00:36:37spastorinoevan: ohh the output was truncated
00:36:48spastorinothere are two more on postgre i think
00:36:55spastorinoand one on Railties
00:37:17boyscoutCI: rubinius: 1216737 successful: 3458 files, 13651 examples, 41312 expectations, 0 failures, 0 errors
00:38:17spastorinoevan: http://pastie.org/966862
00:38:18evanok
00:38:20spastorinothe second part
00:39:24spastorino4 and 5 on postgresql are the ones that MRI doesn't has
00:43:19evanso, on linux, seems that the max number of bytes write(2) will accept is 64k
00:43:56evanie if you pass it more, it will return 64k (a short write)
00:44:05spastorinolinux amd64
00:44:15evanspastorino: ?
00:44:45spastorinoevan: are you talking about the output of the tests?
00:44:49evanno
00:44:52spastorinoohh ok
00:46:42spastorinosorry, hehe, i didn't analize the output of the tests and thought that you were talking about postgresql errors or something
00:47:08evanah
00:47:10evanno no.
00:47:15evanfixing another bug.
00:48:54spastorinook thanks guys
00:48:56spastorinoseeya
00:49:05boyscoutBe persistant with write(2) - f667a2b - Evan Phoenix
00:49:44evanspastorino: bye!
00:57:05boyscoutCI: rubinius: f667a2b successful: 3458 files, 13651 examples, 41312 expectations, 0 failures, 0 errors
00:58:26evansweet, curb will compile and run on rubinius in their next release
01:01:11brixennice
01:01:42evanhe just tagged it, so should be out shortly.
01:25:59boyscoutHandle object_id's for immediates. Fixes #315. - 6ee0e43 - Evan Phoenix
01:27:37evankronos_vano: you should be making specs for these issues.
01:28:14kronos_vanoevan, for all, that current in tracker?
01:28:26evanfor the stuff you've been putting in lately
01:28:29evanthe last few
01:28:40evanit helps
01:28:42evanif you can.
01:28:45evanotherwise I have to.
01:29:41kronos_vanonp. My bug. My spec.
01:30:37boyscoutCI: Commit 6ee0e43 failed. http://github.com/evanphx/rubinius/commit/6ee0e4357e99ede5f4ca080d38cbf649002e69ba
01:30:54evan:/
01:32:24boyscoutAppease the GCC deities. - 44cc696 - Evan Phoenix
01:35:48evannari: could you send me the url for your book? I want to order it
01:42:21boyscoutShow that Proc#call to a Method should go straight through - acac3d0 - Evan Phoenix
01:42:21boyscoutAlter protocol for how Proc with a bound method is invoked. Fixes #277. - b504876 - Evan Phoenix
01:46:06boyscoutCI: rubinius: 44cc696 successful: 3458 files, 13651 examples, 41312 expectations, 0 failures, 0 errors
01:49:28narievan: thanks! Do you atend in RubyKaigi2010? I'd like to present the gcbook to you.
01:50:31evanoh my!
01:50:36evani haven't decided yet.
01:50:44brixenkronos_vano: http://gist.github.com/405850 :)
01:50:57brixenI believe I have the left shift specs sane-itized
01:51:00brixenreasonably
01:51:42kronos_vanobrixen, This means my patch doesn't work propely?
01:51:59brixenkronos_vano: not at all! it's just showing the bug :)
01:52:06kronos_vanoah, ok
01:52:11kronos_vano:)
01:52:15brixenfinally :)
01:54:04narievan: ok :) I will e-mail it.
01:56:01brixenevan: I've been trying to put stuff like #define HAVE_RB_THREAD_BLOCKING_REGION 1 in defines.h
01:56:06brixenwhich ruby.h includes
01:58:12kronos_vanoThere is an issue with bignum << 2147483648 on 64x platforms (because of using int instead of native_int in our code). But bignum << 2147483648 is very hard operation, so I write test bignum[2147483648] (it's repeat the bug, but more quickly): http://gist.github.com/405854
01:58:19evanbrixen: ah, ok.
01:58:51evankronos_vano: i'm not worried about a left shift that big.
01:59:01evani'd prefer to just raise a RangeError actually.
01:59:20evanok, i'm off for a jog.
01:59:25brixenok
01:59:50kronos_vanobrixen, So, what I should do?
02:00:37brixenfirst thing you should do is use the guards ;)
02:00:51kronos_vanoar
02:00:52brixenplatform_is :wordsize => 32 or 64
02:00:56kronos_vano64 I mean
02:01:07kronos_vanoI use it!
02:01:11brixendo not do stuff like (0.size*8+1) in the specs
02:01:21brixenwhat is that value and why is it important?
02:02:31brixenI mean use the guards to avoid these mystery computations
02:02:46brixensince you have the guard there, you have no reason to use 0.size* anything
02:03:08kronos_vanobrixen, refresh the page
02:04:01brixenok, now how does that code example conform to "accepts fixnum" ?
02:04:23brixenwait a sec till I commit these helpers
02:04:24brixen:)
02:04:29brixenand it will make more sense
02:04:33kronos_vanommmm 2147483648 is fixnum on 64x
02:04:34kronos_vanook
02:04:36kronos_vano:)
02:04:52brixenyes, but that's confusing in the spec because you have to figure it out
02:05:17boyscoutAdded fixnum_max(), fixnum_min() helpers to mspec. - c40ad91 - Brian Ford
02:05:17boyscoutFixed Fixnum#<< specs. - b9b52d7 - Brian Ford
02:05:17boyscoutFix left shifting for fixnums - 3601126 - Ivan Samsonov
02:05:29brixenok, so now we have fixnum_max() and fixnum_min() :)
02:05:43kronos_vanoCheat! :)
02:06:10brixenhaha, why?
02:06:39brixennow we need to make the spec actually test the boundary
02:07:42kronos_vanobrixen, because you patch mspec!
02:08:03brixenof course, that's why we have mspec :)
02:08:18brixenwe have to make the specs as simple as possible
02:08:31brixenthe Fixnum boundary is really a PITA
02:09:48kronos_vanodictionary tells to me that PITA is "People Ingesting Tasty Animals". That's you mean?
02:10:51brixenheh, no, pain in the ass
02:10:54brixensorry :)
02:11:04kronos_vanoahahah
02:11:47brixenPETA is the people for the ethical treatment of animals, so that def of PITA is probably about PETA
02:11:59brixenbut the other definition is about Ruby :)
02:12:14kronos_vanoI'll remember!
02:12:53brixenso 0xffff_ffff << ((2**31)) => Abort trap on 32bit os x MRI
02:12:54brixen:)
02:13:07brixenignore the extra parens
02:13:17boyscoutCI: rubinius: 3601126 successful: 3458 files, 13661 examples, 41308 expectations, 0 failures, 0 errors
02:13:19brixenanyway, I'm wondering about testing this
02:15:18brixenman, these specs drive me to drink
02:15:28kronos_vanoah
02:15:31kronos_vanook.
02:16:40kronos_vanoEnglish drive me to drink :(
02:16:52brixenheh, sorry
02:17:01brixenRussian would likely do the same to me
02:17:06brixenx10
02:17:59kronos_vanooh, Russian... We have been studying it for 10!!! years at school.
02:18:10kronos_vanobrixen, So, what I should change in spec
02:18:19brixenI'm not sure
02:18:27brixen0xffff_ffff << ((2**30) - 1) is broken on os x mri
02:18:36brixenand it takes a very long time to complete on rbx
02:18:43brixenprobably will use all my memory
02:18:58kronos_vanowhat about 0xffff_ffff[((2**30) - 1)]
02:20:55brixenwell, that's not really testing #<<
02:21:07brixenthere's no shifting required to read a bit
02:23:12kronos_vanobrixen, in Integer#[] : (self >> index) & 1
02:23:16brixenhttp://gist.github.com/405876 :)
02:23:17kronos_vanoar
02:23:18kronos_vanonm
02:23:28kronos_vano<< is not >>
02:24:40brixenunfortunately, I can't think of a computationally reasonable way to straight test this
02:24:53brixenthis is where formal methods would be nice
02:25:18brixenthat int instead of native_int would cause a verification error
02:25:56kronos_vanoverification error?
02:26:44brixenif we were formally verifying properties of http://gist.github.com/405876
02:26:55brixener Integer* Bignum::right_shift(STATE, Fixnum* bits)
02:27:12brixenwe could not assign bits->to_native() to int
02:27:47brixenI wonder how we could make this a type error
02:27:57brixenwithout it being a pita for other stuff
02:33:23slava( scratchpad ) [ HEX: ffff,ffff 30 2^ 1 - shift drop ] time
02:33:24slavaRunning time: 0.721964015 seconds
02:35:21brixenslava: nice
02:35:59brixenare these machine ints are bignums?
02:36:05brixens/are/or/
02:36:12slavabignums I would hope
02:36:31brixenwhat are you using for bignums? your own lib?
02:36:47slavascheme48 code
02:36:51brixenhmm
02:37:11slavahttp://gitweb.factorcode.org/gitweb.cgi?p=factor/.git;a=blob;f=vm/bignum.cpp;hb=HEAD
02:39:26brixenslava: on rbx, running time is 0.398376
02:39:38brixenslava: try to print out the number though
02:39:44kronos_vano:D
02:41:20slavabrixen: that takes ages
02:41:25brixenheh
11:20:00kronos_vanoDoes someone have rubinius-head ?
11:22:34dbussinkkronos_vano: i have the legs here, dunno where the head went
11:23:04kronos_vanodbussink, Pls, try to run "Marshal.dump(String.clone.new)" code in bin/rbx
11:23:11kronos_vanoIs it hang?
11:28:44matthewdkronos_vano: Yup
11:28:52kronos_vanotnx.
11:29:29matthewdWell, that's e6c32af
11:30:21kronos_vanoString2 = String.clone
11:30:21kronos_vanoString2.new(String2.new)
11:30:22kronos_vano:)
11:31:44dbussinkkronos_vano: yeah, hangs here too
11:32:24kronos_vanook. I think I cat fix it
11:35:19kronos_vanoString#initialize => StringValue(arg) => to_str(alias for to_s) => String#replace => StringValue => ...
12:31:54jhchabranHi, I just installed Rubyinius, and I get some strange errors when running specs throught Textmate RSpec bundle : http://pastie.org/967483 any clues from where it comes ?
12:32:05jhchabrans/Rubyinus/Rubinius/
12:32:41jhchabranspecs run correctly outside TM
12:46:52kronos_vanoevan, I've updated #316. I dunno how to fix it.
12:51:07kronos_vano:D
12:51:09kronos_vano"Railsinius"
12:54:16dbussinkjhchabran: looks like it comes from option parser
12:54:25dbussinkjhchabran: can you find the command that textmate executes?
12:54:36dbussinkprobably uses some command line options that you don't use when outside TM
12:54:51jhchabrandbussink: my rvm_wrapper may have something to do with this
12:56:06jhchabrandbussink: ${TM_RUBY:-ruby} /tmp/textmate-command-$$.rb; exit_status=$?; rm /tmp/textmate-command-$$.rb; exit $exit_status
12:56:22jhchabranit's pretty straightforward, no weird parameters there :/
12:56:56wayneeseguin"Insinius"
14:01:47spastorinoevan: http://github.com/rails/rails/commit/5573ab2047b07c3de08d40566de8a8fc80a676cf
14:10:04ddfreynewhat’s the reasoning behing that?
14:10:10ddfreynes/behing/behind/
14:11:06spastorinoddfreyne: that was for me?
14:11:25ddfreyneyeah… was wondering what the reason for disabling ruby-debug elsewhere is
14:12:04spastorinothat's going to change in the future
14:13:14spastorinoddfreyne: but you're right
14:13:42spastorinothe only thing we do was disabling for Rubinius
14:13:53spastorinoi'm installing all the platforms
14:16:42spastorinoperhaps i should fix now because as far as i know jruby supports ruby-debug
14:17:41spastorinoi don't know what about another alternatives like macruby, ironruby, etc
16:05:53evanspastorino: ah! thanks for that!
16:06:06evanspastorino: last night I was looking over the ruby-debug situation
16:06:22evansadly, it seems that right now the ruby-debug gem will only work on ruby 1.8
16:06:34evanand it's very tangled up with 1.8s internals as well
16:06:49evani'd love to see a ruby-debug gem that supports more than 1.8, but thats going to be hard to do.
16:07:02spastorinoyeah there's a ruby-debug19
16:07:14spastorinoi don't know them internally
16:19:21brixenmri fixnum/bignum #>> #<< is pita
16:21:05brixen#<< -n is equiv to #>> n except that #>> n will accept a Bignum for n
16:21:18brixenwhich is stupid
16:23:24evanug.
16:23:51brixenand of course mri just passes obj around anywhere it pleases
16:24:08brixenoh, want to operate on this fixnum like a bignum, just pass it along to the bignum stuff
16:24:12brixenlet it sort it out
16:24:15brixenso crazy
16:26:49evanbrianmario: any luck on using rb_thread_blocking_region?
16:27:32brianmariodidn't get a chance to try it out last night, I installed the latest from rbx-head and got as far as trying to create the makefile by running extconf and got some error (sec I'll gist it)
16:28:22brianmario"Tried to use object of type System (45) as type String (51) (TypeError)"
16:28:24brianmariohttp://gist.github.com/406493
16:28:43brianmariothat's from doing
16:28:51brianmariorbx ext/extconf.rb
16:29:22evangeez.
16:29:24evanthats weird.
16:29:34evanare you getting it consistently?
16:55:06evanman, so tempted to just raise an error if someone tries to clone/dup a Class
17:02:24brixenprobably should
17:02:58brixenI'm so tempted to raise an error on #>> or #<< if the arg is a Bignum
17:02:59evanit confuses String's methods so hard
17:03:13evanbrixen: i'd be ok with that.
17:03:17brixenok, done
17:03:24brixenI'll add rbx specific specs
17:03:42brixenmri's RangeError based on fitting in a long is stupid as fock already
17:03:51evanhah
17:03:52evanyes.
17:04:01brixenthe code is such a nest for these 2 methods
17:26:11boyscoutAdd missing header files to scan for mode_t - 4cbdcc3 - Evan Phoenix
17:30:52evanUG.
17:30:59evancan't disable Class#clone entirely.
17:31:04evansingleton uses it.
17:35:06brixen:(
17:35:27kronos_vano:/
17:35:59brixencan we rewrite it?
17:36:19evani suppose, but how will you implement clone?
17:36:42evani'm thinking about just disabling clone of String/Array for now
17:36:44brixenwe could provide __clone__ for it
17:37:17evanug. singleton uses Thread.critical.
17:37:20evanmegafail!
17:37:28brixen+2 for rewrite! :)
17:38:01evanman, it needs a mega rewrite.
17:38:16evanwait wait
17:38:20evanwhy is this clone here.....
17:38:43evanwhy doesn't Singleton.clone return self...
17:38:53brixennever saw a Class#clown I didn't wonder about... :)
17:39:05evanesp. since the behavior according to the spec is that a clone'd Singleton returns the same instance
17:45:23boyscoutCI: rubinius: 4cbdcc3 successful: 3458 files, 13661 examples, 41308 expectations, 0 failures, 0 errors
17:52:15boyscoutRemove unnecessary test - 8ad1a0b - Evan Phoenix
17:52:16boyscoutDisable ability to clone/dup Class objects. Fixes #316. - d1deaa7 - Evan Phoenix
18:00:09boyscoutCI: rubinius: d1deaa7 successful: 3458 files, 13661 examples, 41307 expectations, 0 failures, 0 errors
18:35:00boyscoutTeach Signal.trap the rest of it's tricks. Fixes #314. - 3e03dd6 - Evan Phoenix
18:35:26evani wonder how hard it's going to be to get rmagic to compile
18:35:38evanand by that, I mean just getting imagemagick to compile.
18:35:47brixenworst thing about rubyspec... whenever I try to fix some specs up real nice I find so much ridiculous MRI behavior it makes me sad
18:35:51brixenand wonder why bother
18:36:10brixenevan: I installed from ports, which wasn't hard
18:36:17evanok, i'm trying that now.
18:36:18brixenbut Defiler suggested homebrew
18:36:26brixenwhich sounds like a good idea too
18:36:28evani've still got ports installed.
18:36:33evanFUCK PORTS
18:36:36evanwhy is it installing X
18:36:48brixenbecause imagemagick is a horrid lib
18:36:56brixenfor some values of horrid
18:37:11brixenI should say, X is a horrid system, and a lot of software was built for it
18:38:49evanoh
18:38:51evan+no_x11
18:38:56evanmaybe I can make this work.
18:42:03evannicksieger: hi
18:42:10nicksiegerhey
18:43:16boyscoutCI: rubinius: 3e03dd6 successful: 3458 files, 13661 examples, 41307 expectations, 0 failures, 0 errors
18:44:18evanbrixen: started working on the debugger last night
18:44:24brixensaweeet
18:44:42evangot it rewired so that a thread will pass control to a debugger thread when a breakpoint is set on an ip
18:44:52brixenexcellent
18:45:05evangoing to have it pass the VariableScope, CompiledMethod, and StaticScope
18:45:17evanwhich means that I can synthesize a Binding object from them
18:45:43brixennice
18:46:50evanneed to work out how I want to implement next/step
18:47:26brixenhmm
18:47:43brixencould you work that into the debug interp?
18:48:05evani probably will, yeah
18:48:07evanto have it assist
18:48:09brixensince nexti would be just the next instruction and next could be figured out from the lines to ip tuple
18:48:51evanI'll need to work out step for methods
18:49:29evanso that I can have the method called and transfer control to the debugger at ip 0
18:49:30brixenwhat's the behavior of step? step into?
18:50:21brixenok, yeah step into
18:50:21evanyeah
18:50:33evanhit step on a method call and you enter the method
18:50:36brixenright
18:51:05evanthere is the "issue" of when you're on a line like
18:51:10evanputs a.thing
18:51:12evanand hit s
18:51:15brixenyeah
18:51:51evanalso, ruby-debug is sad town.
18:52:00evanand linecache
18:52:06evanthe big mess of code that uses MRI
18:52:19evanis all to implement CompiledMethod#lines
18:52:21evanbasically.
18:52:28evanit's so you can do
18:52:50evanLines.lines("class A\ndef foo\nputs 'hello'\nend\nend\n") => [1,2,3]
18:52:57evanie, the lines in the code.
18:53:29brixenhuh
18:53:46brixenwell, we don't need any of it, right?
18:53:50evanyep.
18:54:03brixenwin
18:54:23brixenI can't think of any mri code that we use that we wouldn't replace given the time to do so
18:54:35evanpretty much.
18:54:35brixensadly enough
19:00:38cyndisso, ruby-opengl does "RArray* obj = RARRAY(ary); blah(RARRAY_LEN(obj));". do you think that this should be classified as a ruby-opengl bug?
19:01:23evancyndis: yes.
19:01:27evanbug.
19:01:30cyndisok, good.
19:01:39evanwell, it's not technically a bug.
19:01:42evanbut it's bad practice.
19:01:46cyndisyes
19:02:11cyndisit's nasty because gcc doesn't catch it (it only gives a warning) and rbx just crashes
19:02:29evanah
19:02:32evanyes, thats a bug
19:02:37evannow that I think about it
19:02:50evanbecause the RArray will point into the middle of the object
19:03:01evanand RARRAY_LEN will cast obj back to a normal object
19:03:06evanso the len will be read from the wrong place
19:03:09cyndisyes
19:07:59kronos_vanoevan, Should I write spec for trap?
19:08:23evanyes.
19:08:28kronos_vanok
19:09:56kronos_vanoevan, And what about yesterday's patch for Bignum shifting? (int => native_int)
19:10:16evanask brixen
19:10:19evani think he wrote it already.
19:11:04kronos_vanobrixen, ^^
19:13:47brixenkronos_vano: you should commit the patch
19:14:02kronos_vanowithout spec?
19:14:10brixenkronos_vano: there is not a way to calculate that value reasonably, but n->to_native() should never be assign to an int
19:14:22kronos_vanook
19:14:23brixenthat should be a type error, but I don't know how to do that
19:14:39brixenwe can't calculate that value, especially not on 64bit
19:14:50brixenon 32bit, it takes 135 million bytes
19:15:21brixenwe could use a completely different type for to_native()
19:18:19evanbrixen: i wish that g++ just had stronger integer casting rules.
19:18:40evanusing a completely different type thats not an int at all will just cause more grief
19:20:42brixenprobably
19:20:52brixenthere's just no feasible way to spec that
19:21:01brixenand it sucks the type system doesn't catch it
19:21:23brixenbut it is very easy to audit too
19:21:30brixengrep to_native() :)
19:22:59evanyep
19:31:34boyscoutto_native() should be assign to native_int - d98c107 - Ivan Samsonov
19:39:43boyscoutCI: rubinius: d98c107 successful: 3458 files, 13661 examples, 41307 expectations, 0 failures, 0 errors
20:02:15kronos_vanoOh, who did write bignum math stuff? "Bug on bug" :(
20:59:09brianmarioevan: sorry - got crazy busy right after I sent that msg earlier :P
20:59:33brianmarioso I narrowed the "bug" down to the fact that I had a magic comment at the top of the file right before the require to mkmf
20:59:35evanoh, no problem.
20:59:41brianmarioremoving the comment seemed to fix it
20:59:44evanweird.
20:59:48evanwhat was the comment?
20:59:53brianmario# encoding: UTF-8
21:00:02evanthats weird it would cause that
21:00:07brianmariowait
21:00:09brianmarionow it's working
21:00:11evanhopefully I can repro it.
21:00:15brianmarionow I can't :P
21:00:22evansuch is software.
21:00:36brianmariooh wait, lemme wipe the rbc files and try again
21:00:49brianmariowtf, yeah it works fine now
21:00:52brianmarioheh
21:05:10evanwhat, the, fuck.
21:05:22evanimagemagick is spinning up background threads.
21:06:44boyscoutFixed Fixnum#>> specs. - 9fc80b0 - Brian Ford
21:06:44boyscoutAdded rbx specific Fixnum#<<, #>> specs. - b2acbcd - Brian Ford
21:06:44boyscoutFixed Fixnum and Bignum bit shifts. - e851fa1 - Brian Ford
21:06:44boyscoutFixed Fixnum#[] specs. - daec8cb - Brian Ford
21:06:44boyscoutFixed Bignum#<<, #>> specs. - 15d14c6 - Brian Ford
21:07:19brixenprobably nothing imagemagick does could suprise me
21:07:37brixenI really wish I knew how to help people write decent specs
21:07:51brixenI don't get why decomposition to cases is so hard
21:08:05brixenseriously, any insight on how to explain this would be great
21:08:12brixencus I'm so sick of fixing specs
21:12:27evanbrixen: :/
21:14:43boyscoutCI: rubinius: 15d14c6 successful: 3460 files, 13702 examples, 41319 expectations, 0 failures, 0 errors
21:22:12boyscoutFlesh out C-API to compile ImageMagick. Fixes #294. - 56b08bf - Evan Phoenix
21:22:35evanso, what should we do about the issue about compiling with mingw
21:22:41evansounds like he got as for as the other effort did
21:22:54evanand that we need to address the ability to import symbols from the current process on windows
21:26:19brixenyeah, the importing symbols is a big one
21:28:07evanok, i closed his issue saying he needs to make a fork of rubinius with his code on it.
21:28:25evan0 issues! woo!
21:28:30brixenwoohoo!
21:28:40evanwe weathered the first storm!
21:29:03evani'm thinking perhaps 1.0.1 next week
21:29:06evanmonday perhaps
21:29:07brixenok
21:29:13evansince we've fixed a bunch of things
21:29:16evanincluding some crash bugs.
21:29:17brixenI'm syncing rubyspec right now
21:29:20evanok
21:29:21brixenyeah
21:29:41brixenwe've got features to start commiting to master
21:29:56evanactually
21:30:05evani'm going to make a 1.0-bugfix branch now.
21:30:09evansince there are zero issues.
21:30:12brixenthat's a good idea
21:30:17brixenI was just going to suggest it
21:30:26bignum_haterthere is one actually
21:30:28brixenmaybe we should make the branch right after a release
21:30:47brixenso we can shuffle stuff to it and still keep master the dev branch
21:31:01evanbignum_hater: there is what?
21:31:05bignum_haterhttp://gist.github.com/406862
21:31:18bignum_haterBignum#divmod
21:31:31evanhuh?
21:31:49evanwhat are you talking about?
21:31:54boyscoutCI: rubinius: 56b08bf successful: 3460 files, 13704 examples, 41321 expectations, 0 failures, 0 errors
21:32:29boyscoutFlesh out C-API to compile ImageMagick. Fixes #294. - 56b08bf - Evan Phoenix (1.0-bugfix)
21:32:44evanoh thats weird.
21:32:45evanbut fine.
21:33:31evanok, so now bugfixes need to be commited to both branches
21:33:38evanuntil 1.0.1 is out
21:33:42evanpeople can just commit to master
21:33:49evanand i'll push them across to the bugfix branch
21:33:55evanso that I can figure out a good workflow
21:34:10toulmeanevan: cherry pick ?
21:34:13brixenyeah, seems like we should cherry pick them
21:34:14toulmeanthat's a good approach imo
21:34:18brixenyeah
21:34:18evantoulmean: yeah, most likely.
21:34:32evanor fast-forward if possible
21:34:34toulmeansorry, giving advice, I'm not even active on this.
21:34:43evantoulmean: thats fine :)
21:34:51toulmeanI can tell from my xp that cherry pick is ok
21:34:54evani like opinions.
21:35:03toulmeana bit risky and mind blowing sometimes
21:35:10evantoulmean: it doesn't get confusing that there is commits that are nearly identical?
21:35:16toulmeanI would recommend to accept commits that are really atomic
21:35:26toulmeanask people to rebase their contributions
21:35:30toulmeanbefore you accept them
21:35:40evanthey already do.
21:35:42toulmeanso that you get really: one commit, one thing
21:35:44evanwe've got a fine workflow
21:35:46toulmeanok then you're good.
21:35:54evanour workflow atm is fine.
21:35:56toulmeanand you know better than I do :)
21:36:07evanpeople are going to need to dispiline themselves to seperate out features from bugfixes
21:36:14evanbut people have actually been pretty good about that up to now.
21:36:18evanso shouldn't be a big deal
21:36:33evanone thing that would help is if people put a special tag in their commit message
21:36:36evanperhaps
21:36:37evan@bugfix
21:36:48evanthat lets me pick them out easier
21:36:58evaneither @bugfix or Fixes #<num>
21:37:02evanthoughts?
21:37:25brixenFixes/Closes # seems least burdensome
21:37:31brixensince we are doing that already
21:37:40brixenif we restrict issues to bugs
21:37:43evanok, and if there is no issue number for the bug?
21:37:48evanor should we require an issue
21:37:49brixenhm
21:37:55brixenperhaps require an issue
21:37:56evanFixes #NAN
21:38:06brixenmakes it easier to search for issues too
21:38:51brixenFixes #NaN works too
21:38:57brixenI wonder what gh does with that
21:39:07evani'd prefer to have a way to mark a commit that there is no issue for as a bugfix too
21:39:17evanbecause it's often that i'll fix a crash or something while working on something else
21:39:22evanand want to commit it seperately
21:39:26brixenright
21:39:38brixenmight be worthwhile to just open an issue
21:39:53brixeneven with just a title and "I'm working on this"
21:40:12evanhrm.
21:40:34kronos_vanohttp://gist.github.com/406868 case+patch
21:41:18brixenkronos_vano: spec
21:42:05kronos_vanobrixen, working on it.
21:42:13brixenwhy is this IO#reopen spec failing on all 3 versions of ruby...
21:42:20evanit is?
21:42:26evanwhich one?
21:42:39brixencore/io/reopen_spec.rb:100
21:43:19evanhrm
21:43:27evanfuck.
21:43:31evanthats my bad.
21:43:35evani swear it had this behavior.
21:43:38evanwtf.
21:43:42brixenhmm
21:44:40evanah crap
21:44:48evanmaybe because the mode of @io is just r
21:45:05evanit opens the new file with the same mode to fopen
21:45:30evancould you check that using an io opened for write fixes it?
21:45:36brixenyep
21:45:39brixenone sec..
21:47:32brixenman, crazy amounts of water falling out of the sky
21:52:19BrianRice-workindeed.
21:54:51BrianRice-workmy iPad makes a pretty good weather radar widget
21:56:02evanbrixen: ok, first cut at this
21:56:07evani'm not going to wire up control flow
21:56:11evan(this is the debugger)
21:56:27evanit it will be an on-demand data inspector only
21:56:38evanthats still pretty useful.
21:57:14brixennot sure I follow
21:57:27evanrather than wait until i've got something that can even step
21:57:37evani'm going to wire it up so you can set breakpoints
21:57:42evanand inspect the program at the breakpoints
21:57:43brixenoh ok, cool
21:57:43evanonly.
21:57:55evanyou won't be able to move around though
21:58:02evanyou can just set other explicit breakpoints
21:58:05brixenjust set another bt
21:58:06brixen:)
21:58:07brixenyeah
21:58:08evansure
21:58:10brixener br
21:58:47brianmarioevan: it looks like have_func('rb_thread_blocking_region') is returning false in my extconf against rbx
21:59:00brixenok, so #reopen will create the file if the original file has write mode
21:59:08evanbrianmario: yes, thats true
21:59:16brianmariobut when it goes to compile, it looks like everything works ok
21:59:17evanbut I hardcode provide HAVE_RB_THREAD_BLOCKING_REGION in the ruby.h
21:59:22brianmarioah
21:59:23brixenbut now these specs have some wacky interaction that is causing the reopened file not to be rm'd
21:59:27brixenugh
21:59:37evanmkmf doesn't really "work" right because it requires rbx be a shared library
21:59:41evanto detect internal symbols.
22:00:00evanso we hardcode the #defines it would set
22:00:08evanas needed.
22:00:25brianmarioalso, unable to install rspec to try my specs out - getting this from trying to invoke "gem"
22:00:26brianmariohttp://gist.github.com/406892
22:00:40evaneverytime?
22:00:42brianmarioyeah
22:00:52brianmarioI installed with rvm, and I'm not sure how much I trust it yet :P
22:01:18evanok, could you run it under gdb and get me some data from the crash point?
22:01:23brianmariosure, sec
22:01:26brianmariojust a bt?
22:01:32evanlets start with that
22:01:37evandon't exit it once you've got the bt.
22:02:14brianmarioso right away - vm/builtin/exception.cpp:124
22:02:20brianmariowas->type_name << " (" << was->type << ")";
22:02:26brianmarioEXC_BAD_ACCESS
22:02:32brianmariogisting the bt
22:02:47evank
22:02:51brianmariohttp://gist.github.com/406900
22:03:06evanhrm
22:03:14evancan you print was->type_name and was->type?
22:04:10brianmario"Cannot access memory at address" for both
22:04:35brianmario0x88 and 0x80 were the addresses
22:04:45evanok
22:04:46evango up
22:04:50evaninto instructions.cpp
22:04:57evancan you 'p e'
22:06:38kronos_vanobrixen, http://gist.github.com/406901
22:06:48brianmariomy gdb skills are pretty limited
22:06:54evanthats ok
22:06:55brianmariohow do you go "up"
22:06:59evanup
22:07:02brianmariohaha
22:07:17brianmarioUnable to access variable "e"
22:07:17brianmario$1 = <variable optimized away by compiler>
22:07:21evani'll put exactly what yous should type in ``
22:07:22evanok
22:07:24brianmariook
22:08:19evan`b rubinius::TypeError::raise`
22:08:31evan`r`
22:08:32brianmariok
22:08:37evananswer yes that you want to restart
22:08:45evanit will chug along and hopefully stop
22:08:45brianmariok, it's at the bp
22:08:53evanok, now `c`
22:08:58brianmariok
22:08:59evandid it crash?
22:09:01brianmarioyeah
22:09:04evanperfect
22:09:11evan`r`
22:09:13evanyes, you want to restart
22:09:17brianmariok
22:09:19evanthen, when it hits the bp
22:09:21evan`bt`
22:09:23evanand gist that.
22:09:50brianmariohttp://gist.github.com/406908
22:09:52brixenkronos_vano: too many cases in one spec
22:10:24evanhm, interesting.
22:10:55evanbrianmario: ok
22:10:57evan`up`
22:11:05evan`p call_frame->print_backtrace(state)`
22:11:08evanthat will output a ruby backtrace
22:11:09evangist that.
22:11:22kronos_vanobrixen, I can split it in a > b and b > a
22:11:30brianmariohttp://gist.github.com/406909
22:12:31evanoh wonderful.
22:12:33evanok...
22:14:19evanhm
22:18:20kronos_vanobrixen, Split it in 4 cases.
22:20:58evanbrianmario: hm
22:21:08evannuke the .rbc file for that rubygems_plugin.rb
22:21:12evansee if that makes a difference.
22:21:17brianmariok
22:22:05brianmarioyep
22:22:15brianmariobut the first line of output says
22:22:15brianmarioerror loading "/Users/brianmario/.rvm/gems/rbx-head/gems/gemcutter-0.5.0/lib/rubygems_plugin.rb": Tried to use object of type System (45) as type String (51) (TypeError)
22:22:18brianmariobut it runs
22:22:28evanok, we get that again...
22:22:43evaninteresting..
22:23:20evanbrianmario: you get that running what command?
22:23:34brianmariojust gem
22:23:38evangem what
22:23:44brianmariono params
22:23:44evani need the exact thing.
22:23:48brianmario`gem`
22:23:58evanso you're expecting to see the help?
22:24:08brianmariooh it runs and the help shows up
22:24:14brianmariobut that line is at the top
22:24:16evanrun it again
22:24:19evanto get you the crash?
22:24:23brianmariono crash
22:24:27evan:/
22:24:27brianmarioseems to run ok now
22:24:33brianmariojust with that same line at the top every time
22:24:42evanright.
22:25:03evanhrm
22:25:12evanok, i'm going to backburner this for the moment.
22:25:24evansomething is up, but i need to get the old subconscience work on it.
22:26:12brianmarionp
22:26:23brianmarioI'll mess around later and see if I can find anything more specific
22:26:29evank
22:26:30brianmariothanks
22:26:33evanno prob.
22:26:42evanthanks for soldiering through with me
22:26:54brianmarionp, felt like performing remote surgery ;)
22:27:00evanit was :)
22:27:10brianmariofwiw I was able to install rspec fine
22:27:13evanbrixen: so, how would you like to be able set a breakpoint?
22:27:19evanbrianmario: ok
22:27:42agardinerhey evan, brixen!
22:27:50evanwell hi there adam!
22:27:57agardinerjust saw the news about 1.0!!
22:28:00evanyeah!
22:28:03agardinergreat work guys
22:28:07evanthanks!
22:29:09evanagardiner: started work on fixing the debugger and making it more robust last night
22:29:19evani've opted for a whole different approach than we had before.
22:29:24agardineroh, good stuff
22:29:35agardinerhow are you going?
22:29:38evanI've added a LookupTable to every CompiledMethod
22:29:45evanthat will map ip => object
22:29:52evanthe object can be anything the debugger wants
22:30:01evanit's presense alone signifies there is a breakpoint
22:30:07agardinerexcellent!
22:30:17evanand I use the channel switch mechanism to pass that object, plus state info, to the debugger on the channel
22:30:18agardinerthat is very flexible
22:30:22evanyeah
22:30:31evanand it lets the debugger pass state between breakpoints trivially
22:30:36evansomething that was kind of hard to manage before
22:30:38agardinerawesome
22:30:47evanyou'd have a stop and then have to figure out "um, why did we stop here again?"
22:30:48agardineryeah, and no need to twiddle the iseq
22:30:53evanyep
22:31:06evaneach Thread has a debugger_thread slot now too
22:31:11agardinerman, that would gut breakpoint.rb
22:31:22evanyeah
22:31:33agardinerwhats the debugger_thread used for?
22:31:46evanthats where the channel to use for a thread that hit a breakpoint should use
22:32:03evanwhen a breakpoint is seen, it looks to see if the current thread has a debugger thread registered
22:32:12evanif so, it passes control to that thread via a Channel
22:32:32evani'm going to deal with the bootstrapping problem seperately
22:32:37agardineroh, neat - so you can debug more than one thread at a time?
22:32:43evansure
22:32:51evanit would be confusing, but sure.
22:32:53evanit's explicit
22:32:59evanso normally you'd probably want to just debug one.
22:33:19agardinerright - we had a global debug channel before
22:33:45evanright
22:33:52evanwhich adds to the chaos
22:34:01evanso, how did we allow a breakpoint to be set before?
22:34:12evanie, you need to take some user input and map that to a CompiledMethod and an ip
22:34:22evanthe simple case is.. simple
22:34:25agardinerwe had a couple of ways
22:34:28evanb Class#method:line
22:34:40evanbut what if Class and/or method doesn't exist yet?
22:34:41agardineryou could use Kernel#breakpoint in code
22:34:47evansure
22:34:54evanso an explicit breakpoint
22:35:09agardinerthat was never handled before
22:35:14agardineron the TODO list
22:35:17evanok
22:35:28evanso you need to spin up your code
22:35:37evanthen break into the debugger to set the breakpoints
22:35:40evanthen run the code.
22:35:50agardinerkinda
22:35:54evanok
22:36:01agardineryou could start any script with the -debug option
22:36:09agardinerand then set breakpoints as you went
22:36:29agardinernot sure if any of that is still there
22:37:26evanwell
22:37:34evanwhat i'm doing is wiring it back up
22:37:38evanlittle bit at a time
22:37:43evanso at the end of today
22:37:49evani want to have a way to inspect data at a breakpoint
22:37:54evanbut not move from that breakpoint
22:37:56agardinerhmm...
22:37:58evanie, no next/step, etc
22:38:02evani'm nearly there already
22:38:10agardinerlast time i looked, the Context object had gone away
22:38:11evanjust need to figure out how/where to let a user set breakpoints.
22:38:30agardineri started re-wiring it, but never finished
22:38:35evanyeah
22:38:36evanno prob
22:38:40evanwe've got a lot of good stuff in here still
22:38:43evanjust need to shuffle it around.
22:38:58evanseems like the easiest for right now is require an explicit Debugger.start call
22:39:03evanthat the user would put in after their code had loaded
22:39:08brixenthat would be cool
22:39:14evanwhich would spin up the debugger and the user could enter breakpoints then
22:39:27brixenI didn't like the starting the debugger at the start of the script
22:39:38agardinerwhy's that?
22:39:41brixenbecause it needed a lot of conditionals
22:39:48agardinerin loader?
22:39:49evanok, i'll go with the explicit start as a first cut.
22:39:52brixenyeah
22:40:02agardinerright, it was a bit of a pain
22:40:10brixenwe can wire it back up
22:40:15brixenonce we have a better API for it
22:40:29agardineryeah, the API is what's needed
22:40:29brixenbecause with a script you don't have a stopping point
22:40:32brixenyeah
22:40:37brixenthat's what I mean
22:41:09evanfor now, it will be
22:41:12evanrequire 'debugger'
22:41:14evanDebugger.start
22:41:20agardinerman, back in the shotgun days i also started work on a ruby-debug adapter
22:41:23evanwe can flow things out of that later.
22:41:31evanagardiner: yeah! i thought you did
22:41:35evani started looking through ruby-debug
22:41:38evanit made me sad.
22:41:53evanit doesn't appear to have adapters atm
22:41:55evani thought it did
22:41:56agardineri only needed to work with ruby-debug-base
22:42:08evanreally?
22:42:16evanseems like it depends on a bunch of stuff like linecache and such.
22:42:24evanin ruby-debug proper.
22:42:24agardineryeah... i think there was a jruby version as well
22:42:29evanhm
22:42:29evanok
22:42:39agardinerhang on, let me see if I can dig this up
22:42:52evank
22:43:30evanoh, maybe ruby-debug-base is where it is...
22:44:39agardineryeah, i've got what i had up on github
22:44:49evanwhere at?
22:44:52agardinerhttp://github.com/agardiner/rubinius-debug-base
22:45:24agardinerthere's a ruby impl of linecache and tracelines that ruby-debug needs
22:45:25brixenFUCK.ING. IO#reopen
22:45:30brixentakes a walk
22:45:33evanbrixen: :(
22:45:41agardinerthose are ripped straight off of the jruby version, i think
22:46:52evanok
22:48:19agardineri think that was mostly working... but of course, most of the hard work was in breakpoint.rb
22:48:45evansorry, did someone say something?
22:48:47evani had just clicked restart on limechat
22:48:59kronos_vano[02:46] <evan> ok
22:48:59kronos_vano[02:48] <agardiner> i think that was mostly working... but of course, most of the hard work was in breakpoint.rb
22:49:37evanok
22:49:46evanthanks
22:49:53agardinernp!
22:49:55evanagardiner: well, i'll get it sorted out hopefully
22:50:14agardinertell you what, if you can get the VM support there, i'll get the debugger working on top of it
22:50:20evanis there a reason you started working on our own debugger rather than ruby-debug?
22:50:29evanthe ruby-debug source leaves something to be desired, personally.
22:50:56agardinerdidn't really consider it...
22:51:02evanagardiner: you're welcome to jump in, but i'm going to push forward on the debugger side too
22:51:04evanok
22:51:16evani want the debugger to be a big 1.1 feature.
22:51:23agardinerexcellent!
22:51:53agardinerI tried a couple of times to get it going again, but couldn't keep up with the bit rot
22:52:03evanyeah, no prob.
22:52:07evanhows london?
22:52:18agardinerits good
22:52:43agardineri seem to have much less time for hacking though... :-(
22:53:06agardinernot that it's london, more kids getting older
22:53:26evanhow old are the kids now?
22:53:36agardinerJared is 6 and Chloe is 3
22:53:47evanah! yeah, i'll bet they take a bit of time.
22:54:06agardinerhehe, yeah!
22:54:11agardinerbut its all good!
22:54:37evancourse :)
22:55:12agardinerso, for the debugger, are you thinking ruby-debug, or resurrecting the rubinius debugger?
22:55:25evanprobably the rubinius one
22:55:32evanresurrected bit by bit.
22:55:48evanthen i'll figure out what to do about ruby-debug
22:55:50agardineryay! nice to know it won't be discarded...
22:55:50evanif anything.
22:56:21agardineryeah
22:56:48agardinerbut ruby-debug support shouldn't be too hard as well, once the foundation is there
22:56:57evanyeah
22:58:02agardineri like the lookup table idea off of CM...
22:58:09agardinerthat's a really neat solution
22:58:20agardinerseems kinda obvious now!
23:00:14evan:)
23:00:15evanit's slower
23:00:19evanbut easier to manage
23:00:47agardinerslower when debugging only?
23:00:55evanyeah
23:01:00agardinerwho cares!
23:01:03evanbecause there is a table lookup per ip
23:01:05evanexactly!
23:01:16agardinerat that point, speed isn't your problem!
23:01:28agardineryour already in the method you want to be in...
23:01:39agardinerand you got there at full speed
23:02:35agardinerare you still attaching a special interpreter to CMs with breakpoints?
23:02:45agardiner(only)
23:02:56evanyeah
23:03:00evanthats a critical part
23:03:06agardinerexactly
23:03:13evanmethods being debugger are "deoptimized"
23:03:18evaner. being debugged.
23:03:24agardiner:-D
23:10:22agardinerright, i'm off - congrats again on 1.0!
23:11:03evan:)
23:11:04evanbye!
23:11:20agardinero/
23:14:50kronos_vanoevan, So. In which branch i should commit bugfix, and should I create tickets for this?
23:16:17evanyou can commit them to master
23:16:25evanand if they're bug fixes
23:16:39evanput @bugfix in your comimt
23:16:43evanif you don't have a ticket.
23:21:23evan@bugfix in the commit message
23:21:24evanthat is.
23:31:47evankronos_vano: um.
23:31:51evanwhats the plan?
23:32:00kronos_vanoPlan?
23:32:02evani have a few comments on it strings
23:32:07evanyou asked about commiting
23:32:14evanbut you put in an issue with a patch instead
23:32:32kronos_vanoSpec.
23:32:37evanhuh?
23:32:38kronos_vanoI'm not sure in it
23:32:49evanwell, replace "returns an array of two elements q and r which correspond to the conditions" with "given"
23:32:49kronos_vanoso I put it for reviewing
23:32:52evanin your spec
23:33:14evanactually
23:33:19evaneven thats exactly the same isn't it?
23:33:34evanuse a nested describe
23:34:01evandescribe "returns [q,r], given q = floor(x/y) and a = q*b + r" do
23:40:37kronos_vanoevan, http://gist.github.com/406999 right?
23:41:24evanbetter, yes.
23:55:32boyscoutMore specs for Bignum#divmod - 03c7c26 - Ivan Samsonov
23:55:33boyscoutRepair Bignum#divmod for cases with negative numbers. Fixes #319. - f79bf37 - Ivan Samsonov