Paul Krill
Editor at Large

Deno boosts language server performance

news
May 7, 20242 mins

Language server enhancements in Deno 1.43 speed up auto-completion performance and improve memory consumption.

shutterstock 1108024643 Sauropods dinosaur in tropical landscape
Credit: thaloengsak / Shutterstock

With newly introduced Deno 1.43, the developers of the JavaScript/TypeScript runtime have enhanced its language server, speeding up auto-completion performance and improving memory consumption.

Introduced May 1, Deno 1.43 can be accessed via running the deno upgrade command in a terminal.

Deno Land developers have reworked many aspects of the Deno language server, commonly referred to as Deno LSP, which provides auto-completion in the editor and other capabilities. With Deno 1.43, auto-completion now takes less than one second in larger projects when it used to take six to eight seconds, Deno Land said. As for memory consumption, projects that previously caused out-of-memory errors in the LSP now operate without issue.

Deno 1.43 brings two improvements to the JSX transform. Developers now can use the jsxPrecompileSkipElements compiler option to prevent an element from being precompiled to allow passing additional properties to it. Also, a new jsxImportSourceTypes pragma and compiler option allows for specifying types for automatic JSX transform. This is considered useful to use with libraries that do not provide their types, Deno Land said.

Deno 1.43 also addresses compatibility with Node.js and NPM with key improvements around node:worker_threads and node.vm modules, both of which are used in test runners such as Vitest and Jest and in tools such as Docusaurus.

Other improvements in Deno 1.43:

  • The new deno serve subcommand allows developers to write servers in a declarative way.
  • The Deno Standard Library, deno.std, moves closer to stabilization.
  • Support for V8 caching, also known as bytecode caching, can significantly improve the time an application spends on parsing and compiling JavaScript modules.
  • Updates to deno.serve() allow developers to get information if the response was sent successfully or if there was a failure using the Deno.ServeHandlerInfo.completed promise. Also, the AbortSignalcode attached to the Request argument always will be aborted when a transaction finishes, whether by the client closing the connection or the server sending the response.
  • A quality-of-life improvement makes it easier to get the server address from Deno.serve. Developers can add a new addrcode property on the server instance.
  • A new Web API, URL.parse(), offers a simpler control flow when developers need to parse URLs.
  • In anticipation of the planned Deno 2 release, breaking changes for Deno 2 have been put behind the DENO_FUTURE=1 environment variable. Developers can enable it to test compatibility of a project with Deno 2.
Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author