V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX  ›  Node.js

TypeScript7.0 用 go 重写, 10 倍快,看了两遍确定是真的...

  •  3
     
  •   ChrisFreeMan · 3 天前 · 6490 次点击
    66 条回复    2025-03-13 11:51:15 +08:00
    guaike
        1
    guaike  
       3 天前
    搞不懂为什么不用 rust 写
    twig
        2
    twig  
       3 天前 via iPhone
    @guaike Go 简单啊
    383394544
        3
    383394544  
       3 天前   ❤️ 20
    @guaike 用 golang 写提速 10 倍,用 rust 写再提速 2 倍,可以邀功两次。
    pigmen
        4
    pigmen  
       3 天前
    northbrunv
        5
    northbrunv  
       3 天前
    github 很多新项目都是前端 TS 后端 Go
    wunonglin
        6
    wunonglin  
       3 天前
    @guaike #1 视频有解释
    sagaxu
        7
    sagaxu  
       3 天前   ❤️ 2
    Go 是 native first ,C#是 bytecode first ,虽然有 AOT ,但不是所有地方都支持。

    Go 是 low level 语言,function + data structure 足矣,OOP 和模式匹配之类的特性用不上。

    总之,Go 操作数据结构很方便。
    ryougifujino
        8
    ryougifujino  
       3 天前
    好事,tsc 速度可以快很多
    jamesjammy061
        9
    jamesjammy061  
       3 天前
    +1
    Leviathann
        10
    Leviathann  
       3 天前
    怎么就 7.0 了 6.0 在哪
    Trim21
        11
    Trim21  
       3 天前 via Android
    @pigmen 看了下感觉跟 esbuild 选择 go 的原因差不多?
    Contextualist
        12
    Contextualist  
       3 天前
    @pigmen 想起来 Deno 写标准库的时候,Ryan D 说过类似这样的话:“如果不确定怎么实现,就直接按照 Go 标准库对应函数的写法来写”
    RedNax
        13
    RedNax  
       3 天前
    @Leviathann 6 还将是 javascript ,会有一些 breakchange ,6 适配之后就可以上 7 了
    ne6rd
        14
    ne6rd  
       3 天前
    所以这个快主要是针对开发,部署来说的?
    ts 最终还是编译成 js ,所以在浏览器上跑没影响?
    还是说现在有环境能直接跑 ts 了嘛?
    RedNax
        15
    RedNax  
       3 天前
    @ne6rd 对,就是开发,最终环境没影响。
    Nodejs 很快就会支持 typescript: https://nodejs.org/en/learn/typescript/run-natively
    不够这个支持只是能跑,类型检查还是得靠 tsc ,native 了还是一样用在开发阶段
    nomagick
        16
    nomagick  
       3 天前
    swc 不是用得挺好么

    TypeScript 语言层面上已经没什么改动了

    别是什么 KPI 之举,跳槽预备,献礼 Google
    yyfearth
        17
    yyfearth  
       3 天前
    @ne6rd NodeJS 22(exp)/23(by default) 可以直接跑 TS 了 https://nodejs.org/en/learn/typescript/run-natively https://developers.slashdot.org/story/25/01/19/0335202/nodejs-type-stripping-for-typescript-now-enabled-by-default
    当然 tsc 变快主要就是多开发和部署有帮助的 因为不管是 node 还是 esbuild/swc/babel 都是类型擦除 如果要做类型检查必须还用 tsc
    不过既然 node 都支持跑 TS 那么浏览器应该也快了 只要 v8 可以做类型擦除就可以支持
    yyfearth
        19
    yyfearth  
       3 天前
    @nomagick esbuild/swc/babel 只是类型擦除 不做类型检查
    rs 语言比较严谨一些 做一些比较动态的事情可以会复杂不少
    不过 rs 还有一个优势是和 node 整合比 golang 好 总的来说就是性能更好不管是 rs 本身还是和 node 的整合
    不管怎样肯定比 typescript 的版本要强的多
    minami
        20
    minami  
       3 天前   ❤️ 9
    @guaike 编程原神又打过来了?
    crackidz
        21
    crackidz  
       3 天前
    这不是挺好的么
    beginor
        22
    beginor  
       3 天前 via Android
    前端的轮子重要卷到 ts 了
    meteor957
        23
    meteor957  
       3 天前 via Android   ❤️ 4
    rust 越来越像宗教了..
    cmdOptionKana
        24
    cmdOptionKana  
       3 天前
    Go 优点挺多的,比如编译速度快
    yuhuai
        25
    yuhuai  
       3 天前
    不要做魔怔人,打工人都知道写代码够用好用才是重点,至于安全,健壮那是架构师和审查的事
    wangtian2020
        26
    wangtian2020  
       3 天前
    才觉察自己一直没发现大象,前端工具链中就 typescript 服务每次启动转好久,都习惯了
    96368a
        27
    96368a  
       3 天前
    rust 暂且不说,Anders 作为 c#的创始人之一,在重写 typescript 时都没有考虑 c#,这就有点难绷了
    june4
        28
    june4  
       3 天前
    卧槽这个要好评,现在 ts 实在太慢了影响打字,有些库都要卡几秒才出提示
    Danswerme
        29
    Danswerme  
       3 天前
    微软居然不用 C#? 这还是巨硬吗
    zx9481
        30
    zx9481  
       3 天前
    额 所以只是编译速度变快了 10 倍?
    irisdev
        31
    irisdev  
       3 天前
    等下,ts 原来不是用 C#开发的?刚查了下原来是 ts 自举的
    yuhuai
        32
    yuhuai  
       3 天前   ❤️ 1
    ...你们真的不看原文的吗?人家都说了,c# 的 aot 还在 preview 且有平台限制,没有上生产广泛验证过,而且 go 也是函数范式,哪个工具更适合用哪个有什么问题吗
    me1onsoda
        33
    me1onsoda  
       3 天前
    诶,听起来有点魔幻,用 go 重构 ts ?是用 js 缝了一个 go 的底层库,像 Java 缝 C 那样?
    BenX
        34
    BenX  
       3 天前
    看到 Anders Hejlsberg 默认牛逼
    pursuer
        35
    pursuer  
       3 天前   ❤️ 1
    把 typescript 里的 sync 调用改成 async 的 issue( https://github.com/microsoft/TypeScript/issues/1857) 挂着没改,整了个 Go 的,给我气笑了。真要把这个作为 TS 后继版本,那些使用了 typescript 的 API/transformer 的 JS/TS 代码怎么办。我需要性能的时候我直接 transpile 忽略类型检查不就行了,真的是没活可以咬打火机。
    qxmqh
        36
    qxmqh  
       3 天前
    go 可以的。非常好的语言。
    body007
        37
    body007  
       3 天前
    @guaike
    @pigmen

    里面有人回复用 Go 可以有更多人参与代码贡献,用 Rust 会少一些人,例如我太笨只学会了 Go
    Flourite
        38
    Flourite  
       3 天前
    不相信 Google 的文化,开源的东西炫技居多
    qxmqh
        39
    qxmqh  
       3 天前   ❤️ 4
    It's time to give up on .NET. Even Microsoft has chosen Go for critical components like dapr framework and the TS compiler. Microsoft itself has abandoned its own product first. 看到这笑死了。
    mywaiting
        40
    mywaiting  
       3 天前
    我总觉得 TS 有独立成为一门语言的能力,转换到 IR 感觉不是特别难吧
    min
        41
    min  
       3 天前
    居然不用 c#,看来对 ms 的 c#团队很不爽
    ARIInV2
        42
    ARIInV2  
       3 天前
    前端技术圈 日常重写。。。。。。。
    XIVN1987
        43
    XIVN1987  
       3 天前
    建议 ruster 也用 rust 重写一遍,,性能提升 20 倍,,打败这个 go 重写的
    wei2629
        44
    wei2629  
       3 天前   ❤️ 3
    nb 。也别编译成 js 了, 直接编译成 go , 替换 nodejs 完事。
    iorilu
        45
    iorilu  
       3 天前   ❤️ 1
    微软要良心点把 ts 扶正, 直接开发桌面 gui 软件, 那是做了点好事了

    搞成 visual TS, 就像当年 vb 一样
    jsq2627
        46
    jsq2627  
       3 天前
    @mywaiting 鸿蒙 ArkTS?
    lizy0329
        47
    lizy0329  
       3 天前   ❤️ 1
    C# 社区可以原地解散了
    RedNax
        48
    RedNax  
       3 天前
    @pursuer 官方说会有 wasm 版,最坏情况下 API 走 wasm 就行了
    mark2025
        49
    mark2025  
       3 天前
    @96368a https://www.v2ex.com/t/1117764 好像主要是 C# 有类吧
    vincentWdp
        50
    vincentWdp  
       3 天前
    微软产品, 必属精品
    charlie21
        51
    charlie21  
       3 天前
    "we have strong domain information about when "logical" times to run the GC will be."
    pursuer
        52
    pursuer  
       3 天前
    @RedNax 走 wasm 是会有序列化性能损耗的。而且 wasm 生态还有个 assemblyscrip 更是和 TS 十分接近的写法,移植不是更容易?话说回来这些写惯 TS 的这些开发者能忍得了 Go 的拉胯的类型系统和类型推断能力也是神人了。
    leokun
        53
    leokun  
       3 天前
    @me1onsoda typescript 7 以前是 nodejs 实现的,可以用来编译 ts 到 js ,或者和编辑器结合做类型推断和检查。nodejs 是 javascript 的运行时,可以在操作系统运行 js 。现在用 go 重写了,加速了编译 ts 到 js 的过程
    mxT52CRuqR6o5
        54
    mxT52CRuqR6o5  
       3 天前
    为啥不用 C#写,不比 go 强得多
    leokun
        55
    leokun  
       3 天前
    @wei2629 直接编译成为二进制吧,那真的可以替换 nodejs ,为什么还需要 javascript 作为中间媒介外加一个 nodejs 运行时
    yyfearth
        56
    yyfearth  
       3 天前
    @leokun TS 作为 JS 的超集 Super Set 是兼容 JS 那些动态特性的 比如 any
    这种要编译成二进制就和要把 JS 编译成二进制差不多 基本上不会比现在 v8 JIT+AOT 快多少
    要完美的编译成二进制就必须强制类型 不能有那么多动态的东西 那其实就是 TS 的一个 Sub-set
    assemblyscript 其实就是这么一个东西 这种编译成二进制才有优势

    另外你说的就是 wasm 现在正在做的 只不过完整版的 TS 很难做到 做到估计优势也没那么大
    yyfearth
        57
    yyfearth  
       3 天前
    @mxT52CRuqR6o5 C# 语言设计的还是很好的 但是毕竟需要.Net 运行时 和 Java 需要 JVM 一样
    JS 已经需要一个 NodeJS 了 用 Go 或者 RS 可以直接提供独立的可执行二进制文件
    要是用 C#或者 Java 之类 你觉得大家会为了一个 tsc 手动或者自动下载安装一个.Net 或者 JRE 吗?而且太不小
    运行效率也比 Go RS 之类的差一个级别 也就可能比 NodeJS 好一点
    ajaxgoldfish
        58
    ajaxgoldfish  
       3 天前   ❤️ 1
    怎么有一股原神味
    mxT52CRuqR6o5
        59
    mxT52CRuqR6o5  
       3 天前
    @yyfearth #56 .net core 现在应该可以 single file deployment 把用到的运行时内置在程序里,而且运行效率是 go 差 C#、RS 一个级别,C#之比 RS 、C 差个一丢丢
    sagaxu
        60
    sagaxu  
       3 天前
    @yyfearth dotnet 和 JVM 都可以 aot 生成 native binary ,如果重写,JVM aot 得到的 binary 估计在 30M 左右,dotnet aot 估计在 20M 左右,都不需要下载安装 runtime 。dotnet 还支持 self contained 打包,不用 aot 也可以显著缩小尺寸。

    但是这么做折腾一番,没有得到任何好处,无论是 JVM aot 还是 dotnet aot ,编译时间比 Go 长的多,往往要十倍甚至好几十倍。tsc 也没有用到任何现代语法特性,用 C#没有收益。
    nilaoda
        61
    nilaoda  
       2 天前
    C#的 AOT 还不够成熟,加上这是移植而不是重写。选择相近的 Go 没啥问题。
    c0t
        62
    c0t  
       2 天前 via iPhone
    @yyfearth 就 go 的 ffi 性能…有什么好整合的
    realJamespond
        63
    realJamespond  
       2 天前
    jsx 全都没 ready 还搞啥
    jiangzm
        64
    jiangzm  
       2 天前
    @yyfearth #57 C#可以 AOT 编译,和 GO 一样的。
    jiangzm
        65
    jiangzm  
       2 天前
    我觉得用 GO 移植是合理的选择, 如果后面 TS 会被微软定位成独立编程语言,应该就会有微软自己的 TS Runtime ,届时 ts 编译器可能会用 Rust/C++/C#重写。
    jiangzm
        66
    jiangzm  
       2 天前
    @qxmqh #39 路人观点而已, 切莫上头
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2951 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:05 · PVG 16:05 · LAX 01:05 · JFK 04:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.