diegovio1 has joined #jruby
diegoviola has quit [Ping timeout: 265 seconds]
diegovio1 is now known as diegoviola
tlarevo has quit [Remote host closed the connection]
tlarevo has joined #jruby
josh-k_ has joined #jruby
baroquebobcat has quit [Quit: baroquebobcat]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:6505ecf by Charles Oliver Nutter): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39894371)
travis-ci has left #jruby [#jruby]
josh-k has quit [Ping timeout: 245 seconds]
_whitelogger has joined #jruby
mje113__ has quit [Quit: Connection closed for inactivity]
pietr0 has quit [Quit: pietr0]
tlarevo has quit [Remote host closed the connection]
tlarevo has joined #jruby
aramisbear has quit [Quit: Linkinus - http://linkinus.com]
BobFunk has quit [Ping timeout: 255 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to jruby-1_7: http://git.io/UsN1ZA
<JRubyGithub> jruby/jruby-1_7 bb85d42 Charles Oliver Nutter: Character#isAlphabetic is from Java 7, so duplicate logic here.
JRubyGithub has left #jruby [#jruby]
robbyoconnor has quit [Ping timeout: 256 seconds]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:6ea306f by Charles Oliver Nutter): The build has errored. (http://travis-ci.org/jruby/jruby/builds/39891311)
travis-ci has left #jruby [#jruby]
robbyoconnor has joined #jruby
robbyoconnor has quit [Client Quit]
marr has quit [Read error: Connection reset by peer]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:6ea306f by Charles Oliver Nutter): The build has errored. (http://travis-ci.org/jruby/jruby/builds/39891311)
travis-ci has left #jruby [#jruby]
BobFunk has joined #jruby
fivebats has quit [Quit: quit]
toshetm has quit [Ping timeout: 265 seconds]
robbyoconnor has joined #jruby
robbyoconnor has quit [Remote host closed the connection]
tlarevo has quit []
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:bb85d42 by Charles Oliver Nutter): The build was fixed. (http://travis-ci.org/jruby/jruby/builds/39902562)
travis-ci has left #jruby [#jruby]
<headius> zing, my day wasn't a waste
tlarevo has joined #jruby
nirvdrum has joined #jruby
tlarevo has quit [Remote host closed the connection]
tlarevo has joined #jruby
statonjr has quit [Quit: statonjr]
zorak8 has quit [Ping timeout: 240 seconds]
tenderlove has quit [Quit: Leaving...]
nirvdrum has quit [Ping timeout: 265 seconds]
triple_b has joined #jruby
triple_b has quit [Read error: Connection reset by peer]
triple_b has joined #jruby
vyorkin has quit [Ping timeout: 265 seconds]
BobFunk has quit [Ping timeout: 272 seconds]
phrinx has quit [Remote host closed the connection]
josh-k_ has quit [Remote host closed the connection]
diegovio1 has joined #jruby
diegoviola has quit [Ping timeout: 255 seconds]
tlarevo_ has joined #jruby
diegovio1 is now known as diegoviola
tlarevo has quit [Ping timeout: 256 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/-sdgfA
<JRubyGithub> jruby/master 33c89b4 Charles Oliver Nutter: Handle ELOOP in File.open call chain.
JRubyGithub has left #jruby [#jruby]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/G00t0w
<JRubyGithub> jruby/master de1fd6f Charles Oliver Nutter: Le sigh...remove rogue printStackTrace.
JRubyGithub has left #jruby [#jruby]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:33c89b4 by Charles Oliver Nutter): The build failed. (http://travis-ci.org/jruby/jruby/builds/39907710)
travis-ci has left #jruby [#jruby]
BobFunk has joined #jruby
Areessell_ has quit [Quit: (null)]
aewffwea has joined #jruby
kotk has quit [Read error: Connection reset by peer]
kotk has joined #jruby
josh-k_ has joined #jruby
BobFunk_ has joined #jruby
BobFunk has quit [Ping timeout: 264 seconds]
tlarevo_ has quit [Remote host closed the connection]
tlarevo has joined #jruby
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:de1fd6f by Charles Oliver Nutter): The build failed. (http://travis-ci.org/jruby/jruby/builds/39908023)
travis-ci has left #jruby [#jruby]
towski has joined #jruby
fivebats has joined #jruby
tlarevo has quit [Remote host closed the connection]
tlarevo has joined #jruby
nirvdrum has joined #jruby
nirvdrum has quit [Client Quit]
BobFunk_ has quit [Ping timeout: 256 seconds]
tlarevo has quit [Ping timeout: 256 seconds]
BobFunk has joined #jruby
BobFunk has quit [Ping timeout: 256 seconds]
x1337807x has joined #jruby
triple_b has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
triple_b has joined #jruby
josh-k has joined #jruby
triple_b has quit [Client Quit]
josh-k_ has quit [Ping timeout: 244 seconds]
BobFunk has joined #jruby
ludyte has joined #jruby
josh-k has quit [Read error: Connection reset by peer]
josh-k_ has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
x1337807x has joined #jruby
_dabradley has quit [Ping timeout: 272 seconds]
_dabradley has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
deobalds has joined #jruby
josh-k_ has quit [Remote host closed the connection]
tlarevo has joined #jruby
josh-k has joined #jruby
tlarevo has quit [Remote host closed the connection]
tlarevo has joined #jruby
subbu has joined #jruby
josh-k has quit [Ping timeout: 256 seconds]
DomKM has quit [Quit: Connection closed for inactivity]
fivebats has quit [Quit: quit]
havenwood has joined #jruby
josh-k has joined #jruby
e_dub has quit [Read error: Connection reset by peer]
e_dub has joined #jruby
BobFunk has quit [Ping timeout: 256 seconds]
x1337807x has joined #jruby
subbu has quit [*.net *.split]
havenwood has quit [*.net *.split]
yfeldblum has quit [Ping timeout: 272 seconds]
subbu has joined #jruby
yfeldblum has joined #jruby
BobFunk has joined #jruby
e_dub has quit [Read error: Connection reset by peer]
e_dub has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
BobFunk has quit [Read error: Connection reset by peer]
BobFunk has joined #jruby
noop has joined #jruby
subbu has quit [Ping timeout: 245 seconds]
BobFunk has quit [Ping timeout: 260 seconds]
vyorkin has joined #jruby
vyorkin has quit [Ping timeout: 255 seconds]
tlarevo_ has joined #jruby
tlarevo has quit [Ping timeout: 245 seconds]
Usuario has joined #jruby
Usuario is now known as obs
diegoviola has quit [Quit: WeeChat 1.0.1]
rsim has joined #jruby
josh-k_ has joined #jruby
josh-k has quit [Ping timeout: 264 seconds]
yfeldblum has quit [Ping timeout: 265 seconds]
deobalds has quit [Quit: Computer has gone to sleep.]
zorak8 has joined #jruby
<avsej> how can I catch ruby exception in java code?
josh-k_ has quit [Remote host closed the connection]
josh-k has joined #jruby
josh-k has quit [Ping timeout: 244 seconds]
ludyte has quit [Quit: ludyte]
robbyoconnor has joined #jruby
mister_solo has joined #jruby
pchalupa has joined #jruby
josh-k has joined #jruby
Antiarc has quit [Ping timeout: 265 seconds]
Antiarc has joined #jruby
zorak8 has quit [Ping timeout: 258 seconds]
mister_solo has quit [Ping timeout: 264 seconds]
ephemerian has joined #jruby
JohnBat26 has joined #jruby
noop has joined #jruby
noop has quit [Changing host]
pchalupa has quit [Changing host]
pchalupa has joined #jruby
snovity has joined #jruby
JohnBat26 has quit [Quit: KVIrc 4.3.1 Aria http://www.kvirc.net/]
tlarevo_ has quit [Read error: Connection reset by peer]
tlarevo has joined #jruby
mister_solo has joined #jruby
jeremyevans has quit [Ping timeout: 245 seconds]
marr has joined #jruby
josh-k_ has joined #jruby
josh-k has quit [Ping timeout: 245 seconds]
drbobbeaty has joined #jruby
deobalds has joined #jruby
jeremyevans has joined #jruby
Hobogrammer has quit [Ping timeout: 250 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] mkristian force-pushed redefine-uri-classloader-meaning from 1bc0673 to 8341e05: http://git.io/cwP5fQ
<JRubyGithub> jruby/redefine-uri-classloader-meaning 0a34091 Christian Meier: redefine uri:classloader: meaning to be the parent classloader of runtime.getJRubyClassLoader...
<JRubyGithub> jruby/redefine-uri-classloader-meaning f4c9d41 Christian Meier: added osgi test without inlining the dependencies
<JRubyGithub> jruby/redefine-uri-classloader-meaning 8341e05 Christian Meier: add testcase for the case where jruby.home is inside a jar but not on the context-classloader
JRubyGithub has left #jruby [#jruby]
calavera has joined #jruby
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
vyorkin has joined #jruby
vtunka has joined #jruby
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
calavera has joined #jruby
skade has joined #jruby
_whitelogger has quit [Ping timeout: 256 seconds]
_whitelogger has joined #jruby
zorak8 has joined #jruby
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
drbobbeaty has joined #jruby
shellac has joined #jruby
tcrawley-away is now known as tcrawley
mister_solo has quit [Ping timeout: 256 seconds]
vtunka has quit [Quit: Leaving]
tlarevo has quit [Remote host closed the connection]
tcrawley is now known as tcrawley-away
zorak8 has quit [Ping timeout: 244 seconds]
tlarevo has joined #jruby
triple_b has joined #jruby
triple_b has quit [Ping timeout: 264 seconds]
statonjr has joined #jruby
zorak8 has joined #jruby
vyorkin has quit [Ping timeout: 265 seconds]
mister_solo has joined #jruby
mike_ has joined #jruby
mike_ is now known as Guest3468
lance|afk is now known as lanceball
_whitelogger has joined #jruby
josh-k has quit [Ping timeout: 244 seconds]
tlarevo_ has joined #jruby
tlarevo_ has quit [Read error: Connection reset by peer]
tlarevo_ has joined #jruby
vyorkin has joined #jruby
tlarevo has quit [Ping timeout: 244 seconds]
lanceball is now known as lance|afk
tcrawley is now known as tcrawley-away
johnsonch_afk is now known as johnsonch
statonjr has quit [Quit: statonjr]
vyorkin has quit [Ping timeout: 256 seconds]
nirvdrum has joined #jruby
statonjr has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: https://github.com/jruby/jruby/commit/dc55205f407aafa307552fd4f32108ca8e0f8d95
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master dc55205 Charles Oliver Nutter: Remove old AST decorators and related specs....
tlarevo has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to update_stdlib: http://git.io/WBL6ag
<JRubyGithub> jruby/update_stdlib be98526 Chris Heald: Implement Process#groups for non-Windows machines
<JRubyGithub> jruby/update_stdlib 7029b00 Charles Oliver Nutter: Merge pull request #2082 from cheald/process_groups...
JRubyGithub has left #jruby [#jruby]
tlarevo_ has quit [Ping timeout: 244 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to update_stdlib: http://git.io/pTNaDQ
<JRubyGithub> jruby/update_stdlib 077c4ff Chris Heald: Add Etc::nprocessors
<JRubyGithub> jruby/update_stdlib b8f531d Charles Oliver Nutter: Merge pull request #2083 from cheald/etc_nprocessors...
JRubyGithub has left #jruby [#jruby]
<nirvdrum> headius: So, good news. I'm not sure what fixed it, but my stack overflow issue is gone.
* headius braces
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to update_stdlib: http://git.io/QCCLxg
<JRubyGithub> jruby/update_stdlib ab83937 Chris Heald: Add Float#next_float and Float#prev_float
<JRubyGithub> jruby/update_stdlib 5ec4239 Charles Oliver Nutter: Merge pull request #2086 from cheald/next_prev_float...
JRubyGithub has left #jruby [#jruby]
<nirvdrum> The bad news is when I run my full rake suite, the JVM crashes, regularly.
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to update_stdlib: http://git.io/_SkMMw
<JRubyGithub> jruby/update_stdlib e902978 Chris Heald: Typecheck arg for op_mod19...
<JRubyGithub> jruby/update_stdlib c91c0cd Charles Oliver Nutter: Merge pull request #2087 from cheald/fix_opmod19...
JRubyGithub has left #jruby [#jruby]
<nirvdrum> I'll file an issue.
<headius> woohoo!
<headius> now you're playing with power
<headius> hahahah
<headius> extractToMethodToAvoidC2Crash
<headius> APPARENTLY NOT
<nirvdrum> Heh.
<headius> it's crashing in C1, though... can you try to reproduce with Java option -XX:-TieredCompilation please?
<headius> stupid C1, always raining on our parade
<nirvdrum> I just realized I was running with: -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify -J-Xmx2G -Xcompile.invokedynamic=false -Xreify.classes=true
<headius> something about that method
<headius> nirvdrum: well that's good, actually...I would have had you try that if it weren't obvious it's C1 from the dump
<projectodd-ci> Project jruby-master-rubicon build #6: STILL FAILING in 9 min 17 sec: https://projectodd.ci.cloudbees.com/job/jruby-master-rubicon/6/
<headius> hmm, that's odd
<nirvdrum> If I blank out my JRUBY_OPTS it seems to get stuck on something.
<nirvdrum> Maybe it's just really slow. Multiple jstack calls yield different results.
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:dc55205 by Charles Oliver Nutter): The build has errored. (http://travis-ci.org/jruby/jruby/builds/39946323)
travis-ci has left #jruby [#jruby]
<headius> it should be slower, but only by like 2x usually
<nirvdrum> Ahh, there it is. The default heap size is inadequate.
statonjr has quit [Quit: statonjr]
<headius> hmmm...C1 vs C2 shouldn't affect that much...perhaps the crash is memory pressure-related
statonjr has joined #jruby
vyorkin has joined #jruby
subbu has joined #jruby
lance|afk is now known as lanceball
mje113__ has joined #jruby
zorak8 has quit [Ping timeout: 245 seconds]
e_dub has quit [Quit: ZZZzzz…]
enebo has joined #jruby
tlarevo has quit [Remote host closed the connection]
<nirvdrum> Getting beyond that, there's another correctness issue I need to track down.
<headius> ok
<headius> I'm working on stabilization today
travis-ci has joined #jruby
<travis-ci> jruby/jruby (test-update_stdlib:c91c0cd by Charles Oliver Nutter): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39951424)
travis-ci has left #jruby [#jruby]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 2 new commits to master: http://git.io/s5D8qQ
<JRubyGithub> jruby/master dbd0f97 Chris Seaton: [Truffle] Remove a couple of unused nodes.
<JRubyGithub> jruby/master 0e4c83c Chris Seaton: [Truffle] Annotate some nodes that don't result in any machine code, to better inform the inliner.
JRubyGithub has left #jruby [#jruby]
tcrawley-away is now known as tcrawley
viking has joined #jruby
<nirvdrum> Well, that's interesting. I have an area of code that does something like: if defined?(::Sequel) do X else do Y. ::Sequel should be defined by virtue of loading the gem. The defined? check is true for a while and then is suddenly false. It works with JIT disabled.
viking has quit [Changing host]
viking has joined #jruby
<nirvdrum> It appears to be a JIT bug of some sort.
<subbu> nirvdrum, aha .. that is the same bug that i told enebo about wrt. activesupport 3.0.12 tests
<subbu> where ::TZInfo goes missing in some scenarios ..
<subbu> and where if you set JRUBY_OPTS=-X-C and run jruby -S rake .. all is well.
<enebo> OMGZ
<subbu> require 'active_support/tzinfo' unless defined?(::TZInfo) is the relevant piece of code there.
<enebo> nirvdrum: so is this the super bug specifically?
<headius> phooey
<headius> are you trying to say my JIT isn't perfect?!
<subbu> which also goes missing at arbitrary times .. for different values of city names in different runs.
<nirvdrum> enebo: No. That one seems to have been fixed.
<enebo> headius: well it is a world better than saying the IR logic is broken :)
<nirvdrum> enebo, subbu: https://gist.github.com/nirvdrum/96dd4817dee7eab140ee <-- That's enough to demonstrate the problem.
<subbu> nirvdrum, the super stack overflow bug is fixed??
<enebo> nirvdrum: oh so on interp do you fully run now?
<nirvdrum> enebo: No. The JVM crashes.
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to truffle-head: http://git.io/WJHssw
<JRubyGithub> jruby/truffle-head 383b10a Chris Seaton: Merge branch 'master' into truffle-head...
JRubyGithub has left #jruby [#jruby]
<nirvdrum> subbu: It appears to be. I haven't bisected to figure out what actually fixed it.
<enebo> nirvdrum: full JVM crash right?
<subbu> nirvdrum, ah, nice short and sweet test case. you are good at it :)
<headius> so defined?(Const) boils down to lexical + hierarchical search instrs
<enebo> nirvdrum: chrisseaton noticed IR interp could crash the JVM and he made a patch which prevented his case from happening…perhaps this is a bigger problem
<headius> Const becomes a single search_const instr
<enebo> headius: they were split and the merged in one case probably should be all cases
<headius> I suspect there's a bug in either lexical or hierarchical search that don't get hit except for here
<headius> I will review them
<chrisseaton> enebo: we never got to the bottom of that I'm afraid
<enebo> chrisseaton: yeah but does this crasher look similar?
<subbu> enebo, nirvdrum seems like the same crasher that chrisseaton encountered.
<headius> enebo, chrisseaton: probably time we officially got Hotspot folks to look at it
<enebo> oh of course it is
<headius> enebo: it would be an incredible coincidence :-)
<enebo> I just saw the stacktrace :|
<enebo> Well I guess there are not many JVM crashes outside of JNI usage but he could have hit a bad jr-posix call
<enebo> but it is crashing in chrisseaton workaround method
<chrisseaton> certainly looks similar
<headius> it's crashing in the Java code, compiled by C1
<chrisseaton> can you try removing my workaround and does the crash look the same?
<chrisseaton> last time it was crashing inside C2, not inside generated code, I believe
<nirvdrum> I see scrypt in the mix. That's a JAR I load that appears to have a native component. Not sure how that would really impact things though.
<nirvdrum> subbu: I'll file an issue for the JIT problem.
<enebo> nirvdrum: this trace is still with JIT on I think
<nirvdrum> enebo: Yes. I can try without it.
<enebo> nirvdrum: Are you sure this happens with JRUBY_OPTS=-X-C?
<enebo> nirvdrum: I mean it happens in the interp for places we didn’t or haven’t JIT’d yet but I am hoping we can remove some variables
<enebo> I also suspect running with jnr-posix going native might make JVM engineers more receptive to accepting this as a JVM bug
<headius> nirvdrum: I assue you did not have invokedynamic enabled
<headius> assume
<nirvdrum> Okay. JIT bug filed: https://github.com/jruby/jruby/issues/2090
<headius> (back to the JIT bug)
deobalds has quit [Quit: Computer has gone to sleep.]
imperator has joined #jruby
<headius> nirvdrum: good repro, thanks
<nirvdrum> enebo: No crash with JIT disabled.
<nirvdrum> enebo, subbu: And with JIT disabled, all of my specs pass :-)
<headius> ok, :: version falls into a runtime helper instruction
<headius> nirvdrum: woohoo!
<enebo> nirvdrum: wow great to hear
<headius> pressure's on me now!
<enebo> headius: or perhaps on MH imlementrers
<enebo> headius: Java6 invokeer support could maybe take heat off you
<nirvdrum> headius: Good call. It doesn't fail without the ::
<headius> I think this is running without indy, right?
<headius> it fails for me either way, in any case
<nirvdrum> indy disabled, correct.
<nirvdrum> The version string doesn't have +indy.
<headius> subbu: ahhh, this is the one you meant about the JIT fallback failing
<headius> I can fix the JIT issue...it's a signature mismatch on the helper method (which I will also tag with JIT so people know I'm using it)
<headius> we also need to fix the fallback interp though
<headius> some additional interp state that's not getting contextualized
noop has quit [Ping timeout: 256 seconds]
<enebo> headius: fallback right now just continues using the same interpcontext as before JIT started right?
<enebo> headius: We are not reset’ign state and calling prepareForInstructions again are we?
<headius> shouldn't be...if I bail out I do nothing else to the IR
<headius> my concern is that I'm going to fix this and it's going to be forgotten because we can't easily trigger it
<headius> perhaps I should add a property that forces JIT to always fail after doing everything it would to run?
<enebo> headius: ok so then maybe we are missing some state we should be saving into IC
<headius> we'll be able to stress test a bit then
<headius> enebo: that's my theory
<headius> I have no idea what state though :-)
<enebo> headius: but I am not sure what that could be unless there is some more IRScope.getFlags() happening in an interp impl in an operand or something
<headius> defined?(::Const) uses IRRuntimeHelpers.isDefinedConstantOrMethod, which is pretty straightforward
<enebo> headius: but I hope not. Most instrs no longer have IRScope
<headius> it has to be the incoming receiver getting mucked up or something
<headius> hmm
<headius> relevant instruction: runtime_helper(IS_DEFINED_CONSTANT_OR_METHOD, [<Class:Object>, "Object"])
rsim has quit [Quit: Leaving.]
<headius> only thing that's variable there is the operand
<enebo> subbu: I have wondered this and never asked but I see this in a few places…RuntimeHelperCall.callHelper we pass in currScope but in the method we don’t use it. Instead we asl dynscope for currScope. Are they ever different?
e_dub has joined #jruby
tenderlove has joined #jruby
<enebo> And my question is not pedantically correct. We do use currScope in places but in other places we use the scope we get from dynscope
<nirvdrum> Well, at least 9k is consistent. It'll crash both JVM 7 & 8.
<enebo> headius: is that instr to lookup for ::?
<headius> appears so
<enebo> So defined? ::Foo will defined? ‘Object’?
<headius> man, something in that logic it really doesn't like
<headius> enebo: this IR is for defined?(::Object)
<enebo> oh ok
<enebo> headius: if I remember the IRBuilder logic generates some exception catching stuff around this
<headius> subbu, enebo: Oh wait, it's not an IR bug
<headius> enebo: yeah that's exactly it
rsim has joined #jruby
<enebo> exception region stuff
<headius> it's catching the JIT's failed call signature (probably NoMethodDefFound) and returning nil
<enebo> yeah in protectCodeWithRescue
<headius> so this is too broad
<enebo> headius: so for IR bugs or impl bugs we should only be catching reasonable errors
<headius> actually, why does this use isDefinedConstantOrMethod? Can :: be used to invoke a toplevel method?
<subbu> headius, enebo sorry . i was away for a while .. but, back now. last i see is headius saying this is not an IR bug .. looks like you are hot on the trails of this one.
<enebo> subbu: well it might be a builder bug
<headius> you can't do ::foo
<headius> ::Array(1) doesn't work either
<headius> I don't think this form can resolve to a method
<headius> so it shouldn't need exception handling
<subbu> enebo, ok.
<enebo> headius: so it only hurts because it swallowed JIT bug
<enebo> headius: I think this exists because const lookup could return a ruby exception
<enebo> headius: but we should not be calling an exception path for that
<subbu> enebo, reg. currScop eand dynScope ... good qn. let me take a quick look.
<enebo> headius: we need an annotation for Ruby exception/important non-checked internal methods
<enebo> headius: so at a glance we can tell whether something can raise
<headius> enebo: I think if it boils down to just const lookup, this can't raise
diegoviola has joined #jruby
<headius> it uses getConstantFromNoConstMissing, which should never trigger an error
<headius> it will just return null if it's not found
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/WvV3oA
<JRubyGithub> jruby/master c3b80aa Charles Oliver Nutter: Fix defined?(::Object) logic in JIT. Partial fix for #2090....
JRubyGithub has left #jruby [#jruby]
<headius> nirvdrum: fix is in for you...we'll continue to sort out what needs to change in IR
<headius> if it works with default JIT threshold, next step would be to try a run with jit.threshold=0
<enebo> headius: I would love to get rid of all of the excption handling in defined
<headius> also, there's different logic for parts of JIT for indy and non, so if you can test indy that would be great too
<headius> enebo: me too
ludyte has joined #jruby
<headius> most don't need it if we just do more active lookup rather than "run this and see if it blows up"
<nirvdrum> headius: So, some is exception is being raised and then swallowed?
<enebo> headius: I was able to remove from several by leveraging RubyRuntimehelpers
<nirvdrum> headius: Fix confirmed.
<chrisseaton> headius enebo: I thought the semantics of defined? specifically included that if any exception was raised it returns nil? so you need to handle normal user exception don't you?
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/JqnzVA
<JRubyGithub> jruby/master a8db1a0 Charles Oliver Nutter: Mark runtime_helper helper methods with JIT annotation.
JRubyGithub has left #jruby [#jruby]
<headius> chrisseaton: yes, but that only needs to apply when the expression being tested is too complicated to determine without running it
<headius> method calls don't have to fall under that category if the logic to look them up and not find them is equivalent to the logic to just run the call and let it fail
<headius> there's some interplay with method_missing, respond_to_missing? here as well...that may complicate some cases
<headius> nirvdrum: excellent
bbrowning is now known as bbrowning_away
<headius> nirvdrum: the JVM6 JIT backend has several cases where it does less caching (or no caching) than 1.7, so don't expect perf to be where it should be (for that and other reasons)
<headius> if you are able to find specific cases that are bad, those should be filed
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] eregon pushed 5 new commits to master: http://git.io/SUAMfA
<JRubyGithub> jruby/master 4cc5aff Benoit Daloze: [Truffle] +@ should be defined on Numeric.
<JRubyGithub> jruby/master 850d9c8 Benoit Daloze: [Truffle] Move #nonzero? to Numeric.
<JRubyGithub> jruby/master 35ee548 Benoit Daloze: [Truffle] Move #times to Numeric.
JRubyGithub has left #jruby [#jruby]
<nirvdrum> JVM6? I've only tested with 7 & 8.
<headius> sorry, I mean the default JIT mode that doesn't use indy
<headius> JVM6 versus JVM7 bytecodes
<nirvdrum> Ahh.
statonjr has quit [Quit: statonjr]
pchalupa has quit [Quit: Leaving]
<nirvdrum> headius: Well, I run into new problems with indy enabled.
<nirvdrum> Seems to be either a super or varargs issue: wrong number of arguments (1 for 2)
<headius> eregon: I just saw https://github.com/jruby/jruby/issues/2016
<headius> I'm struggling with that on cloudbees trying to get builds going there, because they run on Fedora
<headius> this problem seems specific to Fedora/RHEL and at least OracleJDK
<headius> I will comment on bug and use it for investigation
<nirvdrum> headius: Know anyone that works at RedHat? :-P
<headius> nirvdrum: I'll ask around :-D
BobFunk has joined #jruby
statonjr has joined #jruby
imperator has quit [Ping timeout: 265 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] eregon pushed 1 new commit to master: http://git.io/DgK6NA
<JRubyGithub> jruby/master 82ce077 Benoit Daloze: [Truffle] Move Class#=== to Module and simplify assignableTo.
JRubyGithub has left #jruby [#jruby]
<rtyler> headius: you seen these guys' implementation of Fibers? http://docs.paralleluniverse.co/quasar/
imperator has joined #jruby
<headius> rtyler: yup yup
<headius> very nice but still requires us to mark up all resumable call paths with checked exceptions
triple_b has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
skade has quit [Quit: Computer has gone to sleep.]
<headius> chrisseaton: good lord truffle generates a lot of classes :-)
obs has quit [Quit: Leaving]
<rtyler> dat permgen
<headius> 1/3 of the total in jruby.jar
<rtyler> quasar's fiber implementation isn't useful for mapping Ruby fibers into the JVM?
<headius> rtyler: it would require a very large rework of our codebase unfortunately
<headius> every method that can potentially call back into Ruby would have to handle this new exception type used by the fiber stuff
baroquebobcat has joined #jruby
<headius> some of those would propagate up and not have to be directly dealt with, but many of those methods are public APIs and they'd suddenly have a new checked exception
<headius> oif
<headius> the cloudbees instances are fedora 17
<rtyler> headius: understood, but based on my understanding of the calling into java from jruby support, I /should/ be able to use this if I'd like right?
<headius> as long as whatever you call never calls back through APIs that don't know about fibers, sure
<rtyler> hrm
statonjr has quit [Quit: statonjr]
<headius> those libraries are extremely limited in what they can do, since every call that you want to be resumed has to be aware of their framework
erikhatcher has joined #jruby
<headius> I think some of them can do classloader tricks to dynamically modify code that doesn't explicitly know about fibers, but I've never seen it work
<rtyler> hrm, sounds like similar problems to coroutines in python
<rtyler> but at least there we had greenlets to do stack swapping and shit
<headius> chrisseaton: ok if I cancel some of these small commit builds? They won't be green without the commit I just made
<headius> just making sure you and eregon aren't monitoring them
<headius> nice, ok
iamjarvo has joined #jruby
<nirvdrum> Let me know if you run out of things to do :-P
<chrisseaton> headius: yeah
<chrisseaton> headius: you're always free to cancel Truffle builds if they are in your way - we have a duplicate CI system
Areessell_ has joined #jruby
<headius> chrisseaton: ok, thanks
<chrisseaton> headius: the number of classes will hopefully go down as we move more stuff to Ruby - but yeah I know it's not ideal, and not much we can do really at the moment
<chrisseaton> headius: they shouldn't get loaded unless you use Truffle of course - so for a user who doesn't want anything to do with Truffle the only penalty we're imposing is a compile time dependency on Java 7 and a bigger jar
<headius> chrisseaton: no worries...we may have to consider an additional jruby maven artifact that has no truffle, or a new artifact that DOES have truffle
yipdw has quit [Quit: No Ping reply in 180 seconds.]
yipdw has joined #jruby
<headius> there will be folks with maven deps that aren't excited about pulling in some oracle library they're not familiar with, even if it's not used
<chrisseaton> yeah, we'll work with you on it when you get complaints - maybe nobody will care
<headius> ok
<headius> enebo, subbu: nirvdrum's latest is an IR bug
<headius> check_arity makes calls that eventually depend on context.getCurrentScope just to get StaticScope to look for argument names
<headius> but it does not load that scope using IR
imperator has quit [Ping timeout: 244 seconds]
<headius> and it is obviously not something we want to deopt for :-)
<enebo> headius: ah simple enough but I may take a stab at fixing arity itself
<headius> it should have a CurrentScope operand
<headius> I believe
<headius> enebo: fixing arity itself?
<enebo> headius: After I vote (and probably) eat I will do cheapest fix and then try and make a reasonable Arity object
<enebo> headius: we don’t support kwargs in arity which we use Arity for method.arity and others
<enebo> headius: so we need a richer way to represent arity now
<enebo> headius: and we might as well calculate it at parse time
imperator has joined #jruby
<enebo> headius: but I should look at MRI is now doing too
<enebo> headius: but first step is stuffing arity into IC
vyorkin has quit [Quit: WeeChat 1.0.1]
<headius> enebo: I can hack JIT to just use current static scope but it means introducing a separate checkArity helper that's mostly the same as the one interp us using
<headius> this fails in JIT because the scope is optimized away and doesn't match anymore
<enebo> headius: You can also grab it from DynamicMethod at runtime?
<enebo> headius: for that matter IR Interpreter could if it actually passed a method ref into Interpreter
<subbu> wow man .. how many things have had to be fixed even though I got rails booted up, gems installed, rails server running back in 2012 ... of course, we have made many ir design changes as well .. but still ...
<headius> enebo: actually I may be wrong about this causing nirvdrum's issue, but it's definitely a bug
<headius> I think the bug I found requires kwargs to be involved
<headius> let me try to reproduce
<headius> enebo: all method bodies in JIT get StaticScope passed in now
<headius> for call protocol, const lookup, refined invocation
<headius> I can pass that through to anything that needs it and have no DynScope requirement
<enebo> headius: going to vote…I will be back
<headius> ok
e_dub has quit [Quit: ZZZzzz…]
BobFunk has quit [Ping timeout: 244 seconds]
tlarevo has joined #jruby
<headius> subbu: to be fair, most of these are being driven by JIT and optimization...IR minus those things works right
triple_b has joined #jruby
vtunka has quit [Quit: Leaving]
<headius> huh, this is an interesting one
<headius> an instance super is getting compiled as a regular call
iamjarvo has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
e_dub has joined #jruby
_dabradley has quit [Ping timeout: 250 seconds]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:c477d75 by Chris Seaton): The build failed. (http://travis-ci.org/jruby/jruby/builds/39951737)
travis-ci has left #jruby [#jruby]
<nirvdrum> subbu: Did that commit fix the ActiveSupport tests for you?
statonjr has joined #jruby
shellac has quit [Ping timeout: 255 seconds]
<subbu> nirvdrum, i haven't tested yet .. will play with it later today.
<subbu> headius, true reg. opts and jit.
skade has joined #jruby
dabradley has joined #jruby
pietr0 has joined #jruby
Hobogrammer has joined #jruby
imperator has quit [Quit: Leaving]
<rtyler> is there a document with an updated release timeframe for 9000?
<headius> a document...no, not really
<headius> plan is preview for rubyconf and final for xmas right now
<rtyler> will it be called jruby 1.8? :P
<rtyler> I'm trying to determine what my team's forward looking strategy should be to migrate Lookout internal teams off of 1.7 onto whatever is next
<rtyler> this is where release timeline and EoL docs are super helpful
<headius> it will be JRuby 9.0.0.0
mister_solo has quit [Ping timeout: 260 seconds]
<rtyler> r u j/k?
BobFunk has joined #jruby
<headius> no, that's what it will be...it's sufficiently high we'll never conflict with MRI and not unreasonable considering the number of major releases JRuby has had
<rtyler> heh, okay
<headius> huh...turns out 1.0, 1.1, ... 1.7 is 8 major releases
<headius> if we'd numbered them like majors we'd be at 9 now anyway
<rtyler> heh
<nirvdrum> The java version naming strikes again!
<rtyler> do you have a timeline for the 1.7 series ceasing to be thereafter?
skade has quit [Quit: Computer has gone to sleep.]
Areessell_ has quit [Quit: (null)]
<headius> rtyler: I'd guess it will be at least a year, as painful as that might be
<headius> 9k removes 1.8 support and reworks a lot of internals, so there will be some migration time
<rtyler> thinking 9k will follow the same one month release cadence 1.7 has?
skade has joined #jruby
<headius> ideally yes
phrinx has joined #jruby
<rtyler> hrm
<headius> maybe faster than that initially as reports come in
<rtyler> I'll have to noddle on what our support cycle is going to be then
<rtyler> we've got to stamp out 1.8 too
skade has quit [Ping timeout: 244 seconds]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:0e4c83c by Chris Seaton): The build has errored. (http://travis-ci.org/jruby/jruby/builds/39953261)
travis-ci has left #jruby [#jruby]
aewffwea has quit [Ping timeout: 256 seconds]
<headius> rtyler: yeah, keep us posted...we will periodically be reevaluating 1.7 EOL
<rtyler> wish I could come to SD but too much unexpected travel this month :(
yipdw has quit [Quit: No Ping reply in 180 seconds.]
triple_b has quit [Ping timeout: 245 seconds]
blinsay_ has quit [Ping timeout: 265 seconds]
blinsay_ has joined #jruby
yipdw has joined #jruby
yipdw has joined #jruby
<headius> enebo: any restriction on the sigils used for operands in persistence?
blinsay_ is now known as blinsay
<headius> I need to add one representing JVM null that only JIT will see, and want to use zero character
<headius> hmm, I see you use '1' but not '0'
<headius> I have the fear
<headius> nirvdrum: tried threshold=0 yet? This fix will be in shortly
erikhatcher has quit [Quit: erikhatcher]
drbobbeaty has quit [Quit: Textual IRC Client: www.textualapp.com]
drbobbeaty has joined #jruby
erikhatcher has joined #jruby
<nirvdrum> headius: I tried +indy -jit and it worked.
skade has joined #jruby
noop has joined #jruby
<nirvdrum> Dunno if that even really makes sense.
<headius> -indy +jit and -Xjit.threshold=0
<headius> make sure these are going into JRUBY_OPTS too in case how you're launching specs spawns a subprocess
<headius> your fix is in for the indy arity-checking bug btw (#2092)
<nirvdrum> Yeap. I always do it via JRUBY_OPTS.
<nirvdrum> I'm building master now.
<headius> now that fix is in, threshold=0 with and without indy would be good
<nirvdrum> No JIT and threshold=0. JIT with threshould=0 gives me an NPE.
<nirvdrum> LoadError: load error: jruby/java/core_ext/module -- java.lang.NullPointerException: null
<nirvdrum> require at org/jruby/RubyKernel.java:926
<nirvdrum> headius: That same reproduction script is enough to show the NPE.
<subbu> nirvdrum, and yes, with the latest master I am able to run activesupport tests on 3.0.10 to completion
<headius> woohoo
<headius> nirvdrum: same script as the argument count bug?
<headius> that runs ok for me with threshold=0
<headius> indy or not
<nirvdrum> headius: Yeah, that same script. Weird.
<headius> hmm
<headius> and you're on java 8
<nirvdrum> Yeah.
<nirvdrum> Maybe I fat-fingered the args. A second set of eyes would be good.
<headius> well NPE is not expected in any case
<headius> oh, -X+C
iamjarvo has joined #jruby
<headius> that's a bit different than threshold=0... anything that fails to JIT will immediately terminate the system
<subbu> and on 3.2.13 activesupport, i get 11F/5E (jruby 9k master) vs. 7F/5E (jruby 1.7)
<headius> that's *forced* JIT, rather than just immediate JIT
<headius> subbu: oh neato, things to fix!
<subbu> not sure if it is related to ruby version diffs .. but, not too bad.
<nirvdrum> headius: Duh. Thanks.
<headius> nirvdrum: I will look into that NPE anyway
<nirvdrum> It's time for another coffee.
<headius> some things are expected to not JIT at the moment, like really large methods
ephemerian has quit [Quit: Leaving.]
<headius> they will fail with arbitrarily peculiar exceptions under -X+C
<nirvdrum> Well, that script doesn't have anything really large.
<nirvdrum> But, understood.
rsim1 has joined #jruby
<nirvdrum> So, not doing -X+C works. Thanks!
<headius> cool
<nirvdrum> +indy crashes the JVM as well, FYI.
<nirvdrum> (when running my full rake)
rsim has quit [Ping timeout: 265 seconds]
<enebo> headius: Those chars in persistence was a change so if I looked at the binary I could sort of read what operand was being encoded so there is no restriction. Operand type is a single char
<dfr|work> *sigh* why is activerecord-jdbc-adapter so frigging complicated? :(
<enebo> headius: Are you adding a new operand?
<headius> I needed something for JIT to be a placeholder for aconst_null
triple_b has joined #jruby
<enebo> headius: at IR level?
<headius> I had some generic code in JIT that just accepted operands, but for one consumer that particular operand is not available and replaced with null
<headius> I could pass a flag for it too if adding an operand is not appropriate
<nirvdrum> dfr|work: Gotta use Sequel.
<dfr|work> nirvdrum, stickign to AR for now, thank you very much ;)
<dfr|work> nirvdrum, but am considering rolling my own adapter =/
<enebo> headius: So this operand will not be put into a CFG or any place like that. You are just replacing a null with a null object pattern?
<headius> basically
<nirvdrum> It's amazing how much easier my life got after I moved. Moving was a PITA though.
<enebo> headius: I wonder if you could use a single instance of Label named NULL :)
<headius> nirvdrum, dfr|work: I'd pay real money to get someone to switch AR's backend to Sequel
<enebo> Label is a no value operand
<headius> it would make our job supporting Rails a million times easier
<nirvdrum> tenderlove: ^
<headius> anything to get rid of custom adapters that use C exts
<headius> ANYTHING
<headius> I will donate a kidney if it will help
<nirvdrum> Sequel optimizes incredibly well, too.
<dfr|work> headius, so that it would be using sequel rather than connection adapter stuffs?
<headius> enebo: seems weird
triple_b has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<enebo> headius: but it is stateless and can be a singleton?
<headius> yes
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to master: http://git.io/2mGBBQ
<JRubyGithub> jruby/master 74b86d6 Charles Oliver Nutter: Actually implement Null in JIT.
<JRubyGithub> jruby/master dd69e08 Charles Oliver Nutter: Fix forced-compile loading of files.
JRubyGithub has left #jruby [#jruby]
marr has quit [Ping timeout: 245 seconds]
<enebo> headius: then you can make Operand NULL = new Operand() { where you pass operand type of label } since it is not really going to enter back into the system
zorak8 has joined #jruby
<headius> nirvdrum: ^ lets your original example script run with -X+C for me...I forgot to actually implement Null in the JIT
<enebo> headius: then it will only exist in the JIT and we do not need a bogus type for something not part of IR instr set
postmodern has joined #jruby
<headius> and the NPE was bad code in the forced-compile load logic
subbu is now known as subbu|lunch
<headius> enebo: hmm...overloading Label for this purpose still seems wrong
<headius> are you saying to still have a Null operand but of type Label and only the visitor logic actually gets used?
<headius> maybe even error on interpret
skade has quit [Quit: Computer has gone to sleep.]
<enebo> headius: current operandType is only used for two things but I could reduce it to one
<enebo> headius: actiually new Operand with operandType as null
<enebo> headius: Then it NPE’s if used in the wrong thing
<enebo> headius: right now it is used by CFG but that should be made an instanceof
<enebo> headius: otherwise it is only used by persistence
<headius> hmm
<enebo> headius: making an operand so you have appropriate operndtype means having to document this type in operands which has nothing to do with operands
<enebo> headius: If you do want a Null we can do it but one layers impl artifact it would be nice to keep that exclusively in the JIT layer
<nirvdrum> headius: Fix confirmed.
<dfr|work> nirvdrum, any way, I'm not sure switching to sequel will nbe helpful to me, since that's just trading one jdbc abstraction for a different (albeit better) jdbc abstraction =/
<headius> enebo: I think it sounds easier for me to just pass a flag then
<dfr|work> but both have features I don't need and I will still have to likely hack things :(
<enebo> headius: so where is the flag?
<dfr|work> nirvdrum, right now I need to add support for seamless reconnect to a different mysql server if an existing connection goes down >.<
<nirvdrum> dfr|work: Might be better off using a proxy.
<dfr|work> nirvdrum, hmmm?
<nirvdrum> Since ActiveRecord really doesn't have an API to code against.
<dfr|work> nirvdrum, tell me more.
oblutak has quit [Quit: Page closed]
skade has joined #jruby
<nirvdrum> dfr|work: On the postgres side, there are tools like pgpool and pgbouncer that sit between the client and the DB servers. I'd be surprised if there isn't something similar for MySQL.
<dfr|work> nirvdrum, ah. No, that's extra operational overhead.
<nirvdrum> I think people have even written HAProxy modules for things like that.
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] enebo pushed 1 new commit to master: http://git.io/vcWIow
<JRubyGithub> jruby/master 9a83034 Thomas E. Enebo: Use instanceof for WrappedIRClosure here since next line is a cast to WrappedIRClosure. It also reduces OperandType to be used only for persistence
JRubyGithub has left #jruby [#jruby]
<dfr|work> nirvdrum, my current plan is to override connection factory: https://github.com/jruby/activerecord-jdbc-adapter/blob/v1.2.0/lib/arjdbc/jdbc/connection.rb#L11
<nirvdrum> dfr|work: This might be a start, too: https://github.com/tchandy/octopus
<headius> enebo: I have another way...I'm using UndefinedValue to indicate this operand is not provided
<headius> the logic in question is JVMVisitor.superCommon
<dfr|work> nirvdrum, I don't want sharding, I want reconnects ;)
<headius> where it visits definedModule, not provided by unresolved supers
<dfr|work> nirvdrum, also, that's rails 3+ :(
<nirvdrum> dfr|work: It does more than sharding. But barring that, I'm guessing they figured out a lot of the hard stuff for you.
<nirvdrum> The replication stuff seems like it's very similar to a multi-master connection strategy.
<enebo> headius: oh so ddeifningModule is null?
BobFunk has quit [Ping timeout: 245 seconds]
<headius> it's not used by unresolvedSuper and zsuper because they have to go to the frame
<nirvdrum> dfr|work: And a final option is potentially this monkey-patch from resque: https://gist.github.com/defunkt/238999
<headius> not used = does not exist on the instr
robbyoconnor has quit [Ping timeout: 256 seconds]
<nirvdrum> Adapting your reconnect stategy accordingly.
<headius> so to keep the call paths the same I push a null there
<dfr|work> nirvdrum, I think I want to hit it lower level than AR, on the adapter layer.
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/Eq2tIA
<JRubyGithub> jruby/master f0cd104 Charles Oliver Nutter: Remove Null operand in favor of UndefinedValue.
JRubyGithub has left #jruby [#jruby]
<enebo> headius: btw I think you can simplify this method
<enebo> headius: CallInstr is unconditionally a ResultInstr
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:6da2fed by Charles Oliver Nutter): The build has errored. (http://travis-ci.org/jruby/jruby/builds/39971810)
travis-ci has left #jruby [#jruby]
<nirvdrum> dfr|work: Well, best of luck to you. Just be prepared for it to break on every Rails release.
<dfr|work> nirvdrum, anyhow. My complaint is that it's hard to hack my way through to do what I want to do. ;)
<dfr|work> I already know what I want to do :)
<dfr|work> nirvdrum, I'm at 2.3.18 and am not planning to upgrade ;)
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] enebo pushed 1 new commit to master: http://git.io/zXIFaw
<JRubyGithub> jruby/master d3e98b6 Thomas E. Enebo: Whoop forgot to remove import
JRubyGithub has left #jruby [#jruby]
<enebo> headius: ah yeah UndefinedValue does seem like a good replacement
<nirvdrum> dfr|work: Rails 2.3 in JRuby . . . gutsy. I thought the thread safety story wasn't so great in that release.
<dfr|work> nirvdrum, yes, we're running ~25 runtimes in prod.
x1337807x has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> jruby/master 38c56ab Charles Oliver Nutter: CallInstr is always a ResultInstr.
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/_SkAyQ
<dfr|work> nirvdrum, that's per task.
<headius> enebo: thanks, made that change
<headius> undefined and the resultinstr check
<headius> nirvdrum: so I think all we have left from you is the JVM crasher?
<headius> nirvdrum: if we can get JRuby output leading up to that crash it would help
<nirvdrum> I think so.
<headius> and an issue
<headius> this logic should only fire when we visit an instr or operand not expected to raise exceptions
triple_b has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<nirvdrum> headius: IR logging or something else?
<headius> I *think* you should see some relevant output before it
<headius> without IR logging on
auxbuss has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/pUqF2Q
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master d0dedb7 Charles Oliver Nutter: Remove unused result param.
josh-k has joined #jruby
x1337807x has joined #jruby
<tenderlove> isn't that what the jdbc adapters are for? :-P
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:dd69e08 by Charles Oliver Nutter): The build failed. (http://travis-ci.org/jruby/jruby/builds/39975551)
travis-ci has left #jruby [#jruby]
<dfr|work> tenderlove, hmm?
Areessell_ has joined #jruby
subbu|lunch is now known as subbu
<headius> tenderlove: the JDBC adapters have to duplicate a ton of logic
<headius> every time rails changes something in the provided adapters, ours break
<headius> because they're all custom written to that database's C ext
Areessell_ has quit [Ping timeout: 264 seconds]
<headius> Sequel provides a JDBC-like API for both C Ruby and JRuby
<headius> so it would eliminate the need for us to supply our own handwritten adapters
<headius> ^ by FAR the biggest time sink for us supporting rails
<multibot_> File "<stdin>", line 1
<multibot_> by FAR the biggest time sink for us supporting rails
<multibot_> ^
<multibot_> SyntaxError: invalid syntax
<tenderlove> adding *another* abstraction between AR and the database sounds like *loads* of fun
mister_solo has joined #jruby
<tenderlove> :P
<headius> you'd have less to maintain too
<headius> ideally a lot of duplicated logic across databases would go away
<headius> there'd be a single way to establish a connection, execute a statement, walk a result set
<tenderlove> I'm sure we'd have to maintain db specific quirks
<headius> of course
<headius> but you wouldn't have to do what sequel does for every database Rails supports, and databases Rails doesn't support could fall back on default logic...sequel supports more databases
<tenderlove> idk
<headius> the fact that AR *isn't* build atop a shared DB library is a travesty, really :-(
<tenderlove> there's *tons* of knowledge in the adapters we have.
<headius> mostly as regards building queries
<headius> that wouldn't change
<tenderlove> "just replace with sequel" sounds like a pipe dream
<headius> what would change is that you wouldn't have N different ways to work with a database...you'd have one, and query builders to handle quirks
<headius> not replace
<headius> AR would *use* sequel as its access to the actual DB
<headius> hell, we've proven it's possible because sequel is basically jdbc, and we provide those databases just atop jdbc
<tenderlove> so send a patch
<tenderlove> just make sure the tests pass
<headius> well, that's the problem...there are others with a hell of a lot more experience in AR internals than me :-)
<headius> I could take a month of from JRuby :-D
<tenderlove> I too have better things to do.
<headius> I'm not criticizing in any way...you seem to have taken my intent wrong
<headius> what's there grew organically out of one database
<tenderlove> headius: I'm just giving you a hard time ;-)
<headius> yes, you are
statonjr has quit [Quit: statonjr]
mister_solo has quit [Ping timeout: 240 seconds]
<headius> tenderlove: and fwiw, I wasn't the one who pinged you about it :-)
zorak8 has quit [Ping timeout: 244 seconds]
<headius> but once that had passed, might as well dogpile!
<tenderlove> hahah
<nirvdrum> tenderlove: 'tis a time when someone suggesting merb merge with rails would have been fed the pipedream line!
<headius> I'd love to fix this...it's just such a massive time sink for us to maintain all our own adapters that basically do the same thing as standard ones
<headius> we can't keep up
<tenderlove> good news: I'm burned out on AR, so I will probably not make many changes
<nirvdrum> I'd be happy if AR just had an internal API to write against. Anything that claims to be an AR plugin is just a mess of monkeypatching against its internal adapters :-(
<nirvdrum> But I understand how it's evolved.
<headius> jeremyevans: didn't someone do a prototype of AR atop Sequel at one point?
<headius> tenderlove: hopefully you can give us some tender loving guidance if we find someone to attempt it
<nirvdrum> headius: Trying to talk around how I pinged him?!?!
<headius> from what I see in the adapters on master, sequel would be easy
<headius> or at least a straightforward conversion
BobFunk has joined #jruby
iamjarvo has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<nirvdrum> headius: Breaking existing "plugins" would probably cause people to raise hell. You'd have to target it for a major release.
<headius> your work on ARel should make it a lot easier
statonjr has joined #jruby
<headius> nirvdrum: that may or may not happen
<nirvdrum> People getting upset about the plugins?
<nirvdrum> I'm almost certain it will. Some of the postgres ones are rather popular.
<headius> no, I mean breaking them
<headius> I haven't seen much so far that wouldn't be 1:1 in sequel...structure of the adapters would stay mostly the same
tlarevo has quit [Remote host closed the connection]
<nirvdrum> The problem is most of these plugins are implemented by monkey-patching the underlying adapter. So they don't even work with ARJDBC.
<nirvdrum> Or need to be substantially changed to support both.
<headius> another huge reason
<nirvdrum> Oh, I don't disagree. I'm just saying to fix that means breaking the rest of the ecosystem. Unless you ship both and run in some sort of switched mode configuration.
<nirvdrum> Thus requiring to be a major release.
<nirvdrum> Having said that, the Sequel API is pretty nice for plugins. So porting efforts shouldn't be that bad.
<nirvdrum> This is more of a political problem than a technical one, methinks.
<headius> I'm looking at calls to the C ext
<jeremyevans> headius: I'm not aware of anyone doing an AR prototype atop of Sequel
<headius> creating a connection, escaping incoming sql, ping, executing a query, last inserted ID, and query options
<headius> that's about it
<jeremyevans> Before it used ARel, there was talk of it using Sequel instead of ARel, but I've heard nothing about it since it decided to go with Arel
<Antiarc> Is there are project guideline for when to use single class imports vs import-on-demand?
<headius> jeremyevans: I'm right in thinking all of those actions would be easily supportable atop sequel, right?
<Antiarc> I ran intellij's "optimize imports" on jruby-core to see if it could clean up unused imports and it ended up collapsing imports where there were 5+ improts from the same package into import-on-demand imports
<Antiarc> But then I tried it without the collapsing and it expanded a number of import-on-demands into explicit lists :)
<headius> Antiarc: almost always single class imports
<nirvdrum> Antiarc: You can disable that in IntelliJ, FYI.
<nirvdrum> Or bump the threshold.
<Antiarc> nirvdrum: Yeah, I know, I did for the second run
<headius> if it's more than 20 we will sometimes do a wildcard
<Antiarc> Okay, good to know. I'm taking a quick trip through the codebase, trimming out trailing whitespace and cleaning up used imports
iamjarvo has joined #jruby
<headius> I don't think we have a hard upper limit, but there's few files that import enough from the same location to warrant a wildcard
<Antiarc> (because, for some reason, that stuff annoys the heck outta me)
zorak8 has joined #jruby
<jeremyevans> headius: I'm guessing it is possible to write AR on top of Sequel, though I doubt you could get 100% compatibility
<Antiarc> err, unused imports
<headius> tenderlove: is this really all the driver-specific code there is? https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb
<jeremyevans> The architecture of AR and Sequel is fairly different, doing AR-style logging using Sequel wouldn't be simple, for example
<headius> tenderlove: C ext code that is
<headius> jeremyevans: is it not possible to just use Sequel as a JDBC lookalike?
<headius> get connection, run query, walk results
<jeremyevans> But if you just want to replace the lowest level of the AR stack, and use Sequel in place of the low-level driver, that may be possible
<headius> that's basically what I want
<headius> we have no other "jdbc" for Ruby
<Antiarc> Also, wow, I need coffee
<Antiarc> My grasp of the English language is borderline nonexistent this morning
<headius> Antiarc: don't spend a lot of time on formatting cleanup...we're generally pretty down on that because it splits histories in nasty ways
<headius> imports are fine but wide-ranging whitespace changes are usually history noise
skade has quit [Quit: Computer has gone to sleep.]
<Antiarc> headius: Good to know - is it kosher to pick off outliers in files I'm otherwise working on?
<headius> yeah
<Antiarc> Yeah, I was just looking for whitespace after lines of code, not in comments or anything
<Antiarc> tens of lines in core
<headius> some of those are there intentionally for dense logic
<headius> some aren't :-)
<Antiarc> yup! I'm looking at them individually
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<headius> ok no worries
<headius> down to 288 locally
<Antiarc> hm, I thought I was down in the 240s
BobFunk has quit [Ping timeout: 265 seconds]
<headius> Antiarc: you aren't or haven't fixed the Struct inspect failures right?
<headius> Antiarc: oh, dunno why I'd differ
rsim1 has quit [Quit: Leaving.]
<Antiarc> Nope, I'm working on the Time#localtime stuff right now - needs to accept numerics, not just strings, as of 2.0ish
<headius> ok
<headius> this is a minor one so I'm going to just do it
noop has quit [Ping timeout: 250 seconds]
<Antiarc> I don't know if you saw the discussion on the enumerable stuff, but tldr, it's the explicit lambda that's the issue
<Antiarc> obj = Object.new; class << obj; include Enumerable; def each; yield 1; end; end; a = []; cond = ->(v, i) { a << v }; obj.each_with_index.cycle(2, &cond) -- that breaks
<Antiarc> if you replace the cond lambda with Proc.new it works fine
<Antiarc> I'm about at the end of my ability to with that one - the block binding stuff is still beyond my understanding :)
<headius> ok yeah...I think that one's an IR compiler bug
<headius> if you haven't already throw that into an issue, and IR folks will look into it
<Antiarc> Will do
pietr0_ has joined #jruby
pietr0 has quit [Ping timeout: 240 seconds]
pietr0_ is now known as pietr0
e_dub has quit [Quit: ZZZzzz…]
ephemerian has joined #jruby
marr has joined #jruby
<headius> Antiarc: are you on OS X?
<Antiarc> Fedora
<headius> oh ok
<Antiarc> Well, Windows, but working on a Fedora box
<headius> travis failed right away on test:mri after your patches, something in ioctl
<Antiarc> I have an osx machine, I can test and fix it there
<headius> well I mean travis is linux
<headius> I'm on OS X too and I don't see it
imperator has joined #jruby
<Antiarc> Link me to the failure?
<headius> yeah getting it
<headius> I think maybe you just got those tests further along so they hit something else broken now
<Antiarc> I'm on fedora 18, OpenJDK 1.7.0_45
<headius> or something
<Antiarc> I'm getting " java.lang.NoClassDefFoundError: Could not initialize class jnr.enxio.channels.Native$SingletonHolder" after pulling your changes now, even after a clean build, hm
<headius> Antiarc: oh, ugh
rsim has joined #jruby
<headius> there's a known issue with JVM not finding 64-bit lib on fedora/rhel
<Antiarc> Odd, why would it just start failing now?
<headius> I'm not sure
<Antiarc> I just found the existing issue about it, will poke around
<headius> it shouldn't have just started failing :-\
<Antiarc> 2efa00133faef1fd22f3c2761f86896b62569175 is the only commit I didn't have locally
<Antiarc> Which was the update to invokebinder 1.4
<headius> very strange
<headius> harumph
<headius> I'll bring up a fedora instance I guess
<Antiarc> actually, no, other stuff got merged
<Antiarc> I'll bisect it, no worries
<dfr|work> headius, I'm not sure that throwing more abstraction will necessarily help things in terms of activerecord driver support >.<
<headius> it has been around for some time on master, so if you're able to find a commit that would be huge
<headius> dfr|work: honestly, I think this abstraction is already there
<dfr|work> although I do concede that sequel's jdbc code looks at least simpler than activerecord-jdbc-adapter =/
<headius> they're using N different DB APIs that largely do the same thing
<headius> this would reduce it to one DB API
<headius> across MRI and JRuby, even
<dfr|work> headius, I think then it's essentially replacing abstract_adapter with sequel =/
<dfr|work> which is reasonable, I suppose.
<headius> yes, or even lower, making the concrete adapters (Mysql2Adapter, etc) call into sequel rather than directly into C ext
<headius> either way jruby would work for free then
<headius> no config changes, no separate gems for adapters
<dfr|work> headius, I feel that's icky: you'll have: AR -> Arel -> adapter -> sequel -> jdbc, whereas right now it's AR -> Arel -> adapter -> jdbc, although adapter -> jdbc step is very very ugly code.
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<dfr|work> abstract_adapter effectively provides a low-level interface for DB operations, and seems that's exactly what sequel does too =/
<headius> jeremyevans: how heavy is the abstraction for, say, getting a connection or executing a query?
<headius> dfr|work: that could be true...but the C ext calls are in the concrete adapters
<headius> mostly because they're different for every database, which is exactly what this would fix
e_dub has joined #jruby
<Antiarc> You know what...I installed a bunch of libs to do an Android build this morning.
<jeremyevans> headius: connection handling in Sequel is transparent to the user, internally it's purely block based, with an ensure that the connection is checked back in
<Antiarc> I'll betcha that pooched my env and broke jruby.
<jeremyevans> For executing a query, Sequel has a few different methods, depending on whether you want to return results, get number of affected rows, retrieve the auto incremented primary key value after inserting, etc.
JohnBat26 has joined #jruby
mister_solo has joined #jruby
<jeremyevans> results in Sequel are always returned as symbol-keyed hashes though, and since AR uses string-keyed hashes (and AR::Result an array or something), using Sequel would probably slow things down
travis-ci has joined #jruby
travis-ci has left #jruby [#jruby]
<travis-ci> jruby/jruby (master:9a83034 by Thomas E. Enebo): The build failed. (http://travis-ci.org/jruby/jruby/builds/39976384)
<enebo> yay
<jeremyevans> headius: But the basics for executing arbitrary sql: DB.dataset.with_sql('SQL').each{|hash|}
* imperator remembers dbi :)
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to update_stdlib: http://git.io/R5wFgA
<JRubyGithub> jruby/update_stdlib c2cb4a3 Charles Oliver Nutter: Merge branch 'master' into update_stdlib...
<JRubyGithub> jruby/update_stdlib 772b794 Charles Oliver Nutter: Re-move FFI files incorporated via PR.
JRubyGithub has left #jruby [#jruby]
<jeremyevans> headius: sorry: DB.dataset.with_sql_each('SQL'){|hash|}
<headius> imperator: ahh yes, dbi
<headius> jeremyevans: pretty straightforward
<jeremyevans> headius: with_sql_insert, with_sql_delete, with_sql_update work similarly, though they don't take a block
<headius> I'm just looking over these adapters and they only make a handful of calls to the C ext for the same things in each case
<jeremyevans> for executing code where you don't need the result: DB.run('SQL')
<headius> Antiarc: I merged master and pushed, dunno if that will affect anything
<Antiarc> headius: I think it's an env thing, not a code thing
<Antiarc> my rvm'd 1.7.16 works fine, but my local build doesn't, which is puzzling
<Antiarc> But commits I had building successfully last night don't work today, so it's not the code
<headius> Antiarc: oh, that's interesting
<headius> ok
<headius> I'll let you poke
<jeremyevans> headius: Here's a fun one: File.utime is broken on OpenBSD/i386 on JRuby, and it's not fixable without changes to the JRuby API
rsim1 has joined #jruby
iamjarvo has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jeremyevans> headius: This is because you are using long[] for timevals, and on OpenBSD/i386, long is 32-bit, time_t is 64-bit
<jeremyevans> I originally thought this could be fixed purely in jnr-posix, but unfortunately it can't be
<jeremyevans> Fixing this properly is going to require modifying the jnr-posix API, and changing JRuby to use it
iamjarvo has joined #jruby
iamjarvo has quit [Max SendQ exceeded]
<headius> jeremyevans: ok, that's doable
<headius> jnr-posix has subclasses for different paltforms
iamjarvo has joined #jruby
<jeremyevans> I'm not sure this can be fixed by subclassing, it needs a new API that doesn't take long[] arguments
<headius> we can copy out to long[] or introduce our own structure on a per-platform basis
rsim has quit [Ping timeout: 265 seconds]
<headius> the POSIX layer in jnr-posix is not the direct downcall...that's separate
<Antiarc> headius: The failing code attempts to load glibc, which I updated this morning, so I think I'll be able to nail this down shortly :)
yfeldblum has joined #jruby
<headius> so it can massage the values on the way in and out
<headius> Antiarc: oh interesting
<headius> ok
<jeremyevans> headius: OK. I'm going to add an issue to the jnr-posix project on Github, we'll see what they say, if they respond
<headius> heh, that's us too :-)
<headius> so they'll respond
<jeremyevans> headius: Great! Any chance you could merge https://github.com/jnr/jnr-posix/pull/36 ?
<headius> I can have a look
<headius> do you know if this utime signature looks the same on other BSDs?
Areessell_ has joined #jruby
<jeremyevans> I'm not sure. NetBSD maybe. I think only NetBSD have made the jump so that time_t is 64-bit even on 32-bit platforms
<jeremyevans> NetBSD and OpenBSD I mean. and I'm not sure about NetBSD
mister_solo has quit [Ping timeout: 272 seconds]
<jeremyevans> jnr-posix has been broken on OpenBSD since the 5.5 release in May, that pull request should make File.stat and similar things work
<jeremyevans> I just noticed this File.utime issue today, which unfortunately is not as simple a fix
<Antiarc> Java::JavaLang::UnsatisfiedLinkError: /usr/lib/libc.so.6: wrong ELF class: ELFCLASS32
<Antiarc> So it's trying to load libc-32 rather than libc-64, I'd guess?
<headius> I've seen that too
<headius> eregon reported that in the that same issue
ludyte has quit [Quit: ludyte]
<headius> jeremyevans: I don't have openbsd handy at the moment...can you show me the actual struct prototype for timeval?
<jeremyevans> headius: struct timeval { time_t tv_sec; suseconds_t tv_usec; }
<jeremyevans> headius: time_t is 64-bit (long long), suseconds_t is 32-bit (long)
<headius> jeremyevans: 36 is in, partial fix for 38 is in
<headius> should be a full fix when I actually make OpenBSDTimeval use the right widths
subbu has quit [Ping timeout: 250 seconds]
<jeremyevans> headius: Awesome!
<headius> hmm
<jeremyevans> Note that on OpenBSD/amd64, suseconds_t is going to be 64-bit, not 32-bit (since long is 64-bit on amd64)
<jeremyevans> I think that the SignedLong type takes care of that, but I'm not sure
<headius> yeah I'm not sure either
<headius> it should
<headius> jeremyevans: actually if you have freedom to try this out you could do a small PR with the right struct fields
<headius> I was about to push it with Signed32 for tv_usec but I'd be pushing blind
<jeremyevans> headius: Sure, if you send me what you have, I can probably test first
<headius> jeremyevans: it's pushed
<headius> sorry, it's pushed now
<headius> anything else that needs timeval will need similar treatment, or an overridable allocTimeval like we have for stat
<jeremyevans> I don't think this fixes the API issue, though
<headius> no?
<jeremyevans> Unless long in Java is always 64-bit?
<headius> it is
<headius> long, int are always signed 64, 32-bit
auxbuss has quit [Quit: I'm gone.]
<jeremyevans> OK. I'll play with it and see if I can get it to work. I think tv_sec needs to be Signed64 just by looking at it, though
<jeremyevans> SignedLong on OpenBSD/i386 is going to be 32-bit, not 64-bit
<headius> oh right
<headius> so it should be forced to full 64 always
<jeremyevans> correct
<jeremyevans> the tv_usec can remain SignedLong
skade has joined #jruby
<headius> I'll let you fiddle with it and watch for PR then
<jeremyevans> headius: OK. I'll ping you when it is ready
<headius> Aethenelle/tbuehr was working on getting vagrant instances set up for testing jnr-* but I'm not sure how far he got
<headius> we really need a way to test across our supported platforms with every commit
<headius> er, tduehr on github
e_dub has quit [Quit: ZZZzzz…]
diegovio1 has joined #jruby
diegoviola is now known as Guest44162
skade has quit [Ping timeout: 264 seconds]
Guest44162 has quit [Ping timeout: 256 seconds]
triple_b has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<Antiarc> headius: uninstalling glibc.i686 (which got erroneously installed this morning) solved the issue
<Antiarc> I'm not quite sure where the load paths for jnr-ffi get set, but it looks like it's just taking the first match for the library that it finds, which was the i686 version rather than the x86_64 version
<headius> Antiarc: ah! that's very helpful!
<headius> perhaps jffi needs to gain smarts about lib64
<Antiarc> Would it make sense to find *all* libraries in the search paths that match the requested library, iterate them, and try to load them until it succeeds?
<headius> that's what I'm thinking
e_dub has joined #jruby
<Antiarc> That way if it finds i686 first, it can try to load it, fail, then continue on to find the x86_64 version
<headius> or at least try both 32 and 64 bit paths
<Antiarc> ie, if locateLibrary returned a list of paths to try
<Antiarc> Which it then iterated through
<Antiarc> until lib != null
<headius> yeah
<Antiarc> Interesting, that ioerror on travis is also related to libc, though I suspect it's just coincidence
<headius> oh hmm
<Antiarc> Could also be a Travis thing, like if it's failing to report a valid terminal window size or something?
subbu has joined #jruby
rsim1 has quit [Read error: Connection reset by peer]
<headius> Antiarc: yeah that's possible...this may now show up as a tty after all
johnsonch is now known as johnsonch_afk
<headius> now
<headius> NOT
diegovio1 is now known as diegoviola
x1337807x has joined #jruby
JohnBat26 has quit [Ping timeout: 272 seconds]
<headius> Antiarc: add this information to the issue too
<Antiarc> Will do
<headius> I have to run for a bit
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] enebo pushed 1 new commit to master: http://git.io/10f5Sg
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master cdde1fc Thomas E. Enebo: Some rearranging and consolidation of interpreter (trivial)
erikhatcher has quit [Quit: erikhatcher]
rsim has joined #jruby
byteit101 has joined #jruby
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:f0cd104 by Charles Oliver Nutter): The build failed. (http://travis-ci.org/jruby/jruby/builds/39977262)
travis-ci has left #jruby [#jruby]
ludyte has joined #jruby
havenwood has joined #jruby
imperator has quit [Quit: Valete!]
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
diegoviola has quit [Read error: Connection reset by peer]
diegovio1 has joined #jruby
Areessell_ has quit [Quit: (null)]
diegovio1 is now known as diegoviola
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to update_stdlib: http://git.io/rysD1w
<JRubyGithub> jruby/update_stdlib 8d24996 Charles Oliver Nutter: Digest::HMAC is removed now.
JRubyGithub has left #jruby [#jruby]
pietr0 has quit [Ping timeout: 255 seconds]
pietr0 has joined #jruby
x1337807x has joined #jruby
<chrisseaton> headius: can you help me understand this? https://github.com/jruby/jruby/blob/master/core/src/main/java/org/jruby/RubyEncoding.java#L381 it seems like the encoding names are stored in some kind of hash that packs everything into a single byte[] and then you have to get a range from that array to get the name bytes......
x1337807x has quit [Max SendQ exceeded]
x1337807x has joined #jruby
<Antiarc> What're the rules on changing the signature of a public method, provided that all jruby references of that method are updated?
x1337807x has quit [Max SendQ exceeded]
<Antiarc> I want to change getTimeZoneFromUtcOffset(Ruby runtime, String str) to getTimeZoneFromUtcOffset(Ruby runtime, IRubyObject utcOffset)
<headius> Antiarc: for 9k we are just changing them and dealing with fallout
<Antiarc> Ok
<headius> jeremyevans: excellent!
x1337807x has joined #jruby
x1337807x has quit [Max SendQ exceeded]
x1337807x has joined #jruby
johnsonch_afk is now known as johnsonch
<jeremyevans> headius: thanks for your help :)
diegoviola has quit [Ping timeout: 264 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to update_stdlib: http://git.io/LGWaLA
<JRubyGithub> jruby/update_stdlib 5c6293c Charles Oliver Nutter: Digest#hexdigest should produce US-ASCII strings.
JRubyGithub has left #jruby [#jruby]
diegovio1 has joined #jruby
diegovio1 is now known as diegoviola
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/0432GA
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master 4d070a8 Charles Oliver Nutter: Update jnr-posix to 3.0.7-SNAPSHOT.
<headius> jeremyevans: thar ye be
JRubyGithub has joined #jruby
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> [jruby] headius pushed 1 new commit to update_stdlib: http://git.io/yqjovQ
<JRubyGithub> jruby/update_stdlib 562620e Charles Oliver Nutter: Merge branch 'master' into update_stdlib
<headius> will spin a jnr-posix release soon...maybe after you confirm it's working ok in jruby too
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<jeremyevans> headius: I'm only testing via JRuby :)
<jeremyevans> I'd actually have to use Java otherwise (the horror!) :)
tcrawley is now known as tcrawley-away
<headius> ahh well no worries then
<headius> we'll spin a release before preview in two weeks
<headius> thank you! let me know if any other OpenBSD PRs get missed
<jeremyevans> headius: I think that's all of them. I closed the 2 OpenBSD-related issues after the 2 pull requests got merged
<headius> perfect
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to update_stdlib: http://git.io/Z8su1Q
<JRubyGithub> jruby/update_stdlib 668a4bd Charles Oliver Nutter: Mask env tests expecting SAFE security errors.
JRubyGithub has left #jruby [#jruby]
iamjarvo has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
graphex has quit [Quit: ZNC - http://znc.in]
lanceball is now known as lance|afk
calavera has joined #jruby
<Antiarc> So I think that Time#localtime in 1.7.16 is actually wrong. The doc says it modifies the receiver, but if you pass an offset it returns a new Time
<headius> hmm
x1337807x has joined #jruby
<headius> I wouldn't be surprised
<enebo> headius: That defined? for colon2/colon3 cannot remove exception unless I split the logic between primary value as lhs and simple constant as lhs
<enebo> headius: not sure we care enough to add more code for defined? code
<headius> enebo: doesn't matter a great deal to me as long as the the static scope load is reflected in operands
<enebo> wha? :)
<headius> and as long as it is not swallowing Throwable :-)
<enebo> headius: yeah I think that is the bigger issue
<headius> oh wait, sorry, I got my stuff mixed up
<headius> this is fixing the Throwable thing
<headius> scope load was check_arity
<headius> still outstanding
<enebo> I can fix it for simple case but lhs can be any code at all
<headius> right
<headius> simple case fixes are the name of the game for optimizing defined
<enebo> and that code in theory could return any exception
<enebo> headius: but do we care?
<headius> we didn't before and eventually I had to start rewriting Ola's defined logic in JIT
<enebo> I can do it and it will be like 5 more lines of code but I guess I wonder if this is used past prologue crap
<headius> we did get reports
<headius> exception handling isn't going to be a big deal perf wise though
<enebo> hah
<headius> well, unless you have a defined?(:: Const) that fails every time forever
<headius> that would be a problem :-)
<enebo> yeah even Foo::Bar
<enebo> I think Foo cannot be Foo()
<headius> chrisseaton: How expensive is it to build a stack trace in the truffle stuff? Have you measured it?
rsim has quit [Quit: Leaving.]
<headius> with default JVM settings, just acquiring the JVM stack trace takes >1ms for us
<headius> not to mention the massive amount of garbage created
<subbu> i think we have bigger perf. fixes to fry, no? (so says a vegetarian :)).
cprice404 has quit [Read error: Connection reset by peer]
<subbu> *fishes
cprice has joined #jruby
<enebo> headius: fwiw this will virtually never actually throw
<headius> subbu: I was going to say...perf fixes are vegan
<subbu> :)
<enebo> It still has to potentially throw I guess even though it won’t in the simple cases
<enebo> I will add a FIXME: That we can optimize and specify which cases
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:d3e98b6 by Thomas E. Enebo): The build failed. (http://travis-ci.org/jruby/jruby/builds/39977405)
travis-ci has left #jruby [#jruby]
<chrisseaton> headius: I haven't - it requires a full deopt - but maybe a stack trace in a normal JVM needs that anyway
<chrisseaton> 1ms seems a bit extreme though
mister_solo has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<enebo> Hell with it I can make this line number zero sum
mister_solo has quit [Ping timeout: 265 seconds]
ludyte has quit [Quit: ludyte]
<headius> chrisseaton: it's really extreme, and I don't think it deopts either...I think the overhead is in mapping JITed frames back to the right stack trace elements
<headius> if I reduce the number of frames Hotspot provides in backtraces the cost goes down accordingly
<chrisseaton> that mapping is most of the work of deopt anyway
x1337807x has joined #jruby
<chrisseaton> have you seen a non-translated Truffle stack trace? it's looooong - it's fairly neat though, just long
<headius> this will be an area to explore...the majority of cases only need a small number of caller frames
<Antiarc> Okay, so this is really confusing --
<headius> I have wanted to prototype a JVM API to just get previous N frames but never got around to it
<Antiarc> the new stdlib asserts that for a time: 2001-02-02 10:20:30 +0000, #utc? => false
<Antiarc> The utc_offset is false, but utc? and gmt? are both false and asserted as such
<chrisseaton> headius: but the problem is it's been generated by the time you get your hands on it isn't it?
<headius> there may be some stuff coming along in recent 8 and 9 builds but obviously we can't depend on that
<headius> chrisseaton: right...if you ask for a stack trace, it gives you the whole shebang
<Antiarc> Instead it looks like they're using a gmt flag to determine if a time is UTC or not, rather than if its UTC offset is 0
<headius> and there's no way to say you only want part except for forcing all traces to be shorter
<Antiarc> Which is...what?
<Antiarc> I'm gonna punt on this test because that behavior is confusing and makes me sad
<headius> Antiarc: yeah, eregon would be a good one to ping on this...put findings in an issue
<Antiarc> Will do
<headius> eregon worked on a bunch of date/time stuff recently and may be able to give us pointers
<Antiarc> oh god
<Antiarc> This makes web-developer-me want to fall over twitching and screaming
<headius> hahah
<headius> yeah, I have no explanation for that :-)
josh-k has quit [Remote host closed the connection]
<headius> I will remain optimistic that there is one
josh-k has joined #jruby
<Antiarc> If I understand the MRI changeset properly, it's that the RFC says that only times which are explicitly UTC are considered UTC
viking has quit [Remote host closed the connection]
<Antiarc> Times which happen to be UTC+/- 0 aren't
<headius> Antiarc: down to 228 locally with some minor fixes and excludes
<Antiarc> Nice, I'll have another batch of fixes in a couple of minutes
<headius> ok cool
<headius> I'm looking for other big wins
<headius> enebo: bunch of new ripper failures...ok if I just tag them?
<Antiarc> Just running the full MRI suite before I push
<enebo> yeah. They are missing parser logic for complex/imaginary
<headius> mostly yeah
<Antiarc> LoadError: library not found for class Digest::RMD160 -- digest/rmd160 -- looks like an implementation detail, shouldn't be too hard to wire up. That's a handful of tests
<headius> enebo, subbu: that enumerable/lambda issue is a whole bunch of failures
<headius> Antiarc: that's gone...they removed Digest::HMAC and we still had the test and lib in repo
<subbu> what enumerable/lambda issue? i've not followed all the discussions here.
<Antiarc> Ooh, okay
<enebo> Does anyone have the simplest snippet for that?
<Antiarc> enebo: Sec
<enebo> I do know it involves stabby
<enebo> fucking stabby…he’s a nasty fella
<headius> yeah, argument processing not working with stabby but works with proc
<headius> looks like arg spreading
<enebo> yep
<Antiarc> aww crud
<Antiarc> I was working on a github issue for it and looks like I closed the tab
<headius> chrome can recover form content if it's still in history
<headius> or at least it has for me at times
<Antiarc> Line 10 there, if you replace the stabby with Proc.new it works
<headius> Antiarc: perfect
josh-k has quit [Ping timeout: 250 seconds]
<Antiarc> That's basically taken verbatim from test_enum.rb
<enebo> I will look into this once I debug why my const opt is not working
<headius> we can toss that into spec/compiler/general_spec.rb
<enebo> hopeflly I can figure this out before dinner
<headius> enebo: there's many ways we can improve defined? with indy too
<headius> get it enlisted in all the same const-folding and cache-busting that constant and method lookups do
<headius> in theory I can emulate whatever indy doesin JVM6 too
<enebo> yeah I added colon3 as own thing which was 3 linies
<headius> nice ok
<subbu> headius, enebo is it still worth trying to convert my method-def tests (which i was stripping out rubyclass) into jruby-specific tests since many of them weren't adequately covered in mri / jruby.
<headius> subbu: more tests is always worthwhile :-)
<enebo> then I busted out fast path for colon2 where lhs os constnode but that causes something weird
<subbu> but, we also have so many other suites that i also don't want to add test noise.
<subbu> ok.
<headius> subbu: those would be good cases for the general compiler spec
<subbu> k
<chrisseaton> headius: I do recall some research on lazily creating stack traces - the trace gets forced for a new frame when you request it or when that frame unwinds so ceases to exist - but can't quite remember the context it was form - might have been deopt in general
<headius> I'll want to know the JIT can do them too
<enebo> so I converted build lhs with const node as buildGetDefinition and it seems to work but I might have an extra already defined issue
<headius> chrisseaton: yeah, that would be doable if instead of a StackTraceElement[] you got back a StackTrace abstraction
<headius> I don't know how that laziness applies if you leave the frame though
<headius> applies/would apply
<chrisseaton> leaving the frame triggers the stack trace element to be fufilled
<headius> ahh sure
<headius> so there's a safe point on exit and if that frame has been captured for a trace it needs to fill it up
<headius> or something along those lines
<chrisseaton> something like that - I'm sure the specifics will come back to me
<headius> yeah
<chrisseaton> do you know work stealing in parallelism? where threads have a list of tasks and if they run out they take tasks from another thread?
<headius> anything we can do to reduce stack trace overhead will pay dividends...we periodically run into libs using exceptions for flow control
<chrisseaton> Fork?Join does it
<headius> yeah sure
<chrisseaton> there's a paper where you just recurse to create tasks, so just creating new local stack frames, and other threads steal by extracting these frames and reading the task data from them - crazy stuff
<enebo> That wacky symbol fortran replacement…fortresss is all about work stealing
pietr0 has quit [Ping timeout: 244 seconds]
<headius> chrisseaton: I like it
<headius> fortress is dead, right?
<enebo> only in our hearts
<enebo> oh and I think the project is dead too
<enebo> :)
<chrisseaton> I think the darpa funding went to x10 instead
<enebo> We need more languages to leverage zapf dingbats
<enebo> haha
<enebo> god damned warnings
<headius> we need a new keyboard with an additional row of symbol keys above the numbers
<enebo> headius: like 5 more rows
<headius> and we need a couple decades for it to gain adoption :-D
<enebo> headius: with oled displays on each key
<enebo> headius: or one more meta key
<headius> have you priced those oled keyboards lately?
<enebo> headius: or chording
<headius> I hoped they might come down, but yeah... $1000+ for a keyboard is a bit out of my range
<enebo> headius: unfortunately the big one was sold out like 2-3 years ago
<headius> ahh, yeah
<headius> that too
<byteit101> headius: oh I updated the java name :: warning PR (https://github.com/jruby/jruby/pull/2075) but am unsure what the travis warnings are about
<enebo> I love the idea of animating rainbows scrolling accross while I work. I need more distractions
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
e_dub has quit [Quit: ZZZzzz…]
<headius> byteit101: looks much better now
<headius> that JI failure is an old feature I've removed
<enebo> headius: I did colon3 as non-exception throwing version
<enebo> headius: something wacky with a warning as a side-effect trying to remove simple colon2 version
<enebo> I spent too much time optimizing something unimportant :)
pietr0 has joined #jruby
<headius> byteit101: looks like you still have my syntax error printStackTrace in there too...might want to rebase
<headius> it looks fine failure-wise though, so I'l merge and save you the trouble :-)
<Antiarc> TestFileExhaustive#test_expand_path_memsize => LoadError: no such file to load -- objspace -- should that one just be excluded due to jruby not having objectspace on by default?
<headius> hmmm
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 2 new commits to master: http://git.io/82Ipww
<JRubyGithub> jruby/master b42424d Patrick Plenefisch: Provide better error message when using :: in java_import (fixes #2074)
<JRubyGithub> jruby/master 1df19df Charles Oliver Nutter: Merge pull request #2075 from byteit101/master...
JRubyGithub has left #jruby [#jruby]
<headius> Antiarc: yes
<Antiarc> Where are tests excluded?
<headius> test/mri/excludes, files are the test class names with :: translated to /
<byteit101> headius: thanks
<headius> you'll get the idea pretty quick
<headius> byteit101: thank you!
zorak8 has quit [Ping timeout: 272 seconds]
<Antiarc> yup, cleand and easy
multibot_ has quit [Remote host closed the connection]
multibot_ has joined #jruby
<Antiarc> Down to 240 locally now
<headius> ok
<byteit101> headius: actually, do you have any idea about why I have to reference a JNI class from JRuby before jruby can call java classes to call the JNI object? I think It might have to do with jruby's classloaders messing with javacv's classloaders, but am unsure: https://gist.github.com/byteit101/4c0617cf879d99e84c99
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to update_stdlib: http://git.io/z2A3LQ
<JRubyGithub> jruby/update_stdlib 822abec Charles Oliver Nutter: Merge remote-tracking branch 'origin/master' into update_stdlib
JRubyGithub has left #jruby [#jruby]
<headius> byteit101: I think there's a JVM bug in some versions that has problems bootstrapping inner classes if you access the inner class before the outer
<Antiarc> is 9k targeting 2.2 compatibility out of the gate?
<headius> we had to add some explicit accesses of outer classes in a few places
<headius> Antiarc: yes
<Antiarc> awesome :D
<byteit101> headius: know which versions?
<headius> this is going to finally be our "caught up" release, at least as far as "expected" compatibility
<headius> byteit101: it was Java 6 for me some years ago but I haven't played with it recently
<headius> let me check
<byteit101> because this was in java 7
<byteit101> 7u72
<headius> hmm
<headius> nothing that late
<byteit101> and I found it very strange that simply referencing the class from jruby fixes it so java works
<byteit101> so I figured that it must be something that jruby is doing with loading classes somehow
<headius> yeah, this is probably a similar issue and I've never gotten a good explanation about it
<headius> when accessed from Ruby, we walk the containing class to reflect its methods, etc
<headius> that causes it to link when it should
<chrisseaton> headius: JRuby doesn't have internal or filesystem encodings but MRI does - is that a bug or a JVM thing?
<headius> JVM seems to only link the inner class and then things blow up because it tries to access outer class for some state
<headius> chrisseaton: we do have them
<byteit101> its static inner class
<byteit101> *its a
<headius> byteit101: it was for these other cases too
<headius> trying to remember one of them
<chrisseaton> headius: they don't seem to be listed in Encoding.name_list on master - could they just be missing from the name list somehow?
<headius> yeah that's probably all it is
<chrisseaton> I'll add them in - due the way RubySpec works with encodings, not having them in name_list is costing you literally thousands of expectations
<headius> I don't think I re-ported that logic when I updated encoding/transcoding this summer
<headius> oh, nice...go for it
<headius> there should be accessors for them on either Ruby or EncodingService
<byteit101> headius: ok, thanks. I love how jruby can fix jvm bugs like that!
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:38c56ab by Charles Oliver Nutter): The build failed. (http://travis-ci.org/jruby/jruby/builds/39977616)
travis-ci has left #jruby [#jruby]
<headius> byteit101: magicaly :-)
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<Antiarc> https://gist.github.com/cheald/f341b2adc1c5926e38e8 - a big chunk of the remaining errors are of this form - NPE when processing a script chunk, it looks like. The issue there is the `script` is nil when it's passed into runScript - parser issue?
<byteit101> oh, is there a nice api to generate simple ruby code from an ast-like form? currently in jrubyfx I just make strings and hope the parser makes valid strings of jruby code, but I would prefer something less stringy
josh-k has joined #jruby
<headius> byteit101: there's another possible explanation
<byteit101> headius: oh?
<headius> if the parent class and inner class are referenced from different classloaders but come together, that might also cause this error
<headius> Antiarc: oh, I can fix that
<headius> I thought I had actually
<byteit101> hmm, but calling it from jruby fixes it, and the javacv stuff uses its own classloader to load JNI stuff...
<Antiarc> headius: https://gist.github.com/cheald/f341b2adc1c5926e38e8 - there's an example of the source being passed in
<Antiarc> That require line is suspicious looking
josh-k has quit [Remote host closed the connection]
josh-k has joined #jruby
<headius> Antiarc: oops...that NPE is my fault, bad fix for something on master
<headius> that's probably why your numbers went up
<Antiarc> Hah. Woot.
<Antiarc> I didn't think I saw those yesterday.
<headius> yeah neither had I
<headius> thought maybe we were just geting further
<Antiarc> enumerable/webrick are the last two big really meaty chunks, it looks like
<Antiarc> After that it's probably gonna be harder work :)
<Antiarc> Like, the method currying stuff
josh-k has quit [Read error: Connection reset by peer]
<headius> that may not be too bad...like, to_proc.curry might be enough
<headius> unsure how deep the MRI impl goes
<enebo> Antiarc: I reduced the test case: jruby -e 'a = lambda { |a,b| p a, b}; def foo; yield [1,2]; end; foo &a'
<Antiarc> enebo: Is it as simple as not splatting yielded values to the stabby or something?
<enebo> Antiarc: I think specifically this is blockpass &lam should convert its behavior to proc and non-lambda but amazing nothing catches this than an enumerable spec
<enebo> Antiarc: If you invoke a lambda directly it should arg error like we see in the error
<enebo> Antiarc: So this is about passing via &foo I think
<headius> enebo: spec in general_spec will be good
<enebo> Antiarc: I was going to change some of out logic for lambda and arg passing and I reliazed it is correct
<headius> enebo, jeremyevans: releasing jnr-posix 3.0.7
<enebo> headius: yeah
<enebo> headius: great. Use Java 6 I think
<enebo> headius: I think we code this to Java 6
<headius> I don't have Java 6 :-( build specifies 1.5 level bytecode though
<headius> if it's a problem we should see it right away with 1.7
<headius> jruby 1.7 I mean
Areessell_ has joined #jruby
<headius> Antiarc: woot, 198
<Antiarc> nice :D
<headius> I'll exclude those new ripper failures now
fivebats has joined #jruby
<headius> enebo: wow, do we still really exclude this many?
<headius> ScannerEvents has a ton of stuff excluded already
<enebo> oh does it?
<Antiarc> Okay, I understand the time zone thing now
<Antiarc> UTC-0000 is #utc? => true
Areessell__ has joined #jruby
<Antiarc> UTC+0000 is #utc? => false
<enebo> headius: I thought I had it down to a tiny amount
<enebo> headius: like ‘a = a’ errors
<enebo> headius: but perhaps those got excluded after I did the work
<Antiarc> RFC 2822 says +0000 means "This timestamp conveys the information that this is a local time which happens to be in a UTC+0 timezone"
<Antiarc> Whereas -0000 means "This timestamp conveys no local time zone information, it is simply transformed to UTC+0"
Areessell_ has quit [Ping timeout: 272 seconds]
<Antiarc> This unfortunately means that the parser has to care about the sign on the timezone and maintain flags to that effect.
<headius> enebo: excludes at least, I have no idea if they're necessary or not
<Antiarc> Balllllllllllllllllsssssssss.
<headius> Antiarc: oh nice
<enebo> headius: how many?
<headius> 44 from ScannerEvents test...which seems like pretty much all of them