{"id":14008571,"url":"https://github.com/replit/prybar","last_synced_at":"2025-10-27T03:30:55.829Z","repository":{"id":37502578,"uuid":"152397590","full_name":"replit/prybar","owner":"replit","description":"Pry open those interpreters. ","archived":false,"fork":false,"pushed_at":"2024-08-29T15:27:17.000Z","size":30255,"stargazers_count":252,"open_issues_count":21,"forks_count":54,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-02-05T06:01:47.103Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/replit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2018-10-10T09:27:58.000Z","updated_at":"2025-01-10T00:39:00.000Z","dependencies_parsed_at":"2024-03-29T19:39:08.714Z","dependency_job_id":"0c8e23d1-6ed2-4320-805a-bf609f63ff4d","html_url":"https://github.com/replit/prybar","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fprybar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fprybar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fprybar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fprybar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/replit","download_url":"https://codeload.github.com/replit/prybar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238429509,"owners_count":19470979,"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","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-08-10T11:01:50.363Z","updated_at":"2025-10-27T03:30:50.221Z","avatar_url":"https://github.com/replit.png","language":"Go","readme":"# ![Prybar](logo.svg)\n\nPrybar is a universal interpreter front-end. Same interface, same\nREPL, different languages.\n\n## Why\n\nAt [Repl.it](https://repl.it), we're in the business of running REPLs.\nAs it happens to be, every language implements them differently. We\nwanted them to all behave the same: run code and drop into a REPL!\n\n## How it works\n\nPrybar, written in [Go](https://golang.org/), maintains a common\ncommand-line interface that calls into a select language backend. When\npossible, the language backends are implemented using cgo and the\nlanguage's C-bindings. Otherwise, they make use of a small script\nwritten in the host language which starts a Prybar-compatible REPL.\n\n## Usage\n\n    Usage: ./prybar-LANG [FLAGS] [FILENAME]...\n      -I\tinteractive (use readline repl)\n      -c string\n        \texecute without printing result\n      -e string\n        \tevaluate and print result\n      -i\tinteractive (use language repl)\n      -ps1 string\n        \trepl prompt (default \"--\u003e \")\n      -ps2 string\n        \trepl continuation prompt (default \"... \")\n      -q\tdon't print language version\n\n## Language Support\n\n| language                  | eval | eval expression | eval file | repl | repl like eval | set prompt |\n| ------------------------- | ---- | --------------- | --------- | ---- | -------------- | ---------- |\n| Clojure                   | ✔    | ✔               | ✔         | ✔    | ✔              | -          |\n| Emacs Lisp                | ✔    | ✔               | ✔         | ✔    | ✗              | ✔          |\n| Javascript (nodejs)       | ✔    | ✔               | ✔         | ✔    | ✔              | ✔          |\n| Javascript (spidermonkey) | ✔    | ✗               | ✗         | ✗    | ✗              | -          |\n| Julia                     | ✔    | ✗               | ✔         | ✔    | ✗              | ✔          |\n| Lua 5.1                   | ✔    | ✗               | ✔         | ✔    | ✗              | ✔          |\n| OCaml                     | ✔    | ✔               | ✔         | ✔    | ✗              | ✔          |\n| Python 2.7                | ✔    | ✔               | ✔         | ✔    | ✔              | ✔          |\n| Python 3.x                | ✔    | ✔               | ✔         | ✔    | ✔              | ✔          |\n| R                         | ✔    | ✗               | ✗         | ✔    | ✗              | ✗          |\n| Ruby 2.5                  | ✔    | ✔               | ✔         | ✔    | ✗              | ✗          |\n| SQLite                    | ✔    | ✔               | ✔         | ✔    | ✗              | ✔          |\n| Tcl                       | ✔    | ✔               | ✔         | ✗    | ✗              | -          |\n\n## Start to Develop with Nix\n\nLook in `packages` in `flake.nix`. For each package present, you can do\n\n```\nnix build .#\u003cpackage name\u003e\n```\n\nto build it. The result will be a directory named `result`.\n\nExample:\n\n```\n$ nix build .#prybar-python311\n$ ls result/bin\nprybar-python311\n```\n\nAlternately, you can use the nix shell. Enter\n\n```\nnix develop\n```\n\nto drop into a shell that has all dependencies installed an ready to go.\n\nIf you don't have nix yet, install that: https://nixos.org/\n\n## Build and run\n\n    % make help\n    usage:\n      make all          Build all Prybar binaries\n      make prybar-LANG  Build the Prybar binary for LANG\n      make docker       Run a shell with Prybar inside Docker \n                        (don't do this in the nix shell, although this is\n                                                not needed if you use nix)\n      make image        Build a Docker image with Prybar for distribution\n      make test         Run integration tests\n      make test-image   Test Docker image for distribution\n      make clean        Remove build artifacts\n      make help         Show this message\n\n### Distribution\n\nRun `make image` to create a Docker image containing not only Prybar's\ndependencies and source code but also its compiled binaries, which can\nbe embedded inside other Docker images by means of `COPY\n--from=basicer/prybar`.\n\nThis image is automatically built and deployed to [Docker\nHub](https://hub.docker.com/) every time a commit is merged to\n`master`.\n\n## License\n\nCopyright (C) 2004-2018 Neoreason, Inc. et al.\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 51 Franklin Street, Suite 500, Boston, MA\n02110-1335, USA.\n\nSee the COPYING file for more information regarding the GNU General\nPublic License.\n","funding_links":[],"categories":["JavaScript","Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplit%2Fprybar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freplit%2Fprybar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplit%2Fprybar/lists"}