比 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 小时前
Radash.js 现代化JavaScript实用工具库详解 – 轻量级Lodash替代方案
开发语言·javascript·ecmascript·tree-shaking·radash.js·debounce·throttle
程序视点1 小时前
IObit Uninstaller Pro专业卸载,免激活版本,卸载清理注册表,彻底告别软件残留
前端·windows·后端
前端程序媛-Tian2 小时前
【dropdown组件填坑指南】—怎么实现下拉框的位置计算
前端·javascript·vue
iamlujingtao2 小时前
js多边形算法:获取多边形中心点,且必定在多边形内部
javascript·算法
嘉琪0012 小时前
实现视频实时马赛克
linux·前端·javascript
烛阴2 小时前
Smoothstep
前端·webgl
若梦plus3 小时前
Eslint中微内核&插件化思想的应用
前端·eslint
爱分享的程序员3 小时前
前端面试专栏-前沿技术:30.跨端开发技术(React Native、Flutter)
前端·javascript·面试
超级土豆粉3 小时前
Taro 位置相关 API 介绍
前端·javascript·react.js·taro
若梦plus3 小时前
Webpack中微内核&插件化思想的应用
前端·webpack