Presented by

  • Benjamin Gray

    Benjamin Gray

    Ben is a Linux kernel developer, focusing primarily on its support for the PowerPC architecture. He has an interest in developer tooling, often trying to improve the developer experience through more powerful editor plugins. In his own time he tinkers with random projects, often involving parsing old or exotic languages and hopefully maybe one day finishing writing language servers for them.

Abstract

Editor tooling has come a long way since Linux first started. One of the biggest leaps forwards in this space has been the introduction and widespread adoption of language servers using the language server protocol (LSP). Introduced by Microsoft around 2016 for VS Code, it defines a protocol for expressing semantic information about an open project to a client editor, allowing any editor that implements the protocol to support the wide variety of languages with LSP servers. For the C language, Linux's primary source language, the language server I've been using is Clangd from the LLVM project. In this talk I will briefly touch on what the protocol defines and how a typical client-server interaction works. I'll then look at setting up Clangd for working on the kernel, demonstrate the utility a language server provides in a large project like the kernel, and show some of the work I've done in prototyping improvements to Clangd that make it integrate even better with other languages used by Linux.