Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 184 lines (135 sloc) 7.214 kb
1dbcc31 @Whiteknight index.html -> index.md
authored
1 ---
2 layout: rosella
1b968f4 @Whiteknight list libraries in the page header
authored
3 title: Rosella Library
1dbcc31 @Whiteknight index.html -> index.md
authored
4 ---
5
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored
6 Rosella is a library of patterns and practices for use with the Parrot Virtual
7 Machine. The Rosella project is actually a collection of several individual
8 libraries, each of which implements a single pattern, best practice or
9 toolset. Rosella is intended to be used piece-wise. Use only the parts you
10 want and ignore the parts you do not want. Rosella libraries tend not to be
11 interdependent, although some of the more advanced libraries rely on some of
12 the more basic ones.
13
14 ## Project Goals
15
16 The Rosella project has a number of driving goals which influence both the
17 types of libraries which are provided and the way those libraries are
18 implemented:
19
20 * **Portability**. Rosella is pure-parrot, and has no components written in C.
21 It has no runtime dependencies besides a minimally-configured Parrot.
22 Rosella can go anywhere Parrot can go.
23 * **Complete language agnosticism**. Rosella intends to be usable from
24 programs written in any language running on Parrot.
25 * **Encapsulate low-level details**. Parrot provides lots of tools, though
26 many are too low-level. Rosella attempts to encapsulate some ugly details
27 behind nice, friendly, and usable interfaces.
28 * **Extensibility**. Rosella aims to provide good defaults, but also to allow
29 aggressive modifications, configurations, and subclassing behaviors to those
30 who need something different.
31 * **Provide well-known tools**. Rosella isn't an experimental research
32 project. It aims to provide Parrot implementations of well-known patterns,
33 practices, architectures, and tools. Rosella borrows good ideas from
34 well-known and high-quality sources.
35 * **Focus on the user**. Rosella is interested in making things easier for
36 other coders. It wants to provide things that other coders will actually use
37 and appreciate. Rosella is a set of tools for coders, not for end users.
31e3323 @Whiteknight Add note about future-proofing being a design goal of Rosella
authored
38 * **Future Proof**. Rosella provides interfaces, sometimes for very simple
39 features or algorithms. In the future when Parrot changes or adds new
40 features, Rosella will insulate the user from them. When Parrot adds proper
41 threading, Rosella will be updated to provide thread-safety where needed.
1dbcc31 @Whiteknight index.html -> index.md
authored
42
43 ## Rosella Components
44
45 ### Rosella Stable Libraries
46
47 Here is a list of Rosella's libraries which are currently
48 considered to be "stable" enough for general use:
49
889d350 @Whiteknight add links to libraries on the index page
authored
50 #### [Core](/Rosella/libraries/core.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
51
52 Rosella's Core library provides a handful of routines used by
53 the other Rosella libraries. This library provides basic behavior
54 for working with an assortment of "type" meta-objects, and for
55 implementing a standard system of object constructor behavior.
56
889d350 @Whiteknight add links to libraries on the index page
authored
57 #### [Action](/Rosella/libraries/action.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
58
59 The Action library implements the Command pattern. Sequences of
60 instructions can be bundled together into an Action object, and
61 can be invoked later.
62
889d350 @Whiteknight add links to libraries on the index page
authored
63 #### [Container](/Rosella/libraries/container.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
64
65 The Container library implements a Dependency Injection, Inversion
66 of Control container type which can be used to help decouple
67 modules in a program. The Container utilizes the Action library
68 to setup constructor injection and method injection behaviors
69 on registered types.
70
016e62c @Whiteknight Event is a supported library now. Add it to the documentation in all …
authored
71 #### [Event](/Rosella/libraries/event.html)
72
73 The Event library provides a subscribe/publish system to aide in aggressive
74 application decoupling. Event publishers can be unaware of the details of
75 event subscribers, and vice-versa. Applications become easier to maintain
76 because important communication pathways do not need to have hard-coded
77 senders and receivers.
78
889d350 @Whiteknight add links to libraries on the index page
authored
79 #### [Test](/Rosella/libraries/test.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
80
81 Inspired by testing libraries such as xUnit and Test::More,
82 The Rosella Test library provides the tools and utilities to
83 quickly write unit tests for your software. Rosella's own test
84 suite is written using this library.
85
91b7e4f @Whiteknight tap_harness -> harness
authored
86 #### [Harness](/Rosella/libraries/harness.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
87
88 A companion to the Test library, The TAP Harness library
89 implements the logic necessary to quickly construct a TAP harness
90 for executing unit tests and reporting the results. Rosella's own
91 test harness is written using this library.
92
889d350 @Whiteknight add links to libraries on the index page
authored
93 #### [Proxy](/Rosella/libraries/proxy.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
94
95 The Proxy library provides the tools necessary to create a wide
96 array of proxy objects.
97
889d350 @Whiteknight add links to libraries on the index page
authored
98 #### [Mock Object](/Rosella/libraries/mockobject.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
99
100 The MockObject library uses the Rosella Proxy library to implement
101 full-featured mock objects for use in testing with the Test
102 library. Several tests in the Rosella test suite are implemented
103 using this library.
104
568a03a @Whiteknight memoize is now stable. Update webpage to reflect that
authored
105 #### [Memoize](/Rosella/libraries/memoize.html)
106
107 The Memoize library adds in functionality to add memoization and caching to
108 subroutines. There is a simple version and a version which uses proxies to add
109 more features, but is slower.
110
1dbcc31 @Whiteknight index.html -> index.md
authored
111 ### Rosella Development Libraries
112
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored
113 Rosella has a number of other libraries in planning and development. These
114 libraries are not yet considered mature enough to include as part of a
115 regular release. For the complete list with descriptions and ideas, see the
116 [future libraries page](/Rosella/libraries/future.html).
1dbcc31 @Whiteknight index.html -> index.md
authored
117
118 ## Install
119
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored
120 ### Build Dependencies
121
122 * [Parrot](http://github.com/parrot/parrot) : Rosella runs on top of the
123 Parrot VM. You cannot build, run, or use Rosella in any way without Parrot.
124 * [Winxed](http://code.google.com/p/winxed) : Rosella is written in the
125 Winxed language. You need Winxed to build Rosella, but you do not need
126 Winxed to run it. Winxed has no runtime libraries of its own.
1dbcc31 @Whiteknight index.html -> index.md
authored
127
128 ### Installing With Plumage
129
1b968f4 @Whiteknight list libraries in the page header
authored
130 [Plumage](http://github.com/parrot/plumage) is a
1dbcc31 @Whiteknight index.html -> index.md
authored
131 package-management program for Parrot. If you have Plumage
132 and Winxed already installed getting Rosella is a breeze:
133
134 $ plumage install rosella</pre>
135
136 That's all there is to it! You now have Rosella. If you don't have
137 Plumage on your system you'll need to follow the rest of the
138 instructions below.
139
140 ### Get the Source
141
142 You can download this project in either
1b968f4 @Whiteknight list libraries in the page header
authored
143 [zip](http://github.com/Whiteknight/Rosella/zipball/master) or
144 [tar](http://github.com/Whiteknight/Rosella/tarball/master) formats.
1dbcc31 @Whiteknight index.html -> index.md
authored
145
1b968f4 @Whiteknight list libraries in the page header
authored
146 You can also clone the project with [Git](http://git-scm.com)
1dbcc31 @Whiteknight index.html -> index.md
authored
147 by running:
148
149 $ git clone git://github.com/Whiteknight/Rosella
150
151 ### Installing Manually
152
153 Once you have a copy of the source and all the necessary
154 dependencies you can build, test and install Rosella:
155
156 $ winxed setup.winxed build
157 $ winxed setup.winxed test
158 $ winxed setup.wixned install
159
160 ## Project Info
161
162 ### License
163
1b968f4 @Whiteknight list libraries in the page header
authored
164 Rosella is released under the terms of the Artistic 2.0 license.
165 See the LICENSE file in the repo for more details.
1dbcc31 @Whiteknight index.html -> index.md
authored
166
167 ### Authors
168
1b968f4 @Whiteknight list libraries in the page header
authored
169 Rosella is written by [Whiteknight](http://whiteknight.github.com)
170 (wknight8111@gmail.com). See the CREDITS file in the repo for more details
171 about contributors and the people and projects which have inspired Rosella.
1dbcc31 @Whiteknight index.html -> index.md
authored
172
173 <div class="footer">
174 get the source code on GitHub :
175 <a href="http://github.com/Whiteknight/Rosella">Whiteknight/Rosella</a>
176 <br/>
177 The image of the Crimson Rosella at the top of the page is from
178 <a href="http://commons.wikimedia.org/wiki/File:Crimson_Rosella,_Culburra_Beech.jpg">
179 D. Gordon E. Robertson on Wikipedia
180 </a>. The image is released under the terms of the CC-By-SA-3.0 and/or
181 the GFDL licenses.
182 </div>
183
Something went wrong with that request. Please try again.