{"id":16215775,"url":"https://github.com/rainingcomputers/shnootalk","last_synced_at":"2025-03-16T11:30:57.748Z","repository":{"id":37239687,"uuid":"332222818","full_name":"RainingComputers/ShnooTalk","owner":"RainingComputers","description":"ShnooTalk is a new programming language","archived":false,"fork":false,"pushed_at":"2025-01-11T11:50:41.000Z","size":4003,"stargazers_count":20,"open_issues_count":60,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-27T08:19:35.209Z","etag":null,"topics":["bytecode","compiler-construction","compiler-design","compilers","language","llvm","programming-language"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RainingComputers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2021-01-23T13:56:43.000Z","updated_at":"2025-01-11T11:50:44.000Z","dependencies_parsed_at":"2025-01-08T08:24:32.941Z","dependency_job_id":"6a1839ec-7fb1-4d92-be2b-1c93184c0c89","html_url":"https://github.com/RainingComputers/ShnooTalk","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RainingComputers%2FShnooTalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RainingComputers%2FShnooTalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RainingComputers%2FShnooTalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RainingComputers%2FShnooTalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RainingComputers","download_url":"https://codeload.github.com/RainingComputers/ShnooTalk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243814864,"owners_count":20352037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bytecode","compiler-construction","compiler-design","compilers","language","llvm","programming-language"],"created_at":"2024-10-10T11:16:24.594Z","updated_at":"2025-03-16T11:30:57.741Z","avatar_url":"https://github.com/RainingComputers.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](logo.png)\n\n![](https://img.shields.io/github/v/tag/rainingcomputers/shnootalk?include_prereleases\u0026label=version)\n\n**[Language guide](docs/LanguageGuide.md) | [Try now in browser](https://rainingcomputers.github.io/shnootalk-playground/) | [Install](#install) | [Changelog](CHANGELOG.md)**\n\n# ShnooTalk\n\nShnooTalk is a programming language implemented in C++ using the LLVM compiler framework. ShnooTalk works by being compiled to a custom IR format and then translating that to LLVM IR. It is possible to run ShnooTalk on any runtime that supports the clang compiler. ShnooTalk links against standard C libraries/runtime.\n\nSee the tests directory for examples, try out the language in your browser on [ShnooTalk Playground](https://rainingcomputers.github.io/shnootalk-playground/).\n\n🛠️ Project under construction, some things may not be fully polished yet 🛠️\n\n![](blockdiag.png)\n\n## Install\n\n### Linux (Ubuntu / Arch / Debian / Fedora / RaspberryPi)\n\n```\ncurl -sf -L https://raw.githubusercontent.com/RainingComputers/ShnooTalk/main/install.sh | sudo sh\n```\n\n### MacOS\n\n```\ncurl -sf -L https://raw.githubusercontent.com/RainingComputers/ShnooTalk/main/install.sh | sh\n```\n\n### Linux x86_64 AppImage\n\nDownload app image from [releases](https://github.com/RainingComputers/ShnooTalk/releases) page\n\n### Installing from source (Ubuntu)\n\nDownload the source from latest [release](https://github.com/RainingComputers/ShnooTalk/releases)\n\n```\n./ci/Linux/build.sh llvmorg-12.0.1/clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz\nsudo make install\n```\n\n### Installing from source (MacOS)\n\nDownload the source from latest [release](https://github.com/RainingComputers/ShnooTalk/releases)\n\n```\nbrew install llvm@12\nmake build\nsudo make install\n```\n\n### VS Code syntax highlight extension\n\nInstall the extension from [here](https://marketplace.visualstudio.com/items?itemName=RainingComputers.shnootalk-vscode)\n\n## Uninstall\n\nUninstallation is straightforward and easy\n\n```\nrm -f /usr/local/bin/shtkc\nrm -f /usr/local/bin/shtkc-\u003cversion\u003e\nrm -rf /usr/local/lib/shnootalk-\u003cversion\u003e\n```\n\n## Getting started\n\n**app.shtk**\n\n```\nfn main() -\u003e int\n{\n    println(\"Hello world\")\n    return 0\n}\n```\n\n**Compile and run**\n\n```\nshtkc app.shtk -c\nclang app.o -o app\n./app\n```\n\n(You can also use gcc instead of clang)\n\n## Running compiler tests\n\nThese are end to end tests which can be used to test an implementation of ShnooTalk. The `tests_runner` python application is used to run the tests.\n\n### Directories\n\n#### compiler/tests/parser/\n\nThis is meant to test the AST generated from the parser.\n\n#### compiler/tests/compiler/\n\nTest the output executable produced by the compiler and the generated ShnooTalk icode (not the entire IR just the generated function IR instructions only, see `-icode-all` option).\n\n#### compiler/tests/ir/\n\nThis is meant to test the overall structure of the generated IR (i.e the parts that were not tested in compiler/tests/compiler/ tests).\n\n#### stdlib/stdlib/tests/\n\nTests for the standard library\n\n### When to add a test?\n\n-   When you discover a compiler bug\n-   When you add a new grammar or syntax\n-   If you make changes to existing syntax, you will most probably just have to fix failing tests\n-   When you make changes to the IR or the IR builder\n-   Avoid making changes to the pretty printer or modifying syntax of existing IR\n    instructions, but if you do, you may have to change a lot of test cases, re-generate the test cases,\n    and do careful review using `git diff`\n\n### Where to add the test?\n\n-   If you made changes to the parser, add test to the parser/ directory\n-   If you have made changes to the icode (IR instructions) or added a new IR instruction, add test to the compiler/ directory\n-   If you have fixed a compiler bug, add a test to compiler/ directory\n-   If you have made changes to the IR but not icode (IR instructions), add test to the ir/ directory\n\n### How to add a test?\n\n-   Create a .shtk files in appropriate test directory, add print statements for asserting\n-   After adding the test, run `make gen FILTERS='--file \u003ctest-file-name\u003e'`\n-   Check generated files\n-   Run `make test` to run all tests\n\n### How to run the tests?\n\n-   To run all tests, run `make test` or `make coverage`\n-   To run a single file, run `make test FILTERS='--file \u003ctest-file-name\u003e'`\n-   To run only a group of tests, run `make test FILTERS='--group \u003cgroup-name\u003e'`\n\n### How to generate the test cases?\n\n-   Run `make gen` to generate all test cases\n-   Run `make gen FILTERS='--file \u003ctest-file-name\u003e'` to generate for a particular test file\n-   Carefully review the changes using `git diff`\n\n## Project status\n\nFor more detailed status see github [project](https://github.com/users/RainingComputers/projects/1/views/1) or github [issues](https://github.com/RainingComputers/ShnooTalk/issues)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frainingcomputers%2Fshnootalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frainingcomputers%2Fshnootalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frainingcomputers%2Fshnootalk/lists"}