{"id":31439263,"url":"https://github.com/maximecb/plush","last_synced_at":"2025-12-24T15:41:36.230Z","repository":{"id":277453128,"uuid":"832890903","full_name":"maximecb/plush","owner":"maximecb","description":"Minimalistic dynamically-typed programming language for fun/teaching purposes.","archived":false,"fork":false,"pushed_at":"2025-09-24T21:58:20.000Z","size":474,"stargazers_count":40,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-24T23:29:10.788Z","etag":null,"topics":["interpreter","programming-language","virtual-machine","vm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximecb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["maximecb"]}},"created_at":"2024-07-24T00:03:18.000Z","updated_at":"2025-09-24T21:58:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"b85feddf-6512-45c3-931e-1cebc88370db","html_url":"https://github.com/maximecb/plush","commit_stats":null,"previous_names":["maximecb/plush"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/maximecb/plush","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximecb%2Fplush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximecb%2Fplush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximecb%2Fplush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximecb%2Fplush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximecb","download_url":"https://codeload.github.com/maximecb/plush/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximecb%2Fplush/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277705977,"owners_count":25863048,"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-30T02:00:09.208Z","response_time":75,"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":["interpreter","programming-language","virtual-machine","vm"],"created_at":"2025-09-30T15:01:03.539Z","updated_at":"2025-12-24T15:41:36.211Z","avatar_url":"https://github.com/maximecb.png","language":"Rust","funding_links":["https://github.com/sponsors/maximecb"],"categories":["Rust"],"sub_categories":[],"readme":"# The Plush Programming Language\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"media/city.png\" height=180\u003e\u0026nbsp;\n    \u003cimg src=\"media/mondrian.png\" height=180\u003e\u0026nbsp;\n    \u003cimg src=\"media/amigaball.png\" height=180\u003e\n\u003c/p\u003e\n\nPlush is a toy programming language and virtual machine for fun, teaching and creative programming.\nIt follows a minimalistic design philosphy and draws inspiration from JavaScript, Lox, Lua, Python and Rust.\nPlush supports actor-based parallelism and is designed such that there is no global VM lock.\nThe language has straightforward semantics and is built around a simple stack-based interpreter. The codebase is well-commented, has very few depencencies, and good cross-platform support. It has been tested on Linux, Mac and Windows.\nPlease do note however that this project is very much a fun side-project and a work in progress. You could run into bugs and\nmissing features.\n\nTo get a feel for what Plush code looks like, have a look at the programs in the [/examples](/examples) directory. For a detailed guide to the Plush language, please see the [Plush Language Guide](docs/language.md).\n\n## Build Instructions\n\nDependencies:\n- The [Rust toolchain](https://www.rust-lang.org/tools/install)\n- The [SDL2 libraries](https://wiki.libsdl.org/SDL2/Installation)\n\n### Installing Rust and SDL2 on macOS\n\nInstall the SDL2 package:\n```sh\nbrew install sdl2\n```\n\nAdd this to your `~/.zprofile`:\n```sh\nexport LIBRARY_PATH=\"$LIBRARY_PATH:$(brew --prefix)/lib\"\n```\n\nInstall the Rust toolchain:\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n### Installing Rust and SDL2 on Debian/Ubuntu\n\nInstall the SDL2 package:\n```sh\nsudo apt-get install libsdl2-dev\n```\n\nInstall the Rust toolchain:\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n### Installing Rust and SDL2 on Windows\n\nFollow the Windows-specific instructions to [install the Rust toolchain](https://www.rust-lang.org/tools/install).\n\nGet `SDL2.dll` from one of [SDL2 Releases](https://github.com/libsdl-org/SDL/releases).\n\nCopy `SDL2.dll` (unzip) to the root of your cloned repo.\n\n### Compiling the Project\n\n```sh\ncargo build\n```\n\nTo run the test suite:\n```sh\ncargo test\n```\n\nTo run a plush script:\n```sh\n# See example programs under /examples, /benchmarks and /tests\ncargo run examples/helloworld.psh\ncargo run examples/plasma.psh\n```\n\n## Open Source License\n\nThe code for Plush, its VM and associated tools is shared under the [Apache-2.0 license](https://github.com/maximecb/plush/blob/main/LICENSE). The example code in the `/examples` directory is shared under the [Creative Commons CC0](https://creativecommons.org/publicdomain/zero/1.0/) license to encourage sharing and remixing.\n\n## Contributing\n\nThere is a lot of work to be done to get this project going and contributions are welcome.\n\nA good first step is to look at open issues and read the available documentation. Another easy way to contribute\nis to create new example programs showcasing cool things you can do with Plush, or to\n[report any bugs and issues](https://github.com/maximecb/plush/issues) you encounter.\nIf you do report bugs, please provide as much context as possible, and the smallest reproduction you can\ncome up with.\n\nYou can also search the codebase for TODO or FIXME notes:\n```sh\ngrep -IRi \"todo\" .\n```\n\nIn general, smaller pull requests are easier to review and easier to iterate on. If you would like to add\na complex feature or make significant refactorings the design of Plush, I\nrecommend opening an issue or starting a discussion about your proposed changes first.\n\nPlease keep in mind that one of the core principles of Plush is to minimize dependencies to keep the VM easy\nto install and easy to port. Opening a PR that adds dependencies to multiple new packages and libraries is\nunlikely to get merged.\n\nIf you think that Plush is cool, you can support my work via [GitHub Sponsors](https://github.com/sponsors/maximecb) :heart:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximecb%2Fplush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximecb%2Fplush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximecb%2Fplush/lists"}