Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A a hyper-lightweight dependency tracking and project installation system
Perl Perl6 Shell
tree: 6e66ead056

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Proto -- making your life slightly easier

Proto is (C) Copyright 2009 by the Proto contributors (as listed in
AUTHORS). The license is Artistic 2.0; see LICENCE.

Proto is a hyper-lightweight dependency tracking and module installation
system. Its only purpose is to help you set up a running environment where
you can play with Perl 6 modules with as little hassle and as few questions
as possible. It is not to be taken seriously in any way. It is not a full-
fledged module installation system. It is a prototype; in fact, its very name
was chosen to indicate this fact. The conditions under which it can work are
temporary -- the mechanism by which it ties together modules is a short-term
hack in Rakudo Perl 6. Nothing lasts forever, but that holds especially true
for this installer.

What proto will do for you:

1. Install Parrot
2. Install Rakudo
3. Install Perl 6 modules

To install Parrot and Rakudo, type the following at the prompt:

  % source proto

The 'source' is needed for proto to set environment variables for you. You can
do this yourself if you prefer.

Installation of Parrot and Rakudo is merely a convenience; what proto was
really built for is installing modules. The command

  % ./proto install <module>

will look among its list of registered modules for <module>, and download and
build whatever it finds.

[Note: from here on, all the described features are currently nothing more
than wishful thinking. It is hoped that this notice might move downwards
fairly quickly over the next few time units.]

Should the downloaded module happen to explicitly depend on other modules,
these will be downloaded and built before the dependent module is built. And so
on, until it all bottoms out.

The update command

  % ./proto update <module>

will check the module <module> and all that depend on it for updates, and
rebuild them in the required order. Omit the name of the module, and all your
installed modules will be updated.

Removing a module is as simple as

  % ./proto uninstall <module>

Since a module's dependencies may change over time, it's up to the module to
declare its current dependencies. It does this in a file called 'deps.proto' in
its root directory. This file may contain empty lines (which are ignored),
and lines with a single word containing only alphanumerics, dashes and
underscores. With the exception of line-end '#' comments à la Perl, all other
lines are reported as syntax errors, with build panic as a result.

If a dependency cycle is detected during the download process, the install
is aborted and the dependency cycle is described. It might still be possible
to install all modules despite the cycle, but the mere fact that there's a
cycle merits human attention.

There are many things which proto does not do. Even so, it is the hope of its
author that it might be of some use, and make Perl 6 poets bold in splitting
up their work into logical independent units.
Something went wrong with that request. Please try again.