{"id":21767037,"url":"https://github.com/sigmasoldi3r/saturnus","last_synced_at":"2026-03-03T18:02:23.410Z","repository":{"id":165008144,"uuid":"639977886","full_name":"sigmasoldi3r/saturnus","owner":"sigmasoldi3r","description":"A general-purpose high level programming language, the feels of Swift, Rust and Lua in a simple but flexible language.","archived":false,"fork":false,"pushed_at":"2025-05-28T15:59:42.000Z","size":694,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-17T04:31:18.595Z","etag":null,"topics":["compiler","functional-programming","lua","multiparadigm","programming-language","rust-lang","scripting-language"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sigmasoldi3r.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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},"funding":{"github":"sigmasoldi3r"}},"created_at":"2023-05-12T17:09:20.000Z","updated_at":"2025-10-04T00:00:27.000Z","dependencies_parsed_at":"2023-11-07T01:38:02.484Z","dependency_job_id":"74eb73f0-628b-416b-885e-2ab1d887ed58","html_url":"https://github.com/sigmasoldi3r/saturnus","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sigmasoldi3r/saturnus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmasoldi3r%2Fsaturnus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmasoldi3r%2Fsaturnus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmasoldi3r%2Fsaturnus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmasoldi3r%2Fsaturnus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigmasoldi3r","download_url":"https://codeload.github.com/sigmasoldi3r/saturnus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmasoldi3r%2Fsaturnus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30054001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T17:46:22.538Z","status":"ssl_error","status_checked_at":"2026-03-03T17:46:22.036Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["compiler","functional-programming","lua","multiparadigm","programming-language","rust-lang","scripting-language"],"created_at":"2024-11-26T13:21:42.398Z","updated_at":"2026-03-03T18:02:23.381Z","avatar_url":"https://github.com/sigmasoldi3r.png","language":"Rust","funding_links":["https://github.com/sponsors/sigmasoldi3r"],"categories":[],"sub_categories":[],"readme":"# Saturnus\n\nA general-purpose, high level programming language that aims to be\na direct replacement of _Lua_ scripts.\n\n\u003e [!WARNING]  \n\u003e Currently, saturnus is under a heavy re-write from scratch, so the\n\u003e repository is not ready yet, although functional.\n\u003e\n\u003e Main changes involve shifting from a PEG parsing crate to a LR one,\n\u003e among other changes like splitting modules, and a \"rebranding\" of the\n\u003e toolchain. Among others, Jaanus is now \"Titan\", which currently does\n\u003e not work.\n\u003e\n\u003e Also the rewrite comes with new benefits, such as compilation time\n\u003e optimizations, and new expressions that were deemed too hard to parse\n\u003e previously.\n\n## Test it out\n\nClone the repository, then run inside:\n\n```sh\ncd examples\ncargo run --bin titan -- compile\n```\n\nYou should see something akin to:\n\n```\ntitan warning: Dependency resolving is being worked on.\ntitan info: Compiling objects...\n  Compiling src\\example.st...\n    Compiled src\\example.st\n  Compiling src\\main.st...\u003e                         ] 1/2                                                                                                                         \n    Compiled src\\main.st\n [=================================================\u003e] 2/2                                                                                                                         \ntitan info: Linking objects...\n      Linked target/objects\\example.lua\n      Linked target/objects\\main.lua                                                                                                                                              \n [=================================================\u003e] 2/2                                                                                                                         \ntitan info: Building Test\ntitan info: Done\n```\n\nAnd a file called `Test.lua` in the `target/` folder.\n\n## How does it look?\n\n\u003e [!TIP]\n\u003e Take a look at the `/examples` folder in this repository!\n\nA simple, yet classy (No pun intended) hello world:\n\n_Extracted from [examples/hello_world.st example file](https://github.com/sigmasoldi3r/saturnus/blob/main/examples/hello_world.st)_\n\n```js\n// Simple hello world with OOP\nclass Greeter {\n    // Self is available within the class context.\n    // References this class.\n    static fn new(name \u003c- \"Stranger\") = Self.'{ name };\n    fn greet() = print(\"Hello \" ++ self.name ++ \"!\");\n    // You could invoke new as:\n    static fn default() = Self::new \"unnamed\";\n}\n\nlet world = Greeter::new \"World\";\n\nworld.greet();\n\n```\n\n\u003e [!CAUTION]\n\u003e Most notorious changes from the old syntax include:\n\u003e\n\u003e - Dynamic dispatch is now `.`, previously `-\u003e`.\n\u003e - Static dispatch is back to `::`.\n\u003e - Lambda syntax is now block oriented: `{ a, b =\u003e a + b }`, unlike the old one (`() =\u003e {}`).\n\n_More syntax will be added to the docs as the project develops._\n\n## Roadmap\n\n\u003e [!NOTE]\n\u003e Is more or less ordered by priority.\n\n- **[ONGOING]**: Create a working toolset to compile and manage projects\n- **[ONGOING]**: Fix basic missing features (Unary ops).\n- Parse process and compile macro declarations `macro! foo {...}`\n- Parse and compile macro calls `some!(\"macro\")`\n- Parse and compile runtime decorators `@some(\"thing\") class Foo {...}`\n- Parse and compile macro decorators `@some!(\"thing\") class Foo {...}`\n- Add coroutine sugar syntax `{ a, b ~\u003e \"This is a coroutine\" }`\n- Implement a robust runtime that can handle async programming and web services.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigmasoldi3r%2Fsaturnus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsigmasoldi3r%2Fsaturnus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigmasoldi3r%2Fsaturnus/lists"}