Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 214 lines (153 sloc) 8.208 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
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored
79 #### [FileSystem](/Rosella/libraries/filesystem.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
80
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored
81 The FileSystem library provides a friendly interface for working with the
82 filesystem. It provides object types for files and directories and a number
83 of utilities for working with each.
1dbcc31 @Whiteknight index.html -> index.md
authored
84
91b7e4f @Whiteknight tap_harness -> harness
authored
85 #### [Harness](/Rosella/libraries/harness.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
86
87 A companion to the Test library, The TAP Harness library
88 implements the logic necessary to quickly construct a TAP harness
89 for executing unit tests and reporting the results. Rosella's own
90 test harness is written using this library.
91
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored
92 #### [Memoize](/Rosella/libraries/memoize.html)
1dbcc31 @Whiteknight index.html -> index.md
authored
93
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored
94 The Memoize library adds in functionality to add memoization and caching to
95 subroutines. There is a simple version and a version which uses proxies to add
96 more features, but is slower.
1dbcc31 @Whiteknight index.html -> index.md
authored
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
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored
105 #### [Path](/rosella/libraryes/path.html)
568a03a @Whiteknight memoize is now stable. Update webpage to reflect that
authored
106
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored
107 The Path library provides utilities for searching the contents of large nested
108 aggregate objects using string names.
109
110 #### [Proxy](/Rosella/libraries/proxy.html)
111
112 The Proxy library provides the tools necessary to create a wide
113 array of proxy objects.
114
115 #### [Query](/Rosella/libraries/query.html)
116
117 The Query library provides a number of utilities for working with aggregate
118 objects including higher-order functions, group operations, and data streams.
119
120 #### [String](/Rosella/libraries/string.html)
121
122 The String library provides a number of utilities and powerful interfaces for
123 working with strings.
124
125 #### [Test](/Rosella/libraries/test.html)
126
127 Inspired by testing libraries such as xUnit and Test::More,
128 The Rosella Test library provides the tools and utilities to
129 quickly write unit tests for your software. Rosella's own test
130 suite is written using this library.
131
132 #### [Template](/Rosella/libraries/template.html)
133
134 The Template library provides an engine for text templating tasks.
135
136 #### [Winxed](/Rosella/libraries/winxed.html)
137
138 The Winxed library contains a number of tools for building Winxed-based
139 projects.
568a03a @Whiteknight memoize is now stable. Update webpage to reflect that
authored
140
1dbcc31 @Whiteknight index.html -> index.md
authored
141 ### Rosella Development Libraries
142
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored
143 Rosella has a number of other libraries in planning and development. These
144 libraries are not yet considered mature enough to include as part of a
145 regular release. For the complete list with descriptions and ideas, see the
146 [future libraries page](/Rosella/libraries/future.html).
1dbcc31 @Whiteknight index.html -> index.md
authored
147
148 ## Install
149
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored
150 ### Build Dependencies
151
152 * [Parrot](http://github.com/parrot/parrot) : Rosella runs on top of the
153 Parrot VM. You cannot build, run, or use Rosella in any way without Parrot.
154 * [Winxed](http://code.google.com/p/winxed) : Rosella is written in the
155 Winxed language. You need Winxed to build Rosella, but you do not need
156 Winxed to run it. Winxed has no runtime libraries of its own.
1dbcc31 @Whiteknight index.html -> index.md
authored
157
158 ### Installing With Plumage
159
1b968f4 @Whiteknight list libraries in the page header
authored
160 [Plumage](http://github.com/parrot/plumage) is a
1dbcc31 @Whiteknight index.html -> index.md
authored
161 package-management program for Parrot. If you have Plumage
162 and Winxed already installed getting Rosella is a breeze:
163
f008d11 @Whiteknight fix weird formatting issue. benabik++
authored
164 $ plumage install rosella
1dbcc31 @Whiteknight index.html -> index.md
authored
165
166 That's all there is to it! You now have Rosella. If you don't have
167 Plumage on your system you'll need to follow the rest of the
168 instructions below.
169
170 ### Get the Source
171
172 You can download this project in either
1b968f4 @Whiteknight list libraries in the page header
authored
173 [zip](http://github.com/Whiteknight/Rosella/zipball/master) or
174 [tar](http://github.com/Whiteknight/Rosella/tarball/master) formats.
1dbcc31 @Whiteknight index.html -> index.md
authored
175
1b968f4 @Whiteknight list libraries in the page header
authored
176 You can also clone the project with [Git](http://git-scm.com)
1dbcc31 @Whiteknight index.html -> index.md
authored
177 by running:
178
179 $ git clone git://github.com/Whiteknight/Rosella
180
181 ### Installing Manually
182
183 Once you have a copy of the source and all the necessary
184 dependencies you can build, test and install Rosella:
185
186 $ winxed setup.winxed build
187 $ winxed setup.winxed test
188 $ winxed setup.wixned install
189
190 ## Project Info
191
192 ### License
193
1b968f4 @Whiteknight list libraries in the page header
authored
194 Rosella is released under the terms of the Artistic 2.0 license.
195 See the LICENSE file in the repo for more details.
1dbcc31 @Whiteknight index.html -> index.md
authored
196
197 ### Authors
198
1b968f4 @Whiteknight list libraries in the page header
authored
199 Rosella is written by [Whiteknight](http://whiteknight.github.com)
200 (wknight8111@gmail.com). See the CREDITS file in the repo for more details
201 about contributors and the people and projects which have inspired Rosella.
1dbcc31 @Whiteknight index.html -> index.md
authored
202
203 <div class="footer">
204 get the source code on GitHub :
205 <a href="http://github.com/Whiteknight/Rosella">Whiteknight/Rosella</a>
206 <br/>
207 The image of the Crimson Rosella at the top of the page is from
208 <a href="http://commons.wikimedia.org/wiki/File:Crimson_Rosella,_Culburra_Beech.jpg">
209 D. Gordon E. Robertson on Wikipedia
210 </a>. The image is released under the terms of the CC-By-SA-3.0 and/or
211 the GFDL licenses.
212 </div>
213
Something went wrong with that request. Please try again.