Interactive Language Tools project

04 Mar 2023 -

InteractiveLanguageTools is a set of tools in Emacs for programming languages that allow interactive programming.

Motivation

Many languages, specially new and small languages, implement some support for interactive development, but don’t come with the tools for realizing that. Examples of that are JSCL (Common Lisp in the web browser), LIPS (a Scheme for the web), .. and many more.

This is my attempt at trying to provide tools for such languages as cheaply as possible.

Why not Language Server Protocol?

Language Server Protocol is very good, but it doesn’t support interactive development. Things like evaluation, REPL, incremental compilation, are not part of the protocol. Also, LSP is very complex to implement. ILT is a minor-mode and can work as a complement of LSP. Why not SLIME/SWANK?

SLIME/SWANK are very powerful tools for interactive development in Common Lisp. They are quite specialized towards Lisp, and Lisp like languages. For instance, the protocol is based on S-Expressions.

ILT is targeted at any kind of language, and implements its protocol via JSONRPC. JSONRPC is probably easier to implement in most languages, as most languages come with very good support of JSON.

Also, ILT tries to be as easy as possible to implement on the targeted programming language side. And uses the target language introspection capabilities to build a semantic model of the elements of the language, so that it can be leveraged by the tools.


Page design by Ankit Sultana