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.
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:
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.
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