by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Feb 13 2018 14:19
    @chrisseaton banned @brixen
  • Sep 25 2017 12:38
    aardvark179 synchronize #546
  • Sep 25 2017 12:38

    aardvark179 on nokogiri-string-fixes

    Preserve code range when conver… Handle String.force_encoding wh… Fix one more string encoding ca… and 2 more (compare)

  • Sep 25 2017 12:08
    aardvark179 synchronize #487
  • Sep 25 2017 12:08

    aardvark179 on nokogiri-fixes

    Fix rbconfig and mkmf to allow … Fix process spawn redirection f… Fix RTEST to match MRI semantic… and 4 more (compare)

  • Sep 25 2017 10:08
    eregon edited #560
  • Sep 25 2017 10:07
    eregon review_requested #560
  • Sep 25 2017 10:07
    eregon review_requested #560
  • Sep 25 2017 10:07
    eregon review_requested #560
  • Sep 25 2017 10:07
    eregon opened #560
  • Sep 25 2017 10:06

    eregon on jsonnet

    Convert ci.hocon to ci.jsonnet update overlay version (compare)

  • Sep 25 2017 09:06

    eregon on no_warn_graal_when_building_cexts

    (compare)

  • Sep 25 2017 05:29

    pitr-ch on launcher

    (compare)

  • Sep 25 2017 05:28

    pitr-ch on master

    Print irb warning with rest of … Do not read GraalVM version sta… Merge pull request #559 from gr… (compare)

  • Sep 25 2017 05:28
    pitr-ch closed #559
  • Sep 24 2017 21:29
    chrisseaton commented #556
  • Sep 24 2017 21:04
    brauliobo commented #556
  • Sep 24 2017 20:58
    pitr-ch opened #559
  • Sep 24 2017 20:58

    pitr-ch on launcher

    Print irb warning with rest of … Do not read GraalVM version sta… (compare)

  • Sep 24 2017 20:54

    eregon on thread-allow-fixes

    (compare)

Ashish Bista
@ashishbista
@eregon I think this behavior is fine. But, it will cause issues with running unicorn on TruffleRuby because of unicorn's lack of multithreading. Many of major Rails production applications use Unicorn.
Benoit Daloze
@eregon
Right, I guess changing to a multithreaded webserver is probably one thing that would make sense when running on TruffleRuby, even if we try to minimize changes from an app running on MRI
Benoit Daloze
@eregon
It's interesting that Puma tries to fork though, maybe there is some code path there specially handling JRuby but not TruffleRuby
Ashish Bista
@ashishbista
Looks like JRuby doesn't support fork either
ERROR: worker mode not supported on JRuby or Windows
Benoit Daloze
@eregon
Yes, JRuby cannot support fork since the JVM (or at least HotSpot) doesn't support it basically.
So we should take a look at Puma to get a similar message for TruffleRuby
Kevin Menard
@nirvdrum
Really, Kernel.respond_to?(:fork) should be used. But I think Rubinius has a broken implementation of that.
Benoit Daloze
@eregon
Agreed on that. Shouldn't matter, they have fork
Benoit Daloze
@eregon
(it could matter on Windows but Rubinius doesn't support Windows)
Kevin Menard
@nirvdrum
Maybe it was older versions of JRuby then? I think one implementation didn't handle the message correctly and kickstarted this whole process of engine inspection that's proliferated.
Benoit Daloze
@eregon
Could be. I expect it's all fixed now and if not definitely the impl's bug :p
Ghost
@ghost~5377c1e9048862e761fa1c25
I think we've had this conversation before, as well.
We respond to fork with an error if you actually call it, but pretend we won't respond to it?
Benoit Daloze
@eregon
Yes, that's the correct semantics for "unimplemented"/not supported on the platform methods
Benoit Daloze
@eregon
A PR is worth a thousand words of discussion :) puma/puma#1630
Shannon Skipper
@havenwood
@eregon Interesting bug where Kernel.public_send(:lambda) {}.lambda? #=> false
I'll start an issue on the Githubs.
Ghost
@ghost~5377c1e9048862e761fa1c25
Hard to even read that - it does lambda { } and asks if it’s a lambda?
Hard to understand how that’s going wrong.
Benoit Daloze
@eregon
I got an idea, I think we don't skip public send for finding the user call site
@havenwood I am curious what code does that :)
Shannon Skipper
@havenwood
@eregon I can't point to any code actually doing this. Just me messing around :P
Ghost
@ghost~5377c1e9048862e761fa1c25
The human fuzzer.
likemike
@likemik60537659_twitter
What is actually possible with TruffleRuby atm ? What can I do with it ?
Ghost
@ghost~5377c1e9048862e761fa1c25
@likemik60537659_twitter at this stage you can try running your gems test suites, try running your application test suites, talk to us about what you find, let us know what you want to work better. At the moment it probably isn't realistic to just try a large application and expect it to run.
likemike
@likemik60537659_twitter
@chrisseaton Thank you. I do not have an existing application. So I can use truffle to write "raw" ruby but I cant rely on the availability of gems / native extensions right ?
Ghost
@ghost~5377c1e9048862e761fa1c25
Yes if you have a raw program it should generally run, and hopefully run fast, and we will work to fix it if it isn't.
likemike
@likemik60537659_twitter
And this does at the moment work only on Linux platform right ? I cant use the native imgs or graal on Windows
Ghost
@ghost~5377c1e9048862e761fa1c25
Ruby really needs either macOS or Linux at the moment. Windows support for Graal in general is coming, but Ruby might be a bit behind - a lot of our internals use POSIX calls.
likemike
@likemik60537659_twitter
Oh okay. So the Windows support will most likely be useful only with Java(+Script) anytime soon ?
Ghost
@ghost~5377c1e9048862e761fa1c25
We think the Windows Subsystem for Linux does somewhat work.
I wouldn't call it supported any time soon.
likemike
@likemik60537659_twitter
oh right but WSL is not really an answer unfortunately
liamwhite
@liamwhite
And it struck me as odd that the proposed solution didn't just signal the thread instead of polling
e.g. with pthread_kill (posix) or tgkill (linux)
windows doesn't have that exact functionality but you can still force the thread to trap with some hackery
Benoit Daloze
@eregon
@liamwhite but then the signaled thread could be anywhere, and not just at the chosen poll places where it is possible and known how to deoptimize
liamwhite
@liamwhite
I feel like it ought to be possible to figure it out, but then again I do
don't know how to write these*
sigh, phone keyboards.
liamwhite
@liamwhite
all of this does make me wonder, though: if a thread becomes stuck in an uninterruptible state, will the rest of the interpreter still behave or will it lock up completely?
(because signal delivery is paused during kernel tasks)
Benoit Daloze
@eregon
I'll let @chrisseaton reply :)
Lock up depends on the details of the VM and how the system deals with non arriving threads.
Ghost
@ghost~5377c1e9048862e761fa1c25
Yes 'safepoint' is the key - what state is the thread in when you signal it? You need to know what is in each register and stack slot. That's all information that needs to be stored. Do you store it for each instruction?
If a thread becomes stuck in an uninterruptible state then that's just a bug.
The key paper on the topic doesn't even seem to mention the idea that you could signal the thread. That means it's either a non-starter for some basic reason that I don't know, or you've just invented it.