Skip to content

Commit

Permalink
Add rust-analyzer proc-macro server project
Browse files Browse the repository at this point in the history
  • Loading branch information
Veykril committed Feb 22, 2025
1 parent 690ec4f commit 2c582ef
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ We use the GSoC project size parameters for estimating the expected time complex
- [Prototype Cargo plumbing commands](#prototype-cargo-plumbing-commands)
- [Move cargo shell completions to Rust](#move-cargo-shell-completions-to-Rust)
- [Build script delegation](#build-script-delegation)
- **rust-analyzer**
- [Implement a new proc-macro server RPC API](#proc-macro-rpc)
- **Crate ecosystem**
- [Modernize the libc crate](#Modernize-the-libc-crate)
- [Add more lints to `cargo-semver-checks`](#add-more-lints-to-cargo-semver-checks)
Expand Down Expand Up @@ -611,6 +613,45 @@ Medium.
- [Idea discussion](https://rust-lang.zulipchat.com/#narrow/channel/421156-gsoc/topic/Idea.3A.20Build.20script.20delegation)
- Ed Page ([GitHub](https://github.com/epage), [Zulip](https://rust-lang.zulipchat.com/#narrow/dm/424212-Ed-Page))

## rust-analyzer

### Implement a new proc-macro server RPC API

**Description**

Today, rust-analyzer (and RustRover) expands proc-macros by spawning a separate proc-macro server
process that loads and executes the proc-macro dynamic libraries. They communicate to this process
via a JSON RPC interface that has not been given much thought when it was implemented, now starting
to show its limitations.

The goal is to replace this current implementation entirely in favor of a more performant format
that also supports the more complicated needs of the proc-macro API, outlined in
https://github.com/rust-lang/rust-analyzer/issues/19205.

**Expected result**

There exists a new proc-macro server that is more efficient and allows for implementing the
remaining proc-macro API. Ideally, it should be integrated within rust-analyzer.

**Desirable skills**

Intermediate knowledge of Rust.

**Project size**

Medium.

**Difficulty**

Medium.

**Mentor**
- Lukas Wirth ([GitHub](https://github.com/veykril), [Zulip](https://rust-lang.zulipchat.com/#narrow/dm/300586-Lukas-Wirth))

**Zulip streams**
- [Idea discussion](https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer/topic/proc-macro.20server.20IPC.20format)
- [rust-analyzer team](https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer)

## Crate ecosystem

### Modernize the libc crate
Expand Down

0 comments on commit 2c582ef

Please sign in to comment.