{"id":31791211,"url":"https://github.com/ethowitz/rush","last_synced_at":"2025-10-10T16:52:50.126Z","repository":{"id":229385248,"uuid":"86537664","full_name":"ethowitz/rush","owner":"ethowitz","description":"A command shell written entirely in Rust","archived":false,"fork":false,"pushed_at":"2017-04-10T02:23:53.000Z","size":26,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-03-24T01:22:27.753Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/ethowitz.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}},"created_at":"2017-03-29T04:15:36.000Z","updated_at":"2024-03-24T01:22:36.214Z","dependencies_parsed_at":"2024-03-24T01:22:34.106Z","dependency_job_id":null,"html_url":"https://github.com/ethowitz/rush","commit_stats":null,"previous_names":["ethowitz/rush"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ethowitz/rush","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethowitz%2Frush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethowitz%2Frush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethowitz%2Frush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethowitz%2Frush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethowitz","download_url":"https://codeload.github.com/ethowitz/rush/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethowitz%2Frush/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004686,"owners_count":26083751,"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","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-10-10T16:52:24.184Z","updated_at":"2025-10-10T16:52:50.117Z","avatar_url":"https://github.com/ethowitz.png","language":"Rust","readme":"# Rush\n\n## Description\nRush (Rust Shell) is a command shell and expression-based scripting language\nthat aims to have intuitive and transparent syntax, making directory navigation\nand system administration absolutely blissful.\n\n## Grammar and Syntax\nRush's grammar is LL(1) which gives parsing via a recursive descent parser a\ntime complexity of O(n). Expressions are always enclosed in square brackets and\ncan be executed imperatively when separated by semicolons. Once the core of Rush\nis completed, I will add example programs/tutorials that demonstrate its\nsyntax.\n\n## Parser\nThe parser is implemented as a recursive descent parser, where every\nnon-terminal component of the grammar has its own function (these functions are\nmutually recursive).\n\n## Abstract Syntax and Evaluation\nExpressions are represented in the code as enums with the different syntactic\nforms as the fields. Values are represented in the code as enums with possible\ntypes NUM (a 64-bit, signed integer), SYM (a string of characters), BOOL, and\nNIL.\n\n## Road Map\nThese are the features I intend to implement in the near-future:\n+ Parenthetical expressions do not have to be typed in on a single line in the\n  interactive interpreter\n+ Command execution\n+ I/O redirection and piping\n+ Foreground/background processes\n+ Command history and scrolling\n+ Cursor movement via the arrow keys\n+ SYM\n+ for and while loops\n+ print\n+ Set custom prompt\n+ Variable bindings (disallowing the binding of Rush keywords)\n+ Config file, environment variables, PATH, and command aliasing\n+ Current directory\n+ Expressions embedded in commands (e.g. an expression can be evaluated to an\n  argument or even the name of a command to be executed)\n+ Lambda\n+ Predefined functions and lists\n+ Invocation of the bash interpreter for backwards compatibility\n+ Tab completion via a Trie\n+ Status (0 or 1) of last program run\n+ Secure password entry\n+ Clear, reset, exit, poweroff, sleep\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethowitz%2Frush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethowitz%2Frush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethowitz%2Frush/lists"}