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.

We developed LIGO Debugger to streamline the process of writing, debugging, and deploying LIGO smart contracts in VSCode.

LIGO Debugger enables users to navigate through CameLIGO and JsLIGO source code, inspect variables, and effectively debug LIGO code.

We created LIGO WebIDE, a comprehensive online environment for writing, running, and deploying LIGO code, facilitating a process for developers by letting them work directly from the browser.

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 architecture
Serokell software development case: Ligo language server LSP

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, WebIDE, and LIGO Debugger provide access to the following features:

Code navigation for fields, modules, files, types, variables, etc.
Real-time diagnostics with parser and typer error recovery.
Formatters for CameLIGO and JsLIGO.
Code completion for fields, modules, constructors, types, etc.
LIGO WebIDE enables the creation of LIGO projects, the writing and testing of CameLIGO and JsLIGO smart contracts with syntax highlighting, and offers deployment capabilities.
LIGO WebIDE incorporates LSP features for syntax highlighting and offers integration with GitHub for project uploads.
The debugger allows for in-depth analysis and troubleshooting of smart contracts.
Ligo project development by Serokell: 3 dialects

Entirely developed by Serokell, the debugger utilizes a source mapper provided by LIGO. It features a VSCode extension that integrates with the Debug Adapter Protocol (DAP), offering an intuitive UI for debugging, including variable inspection and stepping through code.

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 WebIDE backend and debugger

OCaml

for LSP
server

Linol

for introduction
of LSP requests

Typescript

for WebIDE frontend and VSCode extensions

Morley

for Tezos primitives
in Haskell

Summary

We built a language server, debugger, and WebIDE that enable code editors to access language-specific features, thereby simplifying development when working with LIGO. We also ensured that the language server is supported by popular editors such as Emacs, Vim, and VSCode.

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

The development of the LIGO Language Server, Debugger, and WebIDE has significantly impacted LIGO's ecosystem:

Enhanced debugging

The debugger allows for in-depth analysis and troubleshooting of smart contracts, facilitating a more efficient development process.

Streamlined process

WebIDE provides a one-stop solution for developing, testing, and deploying LIGO smart contracts, lowering the barrier to entry for new developers.

User adoption

By simplifying the development and deployment process, these tools have the potential to attract more developers to the LIGO platform.

We are glad to offer assistance and consistently work with our partners on a long-term basis, not only providing software development services but also proactively seeking further improvements to meet customer needs.

Let’s Have a Talk

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

Contact us