Files | Admin

Notes:

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