Parrot Virtual Machine
Switch branches/tags
7.0.2 7.3.0 7.7.0 240/fix_cond_eval 714/scheduler_bug 777/no_pretty_debug Util/tt_1891_complex_trig appveyor avl_string_cache ayardley/documentation_revisions bacek/unmerge_context benabik/pbc_gz breed cached_eh checkdepend_pmcs chromatic/early_pmc_gc chromatic/early_pmc_mark_throws_exception chromatic/lorito_dynops cmp_pmc coke/rm_pasm constant_unfolding cyg-desparse-gh888 eval_pmc exceptions_refactor_merge exceptions_refactor fix_hll_mmd gc_ms2_sf gc_tuning gcc_defines gci_fill_params_reduce gci_fill_params_reduce2 gci_tt1199 gerd/JSON_nqp gerdr/socket-readline-gh944 gh-pages gh346 gh798_embed_api_green_threads gh956_unicode_sprintf gsoc_instrument gsoc_nfg gsoc_past_optimization hints_more_verbose http-daemon-gh898 inside-out-ctx jit_prototype kid51/release_update_version kill-useless-defaults lean leto/pbc_gz libffi-gh1082 lorito m0-debugger m0-typed-deref m0-unified-memory-spec m0 manual_args master mem_limit mls/new-autoclose native_attrs native_pbc2 new-layout new-packfile-api notfound/declaration-after-statement nqp-p6 nqp_pct nwellnhof/compiler_flags ops2c-necromancy opsc_lasm opsc_llvm pasm-serializer pcc_reorder_signatures pcc_reorder pct_winxed pdds_restart pge_no_namespace_methods pmc_i_ops pmc_pct ptc/pod_checker-gh1053 ptc/rm_morph-gh372 remove_sub_flags repcc rurban/JSON_nqp rurban/asctime_r-gh858 rurban/bitwise_uni-gh848 rurban/broken-sprintf-uplus-gh832 rurban/builtin+sub-gh304 rurban/darwin-build-gh1096 rurban/fix-gc-thr-gh880+gh875 rurban/fix-gc-thr2 rurban/gc-armalign-gh1200 rurban/gc-precise rurban/gcms-numfree rurban/gh1017-proxy-get_id rurban/hash rurban/html-gh667 rurban/integer-float-gh1234 rurban/jit rurban/json-utf16-gh845 rurban/lexqnames-gh1095-dev rurban/morph-gh372 rurban/object-subclass-gh1010 rurban/ops2c-lines-gh641 rurban/ops2c_llvm rurban/pasm_out-gh989 rurban/pasm_out rurban/pgegrep rurban/relocatable-gh800 rurban/socket-read2-gh909 rurban/sockopt-gh909 rurban/task_interp rurban/thread-lock-gh1187 rurban/threads_array_heap rurban/va_arg-float-gh828 rurban/6model separator_fixes shallow_clone shims sixparrot-nci sixparrot smoke-me/JSON_nqp1 smoke-me/appveyor smoke-me/cast-align-gh1201 smoke-me/const-exc-gh1236 smoke-me/coro-return-gh1106 smoke-me/darwin-rpath-gh883 smoke-me/env-gh1191 smoke-me/file-copy-dir-gh229 smoke-me/gc-ms-default smoke-me/sizeof-gh1238 smoke-me/slow-mod smoke-me/struct_debug-gh1195 smoke-me/win64-gh1203 soh-cah-toa/hbdb soh-cah-toa/odius soh-cah-toa/podds soh-cah-toa/tt-2155 soh-cah-toa/tt1215 splint-quiet substr_eq_at tadzik/tt-2101-fix tailcall_new_gh596 tied-cstring tt389_fix tt855_debugging_options tt1516_builddir_option tt2094 tt2103_cmp_pmc unshared_buffers vtable_various whiteknight/foldcase_str whiteknight/gc_finalize whiteknight/gc_precise whiteknight/gc_two_stage_sweep whiteknight/gh_663 whiteknight/io_userhandle whiteknight/io_vtable_lookup whiteknight/pipe_pmc whiteknight/rm_pasm2 whiteknight/userhandle win32_64_fixes zeroargs_subs_checking
Nothing to show
Clone or download
rurban fix cperl compat and perl5.26
no . in @inc anymore.
use strict hashpairs
{ needs to be quoted in regexp.
Test::Builder->plan checks signature under cperl
Latest commit 5328417 Oct 2, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
compilers imcc: fix exceptions in constant folding Jun 6, 2017
config [core] fix sub dispatch with builtin namespace Feb 17, 2016
docs Supported release 8.1.0 "Andean Parakeet" Feb 15, 2016
editor Added DESCRIPTION May 26, 2012
examples [examples] fixup podchecker issues from prev. Aug 17, 2015
ext [pmc] deprecate StringHandle auto-reopen and auto-read Feb 17, 2016
frontend make bootstrap-prt0 with Winxed 1.10 Feb 17, 2016
include [core] fix __WORDSIZE for clang Oct 2, 2017
lib fix cperl compat and perl5.26 Oct 2, 2017
ports [ops2c] Rename binary to parrot-ops2c [GH #900] Oct 6, 2014
runtime Removed bitrotted author attributions. Aug 12, 2015
src imcc: fix exceptions in constant folding Jun 6, 2017
t imcc: fix exceptions in constant folding Jun 6, 2017
tools make bootstrap-namealias, update for newer gperf Feb 17, 2016
.gitignore [ops2c] Rename binary to parrot-ops2c [GH #900] Oct 6, 2014
.travis.yml [travis] temp remove broken Test::Perl::Critic Nov 9, 2016
CREDITS Prepare for the 7.10.0 release. Nov 20, 2015
ChangeLog [codingstd] for sockaddr, getaddrinfo_unix Nov 9, 2016 fix cperl compat and perl5.26 Oct 2, 2017
DEVELOPING first batch of $Id$ removals Nov 9, 2010
DONORS.pod [doc] add cPanel and Erin Schoenhals to DONORS Oct 14, 2014
LICENSE Update license to Artistic 2.0. Resolves RT #43165. Jun 18, 2007
MANIFEST Restore tests run during 'make configure_tests'. Dec 26, 2015
MANIFEST.SKIP [ops2c] Rename binary to parrot-ops2c [GH #900] Oct 6, 2014
PBC_COMPAT foldcase: bump PBC_COMPAT to 13.1 Feb 16, 2016
PLATFORMS Release 7.11.0 "Amazonian parrotlet" Dec 14, 2015
README.pod [docs] README.pod tell that --optimize is recommended for packagers Mar 5, 2014
README_cygwin.pod [codingstd][GH #851] Add missing (C) lines to POD Jan 3, 2013
README_win32.pod [codingstd] fix various pod syntax errors Sep 8, 2014
RESPONSIBLE_PARTIES Removed bitrotted author attributions. Aug 12, 2015
TODO replace some references to with the appropriate links… Jan 17, 2012
VERSION bump VERSION to 8.2.0 Feb 17, 2016
api.yaml [pmc] deprecate StringHandle auto-reopen and auto-read Feb 17, 2016
appveyor.yml appveyor: more msvc flags Dec 14, 2015
parrotbug replace some references to with the appropriate links… Jan 17, 2012



README.pod - Parrot Virtual Machine


Parrot is a virtual machine designed to efficiently compile and execute bytecode for dynamic languages.


This code is distributed under the terms of the Artistic License 2.0. For more details, see the full text of the license in the file 'LICENSE'.


You need a C compiler, a linker, and a 'make' program.

If you plan to link Parrot with the ICU library, you must download and install it before configuring Parrot. You may obtain the ICU library at

You will also need Perl 5.8.4 or newer and Storable 2.12 or newer in order to run various configure and build scripts.

For most of the platforms we support, Parrot should build out-of-the-box. 'docs/parrot.pod' lists the core platforms, and 'PLATFORMS' provides reports on the platforms on which Parrot has been built and tested.


I. Install Git.

Linux: The method depends on your distribution. To install you should execute (as root or sudo <cmd>):

On Ubuntu/Debian (apt-based):

apt-get install git-core

On Red Hat, Fedora (rpm-based):

yum install git

on Gentoo (portage):

emerge -av dev-vcs/git

Windows: There are 2 Git ports on Windows:


Macintosh OS X: An Internet search will locate a variety of git installers for Mac OS X, for example,

II. Obtaining Parrot from

To obtain a copy of the Parrot Git repository:

git clone git://

This will checkout the master branch by default. To create a local branch which tracks the branch "some_branch":

git checkout -b --track some_branch origin/some_branch

For reference, --track is now redundant as it is now the default behavior.

All the above URLs are read-only. If you are a Parrot core developer, then use the read-write URL:

git clone

You can view the list of branches at


For now, unpack your Parrot tarball, (if you're reading this, you've probably already done that) and type


OR perl --optimize

to run the Configure script. For packagers or if you want your Parrot to run about 2x faster, use --optimize. If you want to improve your chances in debugging programs and stacktraces, omit --optimize and add --debugging instead.

The '' script extracts configuration information from the running perl5 program. You need to explicitly tell '' which compiler and linker to use. For example:

perl --cc=cc --link=$CC --ld=$CC

See 'perl --help' for more options and 'docs/configuration.pod' for more details.

For systems like HPUX that don't have inet_pton please run

perl --define=inet_aton

Running '' will generate a 'config.h' header, a 'Parrot::Config' module, platform files, and many Makefiles.

The file 'myconfig' has an overview of configure settings.

Next, run 'make' or 'gmake'. ('' will tell you which version of 'make' it recommends for your system.)

If you are building the ICU library (this is the default on most systems), you need to use 'GNU make' instead (or something compatible with it).

You can test Parrot by running 'make test'. You can run the tests in parallel with 'make TEST_JOBS=3 test'.

You can run the full test suite with

make fulltest

NOTE: PLATFORMS contains notes about whether test failures are expected on your system.

You can install Parrot with,

make install

By default, this installs in '/usr/local', with the Parrot executable in '/usr/local/bin'. If you want to install Parrot into another location use the following:

perl --prefix=/dir/to/install/
make install

But please note, the dynamic libs will not be found for non-standard locations unless you set the environment variable 'LD_LIBRARY_PATH' or something similar.

For where to go from here, see docs/parrot.pod and see docs/intro.pod. If you experience problems, please see the section "How To Submit A Bug Report" in docs/submissions.pod. These documents are in POD format, and you can view them with the command,

perldoc -F docs/intro.pod

In addition, you may obtain an html-ized version of our docs -- which, in some respects, are more extensive than our POD documents -- with the following command:

cpan JSON       # Needed by the next command
make html

You may then view a local copy of the html documentation by navigating your favorite browser to the index page of the 'docs/html/' directory, i.e., 'docs/html/index.html'.


For documentation on the user-visible changes between this and previous versions of Parrot, see 'ChangeLog'.


The Parrot user mailing list is ''. You may subscribe to the mailing list by filling out the form at There is an archive of the mailing list at

For development discussions, see the information in docs/gettingstarted.pod.


For more information on how to report bugs and to submit patches, see docs/submissions.pod.


For more information on Parrot, see

Have fun, The Parrot Team.


Copyright (C) 2001-2014, Parrot Foundation.