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

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

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

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

至少从高级语言 到汇编这块 LLVM 处理的还是很棒的。
opentrade
363 天前
这下凹凸合璧了
lanten
363 天前
👍👍👍
47d7tEUBp521E8fJ
363 天前
支持,我也同意动态语言才是未来的方向,动态语言也可以强类型,部署也可以静态。
kaesi0
363 天前
牛批!
feather12315
363 天前
🐮

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

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

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

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

© 2021 V2EX