TypeScript 为什么使用 Go 而不是 Rust 重写 ?官方回应来了

news/2025/3/13 9:29:43/文章来源:https://www.cnblogs.com/pjl43/p/18769302

TypeScript官推最近宣布他们正在移植到 Go,速度已经提高了 10 倍之多。

 

作为以性能为代表的另一语言Rust,人们自然会疑惑为什么没有选Rust语言重构呢?为方便大家快速理解,我用DeepSeek用小红书的语气重新总结了下:(原文放在下方,大家可以继续往下阅读)

【技术选型大实话!Go vs Rust我站它】

家人们谁懂啊!做技术选型真的太难了😭当初在Go和Rust之间反复横跳,最后含泪总结出这些干货👇

🚀核心结论:
Go移植TS代码真香警告!1年肝出高兼容+高性能版本 vs Rust重写可能耗3年还难用(大冤种预警.jpg)

💡划重点理由:
1️⃣ 移植舒适度拉满
Rust移植JS/TS就像把大象塞冰箱🤯疯狂踩坑+写unsafe代码预警!Go却能丝滑复刻原代码结构,开发者头发保住啦💇♀️

2️⃣ 性能焦虑退退退
实测单核性能差不离!Go不用魔改unsafe就能打,内存管理还贼懂事(疯狂暗示内存条不用燃烧🔥

3️⃣ 隐藏彩蛋get
选Go还能自动屏蔽"为啥不用Rust"的灵魂拷问(懂的都懂.jpg)而且API接口照样能玩出花,根本不care互操作短板~

⚠️暴言预警:
Rust虽强但移植JS不是它KPI啊!就像要求程序员会修电脑——专业不对口嘛!Go恰巧对上咱们的移植DNA🧬

🌟最后暴风夸夸:
Go的代码生成能力绝绝子!并发原语和Rust五五开,写起来还像喝奶茶一样顺滑🥤TS代码人原地搬家不是梦~

原文声明翻译:

我们在选择 Go 时就明确知道,肯定会有人质疑我们为什么没有选择 Rust。这是一个很好的问题,因为 Rust 是一门出色的语言,如果没有其他限制,它在编写新的原生代码时是一个很强的首选。

 

可移植性(即能够创建一个与当前代码库算法上相似的新代码库的能力)一直是我们考虑如何实现这一目标时的关键限制。我们尝试了大量方法,试图找到一种在 Rust 中可行的表示方式来实现这种移植,但所有方法要么存在不可接受的权衡(性能、人机工程学等),要么演变成了“自己编写垃圾回收器”式的策略。有些方法几乎成功了,但往往需要大量使用不安全代码,而 Rust 中似乎没有多少基础元素的组合能够让人机工程学上轻松地将 JavaScript 代码移植过来(这样说并不令人意外——大多数语言并不优先考虑让从 JavaScript/TypeScript 移植变得容易!)。

 

最终,我们面临两个选择——在 Rust 中从头开始完全重写,这可能需要数年时间,并产出一个与 TypeScript 不兼容、无人能实际使用的版本;或者在 Go 中进行移植,大约一年左右就能得到一个可用的东西,在语义上高度兼容,在性能上极具竞争力。

 

而且,我们甚至不太清楚这么做的好处是什么(除了不必应对那么多“你们为什么没选 Rust?”的问题)。我们仍然希望有一个高度分离的 API 接口,以保持我们实现选择的开放性,因此 Go 的互操作性短板并不是特别相关。Go 拥有出色的代码生成和数据表示能力,就像 Rust 一样。Go 拥有出色的并发原语,就像 Rust 一样。单核性能也在误差范围内。虽然在 Go 中使用不安全代码可能会带来一些性能提升,但我们在不使用任何不安全原语的情况下已经获得了出色的性能和内存使用。

 

在我们看来,Rust 在实现其设计目标方面非常成功,但“从这个特定的 JavaScript 代码库轻松移植到 Rust”显然不是它的设计目标之一。Go 也不是,但就我们目前编写代码的方式而言,它在这方面确实表现得相当不错。

 

关于贡献问题,我并不是特别担心。学习如何在类型检查器中正确工作所需的努力,远比学习 Go 要多得多。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898029.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么情况,今年面试都不问八股文了??准备了几个月,结果一个都不问。。

大家好,我是R哥。 你还在死背八股文? 有好几个兄弟和我说,说背了几个月的八股文,结果面试官一个都不问,全问项目,结果面试被暴击了。 比如这位准备报名我的面试辅导的兄弟:还有这位报了我面试辅导的兄弟也是,全程项目拷打,都没问八股文:什么情况,现在面试都不问八股…

Hyper V用法实践:虚拟机备份与恢复技巧

在使用Hyper-V管理虚拟机时,掌握虚拟机备份与恢复技巧至关重要,这有助于确保业务连续性和数据安全。以下是一些实践中的虚拟机备份与恢复技巧:一、备份技巧 使用Hyper-V管理器导出虚拟机 打开Hyper-V管理器,选择要备份的虚拟机。 右键点击虚拟机,选择“导出”。 在导出窗口…

CorelDRAW Graphics Suite 2025 v26.0 (macOS, Windows) - 矢量图形设计软件

CorelDRAW Graphics Suite 2025 v26.0 (macOS, Windows) - 矢量图形设计软件CorelDRAW Graphics Suite 2025 v26.0 (macOS, Windows) - 矢量图形设计软件 vector illustration, layout, photo editing, and typography 请访问原文链接:https://sysin.org/blog/coreldraw/ 查看…

如何告别供应商图纸外发泄密风险,开启安全传输通道?

在当今竞争激烈的商业环境中,供应商图纸外发已成为企业合作与生产过程中不可或缺的环节。然而,这一环节却隐藏着诸多安全风险,一旦忽视,可能会给企业带来毁灭性的打击。图纸作为企业核心技术和商业秘密的重要载体,包含着产品的设计理念、技术参数、工艺流程等关键信息。这…

20242942 2024-202-2 《网络攻防实践》第二次作业

一、实验内容 1.网络踩点 攻击者通过公开或半公开的渠道收集目标网络的基本信息。这一阶段的目标是尽可能多地了解目标网络的结构、范围和潜在漏洞,而不会直接与目标系统交互。目的是确定目标网络的IP地址范围;了解目标网络的域名和子域名以及获取目标组织的网络拓扑结构。  …

【一文解读】研发网与办公网跨网文件传输难题如何破解?

一、研发网与办公网跨网文件传输的挑战与需求 在现代企业中,研发网与办公网的分离设计是为了保障信息安全、控制网络访问、提高数据的保密性等方面的考虑。研发网(通常用于技术开发、测试、实验等敏感工作)与办公网(用于日常办公和互联网访问)在企业内部通常是两个相对独立…

H德菲尔monyOS Next 入门实战 - 文字转拼音,文字转语音

pinyin4js 提供了以下接口:● 文字转拼音(带声调和不带声调)● 文字转拼音首字母● 简体繁体互转 let rawText = "风急天高猿萧哀,渚清沙白鸟飞回;" let pinyin1: string =pinyin4js.convertToPinyinString(rawText, " ", pinyin4js.WITH_TONE_MARK) …

吐血整理!2025 最好用 AI 工具全汇总,别再瞎找了!

在当下这个 AI 蓬勃发展的时代,各类 AI 工具如雨后春笋般涌现,让人眼花缭乱。无论是职场人士想要提升工作效率,还是创作者渴望激发灵感、优化内容,亦或是学生期望找到学习的得力助手,都在苦苦寻觅真正好用、实用的 AI 工具。 AI工具太多,是好事也是坏事,特别是当面临选择…

公司明令禁止使用Xshell。因此,我花了一些时间,

今天这篇文章轻松不烧脑,主要是想和大家分享一下我在工作中常用的远程管理工具——MobaXterm。这款工具不仅功能强大,而且在日常的远程操作中极为高效,特别适合用来管理远程服务器。MobaXterm结合了多种网络工具,支持SSH、X11、RDP等协议,能够通过图形界面连接不同的远程系…

DeepSeek 十大提问公式 | AI 通用

AI 辅助教学案例 03,收集整理并记录现有的比较火爆的国产 AI 在教育教学中的使用案例,以期和各位同仁、莘莘学子共同进步。[第三期]前情概要 DeepSeek 十大提问公式

指在PCB上的导线与焊盘或过孔之间的连接处添加的一个三角形或弧形的填充物,形状类似于泪滴,因此得名。

1. PCB Layout 步骤生成PCB确定PCB layout规范绘制板框尺寸布局 布局规范:按电气性能合理分区,一般分为:数字电路区(即怕干扰、又产生干扰)、模拟电路区(怕干扰)、功率驱动区(干扰源); 完成同一功能的电路,应尽量靠近放置,并调整各元器件以保证连线最为简洁; 对于质…

打造出更加智能、便捷的学习与咨询体验。

扣子(coze.cn)是一款用来开发新一代 AI Chat Bot 的应用编辑平台,无论你是否有编程基础,都可以通过这个平台来快速创建各种类型的 Chat Bot,并将其发布到各类社交平台和通讯软件上!2月1日,扣子国内版已经正式上线啦~赶快来体验一下吧!一转眼,ChatGPT已经在AI界炙手可热…