Deno 2021 回顾:优化 Deno 内核、兼容 Node.js、Deno 2 路线图将至

简介: Deno 2021 回顾:优化 Deno 内核、兼容 Node.js、Deno 2 路线图将至

近日,Deno 官方博客对其项目在刚刚过去的 2021 年所发生的重大事件和新变动做了回顾。

image.png

作为 Deno 第一笔资金投入的一年,该公司在 2021 里在 10 个方面有了强大且持续的发展:发布了 44 个版本(11 个次要,33 个补丁),landing 关键特征,无数 bug 的修复以及在性能方面的显著优化。

在该博客文章里,Deno 对以下几个主要方面的发展做了探讨:

Deno Deploy

2021年夏天,Deno 官方发布了 Deno Deploy 的第一个测试版 —— 一款由 Deno 工程团队从头开始构建的现代 serverless 云,允许用户快速地将 JavaScript、TypeScript 和 WASM 服务部署到世界各地的数据中心。

目前,Deno 正在积极开发和投资 Deno Deploy,该项目被认为是继构建 Node.js 和 Deno CLI 之后该公司的第三个 JavaScript runtime。

优化 Deno 内核

Deno 的内核提供了“opcalls”(类似于syscalls),允许 JavaScript 调用 runtime 提供的函数(fs/net/url-parsing/…)。

在 v1.9 版本发布之前,Deno 公司通过 JSON 和二进制缓冲区的混合来对opcall 值进行整理。

op-layer 的效率是决定 runtime 整体性能的关键指标。相比此前每次调用 Opcalls 花费约 4000ns,现在每次调用花费仅为约 40ns,减少了近 100 倍。这些效率提高的主要原因是 serde_v8 —— 开发团队在 v1.9 版本中设计并交付的 Rust 和 V8 值之间的最大化 efficient bijection。

仅此一项就将 URL 解析等常见操作的成本降低了 3 倍以上,并使 Deno 成为一个快速的 JS runtime。

原生 HTTP

在 Deno v1.9 版本中开发团队提供了原生 HTTP 服务器绑定,这些绑定后来在 Deno v1.13 中得到了稳定发挥,只需几行代码即可创建由 hyper 支持的高性能HTTP 服务器:

import { serve } from "https://deno.land/std@0.121.0/http/server.ts";

serve((_req) => new Response("Hello, world"), { port: 3000 });

console.log("Listening on http://localhost:3000");

MDN 兼容性表格

2021 年 8 月,Deno 被添加到了 MDN 兼容性表格中。

image.png

Deno 非常重视网络兼容性,开发团队根据 WPT(或 Web 平台测试)测试 Deno,所有主要浏览器都使用该测试套件来确保符合规范。(测试套件结果可在 wpt.fyi 上找到)。

外部函数接口(FFI )

Deno v1.13 版本中,开发团队用一个新的外部函数接口 API 替换了不稳定的插件系统。尽管该 FFI 仍被认为不稳定,但团队认为这是一个显著的进步。

1.13 版本之前的原生插件系统允许发布用 Rust 编写的动态库,由于不稳定的Rust ABI,以及将 API 作者限制为单一语言,团队决定用通用 FFI API 替换该系统。此 API 允许开发人员以任何使用 C 调用约定的语言为 Deno runtime 编写“扩展”。

目前,已经看到了一些使用 FFI API 展示 FFI API 强大功能的有趣项目:

Desktop app framework

Python interpreter bindings

SDL2 bindings

SerialPort bindings

SQLite bindings

Slack & 下一代平台

2021 年 11 月,SLACK 宣布了其基于 Deno 的下一代开发平台。除 SLACK 外,Deno 公司还与其他合作伙伴合作生产和运输了优质的 Deno-powered 产品。Deno 方面相信,Deno Deploy 的“Isolates as a Service(隔离即服务)”为以下方面提供了坚实的基础:

Modern edge-hosting

User-extendable platforms (bots, plugins, apps, 等...)

Low-code solutions

Node.js 兼容性

在 2021 年的 Q4 季度里,Deno 团队开始努力提供一流的 Node.js 兼容性,允许 Deno 直接在 Deno 中运行为 Node.js 开发的应用程序和库(NPM 包)。

在 Deno v1.15 版本里,开发团队发布了“compat mode”的第一个预览版。尽管该功能仍不稳定,但可使用 compat flag 启用(大部分工作涉及在 std/node 中提供 polyfills)。

目前,一些关键模块如 tls 和 zlib 仍不完整,但仍可运行 non-trivial 类型的应用程序。团队表示,接下来的目标是在未来几个月内推出适合所有用户的第一个迭代版本。

Deno 2 路线

2021 年 9 月份,开发团队开始讨论 Deno 2 发行后将会是什么样子。虽然还有许多明显的小 API 变更需要解决,但团队也在排查根本性的变化,以改进 Deno 工作流程。

团队表示,相信 Deno 2 的路线图很快就会发布,也希望尽量在今年上半年发布。Deno 2 将专注于更好的 NPM 生态系统兼容性、更好的通用工作流 DX,以及更好的探索替代包管理解决方案。

node.js

相关文章
|
7天前
|
缓存 JavaScript 前端开发
介绍一下 JavaScript 中数组方法的常见优化技巧
通过合理运用这些优化技巧,可以提高 JavaScript 中数组方法的执行效率,提升代码的整体性能。在实际开发中,需要根据具体的业务场景和数据特点选择合适的优化方法。
17 6
|
4天前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
12天前
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
17天前
|
Web App开发 JavaScript 前端开发
探索Deno:新一代JavaScript/TypeScript运行时环境
【10月更文挑战第25天】Deno 是一个新兴的 JavaScript/TypeScript 运行时环境,由 Node.js 创始人 Ryan Dahl 发起。本文介绍了 Deno 的核心特性,如安全性、现代化、性能和 TypeScript 支持,以及开发技巧和实用工具。Deno 通过解决 Node.js 的设计问题,提供了更好的开发体验,未来有望进一步集成 WebAssembly,拓展其生态系统。
|
22天前
|
存储 JavaScript 前端开发
JavaScript垃圾回收机制与优化
【10月更文挑战第21】JavaScript垃圾回收机制与优化
25 5
|
21天前
|
JavaScript 安全 前端开发
探索Deno 1.x:安全JavaScript/TypeScript运行时的新篇章
【10月更文挑战第21天】Deno 1.x 是由Node.js创始人Ryan Dahl发起的项目,旨在解决Node.js的安全和模块化问题。Deno 1.x 版本带来了统一的运行时、默认安全、ES模块支持和内置TypeScript支持等新特性。其安全模型基于最小权限原则、沙箱环境和严格的远程代码执行控制,适用于Web服务器、命令行工具、桌面和移动应用及微服务开发。本文探讨了Deno 1.x的核心特性、安全模型及其在现代Web开发中的应用。
|
27天前
|
JavaScript 安全 前端开发
掌握Deno:新一代安全的JavaScript和TypeScript运行时
【10月更文挑战第15天】Deno是由Node.js创始人Ryan Dahl发起的新一代JavaScript和TypeScript运行时,旨在解决Node.js的设计问题,提供更安全、现代的开发体验。本文介绍Deno的核心特性、优势及使用方法,包括安全性、统一的运行时、现代Web标准和内置工具等,帮助开发者快速上手Deno,适用于Web开发、工具开发和教育等领域。
|
25天前
|
JavaScript 前端开发 安全
探索Deno:现代JavaScript/TypeScript运行时的崛起
【10月更文挑战第17天】Deno是由Node.js创始人Ryan Dahl发起的现代JavaScript/TypeScript运行时,强调安全性、TypeScript原生支持、统一的运行时环境和现代HTTP客户端。本文深入探讨了Deno的特性、优势及其在业界的应用,展示了它如何提升开发效率和代码安全性。
|
26天前
|
JavaScript 前端开发 安全
探索Deno 1.x:新一代JavaScript/TypeScript运行时
【10月更文挑战第16天】Deno 1.x是由Node.js创始人Ryan Dahl发起的新一代JavaScript/TypeScript运行时,自2018年首次亮相以来备受关注。本文介绍了Deno 1.x的新特性,如标准化模块、更严格的安全模型、改进的TypeScript支持和插件系统,探讨了其在现代Web开发中的潜在影响,并提供了如何开始使用Deno进行开发的指南。
|
1月前
|
JavaScript 前端开发 安全
探索Deno:新时代的JavaScript/TypeScript运行时
【10月更文挑战第1天】Deno是由Node.js创始人Ryan Dahl发起的JavaScript/TypeScript运行时,基于V8引擎,旨在提供安全、现代的开发环境。其核心优势包括默认安全性、内置TypeScript支持、统一的运行时及现代化API。Deno采用细粒度权限系统和ES模块系统,并提供内置测试与调试工具。尽管生态系统仍在发展中,学习曲线和兼容性问题存在,但Deno凭借其先进特性正逐渐成为开发领域的有力竞争者。