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:

Core

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.

Action

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

Container

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.

Event

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.

FileSystem

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.

Harness

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.

Memoize

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.

Path

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

Proxy

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

Query

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

String

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

Test

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.

Template

The Template library provides an engine for text templating tasks.

Winxed

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.

Install

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://github.com/Whiteknight/Rosella

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

License

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

Authors

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