<GitHub144>
jruby/master 79cfa58 Subramanya Sastry: Tweak a stale comment and whitespace in IRBuilder
tomjoro has quit [Remote host closed the connection]
tjohnson has joined #jruby
pawnbox has joined #jruby
pawnbox has quit [Ping timeout: 248 seconds]
olle has joined #jruby
pawnbox has joined #jruby
olle has quit [Ping timeout: 246 seconds]
johnsonch_afk is now known as johnsonch
johnsonch is now known as johnsonch_afk
tomjoro has joined #jruby
tomjoro has quit [Ping timeout: 260 seconds]
norc__ has quit [Ping timeout: 252 seconds]
<GitHub151>
[jruby] trejkaz opened issue #3729: Occasional ArrayIndexOutOfBoundsException from a line of Ruby that isn't doing array lookups https://git.io/vaW3J
<GitHub163>
[jruby] trejkaz opened issue #3730: "could not coerce Fixnum to interface java.util.Set" from code that isn't dealing with sets https://git.io/vaW3Q
mkristian has joined #jruby
thedarkone2 has quit [Quit: thedarkone2]
olle has joined #jruby
olle has quit [Ping timeout: 240 seconds]
tomjoro has joined #jruby
Prasun has joined #jruby
Prasun has quit [Read error: Connection reset by peer]
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
vtunka has quit [Quit: Leaving]
vtunka has joined #jruby
tcrawley-away is now known as tcrawley
CaptainHeavy has joined #jruby
pawnbox has quit [Remote host closed the connection]
<CaptainHeavy>
Hi everyone. Just trying to run this (https://gist.github.com/mlk5060/f50ec71920d0a7dea038) but jRuby appears to be calling the "equals()" Java method of "list_pattern_returned" and I'm getting unexpected behaviour. Is this how jRuby evaluates "==" expressions, i.e. by calling the "equals()" method of the Java object under scrutiny?
<chrisseaton>
CaptainHeavy: can you expand that gist with a bit more context?
<chrisseaton>
Where do you think equals is being called from? The != nil?
<CaptainHeavy>
chrisseaton: yes, I can give you a stack trace if that'll help?
<chrisseaton>
Yes, but more so I need to see what kind of object list_pattern_returned is - where does it come from?
<CaptainHeavy>
chrisseaton: ah, its a Java object in a package I'm using I can provide you with the equals method (bear in mind, it wasn't written by me!). The equals() method in the Java object isn't overriding the "Object.equals()" method, by the way
<chrisseaton>
But what in your code calls == and so equals? The != nil?
<CaptainHeavy>
chrisseaton: that's correct
<chrisseaton>
So yes, that would call equals I believe, and a well-behaved Java class should be fine with that
<CaptainHeavy>
chrisseaton: I see, so what jRuby will do is look for an "equals" method in the class under scrutiny in context of the == operator?
<chrisseaton>
I think JRuby uses equals anyway internally even if it wasn't a Java object
pawnbox has joined #jruby
<chrisseaton>
And talking about 'looking for an equals method' makes it sound like it's doing something special - JRuby uses equals to compare two objects, like any other Java app would
<CaptainHeavy>
chrisseaton: fair enough. Previous programmer has done a sloppy job on the equals method of the list_pattern_returned object class. WIll need to fix. Many thanks for clarifying the behaviour :)
<chrisseaton>
If you are using an IDE like IntelliJ it should be able to generate a correct equals method for you (there is some ceremony to it)
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
<CaptainHeavy>
chrisseaton: using Netbeans, I'm all good with generating these, have had a lot of experience with it (especially when picking apart the other sloppy implementations of "equals" in other objects in the package)
CaptainHeavy has quit [Remote host closed the connection]
jvrdev has quit [Read error: Connection reset by peer]
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
<GitHub172>
[jruby] nirvdrum pushed 1 new commit to master: https://git.io/val2X
<GitHub172>
jruby/master 1ac43bb Kevin Menard: [Truffle] Added a basic implementation of a mutable rope so we have something to compare immutable rope performance against.
<GitHub87>
[jruby] headius opened issue #3732: Scala integration needs better class files for testing https://git.io/valVb
<GitHub73>
[jruby] headius pushed 1 new commit to test-headius-startup-tweaks: https://git.io/valwJ
<GitHub73>
jruby/test-headius-startup-tweaks 949216a Charles Oliver Nutter: Make these pennding until we can make real Scala classes. #3732
<GitHub118>
[jruby] chrisseaton pushed 1 new commit to truffle-head: https://git.io/valoD
<GitHub118>
jruby/truffle-head 0aeab1f Chris Seaton: Merge branch 'master' into truffle-head...
enebo has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
jeremyevans has quit [Read error: Connection reset by peer]
pawnbox has quit [Remote host closed the connection]
nirvdrum has quit [Ping timeout: 260 seconds]
jeremyevans has joined #jruby
pawnbox has joined #jruby
<GitHub83>
[jruby] brianbroderick opened issue #3733: ActiveSupport EventedFileUpdateChecker wrong number of arguments in JRuby https://git.io/val1M
<GitHub148>
jruby/master 1ecc79c kares: [test] hash and kwargs behavior when .rb compiled to .class
<GitHub148>
jruby/master 7d6fa84 kares: [test] pend jrubyc spec due a discovered regression in compiled .class deserialization
djellemah has joined #jruby
nirvdrum has joined #jruby
<GitHub88>
[jruby] kares opened issue #3734: compiled .rb does not handle rest kwargs right https://git.io/valyr
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
tomjoro has quit [Remote host closed the connection]
pawnbox has quit [Ping timeout: 250 seconds]
bbrowning_ has joined #jruby
bbrowning has quit [Ping timeout: 246 seconds]
bbrowning_ is now known as bbrowning
<kares_>
headius: hey, najs work on reducing startup noiz
<kares_>
have you thought about not auto-loading 'java' by default once again?
pawnbox has joined #jruby
<kares_>
haven't been looking into that but makes me wonder why it needs to happen - most gems still use explicit `require 'java'; require 'jruby'` on JRuby
<kares_>
so if java wouldn't be loading on every rake/rails command ... (believe the majority of users most of the time do not need it)
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
thedarkone2 has joined #jruby
brauliobo has quit [Ping timeout: 246 seconds]
<GitHub104>
[jruby] headius pushed 1 new commit to test-headius-startup-tweaks: https://git.io/valpT
<GitHub104>
jruby/test-headius-startup-tweaks e02641b Charles Oliver Nutter: Fix up how our 223 engine encodes input and decodes output....
<GitHub104>
jruby/master af965d1 Charles Oliver Nutter: Fix up how our 223 engine encodes input and decodes output....
<GitHub168>
[jruby] headius closed issue #2403: Unicode characters are lost when embedding JRuby even if the calling code performs no conversion to byte[] https://git.io/Lz0oBg
olle has joined #jruby
cprice has joined #jruby
<headius>
kares_: we use JI in some of the impls of core Ruby methods
<GitHub125>
[jruby] chrisseaton pushed 1 new commit to master: https://git.io/valjv
<GitHub125>
jruby/master da42f62 Chris Seaton: [Truffle] Skip Rails and gems when testing integration fast.
<headius>
it might be possible to make some of that lazy but then we're doing lazy requires inside core functionality
<headius>
JI doesn't seem to have a big impact for large apps though...it just adds around 0.4-0.5s to base startup
<enebo>
headius: do you know if any of it is loaded as part of rubygems?
<enebo>
headius: we could be pretty lazy if we knew nothing hit it until required and it was not part of bootstarp
<headius>
enebo: it?
<enebo>
JI-consuming core/stadlib impl
<kares_>
yeah how much of it - maybe it can be minimized
<enebo>
we can probably require ‘java’ in the actual defs
<kares_>
seen some simple stuff around stdlib such as ENV_JAVA
<enebo>
but it is not worh it if we have to load it 100% of all startups
<enebo>
not worth it == it won’t help at all since it will always load anyways
<headius>
enebo: well none of "core" is loaded via gems
<headius>
I'm talking stuff like Kernel#exec
olle has quit [Ping timeout: 264 seconds]
<enebo>
headius: yeah so the core class is always defined but if exec is not actually called then it need not load
<enebo>
but I doubt that is all of it
<headius>
right
<enebo>
and exec is I think used in bundler
<enebo>
I look at 0.5s as a big chunk
<headius>
but we've already been through two major versions with all of 'java' library available at boot
<headius>
I don't think we can remove it at this point
<enebo>
yeah I have pointed out that semantically people should require publicly in issues and posts (stackoverflow) but I guess it will get reported since no doubt people are not putting require ‘java’ now
<headius>
I look at 0.5s in terms of rails apps that take 30-60s to start up
<enebo>
I look at 0.5s in terms of small short app runs
<enebo>
like gem list
<enebo>
or running rake
<kares_>
headius: enebo: actual uses of JI always require 'java' before hand as much as I've seen
<headius>
gem list would be no more than 20% faster if we didn't load 'java'
<kares_>
maybe they might assume JRuby to be loaded ... but that can be handled with an auto-load
<headius>
less for larger lists
<enebo>
kares_: yeah I think mostly they do but I am sure it is no 100%
<enebo>
so I think headius is right we will get pain if we just kill it
<kares_>
enebo: still believe its pretty close
<headius>
and of course gem list is going to load stuff that will require JI anyway
<enebo>
I would like to see if we can kill it though
<kares_>
what about a cmd-line switch?
<enebo>
headius: ah yeah I guess it probably would with extra hooks
<headius>
I just don't see java integration laziness helping us in anything except the smallest command line runs
<enebo>
seems like yet another flag we won’t test and it will end up being a noop after a while
<kares_>
meant as a ways to migrate - like ruby did with string-literals
vtunka has quit [Quit: Leaving]
<enebo>
yeah it is an idea
<kares_>
9.1 off by default, 9.2 on by default, 9.3 dead :)
<kares_>
but yeah - if you do not feel like its worth it its probably not
<enebo>
for me gem list is taking about 2.7s
<enebo>
and I probably have >100 gems install
<headius>
right, so 0.5s is less than 20%
<enebo>
2.2s or so
<kares_>
BUT EVERY 0.1s counts :)
<enebo>
every 0.1s is ascred
<enebo>
ASCRED
<headius>
less and less sacred as app startup times approach 60s :-)
<enebo>
headius: I agree we have multiple issues
<headius>
if we can get -e 1 to start up in 0.1s, great, but if Rails apps still take minutes it hasn't really accomplished anything
<headius>
the people that complain about startup are complaining about way more than 0.5s
<kares_>
yy
<enebo>
I am just trying to reach some parity with 1.7 :)
<kares_>
ME TOO!
<enebo>
we are only like 15-20% off on simple rails app and gem
<headius>
besides, RG heh
<headius>
er, heh
<enebo>
HEH
<headius>
1.7 loaded 'java' too
<headius>
it's not 'java' making 9k boot slower
blandflakes has joined #jruby
<enebo>
yeah I am not implying that
<kares_>
have run AR-JDBC benchmarks
<enebo>
in any case I have no idea if this even is possible now
<headius>
also, --disable-gems cuts off about 0.6s for me, and then additionally -Xdebug.parser (which would turn off all of ruby kernel) drops it another 0.3s
<enebo>
I suspect RG definitely calls something which loads JI
<kares_>
9K is doing worse - but I need to do more testing at some point
<headius>
so all of kernel is only about 0.3s including JI
<headius>
RG is the big hit you want to improve for small startup, if you ask me
<enebo>
-Xdebug.parser will not allow JI to load
<headius>
right
pawnbox has quit [Remote host closed the connection]
<headius>
so 0.3s was all I gained beyond --disable-gems
<enebo>
yeah I agree…RG is a big hit
pawnbox has joined #jruby
<headius>
with 0.3s versus 2.7s gem list we're now talking about more like 11% reduction
<enebo>
I think all these dings are big from the short run perspective but I think they are not the same as a long tail load of a substantial Rails app
<enebo>
To some degree solving long tail will have some effect on short run speed too so I am think it is probably a better prioirtiy
Prasun has joined #jruby
<headius>
the fixes on my branch are a mix of short and long term startup improvements
camlow325 has quit [Ping timeout: 244 seconds]
<headius>
I think that's all green now so I will probably merge today
<GitHub112>
[jruby] chrisseaton pushed 2 new commits to truffle-head: https://git.io/va8Ji
<GitHub112>
jruby/truffle-head 1e09cda Chris Seaton: Merge branch 'master' into truffle-head
<GitHub112>
jruby/truffle-head 2bafa09 Chris Seaton: [Truffle] Now need -J-Djvmci.Compiler=graal
vtunka has joined #jruby
<headius>
precompiling stuff to bytecode may be an option...I need to spend some time investigating if it's faster than parsing, compiling and interpreting
<enebo>
just browaing commits
<GitHub184>
[jruby] chrisseaton pushed 1 new commit to truffle-head: https://git.io/va8U4
<GitHub184>
jruby/truffle-head cd68aec Chris Seaton: [Truffle] Document use of -J-Djvmci.Compiler=graal
<enebo>
I almost feel like we shoudl change RuntimeHelperCall again…these is no reason for these to be Operands and not just Strings
<enebo>
It was done for persistence and a consistent set of data since this is really like 14 different instrs
<enebo>
I do not think the original StringLiteral nor now FrozenString is actually ever stood up as a Ruby object in that instr
skade has quit [Quit: Computer has gone to sleep.]
<GitHub127>
[jruby] chrisseaton pushed 1 new commit to master: https://git.io/va8T7
<GitHub127>
jruby/master cb6e0bb Chris Seaton: Correct location of comments.
<GitHub143>
jruby/master fb71835 Charles Oliver Nutter: Update to released RubyGems 2.6.2.
<GitHub130>
[jruby] headius closed issue #3652: Lock is not released at Kernel.require when Gem.try_activate throws RuntimeException https://git.io/vg0AF
mberg has joined #jruby
pawnbox has quit [Remote host closed the connection]
bengt_ has quit [Read error: Connection reset by peer]