3Prybar is a universal interpreter front-end. Same interface, same
4REPL, different languages.
8At [Repl.it](https://repl.it), we're in the business of running REPLs.
9As it happens to be, every language implements them differently. We
10wanted them to all behave the same: run code and drop into a REPL!
14Prybar, written in [Go](https://golang.org/), maintains a common
15command-line interface that calls into a select language backend. When
16possible, the language backends are implemented using cgo and the
17language's C-bindings. Otherwise, they make use of a small script
18written in the host language which starts a Prybar-compatible REPL.
22 Usage: ./prybar-LANG [FLAGS] [FILENAME]...
23 -I interactive (use readline repl)
25 execute without printing result
27 evaluate and print result
28 -i interactive (use language repl)
30 repl prompt (default "--> ")
32 repl continuation prompt (default "... ")
33 -q don't print language version
37| language | eval | eval expression | eval file | repl | repl like eval | set prompt |
38| ------------------------- | ---- | --------------- | --------- | ---- | -------------- | ---------- |
39| Clojure | ✔ | ✔ | ✔ | ✔ | ✔ | - |
40| Emacs Lisp | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
41| Javascript (nodejs) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
42| Javascript (spidermonkey) | ✔ | ✗ | ✗ | ✗ | ✗ | - |
43| Julia | ✔ | ✗ | ✔ | ✔ | ✗ | ✔ |
44| Lua 5.1 | ✔ | ✗ | ✔ | ✔ | ✗ | ✔ |
45| OCaml | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
46| Python 2.7 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
47| Python 3.x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
48| R | ✔ | ✗ | ✗ | ✔ | ✗ | ✗ |
49| Ruby 2.5 | ✔ | ✔ | ✔ | ✔ | ✗ | ✗ |
50| SQLite | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
51| Tcl | ✔ | ✔ | ✔ | ✗ | ✗ | - |
53## Start to Develop with Nix
55To get started developing Prybar, you can use the nix shell. Enter
61to drop into a shell that has all dependencies installed an ready to go.
63If you don't have nix yet, install that: https://nixos.org/
69 make all Build all Prybar binaries
70 make prybar-LANG Build the Prybar binary for LANG
71 make docker Run a shell with Prybar inside Docker
72 (don't do this in the nix shell, although this is
73 not needed if you use nix)
74 make image Build a Docker image with Prybar for distribution
75 make test Run integration tests
76 make test-image Test Docker image for distribution
77 make clean Remove build artifacts
78 make help Show this message
80## You can also use Docker
82Prybar uses Docker to make it easy to get started with development.
83First, you must [install Docker](https://docs.docker.com/install/).
88to create a Docker image containing the Prybar code and all of its
89dependencies, and launch a shell inside of it. The Prybar source
90repository will be synchronized with the working directory of the
91container's filesystem, so you only need to re-run `make docker` if
92you change the Dockerfile or any of its scripts.
94To build Prybar (this should be done inside `make docker` unless you
95have installed all of Prybar's dependencies on your system), run
96`make` or `make all`. Then the `prybar-LANG` binaries will be
97available in the working directory and on `$PATH`, one for each
98supported language `LANG` ([see the `languages` subdirectory of this
99repository](languages)):
105Run `make image` to create a Docker image containing not only Prybar's
106dependencies and source code but also its compiled binaries, which can
107be embedded inside other Docker images by means of `COPY
108--from=basicer/prybar`.
110This image is automatically built and deployed to [Docker
111Hub](https://hub.docker.com/) every time a commit is merged to
116Copyright (C) 2004-2018 Neoreason, Inc. et al.
118This program is free software; you can redistribute it and/or
119modify it under the terms of the GNU General Public License
120as published by the Free Software Foundation; either version 2
121of the License, or (at your option) any later version.
123This program is distributed in the hope that it will be useful,
124but WITHOUT ANY WARRANTY; without even the implied warranty of
125MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
126GNU General Public License for more details.
128You should have received a copy of the GNU General Public License
129along with this program; if not, write to the Free Software
130Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA
133See the COPYING file for more information regarding the GNU General
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list