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

相关推荐
wyn20001128几秒前
JavaWeb的一些基础技术
前端
江城开朗的豌豆10 分钟前
JavaScript篇:函数间的悄悄话:callee和caller的那些事儿
javascript·面试
Hygge-star15 分钟前
Flask音频处理:构建高效的Web音频应用指南
前端·flask·音视频·pygame·csdn开发云
江城开朗的豌豆26 分钟前
JavaScript篇:回调地狱退散!6年老前端教你写出优雅异步代码
前端·javascript·面试
飞鸟malred38 分钟前
vite+tailwind封装组件库
前端·react.js·npm
TE-茶叶蛋38 分钟前
Vue Fragment vs React Fragment
javascript·vue.js·react.js
Angindem39 分钟前
从零搭建uniapp项目
前端·vue.js·uni-app
java干货1 小时前
深度解析:Spring Boot 配置加载顺序、优先级与 bootstrap 上下文
前端·spring boot·bootstrap
Uyker1 小时前
微信小程序动态效果实战指南:从悬浮云朵到丝滑列表加载
前端·微信小程序·小程序
小小小小宇2 小时前
前端按需引入总结
前端