VSCode extension status update

Hey all!

We just wanted to drop a status update for the work that’s ongoing in the VSCode extension, as well as some future plans.

The next release

We’re working on getting a new release out. That release will contain roughly the following:

  • The work on syntax highlighting we’ve done
  • Improvements under the hood for autocomplete (more on that below)
  • Lots of bug fixes and stability improvements

We’re stabilizing these features now and will be ready for a release fairly soon. Code actions, which we announced a while back, will not make it into this release, but rather the release after. It still needs some stabilizing.

Thank you for your patience as we sort out the details.

Releases going forward

We are looking at improving the release process to make releases much easier to do, which in turn will open up for more frequent releases.

We’re also looking at automatically publishing prereleases for the VSCode extension. This would mean that you could install the prerelease version of the extension, and always have access to the latest features, while also helping us out with testing the things we build. More info on this coming soon, as we dive into this topic.

Current work in progress

We are currently working on stabilizing code actions, which we announced testing for recently. We have a few minor issues left to iron out, but are hoping we can merge that PR in a not too distant future.

Outside of that, @cristianoc as been doing some really solid work on the foundation driving autocomplete. There’s more technical details in the PR description here, but what has been done, and what that means for the future, is essentially:

  • We used to have a small text based “parser” that would try and figure out the autocomplete context
  • We now use the actual ReScript parser instead
  • This means that building out and maintaining the autocomplete features will be much easier and stable going forward

Here and now this means that we get a more complete (no pun intended) autocomplete feature. For the future, it opens up for experimentation with for example completing record field names, or “contextual autocompletion” (completing only the variant members for props that take a specific variant, for example). This is all very exciting and @cristiano has done a huge job replacing the old infrastructure with a new one that uses the actual parser.

Call for help

First off, a shout out to all of you who’ve already been helping out, whether it’s through testing, giving feedback, or implementing features (like @fham building out the CI to emit a testable VSCode extension package for each commit). Thank you!

We will soon more actively be looking to invite more community members into development, if there’s interest. We want to reduce the bus factor, but we also believe that this is an excellent place to start involving the community more in building ReScript and the ecosystem around it.

Development is primarily done in TypeScript for the language server protocol and extension stuff, and OCaml for the deeper language related features. The OCaml side will require some deeper knowledge of working with the AST, and to a certain extent the type system. We’re however happy to mentor and help contributors get up to speed.

Some of you have already reached out, thank you very much for that. We’ll get back with details as we get more ready.

Thank you for reading.

28 Likes

The work you do is incredible, thank you very much @cristianoc + @zth ! :clap::clap:

4 Likes

Awesome work team. Eagerly waiting for the release.

@zth how to reach out to contribute. I would like to contribute.

Beautiful work, nice to see so much improvement on the vscode side, hope that the compiler will follow :grin:

I’m also interesting about contributing to this projet, I’m comfortable with typescript equally front and back. Don’t know at all Ocaml :sweat_smile:

@sriky27 @carere thank you for your interest in contributing, and sorry for me dropping the ball on replying!

We’ve done a first pass of identifying a few smaller issues that might be good to start with, if you’re interested. They’re labelled in the repo, and you can see them here: Issues · rescript-lang/rescript-vscode · GitHub

If you’re interested in trying to fix any of those, tag me in a comment on the issue, and we’ll take it from there.

We’ll also talk a bit more about the extension, contributions, etc, on the community meetup we’re having later this month.

4 Likes