• 请不要在回答技术问题时复制粘贴 AI 生成的内容
poulsen
V2EX  ›  程序员

tu-lang 一款 0 依赖,支持动态、静态的编程语言,已实现自举

  •  8
     
  •   poulsen · May 16, 2023 · 6651 views
    This topic created in 1272 days ago, the information mentioned may be changed or developed.

    仓库地址: https://github.com/tu-lang/tu

    现在 tulang 终于迈出了第一步,已实现自举,已自举实现了 compiler,std,runtime ,覆盖了上百个测试用例

    tu  [options] file.tu        
        build *.tu              编译 tulang 代码成汇编后进行链接生成二进制可执行文件
        -s  *.tu|dir            编译为 tulang 代码为 linux-amd64 汇编文件
        -c  *.s |dir            编译汇编为 elf&pecoff 跨平台可重定向 cpu 指令集文件
        -o  *.o |dir            链接 elf&pecofff 可重定向文件生成最终执行程序
        -d                      开启 trace 日志打印编译详细过程
        -gcc                    支持通过 gcc 链接生成最终可执行程序
        -g                      编译 tu 文件时带上 debug 段信息,支持栈回溯
        -std                    编译 runtime&std 相关内置库代码
    

    到现在为止真正的实现了 0 依赖,坚持写了 4-5 年了,终于可以到试用测试阶段了,之前一直没有宣传过,今天也是第一次在这个论坛发帖,也算是激励一下自己吧

    多年来就一直想不清楚一个问题:国内大牛这么多,为什么都在卷高级的优化,到现在为止都没有一个能用的上的真正意义的普通国产编程语言。

    毕业多年来就一直想自己做一款对程序员友好的语言,感觉现在的语言为了高性能、安全,往越来越极端的方向走,现在工作中就是用的 rust ,简直折磨人,和当初用 php 时比起来,我认为动态语言才是更符合未来的方向,

    但动态语言性能差,而且都是解释型,扩展差,通常通过写 c 语言动态库来实现增加一些底层的特性,最明显的就是 php 生态有个 swoole 扩展,就是写了一套 epoll 网络异步框架动态库,给 php 用,实际用起来效果也够用了,性能也比较好,但这种方式就是有点折磨人

    所以我写 tulang 的目标本来就没有很大,只想走动态语言的方向,同时支持静态写法(自己写底层,自己写 syscall), 平时主要的就写写动态语法,没有心智负担,遇到性能问题的时候 就用静态语法写,也非常方便

    还有一个目标就是,像 php ,python 这种都依赖 c ,gcc ,没有实现自举,环境依赖非常严重,所以 tulang 也要有自举,自己汇编自己链接,100%原汁原味

    最后欢迎大家试用,可以一起优化和做生态,我也会继续做下去,希望有一天能正式发生产版,成为国内的通用编程语言,也谢谢大家的 star

    54 replies  •  2023-08-28 17:46:20 +08:00
    superares
    superares
    May 17, 2023 via iPhone❤️1
    1
    Readme 里面 License 时间可以改一下了
    poulsen
    poulsen
    OP
    May 17, 2023
    2
    @superares 好的 谢谢
    veike
    veike
    May 17, 2023 via Android
    3
    国内这么多搞编程语言的了吗,😅
    不管咋样先支持一个
    faceair
    faceair
    May 17, 2023
    4
    猛人 👍
    w568w
    w568w
    May 17, 2023❤️1
    5
    不错啊,先支持一下。目前支持 FFI 吗?有可能直接接入其他语言的生态来弯道超车吗?

    p.s. 这语法好像 Rust 和 Go 的私生子😂
    chaleaochexist
    chaleaochexist
    May 17, 2023❤️2
    6
    有才啊 前有凹后有凸...
    aloxaf
    aloxaf
    May 17, 2023❤️2
    7
    起手就完成了自举,看得出来 LZ 是在认真对待这件事。不过我对文中几点我想提一下自己的看法。

    > 多年来就一直想不清楚一个问题:国内大牛这么多,为什么都在卷高级的优化,到现在为止都没有一个能用的上的真正意义的普通国产编程语言。

    因为「为了国产而国产」实在没意义,以「国产」为卖点只能吸引外行的领导,吸引不到开发者。
    而且要脸的作者,都不会大张旗鼓地以「国产」为卖点来宣传自己的语言——甚至我看了下 LZ 你的项目主页,好像通篇也没提到国产两字吧 2333 。


    > 毕业多年来就一直想自己做一款对程序员友好的语言,感觉现在的语言为了高性能、安全,往越来越极端的方向走,现在工作中就是用的 rust ,简直折磨人,和当初用 php 时比起来,我认为动态语言才是更符合未来的方向,

    我倒是认为这里反了:应该是早期大家只在乎程序员写的爽就行了,但是随着软件规模越来越大,大家才开始慢慢意识到静态强类型的必要性。
    woshipanghu
    woshipanghu
    May 17, 2023 via iPhone
    8
    大佬🐮🐮
    确实动态语言用起来真的方便 开发起来也方便
    yrj
    yrj
    May 17, 2023
    9
    虽然但是我这辈子应该可能是不会用到的,但我也要说一句大佬牛逼
    kylix
    kylix
    May 17, 2023
    10
    大佬牛逼(破音)
    flyqie
    flyqie
    May 18, 2023
    11
    看了下代码,挺好奇楼主在语法设计这边的灵感来源是哪些语言..

    有种熟悉但不完全熟悉的感觉..
    inhzus
    inhzus
    May 18, 2023
    12
    不管好不好用,但这个仓库本身真是好有意思诶
    laoxigua
    laoxigua
    May 18, 2023
    13
    挺有意思 可以完善下文档吗 周末研究研究
    ysmood
    ysmood
    May 18, 2023 via Android
    14
    这个不也能吗?而且还有 REPL https://julialang.org/
    Imindzzz
    Imindzzz
    PRO
    May 18, 2023 via Android
    15
    挺好的,不过这名字我就联想到 屠
    weiwenhao
    weiwenhao
    May 18, 2023
    16
    牛逼,已经自举了,就表示经过了项目的验证,是可以使用的编程语言
    poulsen
    poulsen
    OP
    May 18, 2023
    17
    @ysmood 好的 我学习下
    poulsen
    poulsen
    OP
    May 18, 2023
    18
    @weiwenhao 哈哈,不想泼大家冷水,目前只是能自举了,但还少了很多标准库比如 net , 还有在做的 rust 的栈协程机制
    poulsen
    poulsen
    OP
    May 18, 2023
    19
    @weiwenhao 大家也可以一起来写 std
    poulsen
    poulsen
    OP
    May 18, 2023
    20
    @inhzus 谢谢
    poulsen
    poulsen
    OP
    May 18, 2023
    21
    @laoxigua 文档还在做,因为还有一些特性还没做完,第一阶段是实现自举,后面就是优化和加特性了,文档可能会慢点,但 tu/tests 下有很多测试用例,可以看看测试用例
    poulsen
    poulsen
    OP
    May 18, 2023
    22
    @aloxaf 哈哈 不知道怎么回你了,你说的现状很正确,但我个人认为整个市场动态语言的场景还是非常大的,不是所有项目都是静态的,动态还是有他的优势的
    poulsen
    poulsen
    OP
    May 18, 2023
    23
    @w568w 哈哈,目前可以指定编译出来的静态库 实现了 c 的 abi ,可以通过寄存器传参来调用函数,默认是栈传递参数
    可以给 c 调用,也可以掉用 c 的,非常方便,但其他语言还没想过
    assclb
    assclb
    May 18, 2023
    24
    大佬牛的,点个赞
    assclb
    assclb
    May 18, 2023
    25
    很有趣,点个 star
    AstroProfundis
    AstroProfundis
    May 18, 2023❤️1
    26
    一般来说新语言要解决的问题是现有语言在某方面不方便、不好用或者不够简洁、不够高效之类的,而“国产”并不是创造一个新编程语言足够有力的理由:如果目标是“自主可控”,投入资源到许多开放源码的语言中去都可以实现,强调“国产”本身反而会限制全球开发者参与和全球用户使用的空间,对这门语言的长期发展不见得有利。

    楼主可以多强调新语言相对现有流行语言的区别以及优势应用场景,感觉会更能吸引到参与者和用户

    已 star
    huyangq
    huyangq
    May 18, 2023
    27
    卧槽 牛逼
    noahliaszn
    noahliaszn
    May 18, 2023
    28
    这个语言的命名,让我想到了另一个凹语言哈哈哈 ( https://wa-lang.org/),严重怀疑你们是一对,很重的 go 语言味道
    zyy314680012
    zyy314680012
    May 18, 2023 via Android
    29
    牛
    piaodazhu
    piaodazhu
    May 18, 2023
    30
    太强了哥
    Chipmunker
    Chipmunker
    May 18, 2023
    31
    点赞!
    Chingim
    Chingim
    May 18, 2023
    32
    向您学习!
    Braisdom
    Braisdom
    May 19, 2023
    33
    很好的尝试,最近我在写 SQL 的编译器,大家都在往更底层技术的创新,很棒的想法...
    lizhenda
    lizhenda
    May 19, 2023
    34
    start 了,确实值得肯定和支持!
    Braisdom
    Braisdom
    May 19, 2023
    35
    楼主要以看一下 LLVM ,目前大都数语言的跨平台都在往这个方向发展,有些时候站在别人的肩上也不会太丢人。

    至少从高级语言 到汇编这块 LLVM 处理的还是很棒的。
    opentrade
    opentrade
    May 19, 2023
    36
    这下凹凸合璧了
    lanten
    lanten
    May 19, 2023
    37
    👍👍👍
    47d7tEUBp521E8fJ
    47d7tEUBp521E8fJ
    May 19, 2023
    38
    支持,我也同意动态语言才是未来的方向,动态语言也可以强类型,部署也可以静态。
    kaesi0
    kaesi0
    May 19, 2023
    39
    牛批!
    feather12315
    feather12315
    May 19, 2023 via Android
    40
    🐮
    8520ccc
    8520ccc
    May 19, 2023 via iPhone
    41
    star 支持一下!
    clino
    clino
    May 19, 2023
    42
    ”compiler 纯动态语法,asmer 纯静态语法,linker 动静混合语法“
    需要文档来理解一下。
    先赞一个!
    clino
    clino
    May 19, 2023
    43
    RbtreeNode* left 这是支持指针吗?
    会不会像 c/c++那样不稳定或引入安全问题?
    alexsunxl
    alexsunxl
    May 19, 2023
    44
    @xujinhui1 动态有动态的优势,静态有静态的优势,不能一概而论,偏底层还是需要 c ,c++,rust 这些压榨机器性能的。
    TanLian
    TanLian
    May 19, 2023
    45
    这门语言的卖点是啥呢?是性能还是安全性还是别的什么
    admpubcom
    admpubcom
    May 19, 2023 via iPhone
    46
    大佬厉害👍。这个中文名是叫土语吗🐶
    ohwind
    ohwind
    May 19, 2023
    47
    license 是什么,没有明确许可用起来不放心啊。另外,动态静态用途不一需求不一,不知道你的是怎么实现的动态转动态,是编译成静态时塞一个 runtime ?如果确实是同时兼顾动态静态类型,能编译成机器码,还能和动态语言一样 gc ,那确实挺行的。
    clino
    clino
    May 19, 2023
    48
    建议能 make install 到用户目录,现在好像只能 sudo install 到系统里?
    Nazz
    Nazz
    May 19, 2023
    49
    可以在开发的时候解释执行, 部署的时候静态链接编译吗?
    uGRiPVk3vSJ
    uGRiPVk3vSJ
    May 19, 2023❤️1
    50
    有一说一这年头编程语言真不值钱,值钱的是能解决某领域内痛点并且在发展到一定体量之前不会被其他语言迅速吸收其痛点特性然后抄死的语言,只要符合这个条件,什么垃圾都能火,比如 PHP ,不符合的,哪怕语法特性再优雅都白扯
    ChrisCyler
    ChrisCyler
    May 19, 2023
    51
    不管怎么样,star 支持一下
    xgdgsc
    xgdgsc
    May 20, 2023
    52
    同感,动态语言可选静态是最好的,所以非常喜欢 julia, 现在就是 julia 编译 https://github.com/JuliaLang/PackageCompiler.jl 出来非常大, 楼主有相关知识的话,给 julia 的静态编译 https://github.com/tshort/StaticCompiler.jl 做点贡献应该也是不错的选择, 能够覆盖更大的用户面.
    tianshunovel2
    tianshunovel2
    May 20, 2023 via Android
    53
    支持楼主!
    但是我感觉评论区的某些发言有些好笑。
    楼主想怎么做就怎么做,这是人类的自由,这是楼主的自由。
    竟然有人说楼主这样宣传如何如何没有意义,这么做如何如何不正确,笑死,他人的人生意义是你我可以决定的。
    怪不得国内创新少,因为有太多人给你定指标定规范,你不能这样,不能那样,不能宣传国产,必须国际化,最后就是给你套上各种形式的加锁让你与他人赛跑,然后还嘲笑你的笨拙!
    楼主不需要他人指导怎么实现意义,请在技术上给予其反馈和联系。
    veike
    veike
    Aug 28, 2023
    54
    老哥项目没动静了啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   589 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    ♥ Do have faith in what you're doing.