-
Notifications
You must be signed in to change notification settings - Fork 172
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LSP doesn't run without YJIT (breaks on non-CRuby) #2908
Comments
JRuby doesn't work because RBS isn't yet supported: #2292 |
I suspect there are other places with implicit assumptions that we're always running on MRI. We should probably run against TrufleRuby in CI. |
I worked with @vinistock on adding TruffleRuby to CI a year or so ago. At the time there were some bugs in TruffleRuby that we've since fixed and I'd expect CI to pass. But, maybe that old branch is still around and we can resurrect it. |
Ah, found it: #549 I've restored the branch: |
Kevin is correct in his assessment that the issue is in how we turn on YJIT for Ruby 3.1 and 3.2 on the extension side. We need to also check the Ruby engine as part of enabling YJIT, which should fix this issue. The TruffleRuby CI was for the server only, so it wouldn't have caught this issue. To get extension/server integration tests running on different Ruby implementations, we would need a new matrix on CI. |
Maybe the detection can be unified. Something is doing a |
We're already doing that for 3.3+, but the problem is that It shouldn't be too hard to avoid it (hopefully), we just need to check the engine and avoid turning it on if it's not MRI. |
Description
The collection of the Ruby LSP information will not work, presumably because it assumes YJIT is available (e.g., doesn't work with TruffleRuby). I've collected it from another window running with CRuby and tried to manually hack it together:
Ruby LSP Info
Failed to setup the bundle: Command failed: gem list ruby-lsp language_server-protocol prism rbs sorbet-runtime ERROR: truffleruby: invalid option --yjit (Use --help for usage instructions.) . See Troubleshooting for help
Reproduction steps
truffleruby-24.1.1
from ruby-build)--yjit
flag is invalidCode snippet or error message
The console output suggests that it will only enable YJIT if
RubyVM::YJIT
is defined:However, I see an error dialog with:
Browsing the code, I think the issue is:
ruby-lsp/vscode/src/ruby.ts
Line 235 in 35fc5e9
TruffleRuby 24.1.1 reports as being Ruby 3.2.4 compatible. While dev builds of TruffleRuby 24.2.0-dev now report as 3.3.5. The check for whether YJIT is available needs to consider more context than just the Ruby version number. I think the check for
RubyVM::YJIT
is the best approach since it's possible to have a CRuby build without YJIT, so checking forRUBY_ENGINE == "ruby"
may be insufficient.I haven't tried running with JRuby, but I strongly suspect the LSP doesn't run there for similar reasons.
The text was updated successfully, but these errors were encountered: