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

2023-05-16 17:32:13 +08:00
 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

4755 次点击
所在节点    程序员
54 条回复
superares
2023-05-17 08:20:13 +08:00
Readme 里面 License 时间可以改一下了
poulsen
2023-05-17 09:21:48 +08:00
@superares 好的 谢谢
veike
2023-05-17 21:22:25 +08:00
国内这么多搞编程语言的了吗,😅
不管咋样先支持一个
faceair
2023-05-17 21:36:10 +08:00
猛人 👍
w568w
2023-05-17 21:39:36 +08:00
不错啊,先支持一下。目前支持 FFI 吗?有可能直接接入其他语言的生态来弯道超车吗?

p.s. 这语法好像 Rust 和 Go 的私生子😂
chaleaochexist
2023-05-17 21:43:46 +08:00
有才啊 前有凹后有凸...
aloxaf
2023-05-17 22:10:42 +08:00
起手就完成了自举,看得出来 LZ 是在认真对待这件事。不过我对文中几点我想提一下自己的看法。

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

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


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

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

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

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

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

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

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

© 2021 V2EX