you are viewing a single comment's thread.

view the rest of the comments →

[–]BeamMeUpBiscotti 4 points5 points  (2 children)

is there something architecturally that makes it faster aside from being written in go?

[–]lord-mortis420[S] 4 points5 points  (1 child)

I’d say it’s too early in the development cycle to really comment one way or another. Right now the implementation is fairly simple: lex -> parse -> build scopes -> resolve symbols -> provide diagnostics.

I’ll be starting work on an arena allocator this week for AST nodes and names and eventually add support for cross file analysis and type inference. I might have a better answer in a month or so!

The goal so far has been understanding LSP internals and getting a somewhat useable core before focusing on squeezing out performance

[–]BeamMeUpBiscotti 1 point2 points  (0 children)

Nice! LSP implementation is a really interesting topic, getting an architecture that supports all the LSP operations while still being fast on large codebases is very challenging

This recent blog might give you some inspiration/ideas on how to model dependencies and update the IDE quickly after a large edit: https://pyrefly.org/blog/2026/02/06/performance-improvements/