惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
V
V2EX
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
Vercel News
Vercel News
The Register - Security
The Register - Security
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
小众软件
小众软件
L
Lohrmann on Cybersecurity
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog
AWS News Blog
AWS News Blog
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
K
Kaspersky official blog
B
Blog RSS Feed
G
Google Developers Blog
量子位
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Scott Helme
Scott Helme
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
雷峰网
雷峰网
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
F
Full Disclosure
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
The Hacker News
The Hacker News
U
Unit 42
S
SegmentFault 最新的问题
I
InfoQ
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
罗磊的独立博客
Spread Privacy
Spread Privacy
C
CERT Recently Published Vulnerability Notes

Deno

Deno 2.8 | Deno Claw Patrol: an open-source security firewall for agents | Deno Fresh 2.3: Zero JS by default, View Transitions, and Temporal support | Deno Deno 2.7: Temporal API, Windows ARM, and npm overrides | Deno Build a dinosaur runner game with Deno, pt. 6 | Deno Build a dinosaur runner game with Deno, pt. 5 | Deno Deno Deploy is Generally Available | Deno Introducing Deno Sandbox | Deno Build a dinosaur runner game with Deno, pt. 4 | Deno Build a dinosaur runner game with Deno, pt. 3 | Deno Build a dinosaur runner game with Deno, pt. 2 | Deno React / Next.js Denial-of-Service Vulnerability: Deno Deploy users protected | Deno Deno 2.6: dx is the new npx | Deno Build a dinosaur runner game with Deno, pt. 1 | Deno React Server Functions / Next.js Vulnerability: Deno Deploy users protected | Deno My highlights from the new Deno Deploy | Deno Deno's Other Open Source Projects | Deno How Deno protects against npm exploits | Deno Help Us Raise $200k to Free JavaScript from Oracle | Deno Deno 2.5: Permissions in the config file | Deno Fresh 2.0 Graduates to Beta, Adds Vite Support | Deno Deno 2.4: deno bundle is back | Deno JavaScript™ Trademark Update | Deno What's coming to JavaScript | Deno A brief history of JavaScript | Deno Reports of Deno's Demise Have Been Greatly Exaggerated | Deno An Update on Fresh | Deno How Plaid migrated 100 services to a new database platform 5x faster with Deno | Deno Deno 2.3: Improved deno compile, local npm packages, and more | Deno Add JSR packages with pnpm and Yarn | Deno Zero-config Debugging with Deno and OpenTelemetry | Deno Exploring Art with TypeScript, Jupyter, Polars, and Observable Plot | Deno Deno v Oracle Update 3: Fighting the JavaScript Trademark | Deno Build a custom RAG AI agent in TypeScript and Jupyter | Deno How to get deep traces in your Node.js backend with OTel and Deno | Deno toranoana.deno #20 登録受付中(2025年3月14日) | Deno Node just added TypeScript support. What does that mean for Deno? | Deno The Dino 🦕, the Llama 🦙, and the Whale 🐋 | Deno Publish a lint rule, get a prize | Deno Deno 2.2: OpenTelemetry, Lint Plugins, node:sqlite | Deno If you're not using npm specifiers, you're doing it wrong | Deno How Deno's documentation is evolving | Deno Oracle justified its JavaScript trademark with Node.js—now it wants that ignored | Deno Introducing the JSR open governance board | Deno Intro to Wasm in Deno | Deno Announcing OpenAI on JSR | Deno Deno in 2024 | Deno Goodbye WinterCG, welcome WinterTC | Deno Build a SolidJS app with Deno | Deno Run your Next.js SSR app on Deno Deploy | Deno Solve Advent of Code 2024 with Deno and Win Prizes! | Deno Deno v. Oracle: Canceling the JavaScript Trademark | Deno Deno 2.1: Wasm Imports and other enhancements | Deno Build a Typesafe API with tRPC and Deno | Deno Self-contained Executable Programs with Deno Compile | Deno Build a Database App with Drizzle ORM and Deno | Deno Introducing your new JavaScript package manager: Deno | Deno Announcing Growthbook on JSR | Deno Build an Astro site with Deno | Deno How to convert CommonJS to ESM | Deno Announcing Deno 2 | Deno The Final Touches: What’s New In v2.0.0-rc.10 | Deno Announcing Stable V8 Bindings for Rust | Deno Deno 2.0 Release Candidate | Deno Secure, efficient private npm registries with Cloudsmith and Deno | Deno Painting the Plane as We Fly It: Designing JSR | Deno Introducing Web Cache API support on Deno Deploy | Deno Deno 1.46: The Last 1.x Release | Deno Protect your cloud spend with new Deno Deploy spend limits | Deno What we got wrong about HTTP imports | Deno Benchmarking AWS Lambda Cold Starts Across JavaScript Runtimes | Deno Announcing Supabase on JSR | Deno Deno 1.45: Workspace and Monorepo Support | Deno Introducing KV Backup for Deno Subhosting | Deno A Gentle Intro to TypeScript | Deno Announcing Hono on JSR | Deno How We Made the Deno Language Server Ten Times Faster | Deno How the Guardian uses Deno to audit accessibility and performance across their 2.7 million articles | Deno Introducing More Flexible Domain Association for Deno Subhosting | Deno The stabilization process of the Standard Library has begun | Deno Deno 1.44: Private npm registries, improved Node.js compat, and performance boosts | Deno How we built a secure, performant, multi-tenant cloud platform to run untrusted code | Deno The Deno Standard Library is now available on JSR | Deno How to document your JavaScript package | Deno Your Low Code Solution Needs an Escape Hatch | Deno Deno 1.43: Improved Language Server performance | Deno How Slack used Deno to save months of engineering effort in launching their new platform | Deno JSR Is Not Another Package Manager | Deno Announcing the Hookdeck SDK on JSR | Deno Announcing the Neon Serverless Driver on JSR | Deno An intro to TSConfig for JavaScript Developers | Deno How we built JSR | Deno How Netlify used Deno Subhosting to build a successful edge functions product | Deno Introducing Simpler Project Creation in Deno Deploy | Deno Deno 1.42: Better dependency management with JSR | Deno Introducing deployctl, the command line interface for Deno Deploy | Deno Introducing JSR - the JavaScript Registry | Deno How to add Monaco to a Next.js app and securely run untrusted user code | Deno Survey Results and Roadmap | Deno Deno 1.41: smaller deno compile binaries | Deno
Deno 1.14 Release Notes | Deno
2021-09-14 · via Deno

Deno 1.14 has been tagged and released with the following features and changes:

  • Web Crypto API additions
  • Customization options for deno lint and deno fmt
  • URLPattern
  • Stabilization of native server side WebSocket API
  • Zero-copy ArrayBuffer transfers between workers
  • File locking APIs
  • Changes to OS signals APIs
  • Mutual TLS support in fetch
  • Basic auth support in DENO_AUTH_TOKENS
  • URL parsing is now 3x faster
  • gid and uid can now be specified for subprocesses
  • Much faster std/http module
  • Updates to VSCode extension
  • TypeScript 4.4
  • V8 9.4

If you already have Deno installed, you can upgrade to 1.14 by running

If you are installing Deno for the first time, you can use one of the methods listed below:


curl -fsSL https://deno.land/x/install/install.sh | sh


iwr https://deno.land/x/install/install.ps1 -useb | iex


brew install deno


scoop install deno


choco install deno

New features

Web Crypto API additions

This release introduces many new Web Crypto APIs:

  • crypto.subtle.exportKey():
    • HMAC keys can now be exported in both JWK and “raw” format.
    • RSA keys can now be exported in pkcs#8 format.
  • crypto.subtle.importKey():
    • HMAC keys can now be imported in both JWK and “raw” format.
    • RSA keys can now be imported in pkcs#8 format.
    • PBKDF2 keys now can be imported in “raw” format.
  • crypto.subtle.generateKey():
    • Generation of RSA-OAEP keys is now supported.
    • Generation of ECDH keys is now supported.
    • Generation of AES keys is now supported.
  • crypto.subtle.deriveBits():
    • PBKDF2 derivation is now supported.
    • HKDF derivation is now supported.
  • crypto.subtle.verify():
    • ECDSA signature verification is now supported.
  • crypto.subtle.encrypt():
    • RSA-OAEP encryption is now supported.
  • crypto.subtle.decrypt():
    • RSA-OAEP decryption is now supported.

We are continually working on improving the Web Crypto API. We are hoping to be API complete by the end of the year. You can subscribe to this tracking issue to be notified of progress.

Thanks to Divy Srivastava for the significant work on the Web Crypto implementation in Deno.

Customization options for deno lint and deno fmt

Deno in the past has pushed back on configurability of deno lint and deno fmt. We believe the ecosystem benefits from canonical code styles and linting rules. Over the past year, we have gotten many requests from users to be able to tweak the options used by deno lint and deno fmt to cater to specific, legitimate needs. This release allows deno lint and deno fmt to be configured.

We still recommend that most users use the default options. These options work well for most teams and projects. By default deno lint will run with all recommended lint rules enabled.

Now --rules-exclude, --rules-include, and --rules-tags can now be used to exclude rules, or include specific rules not in the recommended set (like ban-untagged-todo).

The style rules of deno fmt are based on prettier. There are just five options that can be used to tweak the style rules:

  • --options-indent-width (default: 2) - The number of spaces to use for indentation.
  • --options-line-width (default: 80) - The maximum line width.
  • --options-prose-wrap (default: always) - The prose wrap setting.
  • --options-single-quote (default: false) - Whether to use single quotes.
  • --options-use-tabs (default: false) - Whether to use tabs instead of spaces for indentation.

These options can now also be configured in the file specified by --config. We have designed this flag so that the same file can be used with deno run --config, deno fmt --config, and deno lint --config. That is, we’re extending the tsconfig.json file.

Before:

{
  "compilerOptions": {
    "allowJs": true,
    "lib": ["deno.window"],
    "strict": true
  }
}

After:

{
  "compilerOptions": {
    "allowJs": true,
    "lib": ["deno.window"],
    "strict": true
  },
  "lint": {
    "files": {
      "include": ["src/"],
      "exclude": ["src/testdata/"]
    },
    "rules": {
      "tags": ["recommended"],
      "include": ["ban-untagged-todo"],
      "exclude": ["no-unused-vars"]
    }
  },
  "fmt": {
    "files": {
      "include": ["src/"],
      "exclude": ["src/testdata/"]
    },
    "options": {
      "useTabs": true,
      "lineWidth": 80,
      "indentWidth": 4,
      "singleQuote": true,
      "proseWrap": "preserve"
    }
  }
}

We intend to further improve the experience of using Deno, by allowing more existing flags to be specified in the configuration file, as well as providing automatic discovery of the configuration file in future releases. In 1.14 you must manually specify the configuration file, there is no auto-detection.

Note that using a configuration file is not required now and will not be required in the future. Deno still works best with the default options and no configuration file. All options specified in the configuration file can also be set using command line flags (for example --options-use-tabs for deno fmt). Using the configuration file should be considered an “as needed” feature, not something every user should be reaching to as the first thing when setting up a project.

For in-depth description of allowed options in configuration file, see manual page or JSON schema file.

The VSCode extension has built-in support for this file via the deno.config setting.

URLPattern

This release introduces a new unstable web platform API for matching URLs against patterns. URLPattern is a builtin alternative to the popular path-to-regexp library.

The pattern syntax is very similar to path-to-regexp. What sets URLPattern apart is that it is capable of matching more than just paths - it can match each part of a URL (protocol, hostname, pathname, query string, hash, etc.) individually.

const pattern = new URLPattern({ pathname: "/books/:id" });

console.log(pattern.test("https://example.com/books/123")); 
console.log(pattern.test("https://example.com/books/123/456")); 
console.log(pattern.test("https://example.com/books")); 

console.log(pattern.exec("https://example.com/books/123").pathname); 

This API is unstable (--unstable is required for use), but is not likely to change significantly before stabilization. Unless new blockers arise, we will be stabilizing the API in Deno 1.15, in sync with the stabilization in Chrome 95.

Detailed documentation will be available on MDN in a couple of days. You can view a preview of the MDN docs here.

Thanks to Jake Archibald for the initial API proposal, Ben Kelly for the specification effort, and @crowlKats for the implementation in Deno.

Stabilization of native server side WebSocket API

Native server side WebSocket support was added in Deno 1.12, however it was only available behind --unstable flag.

After testing the API in the wild and getting feedback from users, Deno.upgradeWebSocket() API has been stabilized in 1.14 and no longer requires --unstable flag.

Zero-copy ArrayBuffer transfers between workers

This releases introduces the capability of transferring ArrayBuffers between workers without requiring copying. This can significantly speed up transfers for large buffers.

To transfer a buffer instead of copying it, specify the buffer in the transfer option when calling postMessage().

File locking APIs

This releases introduces four new unstable APIs that can be used for file locking:

  • Deno.flock
  • Deno.flockSync
  • Deno.funlock
  • Deno.funlockSync

These APIs are essential for projects like sqlite to provide proper database synchronization.

Thanks to Tilman Roeder for implementing this feature.

Changes to OS signals APIs

1.14 overhauls the unstable OS signals API. Deno.Signal enum was changed to a union of string identifiers for signals, allowing signal APIs to use string identifiers as well, instead of requiring to pass Deno.Signal members.

Before:

for await (const _ of Deno.signal(Deno.Signal.SIGTERM)) {
  console.log("got SIGTERM!");
}

After:

for await (const _ of Deno.signal("SIGTERM")) {
  console.log("got SIGTERM!");
}

Additionally the Deno.signals namespace, containing helper methods for creating different signal streams was removed completely. These changes were made in an effort towards stabilization of signal API that we expect to happen soon.

Mutual TLS support in fetch

This release introduces support for mutual TLS in fetch(). Mutual TLS (sometimes called client authentication) is a way to authenticate a client to a server. A few common use cases include:

  • authenticating a client to the Kubernetes API server
  • authenticating a client to zero trust platform like Cloudflare Access

Client certificates and private keys can now be specified to fetch by means of a custom Deno.HttpClient.

const client = Deno.createHttpClient({
  certChain: Deno.readTextFileSync("./cert.pem"),
  privateKey: Deno.readTextFileSync("./key.pem"),
});
const resp = await fetch("https://example.com/", { client });

Thanks to Sean Michael Wykes and Eric Lindvall for implementing this feature.

Basic auth support in DENO_AUTH_TOKENS

Deno allows to fetch code from private repositories and servers that require authentication, by providing Bearer tokens in the DENO_AUTH_TOKENS environmental variable.

Starting with 1.14 DENO_AUTH_TOKENS also accepts Basic authentication making it possible to fetch code from more servers.

To specify Basic authentication data use username:password@host syntax, eg.

DENO_AUTH_TOKENS=testuser123:testpassabc@127.0.0.1:4554

Both Basic data and Bearer tokens can be mixed together in the environmental variable like so:

DENO_AUTH_TOKENS=a1b2c3d4e5f6@deno.land;testuser123:testpassabc@127.0.0.1:4554

Thanks to @BasiqueEvangelist for implementing this feature.

URL parsing is now 3x faster

A few weeks ago we got some reports that our URL parsing was significantly slower than other engines like Chrome. This is a relatively high impact performance issue, because URL parsing is a very common operation in web server applications.

We are happy to report that our URL parsing is now 3x faster than in 1.13. This is a significant improvement, but we are still investigating ways to further optimize this hotpath in the future.

gid and uid can now be specified for subprocesses

The subprocess API gets much requested feature that allows to specify user id and group id for the spawned processes.

Deno.run({
  cmd: [
    "echo",
    "Hello from root user",
  ],
  uid: 0,
});
Deno.run({
  cmd: [
    "echo",
    "Hello from root group",
  ],
  gid: 0,
});

This feature is unstable and thus requires --unstable flag. Currently it is only supported on Unix systems and ignored on Windows.

Thanks to @crowlKats for implementing this feature.

Much faster std/http module

Version 0.107.0 of standard library brings a major revamp of the http module.

After stabilization of native HTTP bindings in v1.13, the http/server.ts module was rewritten to use that newly stabilized API. As a result a significant performance boost was achieved, as well as a more user-friendly API that handles mundane parts of creating solid HTTP servers; like error handling and multiplexing of connections.

Thanks to Craig Morten for implementing these changes.

Updates to VSCode extension

The official Deno VSCode extension got a number of updates including:

  • Better configuration support when using the testing code lens
  • Bundled extension which decreases install size and improves startup-time
  • Improvements to debug configuration
  • Support for deno.json/deno.jsonc config file

TypeScript 4.4

Deno 1.14 ships with the latest stable version of TypeScript. For more information on new features in TypeScript see TypeScript’s 4.4 blog post

V8 9.4

This release includes a new version of V8, which includes many bug fixes, and one important new feature: class static initialization blocks. Classes get the ability to group code that should run once per class evaluation via static initialization blocks.

class C {
  
  static {
    console.log("Why is it always raining in Deno land?");
  }
}

An explainer for static initialization blocks can be found on the V8 blog. See also the V8 9.4 release notes.