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

5214 次点击
所在节点    程序员
54 条回复
poulsen
2023-05-18 10:29:59 +08:00
@laoxigua 文档还在做,因为还有一些特性还没做完,第一阶段是实现自举,后面就是优化和加特性了,文档可能会慢点,但 tu/tests 下有很多测试用例,可以看看测试用例
poulsen
2023-05-18 10:34:21 +08:00
@aloxaf 哈哈 不知道怎么回你了,你说的现状很正确,但我个人认为整个市场动态语言的场景还是非常大的,不是所有项目都是静态的,动态还是有他的优势的
poulsen
2023-05-18 10:36:44 +08:00
@w568w 哈哈,目前可以指定编译出来的静态库 实现了 c 的 abi ,可以通过寄存器传参来调用函数,默认是栈传递参数
可以给 c 调用,也可以掉用 c 的,非常方便,但其他语言还没想过
assclb
2023-05-18 11:28:55 +08:00
大佬牛的,点个赞
assclb
2023-05-18 11:29:39 +08:00
很有趣,点个 star
AstroProfundis
2023-05-18 17:27:58 +08:00
一般来说新语言要解决的问题是现有语言在某方面不方便、不好用或者不够简洁、不够高效之类的,而“国产”并不是创造一个新编程语言足够有力的理由:如果目标是“自主可控”,投入资源到许多开放源码的语言中去都可以实现,强调“国产”本身反而会限制全球开发者参与和全球用户使用的空间,对这门语言的长期发展不见得有利。

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

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

至少从高级语言 到汇编这块 LLVM 处理的还是很棒的。
opentrade
2023-05-19 09:28:19 +08:00
这下凹凸合璧了
lanten
2023-05-19 09:29:13 +08:00
👍👍👍
47d7tEUBp521E8fJ
2023-05-19 09:36:20 +08:00
支持,我也同意动态语言才是未来的方向,动态语言也可以强类型,部署也可以静态。
kaesi0
2023-05-19 09:44:29 +08:00
牛批!
feather12315
2023-05-19 09:45:08 +08:00
🐮

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

https://yangjunhui.monster/t/940481

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

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

© 2021 V2EX