LSP - Language Server Protocol - was [newsletter at eclipse.org: Eclipse Newsletter - Language Server Protocol (LSP) 101]

Zenaan Harkness zen at freedbms.net
Wed May 24 03:20:01 PDT 2017


Can anyone speak to the Language Server Protocol or "LSP"?

Every time I read "protocol" and "micro services" I hear hefty TCP
stacks and latency that would never work for a per-token IDE
colorizer :)

But, I can also imagine an array of function pointers being the
"protocol".

And this LSP thing does sound like a good separation of concerns/
sane foundational design for end user programming language tools (Vim
falls over here and there on certain more complex Bash-isms for
example - reusing a standard back end does sound kinda right).

Anyone know what LSP really is and why it is justified to call it a
"micro service"?

TIA
Zenaan




----- Forwarded message from Eclipse Foundation <newsletter at eclipse.org> -----

From: Eclipse Foundation <newsletter at eclipse.org>
To: eclipse.org at freedbms.net
Reply-To: Eclipse Foundation <newsletter at eclipse.org>
Date: Wed, 24 May 2017 09:18:51 +0000
Subject: Eclipse Newsletter - Language Server Protocol (LSP) 101

Eclipse Newsletter - 2017.05.24


** Language Server Protocol
------------------------------------------------------------


** Editor's Note
------------------------------------------------------------

In this month's newsletter we will re-thinking how advanced editor support for all kinds of languages is built. The current state of the art is implementing support for each language like Java, PHP or C++ independently for every IDE. This labor-intensive and error-prone approach is about to change with the introduction of the Language Server Protocol (LSP).

The more advanced the tooling you are developing, the closer you are to writing a full-blown compiler/interpreter for the language. This is a huge waste of time, as the developers of the language have already written these tools, but often not with IDE requirements in mind. They are usually designed to only handle complete, valid source files, while an IDE usually has to handle source files that are currently being edited and thus by definition incomplete.

Another caveat about the traditional approach is attracting contributors. Let's say your IDE is written in Java and provides PHP support and some PHP developers are pointing out bugs. Many of them would probably love to fix those bugs themselves, but the completely different language creates a high barrier for contribution.

Last but not least, language tooling developers not only have to support a broad range of IDEs, but they also need to chase after new languages features/versions. What about Java 10 features? PHP 8? Swift 4?...

The LSP developed by Microsoft for Visual Studio Code, aims at fixing these shortcomings. It is a language and IDE agnostic protocol which clearly separates language semantics from UI presentation. Language developers can implement the protocol and benefit from immediate support in all IDEs, while IDE developers who implement the protocol get automatic support for all these languages without having to write any language-specific code. This way both parties can focus on what they do best; language developers can ensure that auto completion proposals and error markers match the language specification perfectly, while IDE developers can focus on providing a great user experience. Even better, both parties can implement the protocol using the technology of their choice. The Eclipse IDE can consume the protocol with a Java API, while a PHP language server might be implemented in PHP. Did we just find the Holy Grail?

Not quite yet. The Language Server Protocol is still limited. You do not yet get all the wonderful Java tooling that Eclipse JDT provides. But it's a paradigm shift. As I see it, IDEs will become a set of UI clients for several tooling services, all communicating via standard protocols. Microservices are everywhere, and they are coming to your IDE very soon.

Read the 8 great articles below to learn more!

Mikaël Barbero (@mikbarbero (http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=37e730fb5b&e=ff636f45ea) )
http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d6a8a6dfa5&e=ff636f45ea
Language Server Protocol (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=59e9aa47df&e=ff636f45ea)

What is the Language Server Protocol? How was it created? All your questions are answered by the Microsoft team in this article.

http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=cdfefc9fdc&e=ff636f45ea
Implementing a JSON-RPC Protocol with Eclipse LSP4J (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=84da074d6e&e=ff636f45ea)

Get a introduction to the core concepts of Eclipse LSP4J and learn how to implement a JSON-RPC protocol.

http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=9e483f1aae&e=ff636f45ea
Using Language Servers to Edit Code in the Eclipse IDE (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d9f000c6ce&e=ff636f45ea)

Learn how the Eclipse IDE is able to consume language servers to provide rich editor features and interact with them without having to learn anything new.

http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=2b80db7cca&e=ff636f45ea
Eclipse JDT Language Server Project (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=3f87e8fe09&e=ff636f45ea)

What is Eclipse JDT Language Server (jdt.ls)? It's an open source Java language specific implementation of the Language Server Protocol. Find out more!

http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=6226dbcac9&e=ff636f45ea
Building & Running a Language Server with Eclipse Xtext & Theia (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=9545aed46a&e=ff636f45ea)

Learn how to implement a Language Server for an arbitrary domain-specific language (DSL) using Eclipse Xtext and then run it in an IDE.

http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d3d3719583&e=ff636f45ea
LSP Support in Eclipse Che (http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=31e9c27aa7&e=ff636f45ea)

Eclipse Che, a developer workspace server and cloud IDE, now offers support for the Language Server Protocol. Read this article to find out more.

http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=f32a2d7d94&e=ff636f45ea
Getting Started with LSP in Eclipse Orion (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=bde6388b7e&e=ff636f45ea)

Read this article to discover how to get started with the Language Server Protocol in Eclipse Orion.

http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=2420628c13&e=ff636f45ea
Sourcegraph, Code Intelligence, and the Language Server Protocol (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=fefc054f5c&e=ff636f45ea)

How is the Language Server Protocol being used by companies like Sourcegraph?


** Eclipse Announcements
------------------------------------------------------------
* It’s time to organise Eclipse Oxygen DemoCamps (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=713a13f7d2&e=ff636f45ea)
* Case Study: Deploying Eclipse IoT on Germany's DB Railway System (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d59873543f&e=ff636f45ea)
* EclipseCon Europe 2017 | Call for Papers Open (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=a6a5d996c9&e=ff636f45ea)
* Program Ready for EclipseCon France 2017 (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=1898701092&e=ff636f45ea)
* New Eclipse IoT Open Testbeds (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=308b7382dc&e=ff636f45ea)


** Eclipse Community News
------------------------------------------------------------
* Devoxx4Kids comes to Ottawa June 2017 (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=4ff882b411&e=ff636f45ea)
* Eclipse IoT Group Unveils New Eclipse Kura and Eclipse Kapua and Open Testbeds (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=46b69820b9&e=ff636f45ea)
* Recap on Eclipse ToolMakers’ Day (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=51f14fae6a&e=ff636f45ea)
* Mini-book about Reactive Microservices with Eclipse Vert.x (http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=117818bfe0&e=ff636f45ea)

http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=0d38c44562&e=ff636f45ea



More information about the cypherpunks mailing list