@@ -37,6 +37,8 @@ We use the GSoC project size parameters for estimating the expected time complex
37
37
- [ Prototype Cargo plumbing commands] ( #prototype-cargo-plumbing-commands )
38
38
- [ Move cargo shell completions to Rust] ( #move-cargo-shell-completions-to-Rust )
39
39
- [ Build script delegation] ( #build-script-delegation )
40
+ - ** rust-analyzer**
41
+ - [ Implement a new proc-macro server RPC API] ( #implement-a-new-proc-macro-server-RPC-API )
40
42
- ** Crate ecosystem**
41
43
- [ Modernize the libc crate] ( #Modernize-the-libc-crate )
42
44
- [ Add more lints to ` cargo-semver-checks ` ] ( #add-more-lints-to-cargo-semver-checks )
@@ -611,6 +613,45 @@ Medium.
611
613
- [ Idea discussion] ( https://rust-lang.zulipchat.com/#narrow/channel/421156-gsoc/topic/Idea.3A.20Build.20script.20delegation )
612
614
- Ed Page ([ GitHub] ( https://github.com/epage ) , [ Zulip] ( https://rust-lang.zulipchat.com/#narrow/dm/424212-Ed-Page ) )
613
615
616
+ ## rust-analyzer
617
+
618
+ ### Implement a new proc-macro server RPC API
619
+
620
+ ** Description**
621
+
622
+ Today, rust-analyzer (and RustRover) expands proc-macros by spawning a separate proc-macro server
623
+ process that loads and executes the proc-macro dynamic libraries. They communicate to this process
624
+ via a JSON RPC interface that has not been given much thought when it was implemented, now starting
625
+ to show its limitations.
626
+
627
+ The goal is to replace this current implementation entirely in favor of a more performant format
628
+ that also supports the more complicated needs of the proc-macro API, outlined in
629
+ https://github.com/rust-lang/rust-analyzer/issues/19205 .
630
+
631
+ ** Expected result**
632
+
633
+ There exists a new proc-macro server that is more efficient and allows for implementing the
634
+ remaining proc-macro API. Ideally, it should be integrated within rust-analyzer.
635
+
636
+ ** Desirable skills**
637
+
638
+ Intermediate knowledge of Rust.
639
+
640
+ ** Project size**
641
+
642
+ Medium.
643
+
644
+ ** Difficulty**
645
+
646
+ Medium.
647
+
648
+ ** Mentor**
649
+ - Lukas Wirth ([ GitHub] ( https://github.com/veykril ) , [ Zulip] ( https://rust-lang.zulipchat.com/#narrow/dm/300586-Lukas-Wirth ) )
650
+
651
+ ** Zulip streams**
652
+ - [ Idea discussion] ( https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer/topic/proc-macro.20server.20IPC.20format )
653
+ - [ rust-analyzer team] ( https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer )
654
+
614
655
## Crate ecosystem
615
656
616
657
### Modernize the libc crate
0 commit comments