= RubyMotion 3.5 =

  * Added debugging support. The `rake device' and `rake emulator' tasks will
    now honor the `debug=1' argument, which will launch the app then connect
    gdb to it.
  * Added Integer#{to_i, to_int}.
  * Added Float#{to_i, to_int, trunctate}.
  * Added Hash#{each, each_pair, each_key, each_value, to_hash, to_a, inspect,
    to_s, key, index, has_value?, value?, delete_if, reject, reject!, keep_if,
    select, select!, invert, update, merge, merge!, shift, replace, assoc rassoc,
    fetch}.
  * Improved Hash by using LinkedHashMap instead of HashMap in order to retrive
    elements with inserted order.

= RubyMotion 3.4 =

  * Added Hash#{store, size, length, empty?, include?, member?, hash_key?, key?,
    delete}.
  * Fixed a bug in the compiler where DWARF metadata would not be properly
    taken into account by newer NDK toolchains (such as LLVM 3.5).
  * Fixed a bug in the compiler where the assembler would fail if certain
    methods with reserved characters (ex. `#<<') are implemented in the file.
  * Fixed a bug in the runtime where a super call in a method not implemented
    in the receiver's class would call itself twice.

= RubyMotion 3.3 =

  * Added the `app.features' variable that can accept an Array of String
    objects that will be used to generate `<uses-feature/>' elements in the
    project's manifest file. The default is an empty array.
  * Added the `app.services' variable that can accept an Array of String
    objects that will be used to generate the `<service/>' elements under the
    `<application/> element of the project's manifest file. Values can be
    either class names (ex. ".MyService") or full package paths
    (ex. "com.yourcompany.Hello.MyService").
  * Improved the build system to let users extend classes defined in Ruby files
    in Java. In order to do so, a .java file has to be created in a directory
    where Ruby files reside (ex. `app'). The basename of the .java file should
    be the name of the class to extend, and its content will be copied inside
    the class definition. (ex. `public int foo() { return 42; }'). The basename
    can also use the underscore-based notation, and the build system will then
    translate it to the actual class name (ex. `my_service.rb' -> `MyService').
  * Improved the compiler so that the Android R inner-classes can now be
    accessed without the application package prefix.
  * Added support for the translation of `foo?' to `isFoo' selector shortcut
    in the method dispatcher.
  * Added Array#{*, count, pop, shift, reverse, reverse!, rindex}.
  * Added Kernel#raise.
  * Fixed Array#{first, last} and String#to_i in order to take an argument.
  * Fixed a bug in the runtime when calling ambiguous Java methods where a
    `nil' argument would not be considered acceptable for a Java reference.
  * Fixed a bug in the compiler where defining the `onActivityResult' method
    on an activity class would cause the build to fail, because the compiler
    would try to conform to a Java interface that has a wrong method type.
  * Fixed a bug in the build system where the `classes.dex' file would always
    be re-generated even if it was not needed.

= RubyMotion 3.2 =

  * Added support for Android 5.0 (API 21).
  * Added support for the latest Android NDK (r10c). The runtimes have also
    been recompiled with the new NDK toolchain.
  * Added support for class variables.
  * Added support for the `alias' language keyword.
  * Added support for the `defined?' language keyword (should work on all
    expressions except global variables and messages/super).
  * Added the following Module methods: alias_method, public/private/protected
    (empty for now).
  * Improved the build system to better detect the NDK toolchain.
  * Fixed a crash in the REPL when accessing constant paths (ex. Foo::Bar).
  * Fixed the runtime to properly catch Java exceptions raised by Android
    APIs with the `rescue => Exception' expression.
  * Fixed the `rake clean' task to delete the .bridgesupport files that have
    been generated for vendored projects.
  * Fixed a bug in the method dispatcher where the optional Hash syntax was
    not properly recognized (ex: `foo(1, x:2, y:3, z:4)' to send
    `foo(1, { :x => 2, :y => 3, :z => 4 })').
  * Fixed the build system to fail with a proper error message in case the
    Android SDK does not support the default API version.
  * Fixed a crash in the compiler when compiling `case/when' blocks that
    create local references.
  * Fixed a bug in the build system where the compilation of the main activity
    class would fail due to a missing import of the `java.lang.System' class.
  * Fixed the build system to print a better message in case it cannot retrieve
    the Android API version of the USB-connected device.
  * Fixed the build system to generate better names for the init functions of
    the Ruby source files.
  * Fixed the runtime to properly define non-Java classes.
  * Fixed a bug where defining a method with the `def' keyword on a module
    would not expose the method to classes that include such module.
  * Fixed the build system to compile the main app file with a proper exception
    handler, in case an exception is triggered from the main scope of a Ruby
    source file.
  * Fixed a bug in the compiler where we would be emitting invalid constant
    names for newer versions of the NDK assembler.

= RubyMotion 3.1 =

  * Added the RUBYMOTION_VERSION and RUBYMOTION_ENV constants, which have the
    same values as RubyMotion for iOS / OS X.
  * Added support for the Android R class. Thanks to Mark Villacampa for the
    patch.
  * Added the `app.application_class' setting, which can be used to specify
    the name of a custom Android::App::Application subclass that should be used
    by the application. By default, the variable has a nil value, which means
    a default class will be used.
  * Improved app versioning. `app.api_version' will now map to the
    `minSdkVersion' manifest attribute. Added `app.target_api_version' which
    will map to `targetSdkVersion'. Both settings will have the latest API
    version as the default value, except for 20 (L). We recommend that you
    leave `app.target_api_version' intact and only modify `app.api_version'.
  * Improved the REPL so that "self" now always points to the current app
    activity. (Only works for API 14 or above.)
  * Added support for `&foo' constructs (which should dispatch #to_proc).
  * Added Symbol#to_proc.
  * Fixed a bug where `app.vendor_project' would generate a .bridgesupport
    file containing illegal XML characters (such as '<' or '>') inside
    attributes. Thanks to Mark Villacampa for the patch.
  * Fixed a bug where the dispatch of an overloaded Java method without
    arguments would fail. The runtime will now return the first method of the
    list (since we can't match any argument).
  * Fixed the `rake {emulator,device}' tasks to terminate the application in
    case the user leaves the REPL session.
  * Fixed a bug when dispatching certain methods using reflection (REPL) that
    return java.lang.Object.
  * Fixed a bug in the compiler where a crash would happen when trying to
    override a Java method accepting a Java array as argument.
  * Fixed a bug in the dispatcher when yielding certain runtime-generated
    blocks (ex. enumerators) where the return value would be destroyed.

= RubyMotion 3.0 =

  * First public beta with Android support. Make sure to read the "Getting
    Started" guide on the Developer Center in order to properly set up the
    environment. You also recommend that you read the "Runtime" and "Project
    Management" guides.
