Index

Show enters and exits. Hide enters and exits.

02:42:20manverugood morning
06:14:09manveruthat compile sure takes time
06:15:02manverui just changed on line in vm/builtin/regexp.cpp and it takes 5 minutes or so :P
06:15:23manverujust to fail and tell me i should've switched to 1.8 first
06:49:06manverubrixen: around?
06:56:03manveruseems like i cannot use rb_const_get in builtin
06:56:11manveruand there is no rb_cRegexp
06:57:02manveruso i have no idea how to get the value of that constant
06:57:42manveru option_mask = rb_const_get(rb_cRegexp, rb_intern("OPTION_MASK"));
06:57:44manveru int result = ((int)onig_get_options(reg) & option_mask);
06:57:47manverudoes that look right?
07:06:53manverubrixen: is it possible that the // syntax doesn't call Regexp.new but the C++ function instead?
07:07:23manveruthat would explain the weird behaviour of the cgi specs
07:08:46manveruthey should be //n but aren't adjusted to the 0 flag by C++, so they have the wrong flag
07:29:30manveruthere seems to be a const_get in the helpers.cpp, and rbx_find_const in jit_util.cpp, but i'm not sure how to use either
07:46:33dbussinkmanveru: you probably should look how the other rb_c* values are defined
07:46:36dbussinkmanveru: and use that pattern
07:47:33manverudbussink: but then i still can't use rb_const_get
07:47:37dbussinkmanveru: you should look at vm/capi/ruby.h and vm/capi/capi.cpp
07:47:49manverui cannot use the capi in builtin
07:47:56manveruor so the compiler says
07:47:56dbussinkmanveru: why not?
07:48:01manveruor maybe my C just sucks
07:48:11manverudo i need to include something?
07:48:27dbussinkmanveru: can you show some code?
07:48:51manverui pasted the two lines above
07:48:59manveruit's all i added
07:49:13manveruin vm/builtin/regexp.cpp that is
07:49:39dbussinkmanveru: you're mixing capi stuff and builtin's?
07:49:52manverui'd like to
07:50:01dbussinkthat probably won't work
07:50:23dbussinkmanveru: let me check how to get to that properly
07:51:20dbussinkmanveru: why don't pass it down as an additional argument in the primitive?
07:51:23manverudbussink: http://pastr.it/16649
07:52:18dbussinkmanveru: it should probably be changed to the options parameter is used properly
07:52:49manverui have no idea how those primitives work
07:53:05manveruor what holds all that magic fairy dust together
07:53:55dbussinkif you look at kernel/common/regexp.rb:64 you see the same method signature as the primitive in vm/builtin/regexp.cpp
07:54:20manveruoh...
07:54:31manveruso you mean i could pass the value of the constant in directly?
07:55:06dbussinkmanveru: sorry, you should look at kernel/bootstrap/regexp.rb
07:55:17dbussinkthere you see the compile method which calls Ruby.primitive :regexp_initialize
07:55:38dbussinkthe arguments to the ruby method there are also the arguments passed down to the primitive
07:56:00manverualso, what is done when // syntax is encountered?
07:57:31dbussinkso the fix should probably entail changing kernel/common/regexp.rb to pass in the right arguments to Regexp#compile
07:58:14manveruhm, k
07:58:24manverui'll try that in a bit, busy with work right now
11:45:18ruemanveru: There are a couple potential things you need to check if you mean to add //{g,G} option support. Adding it just for Regexp.new is slightly easier
11:46:10rueFirst, verify that lib/ext/melbourne/grammar does not restrict the options; same for lib/compiler/ast/literals.rb
11:47:37rueThen kernel/common/regexp.rb handles at least some of the option parsing; kernel/bootstrap/regexp.rb does not do anything but pass the options it has through to the primitive so that is not of much concern
11:49:06rueThen, in regexp.hpp, you see the // Ruby.primitive notation for Regexp::initialize(), which is defined in regexp.cpp
11:50:16rueThe last hurdle there is that the OPTS_MASK needs to be changed to allow your option, after that it just gets passed down to onig
12:24:09manveruah, i was wondering where the syntax is
12:26:20manverui really don't need the /g syntax itself, just the ability to pass any valid oniguruma flag to Regexp.new
12:27:22manveruright now it's limited to the first 4 flags
12:27:59manverunone = 0, ignorecase = 1, extend = 2, multiline = 4
12:28:12manverui think that's how it is at least :)
12:29:29manverupersonally i just need to pass the 256 flag, but the flag is going through the mask of 7
12:32:35manveruanw, i'll see whether i can come up with something patchworthy
12:35:17manverubut apart from /g and /G, i don't know the usual names for the other flags
12:45:26manverustill not sure what mas would be ok to choose
12:45:29manveru*mask
12:53:37manveruhmm
12:54:27manveruso if i have a mask that can represent 11 options, i'd use 1<<11?
12:54:47manveruthat way every bit can be 1 if the option is on
12:55:10manverumust be missing something
13:00:24manveruah, the | combination of all possibilities must be the mask
13:22:51manveru(1<<11) & (2..11).inject(1){|s,n| s | (1<<n) }
13:22:53manveru# 2048
13:22:56manveruthat does the trick
13:34:10dbussinkmanveru: that's hard to comprehend :)
13:34:21dbussinkmanveru: what do you want?
13:34:26dbussinkmanveru: all 1's?
13:36:04dbussinkmanveru: that's equal to 1 << 11 btw...
15:10:28rueHeh
15:12:28rueHighest option * 2 - 1 also.
17:00:09evanmorning
17:01:49slavayo
17:01:56rueMorning
17:02:01rueHow was your first ski jumping?
17:02:38evanfun!
17:02:43evanthe crowd was the fun part
17:02:49evanthe swiss were hilarious.
17:03:12rueNot a terrible competition
17:03:18rueFor that matter
17:03:26evanwe saw the gold medalist (a swiss) being carried by a bunch of swiss on their shoulders to the swiss house
17:03:46evanwhile, on top of the house, some guys in leiterhoisen played those big mountain horns
17:04:06evanyeah, the jumps were good.
17:04:12evanthe winner was just so much better than anyone else
17:05:03slavaevan: I got the raytracer benchmark within 2x of hotspot server the other day
17:05:20evanah! congrats!
17:05:27evanusing your unboxed float array?
17:05:45slavausing simd
17:05:59evando you have specific simd words?
17:06:12evanor can you detect oppertunities to use it from normal math operations
17:06:12slavaso the Java version defines a Vec class with float x, y, z members, and methods for adding, scaling, vectors
17:06:41slavamy version uses the float-4 type instead defining its own; a float-4 looks like a 4-element array but it gets unboxed into registers
17:07:14evanclever
17:07:20slavawe have a library of generic vector math operations; on normal arrays they just go component-wise, on simd types they become machine instructions
17:07:42slavajust like generic arithmetic can do bignums and rationals, but is efficient on floats
17:07:42evangotcha, so the float-4 type is a special simd type
17:07:47evanright
17:07:51evanmakes sense
17:07:52slavayeah, and there's also short-8, int-4, etc
17:08:08evanthats rad.
17:09:05slavaI don't think hotspot does any vectorization in this benchmark, but it wins because of superior register allocation I think
17:09:21slavawhen I looked at the factor compiler output for it, it had a lot of spills and reloads in the inner loops
17:09:31slavax86 :(
17:10:13evan:/
17:10:21evanx86 or x86-64?
17:10:35slavaI haven't tried on 64 yet actually -- it should run faster
17:12:31brixenmorning
17:12:55evanyeah, i notice he says that linux/x86-32 is the only supported platform
17:44:48evanrue|W: yes, hopefully!
17:45:55boyscoutAdded specs for masgn with to_ary rhs not calling #to_a. - 3d9fca3 - Brian Ford
17:45:55boyscoutTag a, b = x failures pending decision on new insn. - 802d091 - Brian Ford
17:45:55boyscoutPurged tags for non-matching specs. - fefa079 - Brian Ford
17:45:55boyscoutRemoved tags for passing specs. - 3bab2da - Brian Ford
17:46:22brixenpretty sure I didn't remove any platform sensitive tags, but we'll see what boyscout says
17:49:37evank
17:50:13brixenrunning rubyspec on 1.9.2 head to see what I get on os x
17:50:47evanhm, you untagged Process#kill
17:50:53evanI wonder if those are still unstable
17:50:57evanif so, perhaps we should just remove them.
17:51:03boyscoutCI: rubinius: 3bab2da successful: 3037 files, 11962 examples, 36256 expectations, 0 failures, 0 errors
17:51:06evanwell, nm!
17:51:32brixenheh
17:51:44brixenI think you fixed them up pretty good
17:51:59brixenwe'll just keep iterating
17:52:03evank
17:52:10brixenspec runs for me locally have been very stable
17:52:16evanoh good.
17:52:18brixenwe do have an issue with Kernel.abort
17:52:23brixenbut that's tagged
17:52:31evank
17:52:46brixenstill 4f/1e for rubyspec on current 1.9 head
17:53:01brixenbut that's amazing compared to what it was 6 months ago
17:53:15evanyeah, seriously.
17:54:12dbussinkevan: i heard some potentially great news, ben & jerry were on the dutch radio yesterday
17:54:21dbussinkevan: and the discussed a certain dutch treat...
17:54:26evanOH
17:54:29evanMY
17:54:31evanLEBRON
17:54:32brixendbussink: seriously?!
17:54:34evanPLEAOSE SAY IT
17:54:34brixenheh
17:54:36evanPLEEEEEEASE
17:54:42dbussinkstroopwafel ice cream!
17:54:48evanYESEEEEEEEEEEEESSSSSSSSSSSSSSSS!!!
17:54:50brixenSHUT UP!
17:54:52brixenhaha
17:55:23brixendbussink: that should lighten you load on US visits, eh :)
17:55:29brixen+r
17:55:37dbussinkthe biggest problem they saw was keeping the wafel parts crisp but they had some idea already
17:55:50brixenput them in little wrappers
17:55:52dbussinkbrixen: not if they only sell it here ;)
17:56:03brixenthat would make eating it much more involved
17:56:21brixenburn some extra calories and combat the weigt problem in the US :)
17:56:40brixendbussink: wait what what what?
17:56:48brixendbussink: are they introducing it in the US or there?
17:57:00dbussinkthey didn't talk about that
17:57:10evanOH NO
17:57:10brixenoh pshow
17:57:18evangets on the phone to ben&jerry
17:57:23brixenhahah
17:57:29brixenI was just typing that
17:57:32brixendamn
17:58:10evanbrixen: does 1.9 still have #to_splat?
17:58:45dbussinkfriend of mine is doing some work for shopify in ottawa, also loaded some stroopwafels into his suitcase :)
17:59:09brixenevan: hm, looking
18:00:28evanhm, so with
18:00:30evanx, y = a
18:00:41evaniff a is already an Array is it unpacked
18:00:49evanotherwise, x = a, y = nil
18:01:02brixenyeah
18:01:21evanand x, y = *a
18:01:33evancalls #to_a/#to_ary iff a isn't an Array
18:02:09evanand it raises a TypeError if #to_a/#to_ary don't return an Array
18:02:15evanso we're missing a few things in the specs
18:02:29evani'm finishing getting the openssl extension in
18:02:36evanthen i'll take a look at that.
18:02:48brixenok
18:02:58evanshould be easy.
18:10:35brixenevan: best I can see from changelog, matz changed back to using to_a instead of to_splat in dec 2007
18:10:49evanyep
18:10:49evanok
18:10:52brixentesting with a, b = *x on 1.9 head seems to confirm this
18:10:57evanrue|W: nope
18:11:09evanbrixen: i'll write a few more specs and get it sorted.
18:11:14brixenevan: ok, cool
18:11:27brixengoing to retrieve my watch (hopefully), bbiab...
18:11:36evank
18:13:51evanthe division is certainly confusing
18:19:46evancheck the archive, i think it has been.
18:21:57evanin which case?
18:22:41evanah
18:22:46evanperhaps thats a clarification of the 1.8 behavior then.
18:30:21evanok
18:58:20manverudbussink: yeah... found that out too, but that was the way i was coming up with the solution
18:59:35manveru1.9 BasicObject is so nice to find out what methods are called exactly :)
19:08:02manverui'm happily hacking the syntax right now
19:08:58manverunever seen the /o option before...
19:13:51manveruand the specs for // and //o seem identical
19:14:40rue/o is once-only
19:15:38manveruit's the same flag as DONT_CAPTURE_GROUP
19:16:21manveruso i'm pondering what to do with it, as it seems to have no specs and no difference in behaviour
19:16:58rue...It is?
19:17:21rueI never bothered with it, but there was some definite difference
19:17:24manveruwell, oniguruma obviously has different flags than original ruby
19:17:53rueI assume it compiles the regexp once, which would affect interpolation and such
19:19:28manveruyeah...
19:19:41manveruthe flag is 128, the mask is 7...
19:19:57manveruso it's ignored when passed to Regexp.new
19:20:13manverumakes sense in that case, i guess
19:20:40evan /o means expand it the first time only
19:20:41evanlike
19:21:00evandef foo(a); /thing #{a}/o.match("hello"); end
19:21:09evanonly one Regexp object is created
19:21:35manveru?
19:21:45evan /o isn't a flag that effects the internal structure of the Regexp object itself
19:21:55evanjust one that governs when it's created
19:22:07evanmanveru: make sense?
19:22:26manveruwell... it's created when it's encountered... same as normal?
19:22:35evanno
19:22:44evanwell, it's created when it's encourtered
19:22:46evanbut then memoized
19:22:54evanso future calls to foo use the same regexp as the first time
19:23:08evanie, only the first a is used
19:23:21evanthis is common when you're using a constant in a regexp
19:23:22evanlike
19:23:34evan /#{SOME_PREFIX}*/o.match(str)
19:23:40manveruoh...
19:23:47evanyou don't need to be creating a new Regexp everytime you hit that line
19:24:03evanso you can use /o to say "memoize the resulting regexp the first time"
19:24:10manveruok, makes sense then
19:24:21manverui've never seen or heard that option
19:24:30rueIt is "somewhat" rarely used
19:24:30evanit's rarely used.
19:24:36evanbut nice to have.
19:24:47manveruwe need a spec for that
19:24:54evanwe have one
19:25:16evanoh oh
19:25:18evanyou're right
19:25:29evansomeone used /o in a context that it's useless
19:25:30evanha.
19:25:45evan in "/x/o"
19:25:50manveruyeah
19:25:51evanthe /o is ignored
19:25:57evanbecause the regexp is already constant
19:26:07manveruas i said, the // spec equals the //o spec
19:26:17evanyep
19:26:30evanoh actually
19:26:32evanwe do have as pec for this
19:26:35evana spec
19:26:39evanit's in dregx_spec
19:26:46evanbecause /x #{a}/ is a dregx
19:26:50evannot a regx
19:27:50manveruall i can see is that it creates one, but doesn't check that it only creates it once
19:28:13manverumaybe i just don't know how to read those specs
19:28:20evanwhat specs are you looking at?
19:28:34manveruspec/compiler/dregx_spec.rb
19:28:44evanline 77
19:28:54evansee the memoize helper?
19:29:08manveruyeah
19:29:15evanthats the difference
19:29:27manverualright
19:29:29evanthe memoize helper is the specs emits the code to save the top of the stack into a literal
19:29:57manveruso can i change the flag value?
19:30:04evan?
19:30:08evani need more context.
19:30:12manveruoh
19:30:29manveruwell, oniguruma uses the flags up to 1<<11
19:30:46evanok....
19:30:46evanso?
19:30:50evanis there a spec failure?
19:30:57manveruso this conflicts with an oniguruma flag that i'd like to expose
19:31:11evanwhat does?
19:31:21manveruRE_OPTION_ONCE
19:31:29evanconflicts how?
19:31:31evanwhere?
19:31:40evan /o isn't IN the Regexp at all.
19:31:49manveruit conflicts with ONIG_OPTION_DONT_CAPTURE_GROUP
19:31:56evani don't understand
19:32:00evanhow can it?
19:32:08manveruit has the same value
19:32:11evanwhere?
19:32:14evanthe same value where?
19:32:20manveruin C, i guess
19:32:25evanno
19:32:26evani mean
19:32:30evanwhere do you see it having the same value?
19:32:35evanRegexp#options ?
19:32:49manveru#define RE_OPTION_ONCE 0x80
19:33:10evanRubinius doesn't have a RE_OPTION_ONCE
19:33:14evanso i don't know what that means
19:33:21manveruit doesn't?
19:33:25evancourse not.
19:33:34evanthats what i've been saying
19:33:38manveruit's in lib/ext/melbourne/grammar.cpp
19:33:42evan /o is handled entirely in bytecode
19:34:27manverurue told me before i could change the grammar there to add the /g and /G flags
19:34:28evanah, i guess the parser uses that to figure out if it should use dregx or regx
19:34:36manveruexactly
19:34:48evanyou don't need to change anything
19:34:52evanit would be a pure addition
19:34:59manveruso it's used internally only, but goes into the same options value
19:35:17evandon't use the exact value of ONIG_OPTION_DONT_CAPTURE_GROUP in here
19:35:21evanuse a different value
19:35:25manveruok
19:35:26evanand translate it back later.
19:35:43manveruit's never seen through .options anyway
19:35:53evanright
19:35:55evani wouldn't expect so
19:36:19manverusorry... those are my first attempts at writing some c
19:36:31manveruand that for rbx... i must be insane
19:36:46evanheh
19:36:55evanwhat does ONIG_OPTION_DONT_CAPTURE_GROUP do?
19:37:14manveruit equals the /G flag
19:37:43evani don't know what /G does either.
19:37:45manveruerr
19:37:46evantell me.
19:37:48manverusorry, /g
19:37:56evani don't know what /g does.
19:38:00manveruhttp://www.geocities.jp/kosako3/oniguruma/doc/RE.txt
19:38:08manverusee at point 10
19:39:24manveruit makes it possible to use named groups inside (?:) or avoid capture groups in ()
19:39:36brixenevan: have you made any changes to language/variables_spec.rb?
19:39:43evanno
19:39:45brixenk
19:39:58brixenI'll push this spec then, a, b = x calls #to_ary on x
19:40:12brixenit does not call #to_a if #to_ary is undefined
19:40:13evank
19:40:21evanbrixen: did you get your watch?
19:40:28brixenyep! amazing
19:40:32brixensomeone turned it in
19:40:35evanoh good.
19:40:37manveruevan: should i change the grammar.y or grammar.cpp ?
19:40:41brixenyeah, very nice of them
19:40:41evan.y
19:40:45evannever change grammar.cpp
19:40:47evanit's autogenerated.
19:40:55manveruoh, ok
19:41:22manverugrammar.y still has copyright by matz :)
19:41:30brixenmanveru: but you include the changes to grammar.cpp in your patch, we check that into the repo
19:41:32evanas it should, he wrote it!
19:42:45manverubut it's the only one
19:42:55evanmanveru: \g is for recursive regexps, yes?
19:43:20manveruevan: yes
19:43:27evanmanveru: whats the only one?
19:43:39manveruthe only copyright
19:44:08evanoh well
19:47:04manveruok... let's try that
19:47:04boyscoutSpec for a, b = x calling #to_ary on x. - 1249b2a - Brian Ford
19:47:22brixenevan: that spec is already in the variables_spec.rb file, but I'm not rewriting the crazy spec it's in atm
19:47:34evank
19:47:37brixenso I just added it to the block of specs I pushed earlier
19:47:39evanthats a good policy.
19:48:27brixenfor reference, the crazy spec is lines 441-490
19:51:56evani'm getting a spec failure in a rexml spec...
19:52:11boyscoutCI: rubinius: 1249b2a successful: 3037 files, 11963 examples, 36259 expectations, 0 failures, 0 errors
19:52:19brixenhm, I may have seen a random one there recently actually
19:52:23brixenwhat's it look like?
19:52:31evanthis is pretty regular
19:52:36evanit's related to something being frozen
19:52:42evanREXML::Element#cdatas freezes the returned array FAILED
19:52:48brixenweird
19:53:02brixen64bit issue?
19:53:19evanhm.
19:53:38brixeni'm booting my ubuntu 64bit vbox
19:53:46manveruuh, oh
19:53:54manveruseems like i caused a segv
19:54:03evanbrixen: hm
19:54:07brixenmanveru: you're fired :)
19:54:20evanok, i get it if i run 'ci net/telnet rexml'
19:54:59evanhrmph.
19:55:06manveruwhat does 1L mean in c?
19:55:08evanit disappears in some cases.
19:55:14evanmanveru: 1 as a long
19:55:23manveruand how long is a long?
19:55:38evanlong enough.
19:55:51manveruok...
19:55:51evan32bits on 32bit platform, 64bits on 64bit platform
19:56:08evanyou rarely write 1L
19:56:15evanusually just long i = 1;
19:56:20evanor whatever.
19:57:01manveru#define RE_OPTION_IGNORECASE (1L)
19:57:09manveruthat's the starting point
19:57:19manveruso i assume the <<1 use the same type
19:57:22evandon't worry about it.
19:57:29manveruok
19:57:31brixenevan: btw, we need to push an rc3 tag but I'm not sure which commit you want to tag
19:57:43evanoh did I dont?
19:57:47evanoops.
19:57:51brixenheh
19:57:56brixensomeone noticed yesterday
19:58:21evanok, pushed.
19:58:28evanthe tag is at the right place
19:58:34evani just forgot to use 'git push --tags'
19:58:52manverualright... all of the URI specs fail
19:59:12manverupretty much every spec that uses regexp
19:59:25manverulovely
19:59:31evanyou made it run
19:59:35evanthats a step in the right direction
19:59:39evanwhats your diff look like?
19:59:52rueAlso, clear out all .rbc
20:00:38manveruhttp://pastr.it/16650
20:01:08evanug.
20:01:08manverucleaned... rebuilding...
20:01:25evanyou put a change in between white space change lines
20:01:28evanso hard to read
20:01:54manverua change?
20:02:11evanand why did you change all the names of those options?
20:02:44manveruthe ones used elsewhere in rubinius are the same
20:02:55manveruand the other ones now relate 1:1 to the oniguruma options
20:03:20evani don't care about that
20:03:21evanat all.
20:03:30evanthe parser is not tied to onigurama
20:03:41evanand if you could change the names of those #defines and not change anything else
20:03:44evanthey should be deletede
20:03:49evannot just changed.
20:04:21manveruok
20:04:30manveruthey aren't used in the grammar
20:04:34evandelete them.
20:04:34manveruor anywhere
20:04:53evangrammar is purposely entirely isolated
20:05:15evanthe regexp options are not entirely isolated though
20:05:23evanbecause just the numeric value is passed out
20:05:32manveruyeah
20:05:36evanso if you reorder that list
20:05:39evanyou'll break stuff
20:05:52manverubut i'll use only those that the grammar cares about with the values oniguruma expects
20:06:10manveruis that better?
20:06:19evani don't understand what you mean
20:06:29manveruone second
20:06:39evando not change the values of #defines that are used in regexp options in grammar.y
20:07:01evanbecause those values are or'd together and the kernel expects certain bits to mean certain things
20:07:15manveruyeah
20:07:30manverubut kernel masks everything with 7
20:07:53manveruso right now the higher flags just get lost
20:07:53evanthats fine
20:07:57evandon't change the low bits then.
20:08:06manveruyeah
20:08:07evanadding new set bits is ok
20:08:11manveruthe low bits are identical
20:08:16evanbut don't change the ones that are expected
20:26:08manverusweet, lots and lots of dots
20:26:19manveru3037 files, 11916 examples, 36160 expectations, 0 failures, 0 errors
20:28:01manverunow these options just need to be allowed in the regexp initialize... that's the tricky part
20:28:30manverudoing that tomorrow... it's almost 6am here
20:28:39manveruerr, today, but after sleeping
20:28:59manveruhttp://pastr.it/16651
20:29:24evan:D
20:29:25evannite
20:29:51manveruthanks for all the help
20:29:55evanno prob.
20:31:49evanyay
20:31:55evansolved the random non-frozen problem
20:32:05evanseems that when i moved those flags to the header
20:32:13evani wasn't copying them when i moved the object around!
20:32:14evanoops.
20:33:29dbussinkevan: ah, i've seen those failures too :)
20:34:18brixenheh oops
20:34:48evanat least it was something easy.
20:35:15evani think i need to redo object copying a little bit today
20:35:22evanthere are a bunch of overlapping methods
20:38:40evanyeah
20:38:49evanmoving an object from one address to another
20:38:54evanoh move.
20:38:58evanthats what i should call these methods.
20:39:27evanas opposed to creating a copy
20:39:39evanug.
20:39:42evanEBADF
20:39:43evan:(
20:43:43brixenI think the IO specs that call IO.new(2) have to be changed
20:44:06brixenin fact, I don't know if we can spec IO.new
20:45:02brixenevan: are you following [ruby-core:28281] ?
20:45:28evanchecking now.
20:46:55evani see it
20:46:55evanyes
20:47:00evani think that IO.new can't be spec'd then.
20:47:11brixenseems that way
20:47:52brixenat the same time, that seems sooo crazy
20:48:03brixen"here's some methods, they do things"
20:51:27brixengrabbing food, bbiab..
20:58:52dbussinkbrixen: hmm, dangerous remark in the announcement that 1.9.2-trunk passes rubyspec that reminds of discussions that already took place on implementation details
20:59:50brixendbussink: yeah, I was working on a response
21:11:39boyscoutBegin pulling in the OpenSSL CAPI extension - fe79104 - Evan Phoenix
21:11:39boyscoutFix building the OpenSSL extension - efc231b - Evan Phoenix
21:11:39boyscoutForce some regexp's to be in Ascii - 9d35459 - Evan Phoenix
21:11:39boyscoutAdd a reminder to update @config_version - eb135f8 - Evan Phoenix
21:11:39boyscoutFix copying Frozen and Tainted flags - 1ec70fc - Evan Phoenix
21:11:39boyscoutMerge branch 'master' of git@github.com:evanphx/rubinius - 6be9d2a - Evan Phoenix
21:18:08dbussinkevan: are you also testing with openssl 1.0 btw?
21:18:19dbussinkevan: seen some activity on that recently in ruby-core
21:18:48evankendall :: git/rbx ยป openssl version
21:18:49evanOpenSSL 0.9.8k 25 Mar 2009
21:18:53evanok, lunch time! bbiab.
21:21:31boyscoutCI: rubinius: 6be9d2a successful: 3037 files, 11963 examples, 36259 expectations, 0 failures, 0 errors
21:44:22Defileropenssl 1.0 is a tricky upgrade
21:44:39DefilerThey suddenly made the data structure everybody was using private
21:44:56dbussinkwell, hence my question
21:45:22dbussinkDefiler: you are everywhere! ;)
21:46:15DefilerI AM THE NETWORK
21:46:16DefilerI mean yo
21:49:49Defilerhttp://25.media.tumblr.com/tumblr_kx7ugsKVbK1qz4crmo1_500.jpg
21:49:57Defilerya know what I'm saying
21:51:09BrianRice-workhah!
21:53:00brixenheh
21:55:00evanDefiler: openssl is the worst API known to man
21:55:08evanso i'm surprised it doesn't break every version.
21:55:46DefilerIt's like sitting down in a car that has four differently-sized bags of confetti instead of a steering wheel and pedals
21:55:50evanat lunch today i was thinking that someone should write an sanessl lib
21:55:57evanthat is a wrapper for OpenSSL
21:56:03evanthat has a normal, sane C API
21:56:05Defilerword
21:57:04testerjoehm, even JRuby has jruby-openssl - why is there no generic crypto API for Ruby? - just curios
21:57:28Defilerruby isn't big on generic interfaces that don't arise naturally out of competition
21:57:31DefilerIs my take on it
21:58:17Defilerit would be cool to have a nice high-level crypto middleware though
21:58:27testerjoeI'm just missing something like Java JCE which works on MRI and JRuby and...
21:58:35evanOpenSSL is actually pretty generic
21:58:42DefilerYeah, ruby just uses openssl for that
21:58:50evanit hides a number of weird things about openssl, the C library.
21:58:51Defilersince it supports all the common crypto interchanges
21:59:05evanenough that jruby can present the same API and use the java crypto libs
21:59:17evantesterjoe: use OpenSSL for that.
21:59:19evanit's generic.
21:59:24evanjust with a non-generic name.
21:59:39evanlike buying Vodka brand Vodka.
21:59:52testerjoeyeah, maybe just I'm irritated by sseing OpenSSL in every Ruby impl.
22:00:00testerjoethe generic Digest interface I like :-)
22:00:02evanwhy irrated?
22:00:12DefilerJust pretend it is called ruby_crypto
22:00:19testerjoewill do :-)
22:00:21Defilerand that it is part of the API implementations are expectd to conform to
22:00:23evanrequire 'openssl'
22:00:32evanRubyCrypto = OpenSSL
22:00:33evandone!
22:00:39testerjoehe
22:01:15DefilerThough knowing ruby it would probably be called H4x0r
22:01:59evanheh
22:03:08testerjoesomething completly different: Rubinius 1.9 support is... one_nine branch?
22:03:17evanyeah
22:03:27evanI need to merge it though
22:03:31evanbut generally, yes.
22:03:33testerjoehow far is 1.9? I'm mainly need encoding stuff
22:03:46evanbarely started.
22:03:52testerjoeah, ok :-/
22:16:38brixenheh configurator :)
22:16:53brixenopenssl build is noisy
22:17:18evani know.
22:17:23evanbut at least it builds!
22:17:43brixenyes!
22:18:28brixenshould we be checking in extconf.h
22:18:37evanno
22:18:39evanare we?
22:18:41brixenyeah
22:18:42evanthats a bug on my part if so.
22:18:45brixenk
22:18:56brixenwant me to remove it or you?
22:19:21evango ahead
22:19:33brixenk
22:20:10evanin this expression
22:20:14evana, b = c.d
22:20:45evanthe expression on the rhs of the = would be refered to as:
22:20:59evanmultiple_return_value?
22:21:09evani'm trying to figure out what to call this instruction
22:21:34brixenhmm
22:21:43Defilermultiple_return_source
22:21:54brixenmasgn_rhs
22:22:11evanmulti_value
22:22:11evan?
22:22:12brixenevan: you don't mean only c.d but any masgn rhs right?
22:22:20evanbrixen: yes.
22:22:22brixenmulti_value is good
22:22:32brixenmasgn_value ?
22:22:39evanok, so, cast_multi_value or make_multi_value?
22:22:53evani prefer multi_value to masgn anything
22:22:55brixenit's more a cast than a make I think
22:23:03evanso cast_multi_value
22:23:04brixensince it may not change the value
22:23:05Defilermasgn would be a bad name for it
22:23:07evanright
22:23:08brixensounds good to me
22:23:09evank
22:23:15Defilerbecause this is quite specifically about a thing that happens prior to masgn
22:23:23brixenDefiler: good point
22:23:24Defilerit would be like, actively misleading to put masgn in the name
22:23:47brixenDefiler: it's the value to be masgned, but I get your point
22:35:33boyscoutRemoved extconf.h from openssl. - 88edf9a - Brian Ford
22:44:18dbussink"No rule to make target `extconf.h', needed by `openssl_missing.o'"
22:44:25brixenarg, I did a build, clean build, and distclean build successfully but now it's complaining about not finding extconf.h ?
22:44:41evandon't worry
22:44:42brixendbussink: yeah, just got that too after switching back to my topic branch
22:44:47evanthats just a make screwup
22:44:52boyscoutCI: Commit 88edf9a failed. http://github.com/evanphx/rubinius/commit/88edf9a7eaf5a34c7f9e20046e7c9e1a90ba75a8
22:44:56evanack
22:45:02evangit removed the generated extconf.h
22:45:11evanand extconf.rb isn't being rerun
22:45:14evanbecause Makefile is already there
22:45:34brixenhmm
22:45:39evaneasy fix is to change extensions.rake
22:45:47evanto run extconf.rb is Makefile or extconf.h are missing
22:45:54evaner.
22:45:57evanif Makefile or ...
22:46:32brixenk
22:50:19agibsorry if this is an out of place question, but I don't know where to turn... I can't for the life of me figure out why I'm getting these weird thread exceptions: https://gist.github.com/5f3ef687e2d4c3516d6f#file_workling_deadlock.output -- threaded_poller.rb fails silently without the puts statements on threaded_poller.rb:29... and fails loudly with it..
22:50:31agibanyone know where I can dig?
22:51:27evanagib: this is running under rubinius?
22:51:30rueOn Rubinius?
22:51:34agibREE
22:51:41evanwhy would we know?
22:51:48evansorry, no idea.
22:52:02rueCould dig a shallow grave, dump REE in it
22:52:07agibhaha
22:52:10agibkk no worries -- just thought I'd try...
22:52:22ruePretty sure there is a #ree or #passenger?
22:52:58agibkk I'll check -- those are usually really quiet
22:54:48boyscoutFix building ext if extconf.h is missing but Makefile exists. - fd49c2d - Brian Ford
22:57:55brixenavoiding File.exists? and File.directory? etc in rakefiles was one reason I attempted to rewrite the ext building stuff in the first place
22:58:18brixenalas, as good as rake is, it is not a build tool
22:58:23brixennot sure what it is actually
22:59:06rueRake has file and directory tasks?
22:59:11rueOr rules
22:59:22brixenyes, indeed it does
23:00:20rueUsing the methods seems an instance of doing it wrong...Rake is, perhaps surprisingly, intended specifically as a Make replacement after all
23:01:16brixenof course it's doing it wrong, until that's the only thing you can do
23:01:28brixenwhich was my initial point after all
23:01:55boyscoutCI: rubinius: fd49c2d successful: 3037 files, 11963 examples, 36259 expectations, 0 failures, 0 errors
23:04:15rueMy point, me being entirely unaware of the finer details of the genesis of your point, is that someone using those methods does not mean Rake is not a build tool
23:08:49evanit's got major issues are a large scale build tool
23:08:55evanthat we've been dealing with for years.
23:10:52rueI think it is fair to say that Rake has major issues in applications other than a straightforward build tool
23:11:29rueThan as*
23:11:32Defilerrake is the devil :(
23:11:44DefilerI am thinking of switching to what Unicorn does for my own stuff
23:12:01evanwhat does Unicorn do?
23:12:02Defiler(run test/spec suite via gnu make instead of rake, and never load rubygems)
23:12:17Defilerso they can just do make -j4 and run their tests on 4 cores
23:13:20evan*eyeroll*
23:13:36rueThe problem is not so much that Rake cannot hack building, it is that it is being used for purposes other than that :)
23:13:46Defilerright
23:13:51brixenit cannot hack building period
23:13:56Defilerit works great for 'turn .foo files into .zazz files'
23:14:16evanrake's dependencies resolution is pretty busted
23:14:21evanthats the source of our problem.
23:14:32Defilerit really doesn't have anything that you could call a 'dependency resolver'
23:14:46evanthats why you can'd do
23:14:47DefilerIt just follows things as it runs into them and tries to just run them once
23:14:48evanrake clean build
23:14:56evanrake loses it's shit
23:16:25mahargmake is the worst build tool except for all the others
23:24:33brixenevan: if I have 2 threads (according to gdb), should they both be in ___spin_lock () at the same time?
23:24:43evanmaybe?
23:24:50evanyou can get the backtraces of both them
23:24:51brixenhmm
23:24:53evanusing info thread
23:24:53brixenyeah
23:24:56brixensec
23:25:33brixenhttp://gist.github.com/314012
23:26:04evanhm
23:26:07evandoesn't seem right
23:26:14brixenyeah
23:46:25Defilereverything was 0x0 once, and to 0x0 all shall return
23:47:04brixenunless your name is hey seuss
23:47:17brixenor so they tell me