全栈算力,加速行业AI落地 了解详情
写点什么

Deno 2021 回顾:优化内核、兼容 Node.js

Aaron O'Mullan 等人

  • 2022-02-09
  • 本文字数:1927 字

    阅读完需:约 6 分钟

Deno 2021 回顾:优化内核、兼容 Node.js

2021 年是 Deno 获得资助发展的第一个整年。我们的公司有 10 个员工,而且还在不断增加。

 

Deno CLI 自从 2020 年 5 月发布 1.0 版本之后就已经在稳定地发展了。2021 年,我们推出了 44 个版本(11 个小版本,33 个补丁),上新了关键特性,修复了大量错误,并进行了重大性能优化。关于每个版本的细节,请参阅相应的博文:v1.7v1.8v1.9v1.10v1.11v1.12v1.13v1.14v1.15v1.16v1.17

 

让我们来讨论一些重要的发展。

 

Deno Deploy

 

我们在去年夏天推出了 Deno Deploy 的首个测试版本。这是一款由我们的工程师团队从头开始构建的现代无服务器云,允许用户非常快速地将 JavaScript、TypeScript 和 WASM 服务部署到世界各地的数据中心。

 

我们正在积极开发和投资 Deno Deploy。我们将其视为构建 Node.js 和 Deno CLI 之后的第三个 JavaScript 运行时。我们非常高兴能有机会使用云优先原语来构建现代运行时,而这些原语可以塑造团队构建和发布软件的方式。我们想在接下来的数个月中与大家分享更多有关新一代系统的信息。

 

优化的内核

 

Deno 的内核提供了“opcalls”(类似于 syscalls),它可以让 JavaScript 调用运行时提供的 Rust 函数(fs/net/url-parsing/……)。

 

v1.9 版本之前,我们通过 JSON 和二进制缓冲区的混合来整理 opcall 值。

 

op-layer 的效率是决定运行时整体性能的关键因素。Opcall 以前每次调用有 4000 纳秒的开销,而现在减少了近 100 倍,每次调用有 40 纳秒。

 

这些效率提升的主要归功于 serde_v8,这是我们在 v1.9 版本中设计并交付的 Rust 和 V8 值之间的最大效率的双射。仅此一项,就将 URL 解析等常见操作的成本降低了 3 倍以上,并使 Deno 成为成熟的快速 JS 运行时。

 

原生 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");
复制代码


因为这些绑定是建立在 hyper 上的,它们提供了巨大的吞吐量和延迟。

 

MDN 兼容性表

 

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



Deno 非常重视 Web 兼容性;我们用 WPTWeb Platform Tests,Web 平台测试)对 Deno 进行了测试,WPT 是所有主要浏览器使用的测试套件,以确保符合规范。测试套件的结果可以在 wpt.fyi 上找到。

 

外部功能接口

 

在 Deno v1.13 中,我们用一个新的外部功能接口(Foreign Function Interface,FFI)API 取代了不稳定的插件系统。FFI 仍然被认为是不稳定的,但我们认为这是一个重大的改进。

 

在 1.13 版之前,原生插件系统允许使用 Rust 编写的动态库。由于 Rust ABI 的不稳定,以及将 API 作者限制在一种语言中,我们决定用一个通用的 FFI API 来取代这个系统。这个 API 允许开发者用任何使用 C 语言调用约定的语言来编写 Deno 运行时的“扩展”。

 

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

 

 

Slack 与下一代平台

 

2021 年 11 月,Slack 宣布其基于 Deno 的下一代开发平台。除了 Slack,我们一直在与其他合作伙伴合作,以开发和交付伟大的 Deno 赋能产品。我们相信 Deno Deploy 的“隔离即服务”为以下方面提供了坚实的基础:

 

  • 现代边缘托管

  • 用户可扩展的平台(机器人、插件、应用程序等。)

  • 低代码解决方案

 

Node.js 兼容性

 

在 2021 年第四季度,我们开始努力提供一流的 Node.js 兼容性。允许 Deno 直接在 Deno 中运行为 Node.js 开发的应用程序和库(NPM 包),没有任何变化。

 

Deno v1.15 中,我们提供了“兼容模式”的第一个预览。该特性仍然不稳定,但可以使用 --compat 标志启用。大部分的工作涉及在 std/node 中提供 polyfills。

 

一些关键的模块如 tlszlib 仍然不完整,但在目前的形式下,你仍然可以运行重要的应用程序。我们的目标是在未来几个月内推出适合所有用户的第一个迭代版本。

 

通往 Deno 2 的道路

 

2021 年 9 月,我们开始讨论 Deno 2 版本可能是什么样子的。API 中有很多细微的改变需要处理,但是我们也在调查基本的变化,以改善 Deno 的工作流。预计不久之后,我们将发布 Deno 2 的路线图,并希望在今年上半年就能交付。它将专注于更好的 NPM 生态系统的兼容性,为常见的工作流程提供更好的 DX,并探索替代的包管理解决方案。

 

作者介绍:

 

Aaron O'Mullan,Deno 首席工程师;Bartek Iwańczuk,Deno 工程师;Ryan Dahl,Deno 首席执行官。

 

原文链接:

 

https://deno.com/blog/deno-in-2021

2022-02-09 15:1211058

评论

发布
暂无评论
发现更多内容

Week09

SuperLab

Mobileye携手吉利汽车共同推出领先的驾驶辅助功能

E科讯

10周作业-微服务

飞雪

Week08总结

SuperLab

有的程序员写代码写到头秃,有的程序员却通过黑吃黑获利百万。

Java架构师迁哥

Git:改变世界的一次代码提交

华为云开发者联盟

git Linux 代码

Week02

SuperLab

Week07总结

SuperLab

flutter之踩坑的日子(3)

霜蓝手环

Flutter Android Apk

7周作业-性能测试与优化

飞雪

Week13

SuperLab

极客大学架构师训练营-架构师技术图谱-大作业二

叶鹏

Week05 总结

SuperLab

Week06总结

SuperLab

Week12

SuperLab

架构师 0 期 | 大数据相关技术

刁架构

架构师训练

学习Java的三个阶段(学习目标+知识点),一起努力吧!

Java架构师迁哥

99%的人都能看懂的分布式系统「补偿」机制

华为云开发者联盟

分布式 高可用 系统

极客大学架构师训练营 - 同城快递业务架构设计 - 大作业一

叶鹏

Week04

SuperLab

小前端探索HTTP

Lam

Java 面试 大前端 网络 HTTP

英特尔重磅发布物联网增强处理器,产品性能、AI能力、功能安全提升显著

E科讯

Week10总结

SuperLab

Week11

SuperLab

week03

SuperLab

英特尔扩大技术及用户端部署,加速推动智能边缘发展

E科讯

10个常见的软件架构模式

GuoYaxiang

架构模式 软件架构 架构设计

iOS造轮子 - UITableView字母索引条

iOSer

ios 面试 UITableView

Java经典面试题详解,突围金九银十面试季(附详细答案)

Java架构师迁哥

你的页面健康吗?

Lam

Java 大前端 浏览器 性能分析

深入分析CRM系统对现代企业的作用

Philips

企业管理 CRM 客户关系管理

Deno 2021 回顾:优化内核、兼容 Node.js_大前端_Aaron O'Mullan 等人_InfoQ精选文章