C#: 爸爸再爱我一回! 写在微软使用Rust重写GitHub Copilot之后的碎碎念

做为微软的亲儿子, C#已经太久没得到父爱了.

2025年11月, 微软声明将会使用Go重写TypeScript的编译器时, C#的开发者心里就很委屈.

要知道C#和TypeScript都出自于安神Anders Hejlsberg, 他俩属于亲兄弟.
TypeScript做为小老弟, 遇到问题不让老大哥帮忙, 反而求助于外人, 这多少有些说不过去.

安神当时也注意到了网上舆论强烈, 亲自出面解释了原因: 不是因为C#不好啦, 而是因为TypeScript的结构而容易迁移到Go啦, 巴拉巴拉...
C#心里很苦,嘴里没说什么,你说是就是吧.

随着.NET 11预览版发布, Stepen Toub又带来了一年一度的.NET性能提升大作(https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-11/),
加上.NET AOT的不断成熟, 越来越多C#开发者都相信C#必定迎来另一个春天...

然后微软又给了C#开发者当头一棒: 使用了Rust重写了GitHub Copilot的运行时(https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/)
这次C#终于有点绷不住了.

上次TypeScript投奔Go的时候, C#还能安慰自己:
“编译器嘛, 情况特殊. Go写起来简单, 编译又快, 选它也算情有可原.”

现在轮到GitHub Copilot换运行时, C#寻思着自己的机会总算来了.
异步编程有, 高性能网络库有, 跨平台有, Native AOT也有.
更何况Copilot背后站着的是微软和GitHub, 这不就是自家人的项目吗?
结果微软看了一圈, 转身把活交给了Rust.

C#急了:
“不是, 我到底差在哪儿?”
微软说:
“你不差, 你很好, 只是Rust更适合.”
又是这句话.

每次都说C#很好, 每次有好事都轮不到C#.
小时候听到“你很好”, C#还会高兴半天.
现在再听到这三个字, C#已经知道后面肯定有个“但是”.

如果事情到这里结束, C#忍忍也就过去了.
毕竟这些年微软对Rust青睐有加, 大家也都看在眼里. Windows往里塞Rust, Azure往里塞Rust, 现在Copilot也开始往里塞Rust.
C#只能安慰自己:
“没事, 都是工作需要. Rust只是来家里帮忙的外人, 我才是亲儿子.”

然而就在前几天, Rust基金会发了一篇文章, 标题简单直接:
Rust Is Tier-1 Language at Microsoft (https://rustfoundation.org/media/guest-post-rust-is-tier-1-language-at-microsoft/)
Rust已经正式成为微软的Tier-1语言.
而且不是嘴上说说.
微软给Rust准备了安全的工具链、开发工具、质量流程、平台集成、生产管线和长期支持, 从本地开发一路铺到生产环境.
生怕Rust刚来微软不认路, 还专门给它修了一条“paved path”.

这下C#彻底沉默了.
原来Rust不是来家里临时帮忙的.
人家的户口早就迁进来了.
不仅迁进来了, 微软还给它收拾好了房间, 配好了家具, 接好了水电, 连从卧室到公司该走哪条路都提前铺平了.

微软还特意强调, Rust现在和C++、C#、TypeScript并列, 是内部开发中支持最好的语言之一.
C#看到“并列”两个字, 心里五味杂陈.

自己给微软打了二十多年工, 从.NET Framework熬到.NET Core, 再熬到今天的.NET 11.
桌面写过, 网站写过, 云服务写过, 游戏也写过.
微软跨平台的时候, C#跟着跨平台.
微软拥抱开源的时候, C#跟着开源.
微软要性能的时候, C#一年一年抠性能.
微软嫌部署麻烦, C#就搞单文件发布.
微软嫌启动慢, C#又去搞Native AOT.
这些年C#就像一个努力讨父亲欢心的孩子.
父亲说你胖, 它就减肥.
父亲说你慢, 它就练跑步.
父亲说你出门还要带着运行时不方便, 它就学会了AOT.
好不容易把自己练得又快又轻, 正等着父亲夸两句.
微软转身领回来一个Rust:
“来, 给大家介绍一下, 这是咱家的Tier-1语言.”

更气人的是, 微软对Rust的照顾已经到了无微不至的程度.
Rust和Windows原来的工具链不够亲?
没关系, 微软专门投入团队开发rustc_codegen_utc, 让Rust直接接入MSVC的代码生成后端.
Windows上几十年积累下来的优化、安全特性、调试、分析、热补丁和各种工具能力, Rust也要有.
不能让新来的孩子吃亏.
这个项目从2026年初就已经达到生产可用状态, 现在微软内部已经有超过100个项目仓库在使用, 而且每周还有更多项目加入.

C#看完以后差点笑出声.
当然, 是气笑的.
当年.NET想融入微软各个平台的时候, 那叫“证明自己的价值”.
现在Rust想融入微软的平台, 微软直接派人修路、架桥、打通工具链, 生怕哪里招待不周.
C#忍不住问:
“爹, 当年你培养我的时候, 也是这么上心的吗?”
微软没有回答.
它正忙着研究怎么让Rust和C++无缝互操作.

至此,C#终于明白了.
TypeScript编译器选择Go, 还可以说是一次偶然.
Copilot运行时选择Rust, 也可以说是项目需要.
Windows、Azure和底层基础设施不断引入Rust, 还可以说是为了内存安全.
可现在连Tier-1的名分都给了, 工具链铺了, 生产流程通了, 专门的团队也养起来了.
这就不是偶尔在外面吃顿饭了.
这是已经把人领回家, 正式写进族谱了.

当然, 微软依然爱C#.
每年.NET大会照开, 新版本照发, 性能博客照写.
C#也依然是微软的Tier-1语言, 地位看起来并没有下降.
只不过从前微软介绍C#时会说:
“这是我亲儿子.”
现在则变成了:
“大家都是我的孩子, 不要分什么亲生不亲生.”
一般来说, 当父母开始说这种话的时候, 亲生的那个就该提高警惕了.

C#现在也想开了.
TypeScript编译器爱用Go就用Go吧.
Copilot运行时爱用Rust就用Rust吧.
Windows内核爱掺多少Rust就掺多少Rust吧.
反正微软每次都会认真解释:
不是C#不好.
不是C#做不到.
不是微软不爱C#.
只是下一次有重要项目的时候, 还是优先考虑别人.
C#擦了擦眼泪, 打开那篇长得看不到尽头的.NET 11性能优化文章.

Stephen Toub还在努力.
至少这个家里, 还有一个人是真心疼它的.

posted @ 2026-09-23 11:09  WAKU  阅读(189)  评论(4)    收藏  举报