akp has quit [Read error: Connection reset by peer]
akp_ has joined #jruby
Aethenelle has joined #jruby
oncall-pokemon has joined #jruby
camlow325 has joined #jruby
Joufflu has joined #jruby
<codefinger>
enebo: do you think this change should be prerequisite on said "mechanism for adding our own definitions to the stdlib"? Or should i try to improve it as mentioned in mine and kares comments? https://github.com/jruby/jruby/pull/4698
camlow325 has quit [Quit: WeeChat 1.5]
<enebo>
codefinger: yeah I don't know. I guess we should not hold you up unless we have a more concrete idea
<enebo>
codefinger: we can always migrate later. I just was realizing how nice it would be to have a standard mechanism for this
<codefinger>
enebo: it's not holding me up. this is an ergonomic change. i'd rather get it right than introduce something that might be troublesome
<codefinger>
enebo: would a simple mechanism be a set of files that are copied onto the stdlib (i.e. never change existing files)?
<codefinger>
s/onto/into/
<enebo>
codefinger: we actually maintain our stdlib as a separate repo and it fetches from MRI then we overlay onto our repo (and look for changes which are not in our repo)
<enebo>
codefinger: but maintaining the delta itself is something we would like to get smaller which is why I made mention in the PR. Since these are new non-overlapping methods it seems like it could be in another file if we had some smarts in loading
<enebo>
err method
<codefinger>
i'm significantly more confused now than when this convo started
<enebo>
haha
<codefinger>
it sounds like my changes should not go in lib/ruby/stdlib/?
<enebo>
codefinger: so you are patching in a new method and putting it into an existing stdlib file means we need to maintain a delta of that file now since we source them from MRI
<codefinger>
actually, i put the method in a new file. but i do need to edit uri.rb to require it
<enebo>
codefinger: my pondering on the PR was that if we could seamlessly load a second file with our additions (but without editing the original) then we could never have any deltas to maintain
<codefinger>
ok i get that
<enebo>
codefinger: how to do that is what I have no handle on
<codefinger>
can that mechanism be one file in lib/ruby/stdlib/ that contains only `require` calls?
<enebo>
codefinger: I mentioned having a file further up the load path and that would require_relative the real stdlib but that feels icky to me so it was just an illustration
<enebo>
codefinger: it could be but we would then need to rename files in MRI stdlib when we pulled them over
<enebo>
codefinger: which, to me, does not really improve the maintenance situation a lot
<enebo>
codefinger: I think what would be nice would be some feature like 'after_require "stdlib/uri", "jruby_uri"'
<enebo>
codefinger: this would be put into our kernel ruby files or something and it would be a post hook which would require jruby_uri if it loads/requires stdlib/uri
<codefinger>
i see
<enebo>
codefinger: it is a bit opaque at one level which some people may dislike but it would make maintenance really simple
<enebo>
codefinger: it also solves any monkey patching as well so we could get rid of a few things we have now
<codefinger>
i could also put `java.net.URI.new` in a helper method in my app :)
<enebo>
codefinger: it is just an idea though
<enebo>
codefinger: well I don't have an issue with to_java getting added to uri now
<enebo>
codefinger: my musing as I said was not to derail but more to see if it got any reaction
<codefinger>
seems like a lot of work if it's only needed for this one thing though. but i imagine there are other potential use cases for tweaking stdlib
<enebo>
codefinger: yeah we add our own methods to some types and we replace the definitions sometimes as well
<enebo>
codefinger: ultimately it would be nice if all our changes were just upstream in MRI's copy but realistically it is weird for them to have a to_java
<enebo>
codefinger: and Ruby Java Bridge may not dig that too
<enebo>
hook for pre/post require seems like it would solve this nicely but I bet people would think we were the antichrist because it gives a nice generic way of adding monkeypatches
<enebo>
and it is a bunch of hidden implicit behavior triggering
<enebo>
(e.g. if you do not know the hook is registered you will throw your keyboard against the wall when you realize a hook replaced a definition on you)
<enebo>
so in my mind I am not sure it is a good or bad solution to this in the long run
<enebo>
the simplest solution is to just maintain the deltas
* codefinger
nods
nirvdrum has joined #jruby
subbu is now known as subbu|afk
Joufflu has quit [Read error: Connection reset by peer]
Joufflu has joined #jruby
subbu|afk is now known as subbu|lunch
Aethenelle has quit [Quit: Aethenelle]
camlow325 has joined #jruby
Aethenelle has joined #jruby
<GitHub196>
[jruby] headius pushed 1 new commit to ruby-2.4: https://git.io/vQa1S
<GitHub196>
jruby/ruby-2.4 ddec5e2 Charles Oliver Nutter: Check for negative fileno....
subbu|lunch is now known as subbu
Joufflu has quit [Ping timeout: 268 seconds]
Joufflu has joined #jruby
subbu is now known as subbu|busy
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
akp has joined #jruby
oncall-pokemon has quit [Quit: Connection closed for inactivity]