{"id":37201443,"url":"https://github.com/tu-lang/tu","last_synced_at":"2026-01-14T23:13:39.941Z","repository":{"id":50901130,"uuid":"519658896","full_name":"tu-lang/tu","owner":"tu-lang","description":"tu-lang(凸)是一种编程语言，旨在创造一种非常简单高效的-零依赖-语言(防秃)。已实现自举","archived":false,"fork":false,"pushed_at":"2025-12-17T11:59:46.000Z","size":43780,"stargazers_count":173,"open_issues_count":0,"forks_count":5,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-12-21T00:26:35.398Z","etag":null,"topics":["amd64","asmer","assembly","asynchronous","asyncio","coroutines","dynamic-programming","linker","linux","native","programming-language","static-programming"],"latest_commit_sha":null,"homepage":"","language":"Turing","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tu-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-07-31T02:01:35.000Z","updated_at":"2025-12-17T11:59:51.000Z","dependencies_parsed_at":"2023-12-06T13:45:02.195Z","dependency_job_id":"352c9383-1582-49fd-939d-42cedf2247d8","html_url":"https://github.com/tu-lang/tu","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/tu-lang/tu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tu-lang%2Ftu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tu-lang%2Ftu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tu-lang%2Ftu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tu-lang%2Ftu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tu-lang","download_url":"https://codeload.github.com/tu-lang/tu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tu-lang%2Ftu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28437945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amd64","asmer","assembly","asynchronous","asyncio","coroutines","dynamic-programming","linker","linux","native","programming-language","static-programming"],"created_at":"2026-01-14T23:13:39.138Z","updated_at":"2026-01-14T23:13:39.894Z","avatar_url":"https://github.com/tu-lang.png","language":"Turing","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003eThe Tu Programming Language\u003c/h1\u003e\n\n[文档手册:筹备中](tu-lang.cn) \n\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cp\u003e\n\u003c!--\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/tu-lang/tu\"\u003e--\u003e\n\u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/tu-lang/tu\"\u003e\n\u003cimg alt=\"GitHub release (latest by date including pre-releases)\" src=\"https://img.shields.io/github/v/release/tu-lang/tu?include_prereleases\"\u003e\n\u003cimg alt=\"GitHub top language\" src=\"https://img.shields.io/github/languages/top/tu-lang/tu\"\u003e    \n\u003c/p\u003e\n\n![logo](./assets/logo.svg)\n\u003c/div\u003e\n\ntu-lang(凸）是一种编程语言，旨在创造一种非常简单的零依赖、支持动态\u0026\u0026静态语法的编译型语言,全静态链接，目前已自举完成: `compiler纯动态语法，asmer纯静态语法，linker动静混合语法`.\n```\ntu  [options] file.tu        \n    build *.tu              编译成汇编后进行链接生成二进制可执行文件\n    -s  *.tu|dir            编译为tulang代码为linux-amd64汇编文件\n    -c  *.s |dir            编译汇编为elf\u0026pecoff跨平台可重定向cpu指令集文件\n    -o  *.o |dir            链接elf\u0026pecofff可重定向文件生成最终执行程序\n    -d                      开启trace日志打印编译详细过程\n    -gcc                    支持通过gcc链接生成最终可执行程序\n    -g                      编译tu文件时带上debug段信息,支持栈回溯\n    -std                    编译runtime\u0026std相关内置库代码\n```\n## demo\n![gif](./assets/tulang.gif)\n  \n## env \u0026 install\n`linux`: 环境安装\n```asciidoc\n$ git clone https://github.com/tu-lang/tu.git\n$ cd tu\n$ sudo make install\n```\n## compiler\u0026asmer\u0026linker测试\n更多语法测试用例在`/tests`目录下，包含了各种数据结构、运算、gc、demo测试\n- 单元测试\n```\n$ cd tu\n$ sudo make install\n$ make tests\n```\n\n## @基础类型\n- [x] 动态类型 int float string bool null array map closure object\n- [x] 原生类型 pointer i8 u8 i16 u16 i32 u32 i64 i64 f32 f64 struct\n- [x] func,goto,class,mem\n- [x] return,type,use,if,continue,break\n- [x] while,for|range for,loop,match\n- [x] async await api impl\n\n### @动态写法\n更多用例请看`/tests`\n```\nuse fmt\nclass Http {\n    request\n}\nHttp::closure(){\n    return fn(){\n        return [\"arr1\",\"arr2\",3,4]\n    }\n}\nfn factory(){\n    a = [\"1\",2,\"some string word\"]     // array\n    b = {1:2,\"sdfds\":3,\"a\":a}          // map\n    return a,b\n}\nfn main(){\n    a = \"this is a string\"             // string\n    b,c = 1000,200.33                  // number\n    fmt.println(a,b,c)\n\n    a,b = factory()\n    fmt.print(a[0],a[1],a[2])\n    fmt.print(b[\"a\"],b[\"sdfds\"])\n\n    obj = new Http()                    // object\n    obj.request = {\"method\":\"POST\"}\n    cfunc = obj.closure()               // member\n    fmt.println(cfunc())\n}\n```\n```\nuse fmt\nuse os\nfn main(){\n    map = { \"1\":'a' , \"hello\":\"world\" , 3:5.11 , \"arr\": [ 0,1,2,3,4] }\n    for k,v : map {\n        if k == \"arr\" {\n            for v2 : v {}\n        }\n        fmt.println(k,v)\n    }\n\n    match map[\"hello\"] {\n        map    : os.die(\"not this one!\")\n        999    : os.die(\"not this one!\")\n        \"hello\" | \"world\": {\n            fmt.println(\"got it\",map[\"hello\"])\n        }\n        _      : {\n            os.die(\"not default\")\n        }\n    }\n}\n```\n### @静态写法\n更多用例请看`/tests`\n```\nuse runtime\nNull\u003ci64\u003e = 0\nenum {\n    Insert,\n    Update\n    Conflict,\n}\n\nmem Rbtree {\n    RbtreeNode* root\n    RbtreeNode* sentinel\n    u64         insert\n}\nmem RbtreeNode {\n    u64  key\n    u8   color\n    RbtreeNode* left\n    RbtreeNode* right\n    RbtreeNode* parent\n\n    runtime.Value* k\n    runtime.Value* v[Conflict]\n}\nRbtree::find(hk\u003cu64\u003e){\n\n    node\u003cRbtreeNode\u003e     = this.root\n    sentinel\u003cRbtreeNode\u003e = this.sentinel\n\n    while node != sentinel \n    {\n        if  hk != node.key  {\n            if  hk \u003c node.key {\n                node = node.left\n            }else{\n                node = node.right\n            }\n            continue\n        }\n    }\n    return Null\n}\nfn main(){}\n```\n### @特性相关\nasync(无栈协程) \n```\nuse fmt\nuse runtime\nuse os\n\nmem ReadStream: async {\n    i32 bytes\n    i32 readn\n    i32 fd\n}\nReadStream::poll(){\n    if this.readn != this.bytes {\n\tthis.readn += 1\n\treturn runtime.PollPending\n    }\t\n    match this.fd {\n\t1 : return runtime.PollReady , \"hello \"\n\t2 : return runtime.PollReady , \"world\"\n\t_ : os.die(\"\")\n    }\n}\nasync read(){\n    fut\u003cReadStream\u003e = new ReadStream  { fd: 1, bytes: 5 }\n    buf += fut.await\n\n    fut2\u003cReadStream\u003e = new ReadStream { fd: 2, bytes: 5 }\n    buf += fut2.await\n    return buf\n}\n\nfn main(){\n    body = runtime.block(read())\n    fmt.println(body)\n}\n```\n\n- api + mem 实现多态动态分发\n```\napi Animal {\n    fn name()\n    fn do(){\n        fmt.printf(\n            \"%s can %s\\n\",\n            this.name(),\n            this.talk()\n        )\n    }\n    fn talk()\n} \n\nmem Dog {}\n\nimpl Animal for Dog {\n    fn name(){\n        return \"dog\"\n    }\n    fn talk() {\n        return \"wowo!\"\n    }\n}\n\nmem Cat {}\n\nimpl Animal for Cat {\n    fn name(){\n        return \"cat\"\n    }\n    fn talk() {\n        return \"miao!\"\n    }\n}\nfn main(){\n    ani\u003cAnimal\u003e = new Cat{}\n    ani.do()\n\n    ani = new Dog{}\n    ani.do()\n}\n\n\n```\n## License\nCopyright @2016-2024 The tu-lang author. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftu-lang%2Ftu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftu-lang%2Ftu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftu-lang%2Ftu/lists"}