近日,Deno官方博客回顾了项目在过去的2021年发生的重大事件和新变化。作为Deno的一年第一笔资金投资,公司在2021年在10个领域有强劲和持续的发展:44个版本(11个次要版本,33个补丁)、登陆关键功能、大量错误修复和性能方面的重大优化。在这篇博文中,Deno讨论了以下主要发展:DenoDeploy在2021年夏天,Deno正式发布了DenoDeploy的第一个测试版——一个由Deno工程团队从头开始构建的现代无服务器。云,允许用户将JavaScript、TypeScript和WASM服务快速部署到世界各地的数据中心。目前,Deno正在积极开发和投资DenoDeploy,这被认为是该公司继构建Node.js和DenoCLI之后的第三个JavaScript运行时。优化的Deno核心Deno的核心提供了“opcalls”(类似于系统调用),允许JavaScript调用运行时提供的函数(fs/net/url-parsing/…)。在v1.9发布之前,Deno公司通过混合使用JSON和二进制缓冲区来编组opcall值。op-layer的效率是决定runtime整体性能的关键指标。与之前Opcalls每次调用约4000ns的成本相比,现在每次调用只需要约40ns,减少了近100倍。这些效率提升的主要原因是serde_v8——开发团队在v1.9中设计和交付的Rust和V8值之间的最大高效双射。仅此一项就将URL解析等常见操作的成本降低了3倍以上,并使Deno成为快速的JS运行时。原生HTTP开发团队在Denov1.9中提供了原生HTTP服务器绑定,这些绑定后来在Denov1.13中得到了稳定。只需要几行代码就可以创建一个由hyper支持的高性能HTTP服务器:import{serve}from"https://deno.land/std@0.121.0/http/server.ts";serve((_req)=>newResponse("Hello,world"),{port:3000});console.log("Listeningonhttp://localhost:3000");MDN兼容性矩阵2021年8月,Deno被添加到MDN兼容性矩阵。Deno非常重视Web兼容性,开发团队根据WPT(或Web平台测试)测试Deno,WPT是所有主流浏览器使用的测试套件,以确保合规性。(测试套件结果可在wpt.fyi上获得)。ForeignFunctionInterface(FFI)在Denov1.13版本中,开发团队用新的FFIAPI替换了不稳定的插件系统。虽然这个FFI仍然被认为是不稳定的,但团队认为这是一个重大的改进。1.13版本之前的原生插件系统允许发布用Rust编写的动态库,由于RustABI不稳定,并且限制API作者只能使用单一语言,团队决定用通用的FFIAPI替换这个系统。该API允许开发人员使用任何使用C调用约定的语言为Deno运行时编写“扩展”。到目前为止,我们已经看到一些使用FFIAPI的有趣项目来展示FFIAPI的强大功能:桌面应用程序框架Python解释器绑定SDL2绑定串行端口绑定SQLite绑定Slack和下一代平台2021年11月,SLACK宣布了其基于Deno的下一代开发平台。除了SLACK之外,Deno公司还与其他合作伙伴合作制造和运送优质的Deno动力产品。Deno认为DenoDeploy的“IsolatesasaService”为以下方面提供了坚实的基础:现代边缘托管用户可扩展平台(机器人、插件、应用程序等)低代码解决方案Node.js兼容性在2021年第四季度,Deno团队开始致力于提供一流的Node.js兼容性,允许Deno直接在Deno中运行为Node.js开发的应用程序和库(NPM包)。在Denov1.15版本中,开发团队发布了“兼容模式”的第一个预览版。虽然该功能仍然不稳定,但可以使用compat标志启用它(大部分工作涉及在std/node中提供polyfill)。目前,一些关键模块如tls和zlib还不完善,但仍然可以运行非平凡类型的应用程序。该团队表示,下一步是在未来几个月内为所有用户推出第一次迭代。Deno2路线2021年9月,开发团队开始讨论Deno2发布后会是什么样子。尽管仍有许多明显的小API更改需要解决,但该团队还在研究根本性更改以改进Deno工作流程。团队表示相信Deno2的路线图会很快发布,希望能在今年上半年尽早发布。Deno2将专注于更好的NPM生态系统兼容性、更好的通用工作流DX以及更好地探索替代包管理解决方案。
