tenderlove has quit [Ping timeout: 265 seconds]
FINbit has joined #jruby
pawnbox_ has quit [Remote host closed the connection]
tenderlove has joined #jruby
bga57 has joined #jruby
pawnbox has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
prasunanand has joined #jruby
donV has quit [Quit: donV]
thedarkone2 has quit [Quit: thedarkone2]
FINbit has quit [Ping timeout: 240 seconds]
FINbit has joined #jruby
donV has joined #jruby
FINbit has quit [Ping timeout: 240 seconds]
FINbit has joined #jruby
olle has joined #jruby
olle has quit [Quit: olle]
benhoi has quit [Ping timeout: 256 seconds]
olle has joined #jruby
claudiuinberlin has joined #jruby
FINbit has quit [Ping timeout: 240 seconds]
vtunka has joined #jruby
Puffball has quit [Remote host closed the connection]
<GitHub129> [jruby] olleolleolle opened issue #4341: 9.1.6.0: block arguments *_ and &_ at the same time fails with DynamicScope1 only supports scopes with 1 variables https://git.io/v1I60
<olle> A delectable corner-case.
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnock_ has joined #jruby
jensnock_ has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
FINbit has joined #jruby
jensnockert has quit [Remote host closed the connection]
vali has quit [Quit: Leaving]
vali has joined #jruby
Puffball has joined #jruby
olle has quit [Quit: olle]
claudiuinberlin has quit [Remote host closed the connection]
claudiuinberlin has joined #jruby
olle has joined #jruby
jensnockert has joined #jruby
vtunka has quit [Quit: Leaving]
<GitHub25> [jruby] eregon pushed 4 new commits to truffle-head: https://git.io/v1I9q
<GitHub25> jruby/truffle-head 69662f4 Benoit Daloze: [Truffle] Exclude test/truffle/cexts, they are all 1/2-lines files.
<GitHub25> jruby/truffle-head 989caa7 Benoit Daloze: [Truffle] Ignore copyrights in the parser for now.
<GitHub25> jruby/truffle-head 4e51888 Benoit Daloze: [Truffle] Account for other copyrights.
shellac has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
vtunka has joined #jruby
jensnockert has joined #jruby
Puffball has quit [Ping timeout: 248 seconds]
Puffball has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
<travis-ci> jruby/jruby (truffle-head:d34b151 by Benoit Daloze): The build was broken. (https://travis-ci.org/jruby/jruby/builds/179395722)
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
Puffball has quit [Remote host closed the connection]
jensnockert has quit [Read error: Connection reset by peer]
<vali> hi
jensnockert has joined #jruby
<vali> I have a question ... I use logstash and want to generate a couple of events/messages from some hash. The issue is that I don't know how to create a new event (http://www.rubydoc.info/gems/logstash-event/1.1.5/LogStash/Event)
Puffball has joined #jruby
Puffball has quit [Remote host closed the connection]
Puffball has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
Puffball has quit [Remote host closed the connection]
Puffball has joined #jruby
moritzw has joined #jruby
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
drbobbeaty has joined #jruby
<moritzw> Hi, I'm trying to port an older project to the newest JRuby version. While compiling im getting an "Not enough child node declarations found." error for a class extending CoreMethodNode. It lists "executeVoid(VirtualFrame),...". Do I have to implement all of these execute functions and if so, is there some default "error" if, for example executeBoolean() does not make sense for this method?
jensnockert has quit [Read error: Connection reset by peer]
claudiuinberlin has quit [Ping timeout: 256 seconds]
claudiuinberlin has joined #jruby
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
bbrowning has joined #jruby
claudiuinberlin has quit [Remote host closed the connection]
jensnockert has joined #jruby
claudiuinberlin has joined #jruby
tcrawley-away is now known as tcrawley
jensnockert has quit [Read error: Connection reset by peer]
claudiuinberlin has quit [Ping timeout: 240 seconds]
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
shellac has quit [Quit: Leaving]
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
tcrawley is now known as tcrawley-away
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
Puffball has quit [Remote host closed the connection]
Puffball has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
Puffball has quit [Remote host closed the connection]
jensnockert has joined #jruby
vtunka has quit [Quit: Leaving]
jensnockert has quit [Read error: Connection reset by peer]
vtunka has joined #jruby
jensnockert has joined #jruby
Puffball has joined #jruby
AckZ has quit []
<chrisseaton> moritzw: Do you mean your own class extending CoreMethodNode?
jensnockert has quit [Read error: Connection reset by peer]
<chrisseaton> executeVoid is a concrete method in RubyNode - it's not abstract
<moritzw> yes, I have FoldExprNode which extends CoreMethodNode
<chrisseaton> What exactly is your error? As I say it's concrete so that doesn't make any sense
jensnockert has joined #jruby
<moritzw> Copy&Paste:
<moritzw> [ERROR] /home/moritz/projects/uni/impl/jruby_current/truffle/src/main/java/org/jruby/truffle/core/behavior/BehaviorModule.java:[31,27] error: Not enough child node declarations found. Please annotate the node class with addtional @NodeChild annotations or remove all execute methods that do not provide all evaluated values. The following execute methods do not provide all evaluated values for...
<moritzw> ...the expected signature size 2: [executeVoid(VirtualFrame), executeNotProvided(VirtualFrame), executeBoolean(VirtualFrame), executeInteger(VirtualFrame), executeLong(VirtualFrame), executeDouble(VirtualFrame), executeDynamicObject(VirtualFrame), executeObjectArray(VirtualFrame), executeBehaviorObject(VirtualFrame), execute(VirtualFrame)].
<moritzw> [ERROR] /home/moritz/projects/uni/impl/jruby_current/truffle/src/main/java/org/jruby/truffle/language/yield/CallBlockNode.java:[36,16] error: Incompatible abstract execute methods found [Object execute(VirtualFrame,[])].
<moritzw> I'm still not that much into the jruby/truffle internals to see what to do now or how to fix this.
<chrisseaton> This is a DSL error - your specialisations don't match the signature of the child nodes. Can you share the code of relevant node?
<moritzw> This is the truffle/src/main/java/org/jruby/truffle/core/behavior/BehaviorModule.java file mentioned in the error
<chrisseaton> Try CoreMethodArrayArgumentsNode instead
<moritzw> That seems to have worked. Thanks a lot!
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
<chrisseaton> I factored that out a while ago
<chrisseaton> If you are working with JRuby+Truffle I strongly recommend rebasing very often - you could get left behind with changes that I can't remember how to help you fix
<chrisseaton> We had some code that someone worked on and we basically had to bin it as they hadn't rebased in six months
tcrawley-away is now known as tcrawley
pawnbox has quit [Ping timeout: 250 seconds]
pawnbox has joined #jruby
claudiuinberlin has joined #jruby
alxs has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
tenderlove has quit [Ping timeout: 260 seconds]
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
yahonda has joined #jruby
enebo has joined #jruby
jensnockert has joined #jruby
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
vtunka has quit [Quit: Leaving]
jensnockert has quit [Read error: Connection reset by peer]
jensnockert has joined #jruby
vtunka has joined #jruby
jensnockert has quit [Remote host closed the connection]
bga57 has quit [Ping timeout: 260 seconds]
donV has quit [Quit: donV]
<olle> Hello channel. I labored to add detail to this Bundler issue, which plagues 9.1.6.0 users who use --jobs and --deployment settings https://github.com/bundler/bundler/issues/5202
<olle> It's a Bundler issue, indeed, but the stacktrace I added as detail, in my comment, does it jog anyone's memory? Why can it fail?
<subbu> chrisseaton, thanks for the link. will take a look this week.
<olle> enebo: G'day! I registered a mad-cap issue - https://github.com/jruby/jruby/issues/4341
pawnbox has quit [Remote host closed the connection]
<enebo> olle: our generated dynamic scope optimization in 9.1.6 caused some issues so thanks for finding another one :)
pawnbox has joined #jruby
<olle> enebo: Thank you for the optimization work. Our gratitude is expressed with these offerings of GitHub issues, though.
<olle> enebo: I'm excited that 9K is doing cool stuff.
<olle> enebo: Is there a special-case for underscore-named variables?
<olle> "blockargs", if you will
<enebo> olle: I was just trying to remember how we handle it
<enebo> since def foo(_, _, _, _) is legal
<olle> enebo: The linked issue points to a Rubocop cop which tries to codify a "don't do this".
vali has quit [Read error: Connection reset by peer]
<FINbit> /wun/win 2
<enebo> olle: wow this might be another bug which the new code unmasked
<enebo> olle: jruby -S ast -e 'def foo(_, _, _); end; foo(1,2,3)'
<enebo> olle: you can see the 2 and 3 _ seem to have the same name
<olle> checking... ooh
bbrowning is now known as bbrowning_away
<enebo> hahaha
<olle> enebo: Quite.
<enebo> subbu added some code to ignore _$0 specifically which is why it shows up like that
<subbu> what did i do?
<enebo> so I can remove my special $n logic and then delete his ignore conditional and then we might still have an issue or maybe not :)
<subbu> s/do/break/ i guess looking at the context
<enebo> subbu: in staticscope you added a check to ignore the extra magic hidden lvars we make in the parser for multiple _ in a signature
<enebo> subbu: I was trying to figure out why all extras were called _$0 and not newer values like _$1 _$2
<enebo> subbu: but I knew in my head IR does not need these
<subbu> why did i add that check? :)
jensnockert has joined #jruby
<enebo> subbu: Fix #1969: Make StaticScope and IRScope agree on var slot assignment
<subbu> anyway, looks like you are on top of it. :)
bga57 has joined #jruby
<enebo> subbu: yeah I am looking at it
alxs has quit [*.net *.split]
moritzw has quit [*.net *.split]
drbobbeaty has quit [*.net *.split]
amdprophet has quit [*.net *.split]
deathy has quit [*.net *.split]
moritzw has joined #jruby
<subbu> enebo, looks like i am claiming in https://github.com/jruby/jruby/commit/4303b57ed0c0e1e5cf9c84fd39a3fbaa918700ec#commitcomment-7813105 that there is a mri bug there.
drbobbeaty has joined #jruby
<subbu> anyway .. not sure why _ args need slots in static scope.
<enebo> subbu: it was how we did zsuper in the past
<subbu> i see.
<enebo> subbu: we would record all slots as fake varnames so if zsuper happened we would just push them all
<subbu> got it
<enebo> subbu: so we should not need that now
* subbu goes back to wmf land
<subbu> ping me if you need me to look at anything.
<enebo> subbu: yeah looks like deleting all this just fixed it
<enebo> OH I might even know why too
deathy has joined #jruby
<enebo> it would ignore _$0 in static scope but we still made an ArgumentNode with a name of _$0
<enebo> probably * and/or & are special enough where IR emitted something with an lvar of _$0 in it
<enebo> and of course we have null protection
<enebo> well we did
<enebo> ok I will verify that but if so then this is fixed
<subbu> enebo, in any case, worth verifying that the tests in https://github.com/jruby/jruby/commit/4303b57ed0c0e1e5cf9c84fd39a3fbaa918700ec#commitcomment-7813105 works propoerly and also updating the spec there if necessary.
<enebo> subbu: will do
amdprophet has joined #jruby
<enebo> subbu: _$0(0:-1:local=true) = reify_closure(%cl_1_3)
moritzw has quit [Quit: ChatZilla 0.9.93 [Firefox 50.0/20161104212021]]
<subbu> what am I looking at there?
<enebo> that is some IR generated. It uses the name from ArgumentNode
<enebo> so we would try and assign that as an lvar and it does not exist because of the code in staticscope
vtunka has quit [Quit: Leaving]
<enebo> subbu: interestingly I found something we are broken with in zsuper
<subbu> interesting. :)
<enebo> multiple _ in method signature if it calls zauper it passes the same value for _ to superd method
<subbu> so, IR code is broken?
<enebo> yeah our zsuper handling does not handle this
<enebo> eahc _ is a distinct value for zsuper even though it is not actually a valid lvar
<subbu> k
<enebo> our old way of faking it out stunk but it does actually fix it for us
<subbu> right. it should be .. but curious why the code depends on that.
<subbu> why the new code i mean
<enebo> but then it messes with arity possibly
<subbu> i cannot look now .. but, happy to review code later.
<enebo> yeah I don’t get that yet either
<enebo> subbu: ok since I just talked to you it is because now with fix we recv_reqd_arg for all _ args and the zsuper build then realizes it is three args
<enebo> subbu: we must have code in IRBuilder to skip _$0 or something there as well? anyways I am on a path to enlightenment
tenderlove has joined #jruby
<subbu> i wish you well on that path.
thedarkone2 has joined #jruby
tenderlove has quit [Read error: Connection reset by peer]
tenderlo_ has joined #jruby
<GitHub36> [jruby] enebo opened issue #4342: zsuper does not cope with n repeated _ well https://git.io/v1LuA
<GitHub42> [jruby] enebo pushed 1 new commit to master: https://git.io/v1LzY
<GitHub42> jruby/master a6a0479 Thomas E. Enebo: Fixes #4341. 9.1.6.0: block arguments *_ and &_ at the same time fails with DynamicScope1 only supports scopes with 1 variables
<GitHub148> [jruby] enebo closed issue #4341: 9.1.6.0: block arguments *_ and &_ at the same time fails with DynamicScope1 only supports scopes with 1 variables https://git.io/v1I60
camlow325 has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
subbu is now known as subbu|lunch
jensnockert has quit [Remote host closed the connection]
<olle> Thanks for the attention today, ciao.
olle has left #jruby [#jruby]
<nirvdrum> enebo: Have you looked into the updated String methods at all? E.g., upcase now supporting non-ASCII chars?
drbobbeaty has quit [Quit: Textual IRC Client: www.textualapp.com]
bbrowning_away is now known as bbrowning
drbobbeaty has joined #jruby
drbobbeaty has quit [Client Quit]
claudiuinberlin has quit []
FINbit has quit [Ping timeout: 240 seconds]
<GitHub53> [jruby] eregon pushed 1 new commit to truffle-head: https://git.io/v1L6N
<GitHub53> jruby/truffle-head b0beb30 Benoit Daloze: [Truffle] Better parameter names in ShareInternalFieldsNode.
<enebo> nirvdrum: I have not
jensnockert has joined #jruby
alxs has joined #jruby
subbu|lunch is now known as subbu
<travis-ci> jruby/jruby (truffle-head:b0beb30 by Benoit Daloze): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/179515369)
<enebo> I broke CI with my last fix but I am working on that issue now
<enebo> I ripped out some wallpaper which sort of happenstance made that spec pass
<eregon> enebo: Why is memory usage so important in particular for Ruby users? I know heroku's dynos 512MB by default, but that's one of the many possible deployments.
<eregon> bigger deployments always have a "decent" amount of memory by today's standard I'd guess (who has a laptop with 512MB?)
<enebo> eregon: I talked to someone at Rubyconf who basically said they have 250 servers each running n listeners
<enebo> eregon: but you guys are targeting native c ext so you will never likely get it to work multithreaded
<eregon> that can't be good for total memory usage :p
<enebo> eregon: if you can run multi-threaded we do end up using much less memory rthan MRI but it takes different deployment
<eregon> enebo: he. I'm working on making J+T a faily safe multithreaded Ruby impl
<eregon> doesn't say I'll sove the Cext thread-safety issue, true
<enebo> eregon: oh no doubt but how can you make the Cext safe?
<eregon> isolated copy per thread of each extension?
<enebo> eregon: I just think if that works you will be really lucky without the community putting in effort in making the cext safe
<enebo> eregon: yeah I wondered about that
<eregon> we could have different instances of Sulong (the LLVM bitcode interpreter) for instance
<eregon> Koichi solution was "cext only in the main guild" ahah
<enebo> eregon: hey if that works then that will be a solution for targetting cext I guess I don’t know how possible it is or not
<eregon> yeah, needs trying :)
<enebo> eregon: the broader point is people evaluate us using a single thread app and they compare us with MRI
<eregon> Do you know any good thread usnafe C-ext? :)
<eregon> unsafe*
<enebo> eregon: and compare us against startup time
<enebo> eregon: anything whihc uses C module vars
<eregon> yeah, it's ahrd to compare fairly and usefully
<enebo> eregon: if they do not have a word like ‘context’ I would make a bet they break across threads without locking
<eregon> the per-file static vars?
<enebo> yeah I think that is what I mean :)
<eregon> we could also lock when going to cext, but that wont scale obviously
<enebo> basically you put a void *engine at the top of a c file and two threads expect they can it at same time and I would bet many exts will just break
<enebo> I guess it depends on whether the library is rentrant too
<eregon> chrisseaton once added multi-threaded startup by parsing in parallel, that was an interesting combination
<enebo> but I admit it is all antecdotal on my part
donV has joined #jruby
<eregon> I would hope databse driver libs are thread-safe, but maybe the Ruby c-ext part are not
<chrisseaton> nokogiri - isn't that a threading disaster?
<chrisseaton> The Rubinius people thought so, but I didn't know the details
<enebo> yeah that is an idea we thought about but without actually knowing which types are getting set when it is complicated
<eregon> yeah nokogiri is a hot mess
<enebo> chrisarcand: Rubinius “perople” think a lot of things :)
<enebo> hahaha
<enebo> chrisarcand: sorry buddy :)
<enebo> chrisseaton: yeah but I believe that problem went away at some point
<eregon> but IIRC nokogiri works OK as long as you don't share any nodes/graphs between threads
<enebo> chrisseaton: but with that said I would expect there might be safety issues in nokogiri
<enebo> eregon: and hey even Java made that illegal at an API level :)
<chrisseaton> enebo: so it's fine for multithreading as long as you don't use it from multiple threads?
<enebo> eregon: maybe libxml2 does too?
<enebo> chrisseaton: hahahahah yeah I don’t know :)
<chrisseaton> afk
<enebo> chrisseaton: for nokogiri specifically I don’t know because I am not sure if people have hit it enough to hit any races or not but I would not be surprised if it is broken at some level. Bigger issue is no one uses these libraries in MT way
<enebo> chrisseaton: I fully admit it might all just work out but I do remember we ended up with locks in our impl for some reason
<enebo> eregon: anyways so my main memoty point is that on one logical level if you support multiple threads then you have a story of how you can use less memory than MRI but most people evaluating look at things from an MRI-first perspective
<enebo> eregon: so they fire up a simple hello world rails app and then fire up ps and compare
<enebo> eregon: so that is partially just an education challenge but you will get lots of walk aways from poor evaluation
<enebo> eregon: and if multi-threading does not pan out then you become pretty specialized on eventual performance sorts of workloads
<enebo> My 2cents
<enebo> oh and since it was brought up about parallel parsing I will say our extended idea on that is flight recorder in limited cases. If you know order of how all classes load the next time you could then load files our of order…but I think even that it iffy because Ruby is reflective enough that you might need to opt out of loading anything which waa recorded using any reflective methods
<enebo> I do think at a minimum all core classes could be recorded and loaded that way since it is your code so long as you were disciplined
<eregon> does the JVM do parallel classloading? or maybe jsut the bytecode parsing part?
<GitHub71> [jruby] matugm opened pull request #4343: Add optional precision for Float#floor (ruby-2.4...ruby-2.4) https://git.io/v1LyJ
<eregon> enebo: for big apps I would guess it might be a reasonable trade-off to use more memory for better speed/more clients
<headius> it certainly can load classes in parallel on isolated classloaders, but on the same classloader I think there's issues
<headius> I have had to put locks around class definition for example
<eregon> interesting, there is at least some synchronization to invalidate "no subclass for X" but maybe that's only a small part of classloading
<flavorjones> eregon just to provide some context: MT with nokogiri is limited by the underlying libxml2 implementation.
<enebo> eregon: I can definitely say we have gotten multiple users from running off the MRI runway and scaling out by making their apps multi-threaded
<flavorjones> nokogiri-on-jruby, with xerces/nekohtml is likely going to have different characteristics
<enebo> eregon: in one case saving like 94% of their EC2 monthly bill (and it was a big bill)
claudiuinberlin has joined #jruby
<enebo> flavorjones: as of now Ruby+Truffle is going for native cext over trying to support our API so they will be really interested in any insights you have
<donV> Hi all!
<eregon> flavorjones: thanks for the info
<headius> C exts can certainly be made safe, so perhaps this effort will be able to help find and fix issues
<flavorjones> I'm happy to chat about libxml2's behavior. I also want to note that I think we compile libxml2 without the threadsafe option, because MRI
<flavorjones> s/we/nokogiri maintainers/
<eregon> flavorjones: I don't have much time now, but it would be very interesting to get an idea of what is unsafe/safe in nokogiri/libxml2
<flavorjones> in any case, ping me if you'd like to chat at all
<eregon> flavorjones: let's do it another time :)
<flavorjones> nod
alxs has quit [Ping timeout: 245 seconds]
jensnockert has quit [Remote host closed the connection]
<GitHub184> [jruby] bjfish pushed 1 new commit to truffle-head: https://git.io/v1LHI
<GitHub184> jruby/truffle-head 81a3a8c Brandon Fish: [Truffle] Fix heredoc term lexer
pawnbox has quit [Remote host closed the connection]
drbobbeaty has joined #jruby
alxs has joined #jruby
<GitHub177> [jruby] nirvdrum pushed 1 new commit to truffle-head: https://git.io/v1L7R
<GitHub177> jruby/truffle-head 00938d2 Kevin Menard: [Truffle] Consolidated support code for AOT image.
drbobbeaty has quit [Quit: Textual IRC Client: www.textualapp.com]
drbobbeaty has joined #jruby
<travis-ci> jruby/jruby (truffle-head:00938d2 by Kevin Menard): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/179539388)
tcrawley is now known as tcrawley-away
alxs has quit [Ping timeout: 246 seconds]
<chrisseaton> enebo: we do aspire to support your API in the future by the way, with a Truffle Java interpreter
<enebo> chrisseaton: well that is a good question…as you said in your talk we did not delineate our API enough
<enebo> chrisseaton: we planned on partially addressing that but I will we blew it so we need to probably start evolving to a reasonable portable API
<enebo> chrisseaton: our ability to call methods and stuff is fine
<chrisseaton> enebo: like with cexts you could also use our C/Java interpreters
<enebo> chrisseaton: if that does work then yeah that would make life much simpler
<nirvdrum> enebo: Having an @API annotation would be fantastic. We've discussed before, and kares probably could chime in too. The problem being that it's really hard to refactor things that are public or protected.
<enebo> chrisseaton: I don’t mean to be pessimistic either I just am not really cautiously optimistic but you guys are performing some magic so I hope you succeed
<enebo> chrisseaton: I am half thinking for many things we do we should make a static method import API
<chrisseaton> enebo: you've got some major cruft in your options class if you haven't looked recently - wasn't sure if that was an API think as well?
<enebo> chrisseaton: so newString(“my string”) (and probably some other parameter to indicate context/runtime/scripting_container
<enebo> chrisseaton: yeah in some cases hopefully it is all noops now
<enebo> chrisseaton: but our codebase is old and we also live experimented with some features we probably shouldn’t have
<enebo> chrisseaton: that newString probably is also overloaded for things like non-strings and encodings but it would be a small set of methods which would fullfull Stringness
<enebo> chrisseaton: in Ruby+Truffle that could end up a Rope
<chrisseaton> Oh right yeah it could be a common API for both of us
<enebo> chrisseaton: I think the only larger issue in a future API like this would be IRubyObject or something?
<enebo> chrisseaton: IRubyObject has been something we inherited and so if we were starting over it would either be concrete or much smaller
<enebo> perhaps even multiple interfaces
<chrisseaton> You could have an interface JRubyAPI, and you do everything with calls in that interface - and treat objects as opaque handles
<chrisseaton> JRubyAPI.send("+", myFixnumA, myFixnumB)
<enebo> chrisseaton: yeah I suppose it would be the simplest way to work around it
<chrisseaton> Do everything via send
<enebo> chrisseaton: it might actually make it push towards a more Ruby-way of calling sttff
<chrisseaton> I'm stabbing in the dark here though without knowing what real JRuby exts look like
<enebo> one major benefit of native APIs is not performing dynamic dispatch though
<enebo> when you know it
<enebo> but even that would be API.set(method, arg1, arg2)
<enebo> s/set/send/
<chrisseaton> The API could cache for you
<chrisseaton> Hard without any state
<enebo> chrisseaton: much of JRuby’s extensions are to call into a Java library
<enebo> chrisseaton: so they do less Ruby stuff other than some coercion
<chrisseaton> You could do JRubyAPI.send(myCallSite, "+", ...)
<enebo> chrisseaton: yeah if you want to have it in a callsite
<chrisseaton> Yeah, you pay for the complexity if you want the caching, or leave it out if you don't
<enebo> chrisseaton: I think some people kind of treat Java like Ruby refinements htough
<enebo> chrisseaton: they always want to call a single version and they want that call to be as light as possible
<enebo> chrisseaton: but people do dyncall to Ruby from their extensions
<enebo> chrisseaton: so a clean API for that is great especially one which can callsite cache
<GitHub162> [jruby] enebo pushed 1 new commit to master: https://git.io/v1tkU
<GitHub162> jruby/master a416abe Thomas E. Enebo: Fixes #4342. zsuper does not cope with n repeated _ well....
<GitHub140> [jruby] enebo closed issue #4342: zsuper does not cope with n repeated _ well https://git.io/v1LuA
<lopex> nirvdrum: you mean the case_map thing in encodings ?
jensnockert has joined #jruby
cprice404 has quit [Quit: Konversation terminated!]
<nirvdrum> lopex: I'm talking about things like the downcase example in https://blog.blockscore.com/new-features-in-ruby-2-4/
<nirvdrum> "Case sensitivity for unicode characters"
<lopex> and special impl for most encodings
<chrisseaton> enebo: here's an idea - the Ruby C API is effectively a big flat namespace - let's basically recreate that interface as a Java interface, method for method
<chrisseaton> it might make translating C exts to Java easier as well
<nirvdrum> lopex: It looks like it'll be a lot of work.
<lopex> nirvdrum: yeah, just saw that too
<lopex> but for ascii and unicode not that much I guess
<chrisseaton> rb_define_method -> JRubyAPI.defineMethod(module, name, (args) -> { })
<enebo> chrisseaton: well that was where the idea of static imports came from but being idenfical past method name I don’t know
<lopex> nirvdrum: too bad iso* have quite of the impls, not sure how they differ
<nirvdrum> lopex: I haven't looked into it. Is there a way to do this sort of transformation without a lookup table?
<nirvdrum> You can bit twiddle with ASCII chars easily enough.
<lopex> nirvdrum: on ruby side rb_str_casemap seems to be quite centralized, too bad these methods look at those flags so often
<lopex> nirvdrum: some of those have quite a bit of logic, plain lookup table would be eaasier :P
<lopex> nirvdrum: and I'm surprised Onigmo doesnt even mention case_map
<GitHub137> [jruby] enebo pushed 1 new commit to master: https://git.io/v1tq2
<GitHub137> jruby/master 2ae066a Thomas E. Enebo: Add specs testing zsuper + multiple _ parameters
claudiuinberlin has quit [Remote host closed the connection]
<lopex> nirvdrum: actually I dont see any tables were introduced
claudiuinberlin has joined #jruby
<enebo> eregon: ^ you wonder about Rubyists and memory :)
tcrawley-away is now known as tcrawley
<enebo> lopex: is that a saving per encoding?
<enebo> lopex: or per bytes of codepoints?
<lopex> enebo: it's just for passing additional flags in codepoint
<lopex> as args
<enebo> lopex: per codepoint?
<enebo> lopex: in the defintiion?
<lopex> enebo: as a config
<enebo> lopex: config for a single string though?
<lopex> enebo: yes, but for unicode they seem to do something more
<lopex> enebo: yep, they pack in unicode folds
<lopex> enebo: ^^
<lopex> so it's packed into "to" components in https://github.com/ruby/ruby/blob/trunk/enc/unicode.c#L79
<nirvdrum> lopex: I'm confused. There's an explicit notion of a codepoint?
<nirvdrum> I thought they just used a byte*, p, end, and the encoding to work out the boundaries ad hoc.
<lopex> nirvdrum: it always was, for any folding you always use codepoint
<lopex> nirvdrum: same for semantics checking
<lopex> they just hack extra feature info into codepoint in unicode folds
<nirvdrum> lopex: I guess I never looked at their code. jcodings doesn't have that, does it?
<lopex> nirvdrum: it does mostly, but for perf reasons there's byte/p/edn equivalents
<lopex> (value checking)
<lopex> nirvdrum: just grep jcodings and joni sources for mbcToCode
<lopex> they mix length with these codepoints
<lopex> actually this seems to be the only table added
<nirvdrum> lopex: Right. But jcodings doesn't have a codepoint type, right?
<lopex> nirvdrum: right, it uses an int
<lopex> ah, this was what you meant by explicit ?
<nirvdrum> Yes.
<nirvdrum> But I see that you have an int now.
<nirvdrum> I was thinking of just the byte[] case.
<nirvdrum> Taking 3 bits out of a byte is going to be a lot :-)
<lopex> yeah
<lopex> for unicode you have 22 bits in a codepoint now
<nirvdrum> I'll need to look at this code a bit more. They do have a case where a 32-bit unsigned int maps back to a char for some encoding.
claudiuinberlin has quit []
<lopex> they have a 25 bit fence tehre
<nirvdrum> Ahh. If this is only for unicode, maybe that's okay.
<lopex> yes
m4rCsi has quit [Ping timeout: 252 seconds]
<lopex> nirvdrum: actually I havent seen the 32 signed bit ussue yet (for that GB-something thingy)
<nirvdrum> There's a spec for it.
<nirvdrum> Let me find it.
<lopex> so then we must go long for these (but only for processing)
<lopex> passing is ok
<nirvdrum> Yeah. We had to use a long and then bounds check on it.
<lopex> bounds check it ?
subbu is now known as subbu|afk
yahonda has left #jruby [#jruby]
tcrawley is now known as tcrawley-away
lanceball is now known as lance|afk
<nirvdrum> lopex: Make sure the long value fits within the bounds of an unsigned int.
<lopex> nirvdrum: just for validation ?
subbu|afk is now known as subbu
<nirvdrum> Yes.
bbrowning is now known as bbrowning_away
<GitHub161> [jruby] enebo pushed 2 new commits to master: https://git.io/v1t0j
<GitHub161> jruby/master 61063db Thomas E. Enebo: This code bugged me consolidated shadow check
<GitHub161> jruby/master 3f16716 Thomas E. Enebo: Additional fix for #4342. I should only say I found _ if it is in fact _.
<GitHub102> [jruby] enebo pushed 1 new commit to master: https://git.io/v1tu3
<GitHub102> jruby/master e56920c Thomas E. Enebo: Intellij autosave is great until you accidentally hit a key right before you commit
<travis-ci> jruby/jruby (master:e56920c by Thomas E. Enebo): The build passed. (https://travis-ci.org/jruby/jruby/builds/179601319)
<headius> enebo: hahah
jensnockert has quit [Remote host closed the connection]
enebo has quit [Quit: enebo]
<GitHub82> [jruby] chrisseaton pushed 8 new commits to truffle-head: https://git.io/v1trP
<GitHub82> jruby/truffle-head e5105db Chris Seaton: [Truffle] Remove duplicated method.
<GitHub82> jruby/truffle-head b8f6300 Chris Seaton: [Truffle] rb_str_cat
<GitHub82> jruby/truffle-head 46c2827 Chris Seaton: [Truffle] Style fix.
alxs has joined #jruby
jega has joined #jruby
<jega> Hi Guys, I have a ruby gem, when I push to artifactory, I get ERROR: While executing gem ... (Errno::ENOENT) No such file or directory - mygem.gem
<jega> this is on ubuntu
<jega> Any help would be appreciated. Thanks.
alxs has quit [Ping timeout: 258 seconds]
<travis-ci> jruby/jruby (truffle-head:493387b by Chris Seaton): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/179613476)