{"id":27372675,"url":"https://github.com/mgthomas99/picobrain","last_synced_at":"2026-04-27T20:31:55.701Z","repository":{"id":57323951,"uuid":"148537268","full_name":"mgthomas99/picobrain","owner":"mgthomas99","description":"The 250-byte Brainfuck interpreter, written in Javascript!","archived":false,"fork":false,"pushed_at":"2018-09-15T17:08:59.000Z","size":26,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-14T22:22:20.893Z","etag":null,"topics":["brainfuck","codegolf","interpreter","javascript","language","minify","npm","package","tiny"],"latest_commit_sha":null,"homepage":"","language":"Brainfuck","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/mgthomas99.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}},"created_at":"2018-09-12T20:21:13.000Z","updated_at":"2023-03-04T05:45:15.000Z","dependencies_parsed_at":"2022-08-31T00:00:54.572Z","dependency_job_id":null,"html_url":"https://github.com/mgthomas99/picobrain","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mgthomas99/picobrain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgthomas99%2Fpicobrain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgthomas99%2Fpicobrain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgthomas99%2Fpicobrain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgthomas99%2Fpicobrain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgthomas99","download_url":"https://codeload.github.com/mgthomas99/picobrain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgthomas99%2Fpicobrain/sbom","scorecard":{"id":639598,"data":{"date":"2025-08-11","repo":{"name":"github.com/mgthomas99/picobrain","commit":"de7cfed93008a7c413ddd90c2c19a938c3277efe"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-21T10:19:21.331Z","repository_id":57323951,"created_at":"2025-08-21T10:19:21.331Z","updated_at":"2025-08-21T10:19:21.331Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32354566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"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":["brainfuck","codegolf","interpreter","javascript","language","minify","npm","package","tiny"],"created_at":"2025-04-13T10:14:49.868Z","updated_at":"2026-04-27T20:31:55.681Z","avatar_url":"https://github.com/mgthomas99.png","language":"Brainfuck","funding_links":[],"categories":[],"sub_categories":[],"readme":"[github-index-url]: https://github.com/mgthomas99/picobrain/blob/master/index.js\n[github-license-url]: https://github.com/mgthomas99/picobrain/blob/master/LICENSE\n[github-repository-url]: https://github.com/mgthomas99/picobrain\n[github-license-shield-url]: https://img.shields.io/github/license/mgthomas99/picobrain.svg?style=flat-square\n[github-size-shield-url]: https://img.shields.io/github/size/mgthomas99/picobrain/index.js.svg?style=flat-square\n[npm-package-url]: https://www.npmjs.com/package/picobrain\n[npm-downloads-shield-url]: https://img.shields.io/npm/dt/picobrain.svg?style=flat-square\n[npm-version-shield-url]: https://img.shields.io/npm/v/picobrain.svg?style=flat-square\n\n# picobrain\n\n[![npm][npm-version-shield-url]][npm-package-url]\n[![npm][npm-downloads-shield-url]][npm-package-url]\n[![Github file size][github-size-shield-url]][github-index-url]\n[![GitHub][github-license-shield-url]][github-license-url]\n\n\u003e Perhaps the smallest Javascript brainfuck interpreter\n\n`picobrain` is a 250-byte Javascript brainfuck interpreter.\n\n## Usage\n\nThe library exports a generator function which yields on output.\n\n```js\nvar bf = require(\"picobrain\")\n\nbf(\"+++[\u003e++++++++++\u003c-]\u003e+++.\"); // Yields \"!\"\n```\n\nYou can also provide your own tape.\n\n```js\n// Here, we specify that we want the interpreter to use a new `Uint8Array` as\n// the tape. This will set the tape size to 20 and cause cell values to wrap on\n// overflow/underflow.\n// If no tape is provided, the interpreter will just use a new empty unbounded\n// number array.\nvar tape = new Uint8Array(20);\nbf(\"-\", tape);\n```\n\nFor the input command to work (`,`), you must provide a function which is to be\ninvoked on input:\n\n```js\nfunction input() {\n  return window.prompt();\n}\n\nbf(\",.\", [], function() {\n  return window.prompt();\n});\n```\n\n## Why\n\nWhy not?\n\nThis library is also an open [codegolf](https://en.wikipedia.org/wiki/Code_golf)\nchallenge. Please feel free to submit pull requests if you're able to make the\ncode even shorter, or fork the project and make your own API!\n\n## Install, Build \u0026 Test\n\nTo install the package, use the standard NPM install command:\n\n```sh\nnpm install picobrain\n```\n\nThe package is hand-written, minified Javascript; therefore, no build process is\nrequired, and you can directly edit and execute the source!\n\nAn NPM script has been created for simplicity when running tests, which can be\nrun from the command line as shown below:\n\n```sh\nnpm test\n```\n\npicobrain uses the [Tape](https://www.npmjs.com/package/tape) library for\ntesting.\n\n### Content Delivery Network (CDN)\n\nThe picobrain library can be imported via [unpkg](https://unpkg.com/) as shown\nbelow:\n\n```html\n\u003cscript type=\"application/javascript\"\u003evar module= {};\u003c/script\u003e\n\u003cscript src=\"https://unpkg.com/picobrain/index.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"application/javascript\"\u003e\n  var bf = module.exports;\n  // Library is imported as `bf`!\n\u003c/script\u003e\n```\n\nBe aware that picobrain is a CommonJS module and therefore uses\n`module.exports`; before importing the script, you will need to define `module`\nor use a CommonJS-compatible module loader.\n\n## License\n\nPlease see the `LICENSE` file for license information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgthomas99%2Fpicobrain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgthomas99%2Fpicobrain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgthomas99%2Fpicobrain/lists"}