Changes from 1.2.0 to 1.2.1
---------------------------

* [2008-09-05] Fixed a performance regression that was caused by uncached 
  access to the bundle manifest headers. (FELIX-711)
* [2008-09-03] Fixed a bug in calculating the system bundle's exported 
  packages which added a null export package.

Changes from 1.0.4 to 1.2.0
---------------------------

* [2008-08-29] Support JAR-wide manifest package metadata. (FELIX-682)
* [2008-08-29] Throw an exception when installing a fragment that uses 
  features that we do not support.
* [2008-08-20] Improve error reporting when loading bundle classes using 
  Bundle.loadClass. 
* [2008-08-16] Fix attribute checking when resolving dynamic imports. 
  (FELIX-676)
* [2008-08-08] Implement singleton bundle support. (FELIX-102)
* [2008-08-06] Default to current security policy if no security extension is 
  installed in order to make Subject.doAs work. (FELIX-654)
* [2008-08-04] Return Bundle.getLastModified() for bundle URLs 
  lastModified(). (FELIX-582)
* [2008-08-04] Improve handling of improper resource URLs. (FELIX-577)
* [2008-08-01] Add necessary stub methods to implement new R4.1 methods. 
  (FELIX-595)
* [2008-08-01] Applied patch to properly return symbolic name when it has
  parameters. (FELIX-650)
* [2008-07-25] Fix some rollback issues after a bundle update throws an 
  exception. (FELIX-647)
* [2008-07-23] Modified manifest parser to be more lenient. (FELIX-641)
* [2008-07-07] Add support for the standard symbolic name for the system 
  bundle. (FELIX-602)
* [2008-06-01] Add initial fragment support for extending the host bundle 
  class path. (FELIX-29, FELIX-656)

Changes from 1.0.3 to 1.0.4
___________________________

* [2008-04-18] Check that the returned object from a service factory is an 
  instance of all classes named when the service was registered. (FELIX-540)
* [2008-04-13] Fix an issue when logging messages while holding framework 
  internal locks that could lead to a deadlock. For now we just disable 
  logging to log services inside the framework. (FELIX-536)
* [2008-04-13] Implemented various small performance improvments e.g.,
  we now cache filters and create an index for objectclass to improve 
  service lookup performance and don't use the BundleInfo to get the 
  bundle id but the BundleImpl directly. Furthermore, we added an index to 
  get bundles by id. 
* [2008-04-04] Fix an NoClassDefFoundError when trying to query the 
  framework classloader for whether a class is available or not. 
* [2008-03-19] Don't try to resolve extension bundles and fix a 
  classcastexception that could happen if more then one framework is around 
  and both have extensions installed. Furthermore, make extension bundles 
  use the system bundle context.
* [2008-03-07] Bundle.getResource does now check for AdminPermission. 
  (FELIX-150)
* [2008-03-06] Make urlhandlers work when a handler factory is already set. 
  Furthermore, it is now possible to have more then one framework running 
  in more then one classloader. (FELIX-38).
* [2008-03-05] Make LDAP filter reentrant.
* [2008-02-29] Refactored the IContent abstraction from the module loader 
  layer to provide more generic access to the content of the module. This 
  makes it possible that a bundle's class path could span multiple module's, 
  which will be necessary for fragments. (FELIX-29)
* [2008-02-27] Applied a patch to disable the class loading diagnostic message
  when the logger is not at the DEBUG level. (FELIX-500)
* [2008-02-15] Modified the service registry to use more fine-grained locking 
  to avoid callbacks to service factories while holding locks. (FELIX-489)

Changes from 1.0.1 to 1.0.3
---------------------------

* [2008-01-27] Moved framework docs to main, since the launcher examples now
  depend on main for the auto-property handling.
* [2008-01-25] Applied patches  to improve how Felix finds resources when
  getResources() is called. (FELIX-466, FELIX-467)
* [2008-01-25] Make FilterImpl.toString() add escape characters where needed.
  (FELIX-471)
* [2008-01-16] Fix a NPE on framework restart when extension bundles are
  installed.
* [2008-01-15] Try to fix a potential visibility issue on loading a class
  form a bundle where it seems to be possible that we create two classloaders
  instead of one.
* [2008-01-15] Modified boot delegation to not terminate when delegating to
  parent class loader for non-java.* packages. (FELIX-463)
* [2008-01-04] Fix some issues related to directories on the bundle class
  path. Specifically, leading slashes created an issue and are now stripped
  and entries were not being properly filtered when enumerating the contents
  of a class path directory. (FELIX-426)
* [2007-12-20] Modified logger to have all of its public methods be final to
  avoid it from being extended in undesired ways via the constructor supplied
  logger. (FELIX-428)
* [2007-12-20] The TCK has changed to verify that bundles do not depend on
  themselves, so we filter that case now.
* [2007-12-20] Applied patch from Guillaume Nodet to properly fire a framework
  error event only when a bundle cannot be resolved. (FELIX-441)
* [2007-12-19] Modified framework to accept a Logger instance so that host
  applications can do custom logging until the log service arrives. (FELIX-428)
* [2007-12-19] Add support for loading bundles on Google Android (FELIX-440).
* [2007-12-18] Improve native code loading - bundle installation will now
  fail in case a native library is not in the jar and we only use the first
  library of a given name. Furthermore, we now support .dylib extensions on
  the mac as well as others; should make it possible to use .netmodules as
  well. (FELIX-439)
* [2007-12-17] Make the win32 alias match any version of windows for native
  clauses. (FELIX-438)
* [2007-12-14] Removed auto-property processing out of the framework and
  into the default launcher, i.e, main. (FELIX-393)
* [2007-12-13] Fix a StackOverflowError in URLHandlers.createStreamHandler() 
  when creating URL on jamvm and Mika. This patch resolves an unfortunate 
  interaction between our ExtensionManager and the URLHandlers by making the 
  URLHandlers aware of the extension protocol. Pretty much like we do already 
  for the bundle protocol. (FELIX-435)
* [2007-11-26] Fix a small oversight in the extension manager that could lead
  to a null pointer exception and save some memory by creating less objects.
* [2007-11-26] Degrate to version 0.0.0 if we can not find the Felix.properties 
  for some reason and avoid a null pointer in this case.
* [2007-11-08] Reorganized usage count methods to better handle null
  reference checking in response to Karl Pauls seeing an NPE when trying to
  get a service that was already unregistered while shutting down the
  framework.
* [2007-11-06] Added a simple check to detect and work around a bug in J9.
  (FELIX-416)
* [2007-10-30] Change how the extension manager url stream handler handles 
  request to the root path in order to make some tomcat issue go away.
  (FELIX-414)
* [2007-10-26] Added support for "/" bundle resources as requested. (FELIX-383)
* [2007-10-24] Use system bundle when firing a framework error event when an 
  install error occurs.
* [2007-10-22] Fix a NPE when getEntryPaths is called on the system bundle. 
  (FELIX-394)
* [2007-10-16] Modifies bundle resource URL handling such that if a resource 
  URL points to a resource that does not exist, a bundle class path search 
  for the resource will be instigated and if any matching resource is found, 
  that one will be used instead. (FELIX-383)
* [2007-10-10] Auto-property handling now installs bundles into the default 
  bundle start level if a start level is not specified. (FELIX-359)
* [2007-10-08] Overwrite the URLStreamHandler.getHostAddress(URL) in the 
  ExtensionManager to immediately return null to prevent DNS lookup. 
  (FELIX-388)
* [2007-09-30] Resolved a concurrency issue that could result in the same 
  bundle being resolved more than once; also tried to simplify locking in 
  the core search policy implementation. (FELIX-381)

Changes from 1.0.0 to 1.0.1
---------------------------

* [2007-07-23] Fixed a bug in the framework shutdown process which was 
  causing threads calling Felix.stopAndWait() to not get notified that 
  the framework had shutdown. (FELIX-329)
* [2007-08-15] Fixed a bug in the LDAP filter which was not thread safe 
  on execution. (FELIX-338)
* [2007-08-17] Added support for persistent last used bundle ID to avoid
  re-use of bundle identifiers. (FELIX-339)
* [2007-08-23] Modified BundleImpl.getHeaders(Locale) to accept a null 
  locale. (FELIX-346)
* [2007-09-11] Added support to handle external termination of Felix 
  which was not handled or detected and prevented a restart of future 
  Felix instances in the same VM. (FELIX-363)
* [2007-09-12] Add support for Collection values in the LDAP filter to 
  match the 4.1 spec. 
* [2007-09-12] Fixed a bug in the LDAP filter where attributes where 
  limited to [a-zA-Z ] so didn't allow for e.g., numbers. (FELIX-361)
* [2007-09-13] Enable support for exporting the same package more than 
  once (FELIX-101).
* [2007-09-13] Returns the system bundle from a call to 
  PackageAdmin.getBundle(Class) in case the class comes from the 
  classloader (or one of its parents) that loaded Felix and the system 
  bundle exports the package.
* [2007-09-16] Fixed a bug in class space filtering in the service registry 
  that could result in class cast exceptions for service clients.
* [2007-09-16] Fixed a bug that prevented extension bundle exports to be 
  usable.

Changes from 0.8.0-incubator to 1.0.0
-------------------------------------

* [2007-01-18] Added support for bundle header localization. (FELIX-27)
* [2007-01-22] Modified framework resolver to support a generic
  capability/requirement model.
* [2007-01-22] Reorganized and centralized manifest parsing code and added
  support for resolver's generic capability/requirement model. (FELIX-98)
* [2007-01-22] Improved native library naming normalization. (FELIX-26)
* [2007-01-23] No longer eagerly resolving classes loaded from modules
  since this was causing verification errors with IBM J9.
* [2007-01-25] Added some support for execution environment checking.
  (FELIX-23)
* [2007-01-29] Added support for getAllServiceReferences(). (FELIX-32)
* [2007-01-31] Added Require-Bundle support to resolve using the generic
  capability/requirement model of the resolver. (FELIX-28)
* [2007-02-05] Fixed a bug in processor type normalization for x86-64
  processors.
* [2007-02-09] The resolver previously ignored packages that were pending
  removal when resolving new bundles, now it does not.
* [2007-02-09] Bundles are automatically refreshed when updated/uninstalled
  if none of their exported packages are in use.
* [2007-02-13] Added support for extension bundles. (FELIX-30)
* [2007-03-02] Added a Bundle.getBundleContext() method until actual
  support for OSGi R4.1.
* [2007-04-26] Modified Bundle.findEntries() to return URLs to directory
  entries as well as file entries.
* [2007-05-06] Modified LDAP evaluator to special case the fact that
  BigDecimal is not available in Foundation profile.
* [2007-05-21] Made some performance improvements in LDAP evaluation.
* [2007-05-22] Modified JAR file to include Service Tracker package.
* [2007-05-22] Improved concurrency handling around checking for already
  loaded classes and defining classes.
* [2007-06-05] Modified resource URLs to use port number rather than
  prepend information to the resource path.
* [2007-06-13] Improved dynamic imports to cycle through all available
  candidates when checking for class space consistency.
* [2007-06-18] Improved service registry filtering based on class versions
  to allow a bundle to register a service for a different version of class
  that it can access.
* [2007-06-21] Modified our "last ditch effort" to guess when to delegate
  to the system bundle to make it a little more robust.
* [2007-06-29] Fixed a bug in EventDispatcher that was causing asynchronous
  events to not be fired after stopping the framework instance and creating
  a new instance. (FELIX-314)
* [2007-07-03] Fixed a bug in EventDispatcher that would not correctly
  update a listener when it implemented multiple listener interfaces.
* [2007-07-04] Modified Felix framework class to implement the Bundle
  interface to improve the startup/shutdown sequence and to provide a
  simplified API for creating framework instances.
* [2007-07-11] Removed the PropertyResolver-related classes and now only
  use Maps for configuration properties. (FELIX-324)
