LIGO Language Server

Serokell created a language server for the LIGO smart contract language that improved the LIGO developer experience.

LIGO is a developer-friendly smart contract language for the Tezos blockchain. It has multiple dialects that enable developers to write smart contract code in a language that’s convenient for them.

The team behind LIGO tasked us with improving the development and debugging experience of LIGO, which lacked language-specific features (autocomplete, go-to-definition, etc.) in most common code editors & IDEs.

We implemented a language server, which is the standard solution for introducing language-specific functionality to code editors and IDEs nowadays.

It enabled LIGO to have a better developer experience for all LIGO dialects across all the common code editors.

What is a language server?

A language server is a way to provide language-specific features to multiple code editors at once. Let’s delve into what that means.

A code editor is a text editor that is designed for writing software. To support language-specific features, these editors need to understand the programming languages that are used.

Serokell software development case: Ligo language server
Serokell software development case: Ligo language server

A language server provides an editor or IDE with extra functionality such as autocomplete, go-to-definition, and multiple other features that make developing, debugging, and refactoring much more straightforward. To communicate with the editor, it uses the Language Server Protocol (LSP).

LSP specifies how language servers communicate with different editors such as Emacs, Vim, and VSCode.

The language server provides access
to the following features:

Find references and type definitions (limited).
Parser & compiler diagnostics.
Document formatting and symbol renaming.
Code completion for record fields, variable names, and constructors (limited).
Ligo project development by Serokell: 3 dialects

All of these help Tezos developers to be much more productive when working with LIGO smart contract projects.

We decided to support the three most common editor choices: Emacs, Vim, and VSCode. Emacs and Vim support came automatically via the lsp-mode and vim-lsp packages, respectively. For VSCode, we built an extension.

Tech Stack

Haskell

for Web IDE and debugger

LSP in OCaml

for implementing the LSP server

Linol

for the introduction of LSP requests

Summary

We built a language server that enables code editors to have access to language-specific features when working with LIGO and ensured that the language server is supported by popular editor choices – Emacs, Vim, and VSCode.

Serokell: LIGO language server case study summary

Our Accomplishment

Developed the LIGO debugger.

Added support for error recovery in their parsers.

Introduced formal verification of the LIGO compiler.

Created a new web-based development environment (WebIDE) for LIGO.

LIGO language server on developer tooling

We are glad to be helpful and always work with our partners on a long term basis, providing not only software development services, but also proactively searching for further improvements that answer customer needs.

Let’s Have a Talk

With our Elixir development services, you can create your next software project quickly and effortlessly. Contact us today to get a free quote.

Contact us