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
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>
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.
<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/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?
<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
<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>
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
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