比 Bun 还快的 JS 运行时来了!WinterJS 1.0 发布!

WinterJS 是一个非常快的、与 WinterCG 兼容的 Javascript 运行时,使用 Rust 编写,使用 SpiderMonkey 引擎执行 JavaScript,并使用 Tokio 处理底层 HTTP 请求和 JS 事件循环。WinterJS 运行时也可以编译为 WebAssembly,因此是第一个完全可在 Wasmer Edge 中运行的生产级运行时。

以下是 WinterJS 在首次发布后的四个月内为 WinterJS 1.0 所取得的成就:

  • 极快的速度(比 Bun、WorkerD 和 Node 更快)
  • WinterJS 现在与 WinterCG 规范完全兼容
  • Cloudflare API 兼容性
  • Web 框架支持:Next.js(支持 React Server Components)、Hono、Astro、SvelteKit 等

极快的速度

现在,让我们更详细地了解每个功能!

WinterJS 1.0 在本机执行时能够每秒处理 150k 请求(使用WASIX编译为 Wasm 时每秒能够处理 20k 请求)。

截至今天,WinterJS 每秒可以处理的请求数比 Bun、WorkerD 和 Node 更多。

WinterCG 兼容性

WinterCG 是负责定义一组全局类和函数的机构之一,这些类和函数需要存在,以便在一组基础设施上正确运行工作负载。

自首次发布以来,WinterJS 增加了对整套 API 的支持,包括:

  • Data fetching: fetchURLRequestResponse
  • Files: BlobFile
  • Streams: ReadableStreamWritableStreamTransformStream*
  • Text Encoders: TextEncoderTextEncoderStreamatobbtoa
  • Cryptography: crypto*

注意:转换流中的背压和一些(非常见)加密算法尚未实现

Cloudflare API 兼容性

WinterJS 希望确保大多数前端框架在 WinterJS 中都能无缝运行,无需额外处理。因此 WinterJS 有两个选择:

  • 为每个前端框架创建全新的集成
  • 加入一个现有的提案

经过对 Deno、Cloudflare 和 Fastly 适配器的深入分析,WinterJS 的开发团队意识到最强大的选择是 Cloudflare,因为它支持了其他 API 框架的大部分功能,并且可能是最常用的。因此 WinterJS 决定采用 Cloudflare API 兼容性。

为了支持 Cloudflare Worker 的工作负载,WinterJS 着手解决了四个主要方面的问题:

  • 通过 import 语法支持 ES 模块
  • 通过 Node.js 兼容性 API 支持
  • 通过 node:async_hooks 支持 AsyncLocalStorage
  • 通过 _routes.json 支持调用路由
  • 支持文件系统结构
  • 支持 Cloudflare 的 WinterCG 自定义 fetch API

在获得所有这些功能之后,我们只需要通过传递 --mode=cloudflare 来运行任何其他网络框架。

Web 框架支持

由于与 Cloudflare Workers API 的新兼容性,WinterJS 现在完全支持以下框架,不仅为框架生成的静态网站提供服务,还允许这些框架进行服务器端渲染(SSR):

  • Next.js
  • Hono
  • Astro
  • Remix
  • Svelte
  • Gatsby
  • Nuxt

支持 React 服务器组件

WinterJS 取得的最具挑战性的成就之一是运行带有服务器组件支持的 Next.js 服务器,因此渲染可以完全在服务器端完成。

您可以查看使用 React 服务器端组件演示版 Hacker News,请注意在此演示中,WinterJS 没有在服务器端缓存获取结果,因此加载时间可能不是最快的。

WinterJS 现在距离将 Next.js 前端从 Vercel 迁移到 Wasmer Edge 只有一个小步骤了。成本更低并且具有完整的本地可再现性。

下一步是什么

WinterJS 1.0 仅仅是一个开始。Wasmer 正在开发一种在边缘部署应用程序的新方法,尝试前沿技术,为您的项目实现令人难以置信的新用例。

参考链接:wasmer.io/posts/winte...

相关推荐
李少兄1 分钟前
网页应用化部署指南:基于 Edge 浏览器创建桌面快捷方式
前端·edge
IT_陈寒1 分钟前
Python的异步陷阱:我竟然被await坑了一整天
前端·人工智能·后端
光影少年2 分钟前
Android和iOS原生开发的基础知识对RN开发的重要性,RN打包发布时原生端需要做哪些配置?
android·前端·react native·react.js·ios
Fanfffff7205 分钟前
从 6s 到 3s:一次电商前端性能优化实践的系统性总结
前端·性能优化
cypking6 分钟前
npm 依赖包版本扫描提示插件Version Lens
前端·npm·node.js
还是大剑师兰特7 分钟前
Vue3 Mixin 与 Vue2 Mixin 核心区别
前端·javascript·vue.js
188号安全攻城狮10 分钟前
【前端基础知识】JavaScript 数组方法总结:从表格速查到分类详解
开发语言·前端·javascript·网络安全
qq_3813385011 分钟前
微前端架构深度实践:从 qiankun 到 Module Federation 的企业级方案
前端·架构
鱼干~14 分钟前
【全栈知识点】全栈开发知识点
前端·人工智能·c#
英俊潇洒美少年15 分钟前
迷你 React 调度器(带优先级+时间切片)手写实现
前端·javascript·react.js