yosafbridge has joined #jruby
yosafbridge` has quit [Quit: Leaving]
<GitHub99> [jruby] headius closed issue #5244: 9.2.0.0 rake missing rake gem and fails https://git.io/fNkXg
<GitHub36> [jruby] headius closed issue #5243: float equality problem https://git.io/fNfk1
<GitHub118> [jruby] headius opened issue #5245: Duped modules' class-level methods produce NPE when inspected https://git.io/fNIFE
<GitHub95> [jruby] headius pushed 4 new commits to master: https://git.io/fNIbU
<GitHub95> jruby/master 5371240 Charles Oliver Nutter: Add spec for inspect of dup'ed module's class methods.
<GitHub95> jruby/master f6447e9 Charles Oliver Nutter: Attach cloned singleton class to class. Fixes #5245.
<GitHub95> jruby/master 466b27a Charles Oliver Nutter: Add partial delegate (visibility) direct binding for indy.
<GitHub195> [jruby] headius closed issue #5245: Duped modules' class-level methods produce NPE when inspected https://git.io/fNIFE
_whitelogger has joined #jruby
<GitHub0> [jruby] headius pushed 2 new commits to master: https://git.io/fNIxZ
<GitHub0> jruby/master 5421f6d Charles Oliver Nutter: Exclude Java calls with closures from binding directly....
<GitHub0> jruby/master 9e1709d Charles Oliver Nutter: Fix argument ordering for indirect indy yieldSpecific binding....
deobalds has joined #jruby
slyphon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<GitHub103> [jruby] headius pushed 1 new commit to master: https://git.io/fNIxQ
<GitHub103> jruby/master d1dfcb8 Charles Oliver Nutter: Set your sights higher.
iNeWeaBliN has joined #jruby
<iNeWeaBliN> hi there, tl;dr: is jruby a flavor of java and can it be used instead of jre/jdk?
<GitHub79> [jruby] headius opened issue #5246: Methods that do not bind directly with invokedynamic https://git.io/fNIj1
<havenwood> iNeWeaBliN: It's the Ruby language on the JVM.
<havenwood> iNeWeaBliN: It's not a flavor of Java. You run it on the JVM, not instead of the JVM.
<iNeWeaBliN> oh
claudiuinberlin has joined #jruby
<eonwe> enebo: by stracing the system calls, it seems that backticks create the new process by clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f01eb2949d0) which causes memory trouble whereas system() has CLONE_VM flag set
shellac has joined #jruby
<GitHub77> [jruby] headius pushed 7 new commits to master: https://git.io/fNLfc
<GitHub77> jruby/master c173c82 Charles Oliver Nutter: Fix log message for indirect Java binding with block.
<GitHub77> jruby/master 75401aa Charles Oliver Nutter: Local variable lookup before init may return null, guard this.
<GitHub77> jruby/master 0a7419a Charles Oliver Nutter: Enable direct binding for keyword args methods....
shellac has quit [Quit: Computer has gone to sleep.]
<GitHub184> [jruby] headius pushed 1 new commit to master: https://git.io/fNLTJ
<GitHub184> jruby/master 8555df3 Charles Oliver Nutter: Bind struct accessors directly with indy. See #5246....
<headius> ChrisBr: missing you as usual but I am watching this
<ChrisBr> headius: wow, isn't it late in the US now?
<headius> yeah, I'm just on a roll
<ChrisBr> lol
<ChrisBr> anyway, I'm finishing to extract an internalMap with different strategies now
<ChrisBr> but I'm not sure if this is the right way to go
<ChrisBr> if you have time, would be great to get feedback! The benchs look promising so far
<headius> do you mean that numbers are looking good with this external map?
<ChrisBr> jup
<ChrisBr> headius: or do you think we should leave everything in RubyHash class?
<ChrisBr> I just think if we want to have linearsearch and open addressing it is going to be really complicated
<headius> hmmm
<headius> are the numbers better with the external map? :-D
<ChrisBr> not 100% sure
<headius> yeah so thinking in my head if it were more like a C API, you'd still need to pass in a struct holding all the pieces, or pass in all the pieces every time, which would make it almost unusable
<ChrisBr> so you would prefer to have everything in RubyHash if you could choose?
<ChrisBr> headius: yep exactle, it would be still highly coupled to the hash
<headius> I wonder about the indirection and if we are defeating some of the locality gains
<headius> but I don't know how much this indirection hurts us versus the fields being on RubyHash itself
jeremyevans has quit [Ping timeout: 244 seconds]
<headius> were there any benchmarks associated with this change in MRI?
<headius> I mean, that showed some sort of improvement
<ChrisBr> around 20% improvement IIRC
<ChrisBr> this PR combines linear search and open addressing: https://github.com/jruby/jruby/pull/5215/files
<ChrisBr> I think it is still OK in terms of complexity
<ChrisBr> but regarding the hash caching (in a third row in the entries array): if we only do it for the linear search, it is going to be more complex
<ChrisBr> (because iterating will be different of course)
drbobbeaty has joined #jruby
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Puffball has joined #jruby
<GitHub39> [jruby] headius pushed 1 new commit to master: https://git.io/fNLtG
<GitHub39> jruby/master 7026bae Charles Oliver Nutter: Add indy + jit run of our small suite.
<headius> ChrisBr: so it would be simpler to do it always or what?
<ChrisBr> headius: yep, if we go with caching the hash I would do it always
<ChrisBr> otherwise you have to iterate different which adds complexity
<headius> hmm...ok, so I guess we should make some choices
<ChrisBr> headius: yep :)
<headius> lopex: what do you think about the whole hash being its own data struct at this point? Even in C it would be indirected through a struct, so all we are gaining is reusability for other stuff
<headius> ChrisBr: if we alwatys have the hash cache I have a little bit more concern about it indirecting through another structure
<ChrisBr> headius: another structure? That the array is bigger?
<headius> well I just mean we have to dereference the second array, but I may be railing against locality issues Java just doesn't deal with well right now
<headius> ok so I think I can do some benching and logging to see how this works out
<ChrisBr> but we would store the cache in the same array?
<ChrisBr> ok, so how should I go forward?
<headius> we can't really because of the primitive/reference issue...second array is the best we have
<ChrisBr> headius: hm, rioght
<headius> ok can you update the PR with a list of the latest branch for the different versions of this, or however you have it organized?
<ChrisBr> if we store it in a cache array, the complexity is not an issue as the entries array always has the same structure
<headius> right
<headius> I think that's going to be best and we'll just accept that Java doesn't handle homogeneous arrays so well
shellac has joined #jruby
<headius> ideally having the second array only messes with cache a little bit
<headius> we can look into deeper JVM cheats in the future
<ChrisBr> ok, I haven't tried this approach yet! I only tried to store everyting in the same array (so we needed to box the int hash value)
<headius> oh I see, so this is not ready yet
<ChrisBr> Nope
<ChrisBr> this is the result of storing everything in same array
<ChrisBr> which is slower as without the cache
<ChrisBr> probably because of the boxing?
<headius> I am having some trouble understanding...is it faster with the boxing or with the separate hash array?
<headius> the results in that comment make it sound like boxing is faster
<ChrisBr> :/
<ChrisBr> First result is with the boxed hash cache
<ChrisBr> second result without any cache
<ChrisBr> so without cache is faster
<headius> ok :-)
<headius> well that seems like good enough evidence to me
<ChrisBr> is it more clear now?
<ChrisBr> good enough evidence that boxing is slow in this case?
<headius> oh wait...I think I know why I'm confused
<headius> the second numbers are with the hash not cached anywhere, right?
<ChrisBr> headius: yup exactly
<headius> ok now I get it...and the third version that caches them in a nearby long[] has not been tried yet
<ChrisBr> yes :)
<headius> is this the 7 element scale for that last result?
<ChrisBr> yes
<headius> ok I guess I'll ask the main question...how does the non-caching version compare with master at this point?
<headius> I think these are good results to compare? https://github.com/jruby/jruby/pull/5215#issuecomment-398900001
<ChrisBr> headius: also yes :)
<ChrisBr> but with scale 16 still
<ChrisBr> this is with scale 7
<headius> so the add is almost identical to no caching but the fetch is slightly slower
<headius> 12.6M vs 15.3M
<ChrisBr> yup, but IIRC this version still uses an intermediate RubyHashEntry object for fetch
<ChrisBr> we could get rid of this
<headius> ahh right ok
<ChrisBr> so from our conversation now I would conclude:
<ChrisBr> 1) We leave everything in RubyHash class
<ChrisBr> 2) We try a dedicated cache array for hash to avoid boxing
<headius> yeah I think that seems like the best path right now
<ChrisBr> 3) Getting rid for RubyHashEntries where possible (we can not get rid of them everywhere without breaking API)
<headius> rather than trying to pull out this other data structure before we figure out the best shape and test it
<ChrisBr> headius: ok makes sense!
<ChrisBr> thanks a lot, this helped me a lot to know how to go forward
<headius> the APIs that use the entry object we'll want to look at evolving, like passing the individual pieces through
<headius> but that can happen separately...we'll audit all consumers of the entry APIs
<headius> this is great stuff, I will try to do some benchmarking on it as well
<ChrisBr> headius: ok, so I will leave the Entry objects for now for the API, right?
<headius> yeah
<ChrisBr> just getting rid of them internally
<ChrisBr> ok, great
<headius> sorry communication has been a bit tricky the past month :-D
<ChrisBr> headius: no problem hehe
<ChrisBr> I will be travelling beginning next thursday as well and wanted to leave things in a good shape
<ChrisBr> ;)
<headius> ok I think my roll is slowing...time to get some rest
<headius> ahh very nice, where are you headed?
<ChrisBr> Tokio
<headius> as of Tuesday I'll be in Greece for about 10 days, working on and off
<headius> cool, have you been before?
<ChrisBr> ok, good to know!
<ChrisBr> No, first time Asia :)
<headius> that's awesome, I'm sure you'll have lots of advice but if you want to know some good beer places I can hook you up :-)
<ChrisBr> always :)
<headius> Baird Brewing in Harajuku...they have Baird beers and always a bunch of other Japanese craft
<ChrisBr> visiting my roomie and he already scared me that beer is pricey and not good :/
<headius> also Mikkeller in Shibuya is great, mix of european and local stuff but mostly local
<ChrisBr> ah nice, I think I was in a Mikkeller in SFC some years ago
<headius> Devilcraft has two locations, they are a pizza and taproom with some of their own beers too
<headius> those are the big ones...enebo probably has a couple others he likes
<headius> I dunno if I'd say they're cheap or expensive but they're good :-)
<ChrisBr> great, thanks a lot! Through the power of open source I don't have to suffer thirst hehe
shellac has quit [Ping timeout: 240 seconds]
<headius> hahah sure, have fun, it's a crazy place
<ChrisBr> thanks
claudiuinberlin has quit [Ping timeout: 265 seconds]
deobalds has quit [Quit: Computer has gone to sleep.]
deobalds has joined #jruby
drbobbeaty has joined #jruby
deobalds has quit [Quit: Computer has gone to sleep.]
jrafanie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rdubya has joined #jruby
claudiuinberlin has joined #jruby
<claudiuinberlin> one stupid question here, there is any jruby typechecker for ruby?
slyphon has joined #jruby
jeremyevans has joined #jruby
jrafanie has joined #jruby
<enebo> claudiuinberlin: you mean like optional typing?
<claudiuinberlin> yup
<enebo> claudiuinberlin: no not for JRuby specifically. I do think some people have made some generic contractish libraries in Ruby
<claudiuinberlin> I just saw a video from sorbet, the guys from stripe. will be open source, but is written in `modern` c++
<enebo> `modern` nice :)
<claudiuinberlin> yes, as modern you can get from c++
<enebo> claudiuinberlin: sounds like C++ keeps getting new stuff so I guess that may be pretty modern
<claudiuinberlin> will be renamed in c++m
<enebo> heh
<claudiuinberlin> so, for me, that will be dead end, as I dont enjoy so much c++ even if is modern :)
<claudiuinberlin> so I was curious, as jruby can use jvm to get more information and do some checking
<enebo> if you want types for some code and not for others maybe mirah for typed and then use jruby to call that code via Java integration
<enebo> claudiuinberlin: we have been working towards internally collecting runtime type info and using it for things like inlining
<enebo> although much of our code already will inline via just being written in Java itself
<enebo> but some things like blocks are something the JVM cannot do well
<claudiuinberlin> will be nice that jruby can log some errors
<enebo> but we are just using it to look for monomorphism and not validation
<claudiuinberlin> aaa
<claudiuinberlin> ok, so dead end :)
<claudiuinberlin> I return to modern java, I discover we can have `var` :)
<enebo> yeah the slow path to more type inference in the language begins!
<claudiuinberlin> in 20 years will happen :)
<enebo> yeah we can only move so far forward in Java support too to not lose our users so var is a few years away for us
<enebo> It is too bad too since that inference could be a compiler plugin and used in older Javas
<claudiuinberlin> that will never happen :)
<enebo> It requires no runtime changes. It is just the compiler
<enebo> yeah I know :P
<claudiuinberlin> either way you go with oracle java ONE_VERSION_PER_YEAR or you go home
<claudiuinberlin> even, until now, I wrote in my plain amazing java 8 :)
<enebo> It is weird to see a language change and contort to accept something which would have been a better fit had it originally been in the language
<enebo> inference itself seems to not be too tough a change for the language
<enebo> closures was not simple
<enebo> generics was painful
<claudiuinberlin> yes, generics :D
<claudiuinberlin> jesus mother of the language
ebarrett has joined #jruby
ebarrett has quit [Client Quit]
ebarrett has joined #jruby
claudiuinberlin has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
claudiuinberlin has joined #jruby
joast has quit [Quit: Leaving.]
joast has joined #jruby
claudiuinberlin has quit [Quit: Textual IRC Client: www.textualapp.com]
shellac has joined #jruby
xardion has quit [Remote host closed the connection]
xardion has joined #jruby
dipnlik has joined #jruby
shellac has quit [Ping timeout: 256 seconds]
drbobbeaty has quit [Ping timeout: 240 seconds]
drbobbeaty has joined #jruby
jrafanie_ has joined #jruby
jrafanie has quit [Ping timeout: 240 seconds]
ahorek has joined #jruby
ahorek has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
iNeWeaBliN has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
bga57 has quit [Ping timeout: 256 seconds]
bga57 has joined #jruby
lanceball has quit [Excess Flood]
lanceball has joined #jruby
jrafanie has joined #jruby
jrafanie_ has quit [Ping timeout: 240 seconds]
rdubya has quit [Quit: Leaving.]
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<GitHub172> [jruby] p-mongo opened issue #5247: 9.2.0.0 requires java 8 but states java 7 as requirement https://git.io/fNtBE
havenwood has quit [Quit: ZNC 1.7.0 - https://znc.in]
jrafanie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
havenwood has joined #jruby
havenwood has joined #jruby
havenwood has quit [Changing host]
dipnlik has quit [Quit: Connection closed for inactivity]
drbobbeaty has joined #jruby
<GitHub83> [jruby] p-mongo opened issue #5248: jruby 9.2.0.0 on s390x https://git.io/fNtgS
slyphon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
slyphon has joined #jruby
<GitHub75> [jruby] p-mongo closed issue #5248: jruby 9.2.0.0 on s390x https://git.io/fNtgS