Copland is an Inversion of Control/Dependency Injection container for 
Ruby, based on the architecture of the HiveMind IoC container for Java.

   manual:  http://copland.rubyforge.org
   api:     http://copland.rubyforge.org/api
   project: http://rubyforge.org/projects/copland

Version 0.7.0 is a significant release for Copland, increasing 
robustness, adding several new features, and fixing various bugs. I 
won't quite say it's out of "alpha" into "beta", but it's certainly 
getting close. The highlights of this release are:

* Installations using setup.rb were broken since they were not 
installing the package descriptors. (Was anyone running into this? I 
discovered it the hard way...hope it didn't cause anyone too much grief...)

* Refactored various non-core services into separate distributables. The 
"copland-lib" package contains non-core services of a more general 
nature, the "copland-remote" package is for dealing with remote services 
and RPC frameworks (SOAP, XML-RPC, and dRuby), and "copland-webrick" is 
for WEBrick-specific services. Each of these new packages are described 
at the end of this summary.

* Interceptors no longer mangle the method names of the services they 
encapsulate.

* The copland.AutoLoader is now copland.Startup, with a few other minor 
changes (interface-wise).

* Added 'require' clause to package descriptor. This allows packages to 
depend on other non-core packages in the Ruby search path. (This helped 
make the refactoring of the non-core services possible.)

* Schemas may apply to array elements. In 0.6.0, schemas could only 
apply to the elements of hashes.

* Schemas may now extend other schemas. If you've named an existing 
schema, you can create other schemas that build on it. You don't have to 
duplicate an entire schema just to add one or two new fields.

* Listeners are implemented differently (and more robustly) now. This 
broke the lifecycle listener capability, but I'm debating the usefulness 
of the lifecycle listeners anyway... Listeners are now more 
general-purpose, and listener callbacks bypass any interceptors on the 
service.

* Ruby 1.9 compatibility patch from Michael Neumann. Thanks, Michael!

* LogFactory is available as a service. This means that services can 
easily get a reference to the active log factory instance and get new 
logger instances.  (Mostly useful for service factories.)

* Copland::get_class and friends work better with ambiguous module 
names. Had some problems where the wrong module was being picked up.

* Contributions to a package-local configuration point no longer require 
a fully qualified name.

In addition, the rough draft of the manual has been completed--any 
feedback on content would be appreciated.

Lastly, I added three more tutorials: service models, the logging 
interceptor, and configuration points.

===============================================================================
COPLAND-LIB

   api: http://copland.rubyforge.org/copland/copland-lib/api

Copland.Lib is a collection of services for the Copland IoC container. 
This first release (0.1.0) is a refactoring of services that existed in 
the core Copland distribution, plus several new services.

* ENVSymbolSource: a new symbol source that provides access to 
environment variables.

* RubySymbolSource: a new symbol source that provides access to the Ruby 
"Config" environment.

* ClassBuilderFactory: allows services to be implemented by classes, 
instead of objects.

* MulticastFactory: builds multicast services, which broadcast their 
messages to a set of interested observers.

* SynchronizingInterceptor: an interceptor that provides for 
synchronized access to the methods of its associated service.

* RedirectingInterceptor: an interceptor that effectively renames the 
methods of its associated service, by redirecting messages that match 
certain patterns.

* BlockingInterceptor: an interceptor that effectively makes methods of 
the associated service private, if the invoked method matches a set of 
patterns.

===============================================================================
COPLAND-REMOTE

   api: http://copland.rubyforge.org/copland/copland-remote/api

Copland.Remote is a collection of services for the Copland IoC 
container. This first release (0.1.0) is a refactoring of services that 
existed in the core Copland distribution, plus several new services. All 
Copland.Remote services deal with RPC services and services, using SOAP, 
XML-RPC, and dRuby.

* DRbServerFactory: creates a new DRbServer that exports a specific 
service for access over DRb by remote processes.

* DefaultDRbServer: a default service implemented by DRbServerFactory, 
to make it easier for applications that only need a single DRb server 
instance.

* SOAPServerFactory: creates a new SOAP server that exports a specific 
set of services (and interfaces) for access by remote processes via SOAP.

* DefaultSOAPServer: a default service implemented by SOAPServerFactory, 
to make it easier for applications that only need a single SOAP server 
instance.

* XMLRPCServerFactory: creates a new XML-RPC server that exports a 
specific set of services (and interfaces) for access by remote processes 
via XML-RPC.

* DefaultXMLRPCServer: a default service implemented by 
XMLRPCServerFactory, to make it easier for applications that only need a 
single XML-RPC server instance.

* DRbServiceFactory: allows remote Ruby objects (exported via DRb) to be 
wrapped transparently as Copland services.

* SOAPServiceFactory: allows remote objects (exported via SOAP) to be 
wrapped transparently as Copland services.

* XMLRPCServiceFactory: allows remote objects (exported via XML-RPC) to 
be wrapped transparently as Copland services.

===============================================================================
COPLAND-WEBRICK

   api: http://copland.rubyforge.org/copland/copland-webrick/api

Copland.WEBrick is a collection of services for the Copland IoC 
container. This first release (0.1.0) is a collection of new services, 
never before available for Copland.. All Copland.WEBrick services deal 
with WEBrick servers and servlets, in various capacities.

* HTTPServerFactory: creates a new WEBrick HTTP server as a Copland service.

* DefaultHTTPServer: a default HTTP server, implemented using 
HTTPServerFactory, for applications that only need a single HTTP server 
instance.

* WWWRPCServletFactory: creates new servlets that are each RPC 
interfaces for an existing Copland service.

-- 
Jamis Buck
jgb3 / email.byu.edu
http://www.jamisbuck.org/jamis

"I use octal until I get to 8, and then I switch to decimal."