将React编译器移植到Rust
摘要
一项将React编译器移植到Rust的计划,旨在提高性能并与Rust生态系统集成。
查看缓存全文
缓存时间: 2026/06/10 11:43
react/react 源码:https://github.com/react/react
React (https://react.dev/) · GitHub 许可证 (https://github.com/facebook/react/blob/main/LICENSE) npm 版本 (https://www.npmjs.com/package/react) (Runtime) 构建与测试 (https://github.com/facebook/react/actions/workflows/runtime_build_and_test.yml) (Compiler) TypeScript (https://github.com/facebook/react/actions/workflows/compiler_typescript.yml) 欢迎提交 PR (https://legacy.reactjs.org/docs/how-to-contribute.html#your-first-pull-request)
React 是一个用于构建用户界面的 JavaScript 库。
- 声明式: React 让你能够轻松创建交互式用户界面。为应用中的每个状态设计简单的视图,当数据变化时,React 会高效地更新并渲染出正确的组件。声明式视图让代码更可预测、更易理解、也更方便调试。
- 组件化: 构建封装了自身状态的组件,然后将它们组合成复杂的用户界面。由于组件逻辑是用 JavaScript 而非模板编写的,因此你可以轻松地在应用中传递丰富的数据,并将状态与 DOM 分离。
- 一次学习,随处编写: 我们不对你的技术栈做其余假设,因此你可以在不重写现有代码的情况下,用 React 开发新功能。React 还可以借助 Node (https://nodejs.org/en) 在服务器端渲染,并通过 React Native (https://reactnative.dev/) 驱动移动应用。
了解如何在你的项目中使用 React (https://react.dev/learn).
安装
React 从设计之初就考虑到了逐步采纳,你可以根据需要只使用少量或大量 React 功能:
- 使用快速入门 (https://react.dev/learn) 初步体验 React。
- 将 React 添加到现有项目 (https://react.dev/learn/add-react-to-an-existing-project),按需使用少量或大量 React 功能。
- 创建新的 React 应用 (https://react.dev/learn/start-a-new-react-project)(如果你正在寻找强大的 JavaScript 工具链)。
文档
你可以在网站上找到 React 文档 (https://react.dev/)。请先查看入门 (https://react.dev/learn) 页面以快速了解。
文档分为以下几个部分:
- 快速入门 (https://react.dev/learn)
- 教程 (https://react.dev/learn/tutorial-tic-tac-toe)
- 思考 React (https://react.dev/learn/thinking-in-react)
- 安装 (https://react.dev/learn/installation)
- 描述 UI (https://react.dev/learn/describing-the-ui)
- 添加交互 (https://react.dev/learn/adding-interactivity)
- 管理状态 (https://react.dev/learn/managing-state)
- 高级指南 (https://react.dev/learn/escape-hatches)
- API 参考 (https://react.dev/reference/react)
- 获取支持 (https://react.dev/community)
- 贡献指南 (https://legacy.reactjs.org/docs/how-to-contribute.html)
你可以通过向此仓库 (https://github.com/reactjs/react.dev) 提交拉取请求来改进文档。
示例
我们在网站上提供了几个示例 (https://react.dev/)。以下是一个入门示例:
import { createRoot } from 'react-dom/client';
function HelloMessage({ name }) {
return <div>Hello {name}</div>;
}
const root = createRoot(document.getElementById('container'));
root.render(<HelloMessage name="Taylor" />);
这个示例将在页面上的容器中渲染“Hello Taylor”。你会注意到我们使用了类似 HTML 的语法;我们称之为 JSX (https://react.dev/learn#writing-markup-with-jsx)。使用 React 并不一定需要 JSX,但它让代码更易读,编写起来就像写 HTML 一样。
贡献
此仓库的主要目的是不断改进 React 核心,使其更快、更易用。React 的开发在 GitHub 上公开进行,我们感谢社区贡献了 bug 修复和改进。请阅读以下内容,了解如何参与改进 React。
行为准则 (https://code.fb.com/codeofconduct)
Facebook 采用了行为准则,我们希望项目参与者遵守。请阅读完整文本 (https://code.fb.com/codeofconduct),以便了解哪些行为是允许的,哪些是不被容忍的。
贡献指南 (https://legacy.reactjs.org/docs/how-to-contribute.html)
阅读我们的贡献指南 (https://legacy.reactjs.org/docs/how-to-contribute.html) 来了解我们的开发流程、如何提出 bug 修复和改进,以及如何构建和测试你对 React 的修改。
新手友好议题 (https://github.com/facebook/react/labels/good%20first%20issue)
为了帮助你入门并熟悉我们的贡献流程,我们列出了一份新手友好议题 (https://github.com/facebook/react/labels/good%20first%20issue) 列表,其中包含了范围相对有限的 bug。这是一个很好的起点。
许可证
React 采用 MIT 许可证。
相似文章
@evanyou: 回答一个常见问题——为什么不把React编译器做成插件?这一切都归结于实际的权衡。将i…
Evan You解释了为什么将React编译器直接集成到OXC(Rust)中相比插件方法能带来显著的性能提升,同时讨论了二进制大小问题和AST传输的未来计划。
我们的Rust到Zig重写进展如何
Roc编译器团队已将他们30万行Rust代码库重写为Zig,经过18个月实现了功能对等,生成了更小的WebAssembly二进制文件并提高了性能。
用 Rust 重写
本文评估了2026年的‘Rewrite It In Rust’运动,讨论了现实世界中的性能提升、诸如新错误和平台支持等挑战,并提倡增量重写而非完全重写。
@tolgaogzz: 我和我的最佳 codex 将 eslint-plugin-svelte 移植到了 Rust,运行速度提升约 330 倍,所有规则的所有测试用例均通过…
一位开发者借助 Codex 将 eslint-plugin-svelte 移植到 Rust,实现了约 330 倍的速度提升,同时通过了所有测试用例。
Bun 的 Rust 重写已合并
Bun,JavaScript 运行时和包管理器,已合并其核心从 Zig 到 Rust 的重写,可能提升性能和可维护性。