Paul Krill
Editor at Large

Deno unveils faster, simpler web server API

news
Jul 17, 20232 mins

The Deno.serve() API promises significant performance benefits and allows developers to create a web server with a single line of code.

HTTPS prefix in a web browser's search/address field
Credit: MicroStockHub / Getty Images

Deno 1.35, the latest version of the JavaScript/TypeScript/WebAssembly runtime positioned as an alternative to Node.js, stabilizes Deno.serve(), a new API that makes it easier to build web servers.

The Deno.serve() API provides a “fast and convenient” way to create web servers, according to Deno project developers, who announced Deno 1.35 on July 5, calling it a minor release. Deno.serve() is described as a long-awaited new web server API offering ease of use while significantly enhancing performance. Developers can use the API to set up a web server via a single line of code:

Deno.serve((req) => new Response("hello world"));

A previous API, Deno.serveHTTP(), required the setup of an async iterator over connections and subsequent handling of HTTP events. Deno.serve() uses web standard Request and Response objects for seamless interaction with fetch(), web streams, and other standard APIs. Deno’s developers said that, in internal benchmarks, Deno.serve() delivered twice the throughput of a similar Node.js server, with better tail latency and more efficient memory use.

Deno runs on Linux, Windows, and macOS as a single binary executable. Installation instructions can be found at the Deno website. Deno 1.35 follows the late-May release of Deno 1.34, which boosted compatibility with NPM and Node.js.

Other new and improved features in Deno 1.35:

  • Web API changes include support for Headers.getSetCookie() and ReadableStream.from() APIs, while URLSearchParams.delete() and URLSearchParams() now support the value parameter.
  • The semver module of the standard library has been rewritten to reduce internal complexity and clean up public interfaces. Also, each semver instance becomes an immutable plain JavaScript object. 
  • A new standard module, html, has been added. The module has escape and unescape APIs, which escape and unescape the special HTML characters in the given strings. Additionally, an http/user_agent has been added that detects OS, CPU, device, and browser types from the given user agent.
  • Quality-of-life improvements have been made to the language server. These include fixing a longstanding problem with auto-imports for NPM packages and import maps.
  • NPM and Node.js compatibility were further improved, with Node.js module changes made.
  • APIs were added to the Denocode namespace such as Deno.atomicOperation and Deno.errors.Filesytemloop.
  • Deno 1.35 ships with the Google V8 6 JavaScript/WebAssembly engine and TypeScript 5.1.6.
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