Fork me on GitHub

A collection of tools and building blocks for the Parrot Virtual Machine.
Pages: HomeDevelopmentArticles and ExamplesWinxed

Rosella Library

Rosella is a library of patterns and practices for use with the Parrot Virtual Machine. The Rosella project is actually a collection of several individual libraries, each of which implements a single pattern, best practice or toolset. Rosella is intended to be used piece-wise. Use only the parts you want and ignore the parts you do not want. Rosella libraries tend not to be interdependent, although some of the more advanced libraries rely on some of the more basic ones.

Project Goals

The Rosella project has a number of driving goals which influence both the types of libraries which are provided and the way those libraries are implemented:

Rosella Components

Rosella Stable Libraries

Here is a list of Rosella’s libraries which are currently considered to be “stable” enough for general use:


Rosella’s Core library provides a handful of routines used by the other Rosella libraries. This library provides basic behavior for working with an assortment of “type” meta-objects, and for implementing a standard system of object constructor behavior.


The Action library implements the Command pattern. Sequences of instructions can be bundled together into an Action object, and can be invoked later.


The Container library implements a Dependency Injection, Inversion of Control container type which can be used to help decouple modules in a program. The Container utilizes the Action library to setup constructor injection and method injection behaviors on registered types.


The Event library provides a subscribe/publish system to aide in aggressive application decoupling. Event publishers can be unaware of the details of event subscribers, and vice-versa. Applications become easier to maintain because important communication pathways do not need to have hard-coded senders and receivers.


The FileSystem library provides a friendly interface for working with the filesystem. It provides object types for files and directories and a number of utilities for working with each.


A companion to the Test library, The TAP Harness library implements the logic necessary to quickly construct a TAP harness for executing unit tests and reporting the results. Rosella’s own test harness is written using this library.


The Memoize library adds in functionality to add memoization and caching to subroutines. There is a simple version and a version which uses proxies to add more features, but is slower.

Mock Object

The MockObject library uses the Rosella Proxy library to implement full-featured mock objects for use in testing with the Test library. Several tests in the Rosella test suite are implemented using this library.


The Path library provides utilities for searching the contents of large nested aggregate objects using string names.


The Proxy library provides the tools necessary to create a wide array of proxy objects.


The Query library provides a number of utilities for working with aggregate objects including higher-order functions, group operations, and data streams.


The String library provides a number of utilities and powerful interfaces for working with strings.


Inspired by testing libraries such as xUnit and Test::More, The Rosella Test library provides the tools and utilities to quickly write unit tests for your software. Rosella’s own test suite is written using this library.


The Template library provides an engine for text templating tasks.


The Winxed library contains a number of tools for building Winxed-based projects.

Rosella Development Libraries

Rosella has a number of other libraries in planning and development. These libraries are not yet considered mature enough to include as part of a regular release. For the complete list with descriptions and ideas, see the future libraries page.


Build Dependencies

Installing With Plumage

Plumage is a package-management program for Parrot. If you have Plumage and Winxed already installed getting Rosella is a breeze:

$ plumage install rosella

That’s all there is to it! You now have Rosella. If you don’t have Plumage on your system you’ll need to follow the rest of the instructions below.

Get the Source

You can download this project in either zip or tar formats.

You can also clone the project with Git by running:

$ git clone git://

Installing Manually

Once you have a copy of the source and all the necessary dependencies you can build, test and install Rosella:

$ winxed setup.winxed build
$ winxed setup.winxed test
$ winxed setup.wixned install

Project Info


Rosella is released under the terms of the Artistic 2.0 license. See the LICENSE file in the repo for more details.


Rosella is written by Whiteknight ( See the CREDITS file in the repo for more details about contributors and the people and projects which have inspired Rosella.