比 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...

相关推荐
问道飞鱼11 分钟前
【前端知识】强大的js动画组件anime.js
开发语言·前端·javascript·anime.js
k093313 分钟前
vue中proxy代理配置(测试一)
前端·javascript·vue.js
傻小胖14 分钟前
React 脚手架使用指南
前端·react.js·前端框架
程序员海军27 分钟前
2024 Nuxt3 年度生态总结
前端·nuxt.js
m0_7482567837 分钟前
SpringBoot 依赖之Spring Web
前端·spring boot·spring
web135085886351 小时前
前端node.js
前端·node.js·vim
m0_512744641 小时前
极客大挑战2024-web-wp(详细)
android·前端
若川1 小时前
Taro 源码揭秘:10. Taro 到底是怎样转换成小程序文件的?
前端·javascript·react.js
潜意识起点2 小时前
精通 CSS 阴影效果:从基础到高级应用
前端·css
奋斗吧程序媛2 小时前
删除VSCode上 origin/分支名,但GitLab上实际上不存在的分支
前端·vscode