Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language server async overhaul #1022

Merged
merged 110 commits into from
Dec 2, 2024

Conversation

micahscopes
Copy link

@micahscopes micahscopes commented Nov 30, 2024

What was wrong?

The tower-lsp based prototype was full of issues. See #979 for details.

This version is way better. In addition to the architecture overhaul, this PR includes a bunch of features and stability fixes.

Changes

  • Big architecture overhaul, switched from tower-lsp to async-lsp
    • much better control over concurrency and event processing order, working around issues described here
    • custom actor implementation supporting lock-free language server state and handlers with thread-local futures
  • Optional stream-based event handling support
  • Multithreaded tracing and logging improvements
  • Debounced, multithreaded diagnostics
  • TCP support; support for multiple clients
  • Organize and prepare server architecture for a variety of LSP features
  • Implement a task queue system for long-running tasks
  • Enhance hover feature to return useful information and documentation
  • Initial work on VSCode extension release pipeline

Copy link
Collaborator

@sbillig sbillig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new code looks nice! Looking forward to using this.

@sbillig sbillig merged commit cee478f into ethereum:fe-v2 Dec 2, 2024
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants