Release Name: 0.6.0
Notes:
Needle Dependency Injector for Ruby
http://rubyforge.org/projects/needle
[0.6] 21 Oct 2004:
* Added benchmarks.
* Removed Container#register!.
* Added Container#define and Container#define!, and changed semantics of
Registry#new!.
* Service constructor blocks may accept two parameters: the container, and
the service point itself.
* Container#namespace (and friends) no longer acts like "mkdir -p".
* Added QueryableMutex for detecting cycles in dependencies.
* Changed implementation of service models to use instantiation pipelines.
* Added many new service models (prototype_initialize, threaded,
singleton_deferred_initialize, etc.)
* Added Jim Weirich's "DI in Ruby" article to documentation.
[0.5] 14 Oct 2004:
* First public release.
Changes:
2004-10-21 10:13 minam
* Rakefile: Removed some cruft.
2004-10-21 10:11 minam
* NEWS: Updated NEWS file.
2004-10-21 10:01 minam
* lib/needle/version.rb: Version bump.
2004-10-21 10:00 minam
* example/custom-model/refreshable.rb, lib/needle/service-point.rb:
The "refreshable" example wasn't working correctly due to a bug
in the service point implementation (the options for the service
point were not being passed to the pipeline elements when they
were created).
2004-10-21 09:48 minam
* TODO, lib/needle/container.rb, lib/needle/registry.rb,
lib/needle/service-point.rb, lib/needle/lifecycle/threaded.rb,
lib/needle/pipeline/collection.rb,
lib/needle/pipeline/element.rb, test/tc_container.rb,
test/tc_logger.rb, test/tc_registry.rb, test/tc_service_point.rb,
test/lifecycle/tc_deferred.rb, test/lifecycle/tc_initialize.rb,
test/lifecycle/tc_singleton.rb, test/lifecycle/tc_threaded.rb,
test/models/model_test.rb, test/models/tc_prototype.rb,
test/models/tc_prototype_deferred.rb,
test/models/tc_prototype_deferred_initialize.rb,
test/models/tc_prototype_initialize.rb,
test/models/tc_singleton.rb,
test/models/tc_singleton_deferred.rb,
test/models/tc_singleton_deferred_initialize.rb,
test/models/tc_singleton_initialize.rb,
test/models/tc_threaded.rb, test/models/tc_threaded_deferred.rb,
test/models/tc_threaded_deferred_initialize.rb,
test/models/tc_threaded_initialize.rb,
test/pipeline/tc_collection.rb, test/pipeline/tc_element.rb:
Added "threaded" pipeline element. Made service models for all
combinations of [threaded,singleton,prototype] x
[immediate,deferred] x [no-initialize, initialize]. Made
Pipeline::Element accept the service point as a parameter instead
of the container.
2004-10-18 09:27 minam
* Rakefile, TODO, doc/README, doc/di-in-ruby.rdoc,
doc/images/di_classdiagram.jpg: Added Jim Weirich's "DI in Ruby"
article to documentation.
2004-10-17 23:58 minam
* example/custom-model/refreshable.rb: Updated example to use new
instantiation pipeline approach to service models.
2004-10-17 23:54 minam
* TODO: Instantiation pipelines were implemented.
2004-10-17 23:53 minam
* TODO, lib/needle/container.rb, lib/needle/models.rb,
lib/needle/registry.rb, lib/needle/service-point.rb,
lib/needle/lifecycle/deferred.rb,
lib/needle/lifecycle/initialize.rb,
lib/needle/lifecycle/proxy.rb, lib/needle/lifecycle/singleton.rb,
lib/needle/pipeline/collection.rb,
lib/needle/pipeline/element.rb,
lib/needle/pipeline/interceptor.rb, test/tc_container.rb,
test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb,
test/lifecycle/tc_deferred.rb, test/lifecycle/tc_initialize.rb,
test/lifecycle/tc_proxy.rb, test/lifecycle/tc_singleton.rb,
test/models/tc_prototype.rb,
test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb,
test/models/tc_singleton.rb,
test/models/tc_singleton_deferred.rb,
test/pipeline/tc_collection.rb, test/pipeline/tc_element.rb: HUGE
CHANGE. The entire service model concept has been radically
altered. Instead, the concept of "instantiation pipelines" has
been implemented. This gives a LOT more flexibility, and even a
small performance boost (in some areas).
2004-10-16 23:26 minam
* doc/: README, manual/manual.yml,
manual/parts/01_alternatives.txt: Changed the term "free
software" to "open source software", to prevent confusion over
FSF terminology. Added a section in the manual describing
alternatives to Needle.
2004-10-16 23:15 minam
* benchmarks/instantiation.rb: Added new benchmark for timing the
various ways to instantiate services.
2004-10-16 07:51 minam
* lib/needle/thread.rb: Copied 'thread.rb' from Copland so we have
a version of mutex that can detect a thread trying to reacquire
an existing lock. Changed the models and the proxy to use
QueryableMutex, so that cycles in the dependency graph are
reported more legibly.
2004-10-15 23:01 minam
* TODO, example/prototype-namespaces/driver.rb,
lib/needle/service-point.rb, test/tc_service_point.rb:
Instantiating a service point now sends an optional second
parameter to the constructor block. The second parameter is the
service point definition itself, allowing the constructor block
to reference (for example) the service point's fullname.
Also, added an implementation of the "prototype namespaces" that
I discussed with Christian Neukirchen (chris2) on #ruby-talk.
2004-10-15 16:17 minam
* Rakefile, doc/manual/parts/02_creating.txt,
doc/manual/parts/02_namespaces.txt,
doc/manual/parts/02_services.txt, example/test.rb,
example/calc/calc.rb, example/calc/driver.rb,
example/custom-model/driver.rb, example/simple/driver.rb,
lib/needle/container.rb, lib/needle/registry.rb,
lib/needle/service-point.rb, test/tc_container.rb,
test/tc_registry.rb: World-shattering, API-breaking changes.
Specifically: Container#register! went away, and is now called
Container#define!. Added Container#define. Renamed
Container::RegistrationContext to be
Container::DefinitionContext. Added
Container::DefinitionContext#this_container. Fixed/removed/added
unit tests. Fixed documentation to conform with new changes.
Fixed examples to conform with new changes. Moved
"example/test.rb" to "example/simple/driver.rb". Made Rakefile
automatically run examples and benchmarks before packaging to
ensure that they work.
2004-10-15 11:10 minam
* Rakefile, needle.gemspec, benchmarks/instantiability.rb,
benchmarks/interceptors.rb, benchmarks/interceptors2.rb: Added
benchmarks. "rake benchmark" now runs the benchmarks.
2004-10-14 21:40 minam
* Rakefile, needle.gemspec: Rakefile now checks for success of test
cases before packaging. Also, NEWS gets packaged instead of
ReleaseNotes.
2004-10-14 21:33 minam
* example/custom-model/refreshable.rb: Made warnings (ruby -w) go
away.
2004-10-14 21:32 minam
* NEWS: Updated NEWS file.
2004-10-14 21:30 minam
* doc/: README, manual/index.erb, manual/manual.rb,
manual/manual.yml: Changed index page of manual so that all
relevant web sites relating to Needle can be displayed. Added
sites to the README as well.
2004-10-14 16:27 minam
* doc/manual/manual.css, doc/manual/manual.yml,
doc/manual/parts/02_namespaces.txt,
doc/manual/parts/02_services.txt, lib/needle/version.rb: Minor
tweakage.
2004-10-14 16:16 minam
* doc/manual/: manual.yml, parts/02_creating.txt,
parts/02_namespaces.txt, parts/02_overview.txt,
parts/02_services.txt: Rough draft of the "Registry" chapter, and
combined a few prospective chapters into the Registry chapter.
2004-10-14 15:00 minam
* TODO, lib/needle/log-factory.rb: Pared down the TODO list, and
made log-factory not close device if it is stdout or stderr.
2004-10-14 14:20 minam
* Rakefile: Added :prepackage task for helping maintainer remember
to update versions, NEWS, and so forth before releasing.
2004-10-14 14:06 minam
* example/calc/calc.rb, example/calc/driver.rb,
example/custom-model/driver.rb,
example/custom-model/refreshable.rb, lib/needle/container.rb,
lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb,
lib/needle/log-factory.rb, lib/needle/service-point.rb,
test/tc_container.rb, test/tc_logger.rb: Updated code to remove
warnings when run with "ruby -w". Also, fixed examples so that
they no longer use the "register_library" interfaces. Extended
the custom-model example with code from Leon Breedt.
2004-10-13 20:25 minam
* doc/manual/: manual.rb, manual.yml, parts/01_use_cases.txt: Added
use cases to introduction of manual.
2004-10-13 20:11 minam
* lib/needle.rb, lib/needle/container.rb, lib/needle/registry.rb,
test/tc_container.rb: Removed the "register_library" and
"require" stuff. That more properly belongs (if it belongs at
all) in a layer on top of Needle. I'll try to keep Needle "lean
and mean".
2004-10-13 14:23 minam
* lib/: needle.rb, needle/container.rb: Tweaked documentation
according to recommendations from Eivind Eklund.
2004-10-13 09:22 minam
* NEWS, Rakefile, TODO, lib/needle/log-factory.rb,
lib/needle/logger.rb, test/tc_logger.rb: Added a #write_to method
to both Logger and LogFactory, allowing the device being written
to, to be changed on the fly. Made the Rakefile clean up the
generated log files after running the tests. Added a NEWS file.
2004-10-12 16:39 minam
* TODO: Need better name for Container#register!
2004-10-12 16:33 minam
* needle.gemspec: Added gemspec file.
2004-10-12 16:30 minam
* lib/needle.rb: Error in documentation.
2004-10-12 16:25 minam
* setup.rb: Added setup.rb for manual installation.
2004-10-12 16:24 minam
* doc/README: Added a README.
2004-10-12 16:19 minam
* Rakefile, TODO, lib/needle.rb, lib/needle/container.rb,
lib/needle/errors.rb, lib/needle/include-exclude.rb,
lib/needle/interceptor.rb, lib/needle/models.rb,
lib/needle/registry.rb, lib/needle/service-point.rb,
lib/needle/version.rb: Added RDoc documentation. Added Rakefile
and TODO.
2004-10-12 13:29 minam
* doc/manual/chapter.erb, doc/manual/index.erb,
doc/manual/manual.css, doc/manual/manual.rb, doc/manual/page.erb,
doc/manual/tutorial.erb, lib/needle/version.rb: Manual now
compiles. Added version information to Needle.
2004-10-12 12:49 minam
* LICENSE, doc/LICENSE-BSD, doc/LICENSE-GPL, doc/LICENSE-RUBY,
doc/manual/manual.rb, doc/manual/manual.yml,
doc/manual/parts/01_license.txt, doc/manual/parts/01_support.txt,
doc/manual/parts/01_what_is_needle.txt, lib/needle.rb,
lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb,
lib/needle/logger.rb, lib/needle/models.rb,
lib/needle/registry.rb, lib/needle/service-point.rb,
example/test.rb, example/calc/calc.rb, example/calc/driver.rb,
example/custom-model/driver.rb,
example/custom-model/refreshable.rb, lib/needle/container.rb,
lib/needle/errors.rb, lib/needle/include-exclude.rb,
lib/needle/log-factory.rb, lib/needle/logging-interceptor.rb,
test/ALL-TESTS.rb, test/tc_container.rb, test/tc_interceptor.rb,
test/tc_interceptor_chain.rb, test/tc_logger.rb,
test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb,
test/models/tc_prototype.rb,
test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb,
test/models/tc_singleton.rb,
test/models/tc_singleton_deferred.rb: Initial import
2004-10-12 12:49 minam
* LICENSE, doc/LICENSE-BSD, doc/LICENSE-GPL, doc/LICENSE-RUBY,
doc/manual/manual.rb, doc/manual/manual.yml,
doc/manual/parts/01_license.txt, doc/manual/parts/01_support.txt,
doc/manual/parts/01_what_is_needle.txt, lib/needle.rb,
lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb,
lib/needle/logger.rb, lib/needle/models.rb,
lib/needle/registry.rb, lib/needle/service-point.rb,
example/test.rb, example/calc/calc.rb, example/calc/driver.rb,
example/custom-model/driver.rb,
example/custom-model/refreshable.rb, lib/needle/container.rb,
lib/needle/errors.rb, lib/needle/include-exclude.rb,
lib/needle/log-factory.rb, lib/needle/logging-interceptor.rb,
test/ALL-TESTS.rb, test/tc_container.rb, test/tc_interceptor.rb,
test/tc_interceptor_chain.rb, test/tc_logger.rb,
test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb,
test/models/tc_prototype.rb,
test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb,
test/models/tc_singleton.rb,
test/models/tc_singleton_deferred.rb: Initial revision
|