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

349 天前
 poulsen

仓库地址: 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

4713 次点击
所在节点    程序员
54 条回复
superares
348 天前
Readme 里面 License 时间可以改一下了
poulsen
348 天前
@superares 好的 谢谢
veike
348 天前
国内这么多搞编程语言的了吗,😅
不管咋样先支持一个
faceair
348 天前
猛人 👍
w568w
348 天前
不错啊,先支持一下。目前支持 FFI 吗?有可能直接接入其他语言的生态来弯道超车吗?

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

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

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


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

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

有种熟悉但不完全熟悉的感觉..
inhzus
347 天前
不管好不好用,但这个仓库本身真是好有意思诶
laoxigua
347 天前
挺有意思 可以完善下文档吗 周末研究研究
ysmood
347 天前
这个不也能吗?而且还有 REPL https://julialang.org/
Imindzzz
347 天前
挺好的,不过这名字我就联想到 屠
weiwenhao
347 天前
牛逼,已经自举了,就表示经过了项目的验证,是可以使用的编程语言
poulsen
347 天前
@ysmood 好的 我学习下
poulsen
347 天前
@weiwenhao 哈哈,不想泼大家冷水,目前只是能自举了,但还少了很多标准库比如 net , 还有在做的 rust 的栈协程机制
poulsen
347 天前
@weiwenhao 大家也可以一起来写 std
poulsen
347 天前
@inhzus 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/940481

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX