{"id":18113882,"url":"https://github.com/jezza/brustfuck","last_synced_at":"2025-09-05T22:32:50.249Z","repository":{"id":69522787,"uuid":"242785853","full_name":"Jezza/brustfuck","owner":"Jezza","description":"Brainfuck in Rust. The \"I regret nothing\" Project.","archived":false,"fork":false,"pushed_at":"2020-03-16T21:07:37.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T09:14:31.869Z","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/Jezza.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}},"created_at":"2020-02-24T16:28:46.000Z","updated_at":"2020-03-16T21:07:39.000Z","dependencies_parsed_at":"2023-02-26T21:31:28.628Z","dependency_job_id":null,"html_url":"https://github.com/Jezza/brustfuck","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Jezza/brustfuck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jezza%2Fbrustfuck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jezza%2Fbrustfuck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jezza%2Fbrustfuck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jezza%2Fbrustfuck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jezza","download_url":"https://codeload.github.com/Jezza/brustfuck/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jezza%2Fbrustfuck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273832260,"owners_count":25176262,"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-09-05T02:00:09.113Z","response_time":402,"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":"2024-11-01T02:10:11.375Z","updated_at":"2025-09-05T22:32:50.179Z","avatar_url":"https://github.com/Jezza.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# brustfuck\nBrainfuck in Rust. The \"I regret nothing\" Project.\n\nAn entirely declarative brainfuck macro.\n\nThe `brainfuck` generates a function that takes two parameters.\nA `std::io::Read` and a `std::io::Write`.\n\n```rust\nuse std::io::Write;\nuse brustfuck::brainfuck;\n\nfn main() {\n\tlet function = brainfuck! {\n//\t\t[ This program prints \"Hello World!\" and a newline to the screen, its\n//\t\t  length is 106 active command characters. [It is not the shortest.]\n//\n//\t\t  This loop is an \"initial comment loop\", a simple way of adding a comment\n//\t\t  to a BF program such that you don't have to worry about any command\n//\t\t  characters. Any \".\", \",\", \"+\", \"-\", \"\u003c\" and \"\u003e\" characters are simply\n//\t\t  ignored, the \"[\" and \"]\" characters just have to be balanced. This\n//\t\t  loop and the commands it contains are ignored because the current cell\n//\t\t  defaults to a value of 0; the 0 value causes this loop to be skipped.\n//\t\t]\n\t\t++++++++                // Set Cell #0 to 8\n\t\t[\n\t\t\t\u003e++++               // Add 4 to Cell #1; this will always set Cell #1 to 4\n\t\t\t[                   // as the cell will be cleared by the loop\n\t\t\t\t\u003e++             // Add 2 to Cell #2\n\t\t\t\t\u003e+++            // Add 3 to Cell #3\n\t\t\t\t\u003e+++            // Add 3 to Cell #4\n\t\t\t\t\u003e+              // Add 1 to Cell #5\n\t\t\t\t\u003c\u003c\u003c\u003c-           // Decrement the loop counter in Cell #1\n\t\t\t]                   // Loop till Cell #1 is zero; number of iterations is 4\n\t\t\t\u003e+                  // Add 1 to Cell #2\n\t\t\t\u003e+                  // Add 1 to Cell #3\n\t\t\t\u003e-                  // Subtract 1 from Cell #4\n\t\t\t\u003e\u003e+                 // Add 1 to Cell #6\n\t\t\t[\u003c]                 // Move back to the first zero cell you find; this will\n\t\t\t\t\t\t\t\t// be Cell #1 which was cleared by the previous loop\n\t\t\t\u003c-                  // Decrement the loop Counter in Cell #0\n\t\t]                       // Loop till Cell #0 is zero; number of iterations is 8\n\n\t\t// The result of this is:\n\t\t// Cell No :   0   1   2   3   4   5   6\n\t\t// Contents:   0   0  72 104  88  32   8\n\t\t// Pointer :   ^\n\n\t\t\u003e\u003e.                     // Cell #2 has value 72 which is 'H'\n\t\t\u003e---.                   // Subtract 3 from Cell #3 to get 101 which is 'e'\n\t\t+++++++..+++.           // Likewise for 'llo' from Cell #3\n\t\t\u003e\u003e.                     // Cell #5 is 32 for the space\n\t\t\u003c-.                     // Subtract 1 from Cell #4 for 87 to give a 'W'\n\t\t\u003c.                      // Cell #3 was set to 'o' from the end of 'Hello'\n\t\t+++.------.--------.    // Cell #3 for 'rl' and 'd'\n\t\t\u003e\u003e+.                    // Add 1 to Cell #5 gives us an exclamation point\n\t\t\u003e++.                    // And finally a newline from Cell #6\n\t};\n\n\tlet mut output = vec![];\n\n\tfunction(\u0026mut std::io::stdin().lock(), \u0026mut output).unwrap();\n\tprintln!(\"Output:\");\n\tstd::io::stdout().write_all(\u0026output).unwrap();\n}\n\n```\n\n`Output: Hello World!`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjezza%2Fbrustfuck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjezza%2Fbrustfuck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjezza%2Fbrustfuck/lists"}