So, the big related question here is "do we want to advertize rust-analyzer" as a (one of) the recommended IDE for Rust?
It's not strictly isomorphic to publishing, but close enough. In my mind, providing builds sends "hey, this is ready" signal
I am definitely not ready to consider rust-analyzer "done" at the moment, and I am somewhat skeptical that fixing X, Y and Z problems would be enough to call it ready
I imagine saying it's officially recommended will require some buy-in from the larger Rust project -- maybe not an RFC, but at least an FCP?
And that as well, yeah
But more or less quietly putting out a "beta" version might still be a good idea. Maybe not now, but say in the next 3-6 months?
@matklad personally I would be happy with a "nightly; use at own risk, not necessarily ready"
basically I would prefer just not to build RA myself
I guess, I am fine with providing builds and some auto-update hooks provided that:
I'm sure users will run into all kinds of bugs, but it's been quite usable (and useful) for a long time
Maybe it's me, but I feel that name resolution is one of the more important features, and that's been working quite well lately
yea; currently, I check the commit log of RA every now and then to see if any new interesting features have landed
and then decide if I should build RA, which takes a while on my laptop
I think autocompletion, hover and go to definition are things that most users care a lot about. I'm not sure how RLS has been doing on that front, but RA might be better these days
@centril pro tip: build it without debug info, it's like twice as fast
@Laurențiu Nicola that's not the default thing when you follow the install instructions in the readme?
[profile.release] debug = 1 in
aw -- maybe y'all could provide a "this is what you should do as a user" thing that doesn't use debuginfo
Check this out: https://github.com/rust-analyzer/rust-analyzer/issues/1987#issuecomment-552167300 -- and that's with
(so that folks can get useful stacktraces in the debugger if rust-analyzer freezes)
(I think most freezes come from
notify on MacOS and a couple of
chalk bugs; maybe we should force client-side watching on MacOS)
I think we should just default to client-side watching if the client supports this
(and fix chalk, obviously :) )
would be good to note the protip in the readme if y'all don't want to make other changes
I would totally forget otherwise personally
And maybe file a bug about rustc being 15x slower on release builds with debug symbols? :sweat_smile:
Why file a bug? Better just fix it :D
So.. besides client-side watching, are there any serious issues that we don't want people to run into?
Not really... Yeah, I think we are stable enough to just disable the debuginfo by default
I made a pull request earlier in the week to add us to the LSP implementation page
releasing to the public could bring in more contributors (and more issue reports for sure)
I wonder if we could compile to webassembly and run through nodejs so that the vscode extension could be easily distributed
I think there's a way to mark extensions as alpha or beta. I've seen those in my vscode
@Daniel Mcnab as opposed to having a post install step that compiles or downloads the executable?
I've been considering that approach for a personal project, and was wondering how applicable it could be
Although I'm not sure what the state of multithreading in wasm is.
I haven't tried it but there is some support: https://github.com/rust-analyzer/rust-analyzer/pull/1888
What does rls do? Is the server portion just distributed via rustup and the client is what is downloaded as an extension?
That PR just disables multithreading for wasm, unfortunately. Rls is distributed through rustup unless it changed
The C/C++ extension downloads a precompiled binary I think
yes, the C/C++ and the C# extensions download precompiled binaries. rust-analyzer has a WASM demo here: https://rust-analyzer.github.io/wasm-demo.html but it's pretty limited
For now I think it's fine to download pre-compiled binaries. Linux might be a little tricky though.
Because of different archs or dynamic linking? Could use musl to get around the latter.