Changes 0.6.1 to 0.8.0
----------------------

** Bug
    * [FELIX-2723] - When the execution of a closure with pipes is
      interrupted, pipes should be interrupted too

** New Feature
    * [FELIX-2761] - Add a way to listen to execution of command lines
    * [FELIX-2764] - Publish OSGi EventAdmin events when executing a command
      line

Changes 0.6.0 to 0.6.1
----------------------

** Bug
    * [FELIX-1473] - [gogo] The syntax does not provide a way to call
      methods on a string
    * [FELIX-2432] - [gogo] NPE/coercion failure when null first parameter
      to method expecting arry
    * [FELIX-2545] - [gogo] runtime should close all open sessions when it
      is stopped
    * [FELIX-2606] - Gogo isn't decoupled from OSGi anymore

** Improvement
    * [FELIX-2396] - Ability to have callbacks when accessing session variables
    * [FELIX-2433] - [gogo] allow command expansion inside double quotes
    * [FELIX-2607] - Introduce a specific exception when a command is not
      foundGogo Runtime 0.6.1

Gogo Runtime 0.6.0
------------------

** Bug
    * [FELIX-1473] - [gogo] The syntax does not provide a way to call methods
      on a string
    * [FELIX-1474] - [gogo] result of commands is implicitly written to pipe
    * [FELIX-1493] - [gogo] automatic expansion of $args in Closure stops
      direct access to $args list
    * [FELIX-2337] - [gogo] no way to access array[] elements produced by
      assignment
    * [FELIX-2375] - [gogo] when supplied args can't be coerced, the error
      message prints the arg values, rather than their types
    * [FELIX-2380] - [gogo] lock contention in piped writer when reader
      doesn't read all input

** Improvement
    * [FELIX-1487] - Support for commands on multiple lines
    * [FELIX-2328] - [gogo] tidy-up runtime to remove optional code etc
    * [FELIX-2339] - [gogo] add support for running scripts
    * [FELIX-2342] - [gogo] remove old felix command adaptor

** New Feature
    * [FELIX-2363] - [Gogo] Add annotations for creating commands with
      optional and out-of-order arguments

** Task
    * [FELIX-1670] - [gogo] launcher bundle not required
    * [FELIX-1889] - Gogo should depend on the official OSGi jars
    * [FELIX-2334] - [Gogo] Use org.apache.felix as Maven groupId
    * [FELIX-2367] - [Gogo] Use org.apache.felix namespace to avoid any
      perceived legal issues
