Thursday, September 30, 2021

PyScripter 4.1 is coming

A new release 4.1 is round the corner. Beyond bug fixes, the major new feature of this release is the implementation of the Language Server protocol.

Seeking feedback from early adopters

I would like to get volunteers to try the new version before it is released to the public. You can download a registry-free installation from this link. Just unzip the file and run PyScripter.exe.  It will not interfere with installed versions of PyScripter.  Please report issues at the issue tracker and provide feedback at the support forum.

PyScripter and the Language Server Protocol

Modern programming editors and Integrated Development Environments (IDEs), help programmers to write better code efficiently, by providing features such as:

  • Code completion
  • Signature help (function parameters)
  • Code explorer (hierarchical view of module symbols
  • Code hints
  • Find definition
  • Find references
  • … and more

These features are collectively referred to as “Code IntelliSense”, a term coined by Microsoft. To provide such features editors and IDEs need to parse and analyze source code, while users are typing code.   PyScripter has been doing a fine job in providing Code IntelliSense to its users by using its own python source code parsing and analysis module.  However, keeping up with new python versions and the changes and new features they bring to the python grammar requires significant development resources.

A recent trend has been to move the Code IntelliSense processing out of the editors and IDEs by using external Language Servers.  Microsoft has standardized the communication between IDEs and Language Servers by promoting the adoption of the Language Server Protocol (LSP).  The LSP is now used by Microsoft’s Visual Studio and Visual Studio Code as well as by many commercial and free IDEs.  There are numerous Language Server implementations for many programming languages, including Python.

The forthcoming version of PyScripter, in addition to the usual round of bug fixes, implements the Language Server Protocol and shifts the “Code IntelliSense” processing to external Language Servers.  It also bundles the python Jedi Language Server, based on the Jedi package, that is used by many other IDEs.  Although this brings few visible improvements (everything should work as before) it brings a number of advantages:

  • Improved stability since the source code parsing and analysis is carried out in external processes.
  • Better quality of Code IntelliSense, since the Jedi Language Server is actively developed and supports the latest python feature.
  • The default Language Server (Jedi) can be easily swapped for alternative python Language Servers.
  • New features such as code diagnostics and refactoring can be easily added, since they are supported by the LSP.
  • Development resources are freed and can be diverted to other improvements of PyScripter.