Release Name: 1.1.0
Notes:
Needle Dependency Injector for Ruby
http://rubyforge.org/projects/needle
[1.1] 11 Nov 2004:
* Needle::Registry instances may be nested (i.e., given a parent).
* Needle::Registry instances may be given names
* The implementing classes of namespaces, interceptors, and definition
contexts are now services themselves, allowing clients to override them.
* Added a chapter to the manual describing how to override the namespace,
interceptor, and definition context implementations.
[1.0] 4 Nov 2004:
* Logging levels may be specified more flexibly and robustly.
* Added Container#require, to better support service libraries.
* Added DefinitionContext#namespace_define!. DefinitionContext#namespace! is
now an alias for that.
* FAQ and Users Manual are complete (first draft).
[0.9] 28 Oct 2004:
* Registry.new! is now Registry.define!
* Added Registry.define as a class method.
* Registry#fullname always returns nil. ServicePoint#fullname and
Container#fullname no longer include the registry itself in the
path.
[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-11-11 10:30 minam
* NEWS: Added the new manual chapter.
2004-11-11 10:28 minam
* doc/manual/: manual.yml, parts/customizing_contexts.txt,
parts/customizing_interceptors.txt,
parts/customizing_namespaces.txt: Added chapter on customizing
Needle.
2004-11-11 10:00 minam
* NEWS: Described changes in 1.1.
2004-11-06 21:39 minam
* lib/needle/version.rb: Version bump appropriate for
backwards-compatible API additions/changes.
2004-11-06 21:12 minam
* lib/needle/container.rb, lib/needle/definition-context.rb,
lib/needle/registry.rb, test/tc_container.rb,
test/tc_definition_context.rb, test/tc_registry.rb: Registries
may now have both a parent and a name. The classes used to
implement the namespaces, interceptors, and definition contexts
are specified as services now, so that clients may substitute
their own implementations if needed.
2004-11-04 07:23 minam
* lib/needle/container.rb: Worked around an rdoc bug that appeared
when doc'ing DefinitionContext#require. (rdoc does not like
documenting #require calls with variable argument lists).
2004-11-03 22:31 minam
* NEWS, doc/manual/manual.yml, lib/needle/version.rb: Updated NEWS
and version in preparation for 1.0 release.
2004-11-03 15:49 minam
* lib/needle/container.rb: Added namespace_define! to the
DefinitionContext and aliased namespace! to it.
2004-11-03 15:49 minam
* doc/faq/faq.yml: Added FAQ about service libraries.
2004-11-03 15:48 minam
* doc/manual/: manual.yml, parts/02_namespaces.txt,
parts/libraries_creating.txt, parts/libraries_overview.txt,
parts/libraries_using.txt: Added chapter on service libraries.
2004-11-03 12:16 minam
* TODO, lib/needle/container.rb, test/services.rb,
test/tc_container.rb: Zeroed the TODO list. Added #require as a
method of Container for more easily decentralizing service
configuration.
2004-11-02 18:57 minam
* lib/needle/log-factory.rb, test/tc_logger.rb: LogFactory now
validates option keys and level keys. Symbols and strings are
accepted interchangably.
2004-11-02 18:56 minam
* doc/manual/: manual.yml, parts/logging_configuration.txt,
parts/logging_logfactory.txt, parts/logging_overview.txt: Added
chapter on logging.
2004-11-02 11:23 minam
* doc/manual/: manual.yml, parts/models_models.txt,
parts/models_overview.txt, parts/models_pipelines.txt: Added
chapter on service models and pipelines.
2004-11-02 09:31 minam
* doc/manual/: manual.rb, manual.yml,
parts/interceptors_architecture.txt,
parts/interceptors_attaching.txt, parts/interceptors_custom.txt,
parts/interceptors_ordering.txt, parts/interceptors_overview.txt:
Added interceptors chapter and skeletons of remaining chapters.
2004-11-01 15:39 minam
* test/: tc_logger.rb, pipeline/tc_collection.rb,
pipeline/tc_element.rb: Fixed warnings from ambiguities due to
missing parens.
2004-11-01 15:38 minam
* lib/needle/lifecycle/initialize.rb: Removed warning from
ambiguity due to missing parens.
2004-11-01 15:34 minam
* lib/needle/thread.rb: Fixed warning due to @locking_thread being
uninitialized.
2004-11-01 15:30 minam
* lib/needle/log-factory.rb: Logging levels are now interpreted
more flexibly, with unrecognized levels raising sane errors.
2004-11-01 15:28 minam
* lib/needle/container.rb: Fixed some warnings and a documentation
typo.
2004-10-29 15:09 minam
* doc/faq/faq.yml: Finished the FAQ (rough draft)
2004-10-28 10:43 minam
* NEWS, Rakefile, doc/manual/manual.yml, doc/manual/page.erb,
doc/manual/parts/03_overview.txt: Added :faq and :pubfaq to
Rakefile. Added FAQ link to manual. Fixed some minor typos in the
manual.
2004-10-27 16:44 minam
* doc/faq/: faq.rb, faq.yml: Added first pass at a FAQ document.
2004-10-27 15:49 minam
* doc/manual/: manual.rb, manual.yml, parts/03_conventional.txt,
parts/03_locator.txt, parts/03_overview.txt,
parts/04_overview.txt, parts/04_setup.txt: Added two more
chapters to the manual.
2004-10-27 13:08 minam
* lib/needle/version.rb: Tentative version bump to 0.9, in
anticipation of release of 1.0.
2004-10-27 13:02 minam
* lib/needle/container.rb, lib/needle/registry.rb,
lib/needle/service-point.rb, test/tc_registry.rb,
test/tc_service_point.rb, test/models/model_test.rb: Registries
are now unnamed (and unnamable, in the sense that Containers can
be named). This makes the result of Container#fullname and
ServicePoint#fullname a bit more pleasant to look at, and
understand.
2004-10-24 07:28 minam
* doc/manual/parts/02_creating.txt, lib/needle/container.rb,
lib/needle/version.rb, test/tc_container.rb: Tentative version
bump. Updated manual. DefinitionContext now places nicely with
pp. Added unit tests for namespace_define and friends.
2004-10-24 06:23 minam
* example/: prototype-namespaces/driver.rb, simple/driver.rb:
Changed calls to Registry.new! to Registry.define!.
2004-10-24 06:21 minam
* lib/needle/registry.rb, test/tc_registry.rb,
test/models/model_test.rb: Added test case for custom init
option. Changed Registry.new! to Registry.define! and added
Registry.define.
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
|