mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-01-12 22:51:55 +08:00
1902 lines
108 KiB
Plaintext
1902 lines
108 KiB
Plaintext
= RubyMotion 2.36 =
|
||
|
||
* Added ARM64 support (64-bit) for iOS. It is not yet enabled by default for
|
||
applications that do not embed Frameworks or App Extensions. In order to
|
||
enable it on other builds add the following line to your project's Rakefile:
|
||
app.archs['iPhoneOS'] |= ['arm64']
|
||
* iOS 4.3 and OS X 10.7 are no longer supported, due to internal changes
|
||
that require us to use a newer C++ standard library.
|
||
* [iOS] Fixed a bug where the `app.provisioning_profile' setting would not be
|
||
configurable in the Rakefile of App Extensions projects.
|
||
* Fixed a bug when copying an `ImmediateRef', which isn't needed anyways,
|
||
because a tagged pointer can not be duplicated either.
|
||
* Fixed a bug where Xcode 6 would cache precompiled headers in a
|
||
hidden location and subsequent vendored builds could fail after cleaning.
|
||
* Fixed a bug where a failed vendored build could cause subsequent builds to
|
||
never actually start.
|
||
* Fixed the build system to remove Xcode 6 noise from vendored build output.
|
||
* Fixed a bug where the #supportedInterfaceOrientations method would be not
|
||
properly included.
|
||
* Fixed a race condition bug in the runtime where a crash would occur if
|
||
the same Objective-C constant was being resolved at the same time from
|
||
different threads.
|
||
* Fixed the `motion changelog' command to honor the `--pre' flag, which will
|
||
open the pre-release NEWS file instead.
|
||
* Fixed the `motion update --pre' command to print a reference to the
|
||
`motion changelog --pre' command.
|
||
* Improved IO#.read performance to read from files. ~4 times faster.
|
||
|
||
= RubyMotion 2.35 =
|
||
|
||
* Added support for iOS 8.1 (beta). You will need to install Xcode 6.1 GM
|
||
Seed in order to target it.
|
||
* Fixed a bug that could occur when the only available SDKs are newer than the
|
||
available BridgeSupport metadata.
|
||
* [iOS] Fixed a bug where it would not symbolicate with `rake profile:device`.
|
||
The dSYM file path was changed to fix a bug.
|
||
* [iOS] Fixed a bug where the RubyMotion shared framework would not update
|
||
even if it changed the code in framework.
|
||
* [OSX] Fixed a bug that would always cause the REPL to crash.
|
||
* Fixed a bug where GLKit functions would trigger a crash when it will run
|
||
app on iOS simulator.
|
||
|
||
= RubyMotion 2.34 =
|
||
|
||
* All iOS and OS X versions of the runtime have been recompiled with Xcode 6.
|
||
* [iOS] Add support for iPhone 6/6+ launch images. Unless explicitely
|
||
specified, the Info.plist `UILaunchImages' key is populated from all PNG
|
||
files in the resource directories that start with Default. For iPhone 6/6+
|
||
use the `-667h' and `-736h' filename modifiers.
|
||
* [OSX] Fix a bug that made it impossible to build a OS X app on Yosemite
|
||
with Xcode 6 GM, even when targeting 10.9.
|
||
* Fixed a bug that ommitted class and protocol methods from the ctags.
|
||
Patch by Rakesh BS.
|
||
* Improved exception backtrace symbolication performance by ensuring the dSYM
|
||
bundle is used when available.
|
||
* Improved Enumerable#inject performance. ~40% times faster.
|
||
* Fixed a bug that could cause `clang++' to be called with too many arguments
|
||
for a shell to handle.
|
||
* Fixed a bug that could cause `gen_bridge_metadata' to be called with too
|
||
many arguments for a shell (on Yosemite) to handle.
|
||
* [OSX] Fixed a bug that made it impossible to use a `NSApplication' subclass.
|
||
* [OSX] Fixed a bug where it would trigger a crash when it will evaluates a
|
||
expression on REPL on Yosemite.
|
||
* [OSX] Fixed a bug where the build directory for 3rd-party library wouldn't
|
||
be removed with `rake clean' command.
|
||
* [OSX] Fixed a bug where it didn't handle `NSTaggedPointerString' objects
|
||
when it configured lower OS X version as deployment target on Yosemite.
|
||
* [OSX] Fixed a bug where `rake debug=1' freezes lldb with Xcode 6 GM.
|
||
* [iOS] Changed default simulator to 'iPhone 6' which it would be introduced
|
||
by Xcode 6 GM.
|
||
* Fixed a bug where Instruments didn't launch if it would specify a template
|
||
name with "rake profile template='xxx'".
|
||
* Fixed a bug where Method#owner will return incorrect owner if the method
|
||
in inherited class would be overrided.
|
||
* Fixed a bug where wrong method would called when it would include module
|
||
which have #viewWillAppear and #viewWillDisappear implementations.
|
||
* Fixed a bug where method would not called when it would include some module
|
||
which have #viewWillAppear implementations.
|
||
* Fixed a bug where #method_missing would receive incorrect arguments after
|
||
calling was cached.
|
||
* Fixed a bug where the build system would ping the update server for each
|
||
target an application project includes.
|
||
* Fixed a memory leak which was created when huge splat would be passed into
|
||
the methods since second argument.
|
||
* Improved Regexp.last_match performance. ~20% faster.
|
||
|
||
= RubyMotion 2.33 =
|
||
|
||
* Added support for installing pre-releases of RubyMotion. The
|
||
`sudo motion update --pre' command will install a pre-release build in
|
||
`/Library/RubyMotionPre'. Currently, the pre-release channel contains
|
||
the first beta of RubyMotion for Android. Enjoy! ^_^
|
||
|
||
= RubyMotion 2.32 =
|
||
|
||
* The iOS 8.0 and OS X 10.10 versions of the runtime have been recompiled
|
||
with Xcode 6 Beta 6.
|
||
* [iOS] Depracted rake options `device_family' and `retina' in favor of
|
||
`device_name' which takes the name of one of the configured device-sets
|
||
found in Xcode -> Window -> Devices or the `simctl' tool (its location can
|
||
be found in the message shown when using one of the deprecated options).
|
||
* [iOS] Added support for iOS 8 App Extensions. See the `motion create --help'
|
||
output for a list of available templates and configure your host application
|
||
with the following: `app.target("path/to/extension", :extension)'.
|
||
* [iOS] Added support for frameworks that allow you to share code between your
|
||
host application and its extensions. Use the `ios-framework' template for
|
||
`motion create' and configure your host application with the following:
|
||
`app.target("path/to/framework", :framework)'.
|
||
* [iOS] Fixed a bug where backtraces could not be symbolicated on the iOS 8
|
||
Simulator.
|
||
* [iOS] Fixed a bug where the iOS 8 Simulator could not be launched with the
|
||
default device config.
|
||
* [iOS] Fixed a bug where the iOS 8 Simulator could not be used to select
|
||
views in the REPL.
|
||
* [iOS] Fixed a bug where the REPL view selection would incorrectly invert the
|
||
coordinates for the landscape orientation on iOS 8.
|
||
* [iOS] Fixed a bug where "xcodebuild: error:" message would be displayed
|
||
when it will configure `app.xcode_dir' for Xcode6 path.
|
||
* [iOS] Fixed a bug where Instruments.app does not launch with `rake profile'
|
||
on iOS 8.
|
||
* [iOS] Fixed a bug where `iPhone 4s / iOS 7' simulator was always launched
|
||
if Xcode 6 location path was specified through `app.xcode_dir'.
|
||
* [iOS] Fixed a bug in iOS 8 where Hash objects could not be passed as an
|
||
object of an NSUserDefaults.
|
||
* [iOS] Added `app.embedded_frameworks' configuration to support dynamic
|
||
framework on iOS 8.
|
||
* Fixed a bug where headers in nested symlinked directories could not be used
|
||
with `vendor_project' and an Xcode project.
|
||
* Fixed a regression where a crash would happen when calling user defined
|
||
method if the same method was already defined in some classes in Apple SDK.
|
||
* Fixed a regression where a crash would happen when calling methods after
|
||
used a method with variadic arguments.
|
||
* Fixed a bug where a "not precompiled" error would happen when calling the
|
||
SKPhysicsWorld method which takes with Objective-C Blocks.
|
||
* Fixed a bug which superclass method would be called if method was removed
|
||
through Module#remove_method.
|
||
* Fixed a bug which it would trigger crash when the method for KVO was called.
|
||
* Fixed a bug where overrode Time#+ would not be called.
|
||
* Fixed a bug which it would trigger random crash when #method_missing will be
|
||
called.
|
||
* Fixed a bug where it would cause a "Permission denied" error if vendor
|
||
library directory was not writable.
|
||
* Improved Module#define_method performance. ~3 times faster.
|
||
* Improved Object#method_missing performance. ~8 times faster.
|
||
* Reduced the app boot time. ~40% faster.
|
||
|
||
= RubyMotion 2.31 =
|
||
|
||
* The iOS 8.0 and OS X 10.10 versions of the runtime have been recompiled
|
||
with Xcode 6 Beta 4.
|
||
* Fixed a regression where a crash would happen when calling methods with
|
||
variadic arguments.
|
||
* Fixed a bug where Unicode characters outside the BMP of a String object
|
||
would not be properly extracted when passed to an Objective-C API.
|
||
* Fixed a bug where a "not precompiled" error would happen when calling the
|
||
NSURLSessionDownloadTask#cancelByProducingResumeData method.
|
||
* Fixed a bug where a crash would happen when trying to override a method that
|
||
has `MKOverlayRenderer' arguments (ex. #drawMapRect:zoomScale:inContext:).
|
||
* Fixed a bug where trying to retrieve a value from a Hash object using a
|
||
key wrapped as a WeakRef would not work as expected.
|
||
* [iOS] Fixed a bug where ^C would not terminate the `rake debug=1' debugging
|
||
session immediately.
|
||
* [iOS] Fixed a bug where custom debug commands (ex. `pro', `pri') would not
|
||
work in a remote/device debugging session.
|
||
* [iOS] Fixed a bug which user-defined debug commands would not be loaded
|
||
in a remote/device debugging session.
|
||
|
||
= RubyMotion 2.30 =
|
||
|
||
* The iOS 8.0 and OS X 10.10 versions of the runtime have been recompiled
|
||
with Xcode 6 Beta 2.
|
||
* Added the `device_name' parameter in order to select iOS 8 simulater device.
|
||
You can use "iPhone 4s", "iPhone 5", "iPhone 5s", "iPad 2" ,"iPad Retina",
|
||
"iPad Air", "Resizable iPhone" and "Resizable iPad" for device name.
|
||
(Ex rake device_name="Resizable iPhone")
|
||
* Improved the compiler to optimize the app executable size, by removing
|
||
unnecessary internal Objective-C stubs. Apps should be 10-30% lighter,
|
||
depending on how much native calls they use.
|
||
* Added the BigDecimal#{to_i, to_int, to_f, to_s, coerce, +@, -@, modulo, quo,
|
||
power, floor, ceil, round} methods.
|
||
* Added the Kernel#BigDecimal method.
|
||
* Improved String interpolation performance. ~10% faster.
|
||
* Improved the NoMethodError exception message to include the full
|
||
Objective-C selector. Also, #method_missing will now receive the full
|
||
Objective-C selector as the method name.
|
||
* Fixed a bug where spec helpers nested in sub-directories were being
|
||
considered spec files instead of helpers. Thanks to Ignacio Piantanida for
|
||
the patch.
|
||
* Fixed a bug where a crash due to an assertion would be happening when using
|
||
#layout on a MIDIPacketList object on iOS 8.
|
||
* Fixed a bug where a crash would happen when calling a Objective-C method
|
||
supposed to return a block, but instead returning nil.
|
||
* Fixed a bug where a crash would happen when a Symbol object was used with
|
||
the NSCoding interface methods.
|
||
* Fixed a bug where shortcut selectors would not work when the method name
|
||
was begining or ending with a number.
|
||
* Fixed a bug where the `scrollViewWillEndDragging:withVelocity:
|
||
targetContentOffset:' delegate method would not be defined properly.
|
||
* Fixed a bug where a crash would happen when a Struct object was used with
|
||
the NSCoding interface methods.
|
||
* Fixed a bug where the `NSJSONSerialization' interface would return a
|
||
BigDecimal object if the `0.0' value was stored in the original JSON data.
|
||
* Fixed a bug where dynamically-defined methods would not be removed properly.
|
||
* Fixed a bug where typedef parameters would cause a "not precompiled" error.
|
||
* [OSX] Fixed the runtime to recognize `NSTaggedPointerString' objects that
|
||
were introduced in Yosemite.
|
||
* [OSX] Fixed a bug with the `NSManagedObjectModel#entitiesByName' method of
|
||
the CoreData framework where it would return an NSDictionary that was not
|
||
expected on 10.9.
|
||
* [OSX] Fixed a bug where the default value for `app.deployment_target' was
|
||
wrong and would cause a build error on an old version of OS X.
|
||
* [OSX] Fixed a bug where a "not precompiled" error would happen when
|
||
specifying an older version OS X version for `app.deployment_target' when
|
||
building on Yosemite.
|
||
|
||
= RubyMotion 2.29 =
|
||
|
||
* Added support for Xcode 6 Beta 1 and iOS 8.0 / OS X Yosemite (10.10).
|
||
* Fixed a bug where objects removed by Array#delete would not released.
|
||
* Fixed a bug where a `not precompiled' error would happen when calling an
|
||
alias to an Objective-C method with a C-level block argument.
|
||
|
||
= RubyMotion 2.28 =
|
||
|
||
* Added support for `BigDecimal'. This class is implemented on top of
|
||
`NSDecimalNumber' and currently adds all the `BigDecimal' operator methods.
|
||
It can be passed to APIs that require `NSDecimalNumber *', `NSDecimal', and
|
||
pointers to `NSDecimal'.
|
||
* Fixed a bug with framework search paths that contain spaces.
|
||
* Fixed a bug with Objective-C methods that expect a void-pointer to an object
|
||
(`id'/`CFTypeRef') and thus a `Pointer'. The object is now passed as-is.
|
||
* Fixed a bug with the CoreMIDI BridgeSupport metadata on platforms that have
|
||
64-bit support where the MIDI types would be unavailable.
|
||
* Fixed a bug where empty `.strings' files would lead to a build failure.
|
||
* Fixed a bug where methods returning NSNotFound would return an incorrect
|
||
value to Ruby.
|
||
* Fixed a bug where a crash would happen when trying to call a Proc object
|
||
generated by Method#to_proc.
|
||
* Fixed a bug where an NSNumber object would not be converted to a Ruby
|
||
Numeric object in the context of Objective-C Subscripting.
|
||
* Fixed a bug where `super' couldn't be used with keyword arguments.
|
||
* Fixed a bug where an incorrect cache would be used internally and would
|
||
trigger an exception when shortcut selectors were used.
|
||
* Fixed a performance issue when deallocating many objects.
|
||
* Reduced the app boot time. ~15% faster.
|
||
* Improved Object#method_missing performance. ~10% faster.
|
||
* Improved performance where creating Objective-C selectors internally.
|
||
As an example, Object#{send, respond_to?} is now ~30% faster.
|
||
* Improved String interpolation performance. ~10% faster.
|
||
|
||
= RubyMotion 2.27 =
|
||
|
||
* Added support for localization `.strings' files which will be compiled as
|
||
binary files. Thanks to Hwee-Boon Yar for the patch (pull request #154).
|
||
* Added support for `NSLocalizedString' and friends. These are now available
|
||
on `Kernel'.
|
||
* Added missing AudioUnit bridgesupport metadata.
|
||
* Improved the file dependencies detection code to spend less time when
|
||
working on a project that has a significant number of dependencies.
|
||
Thanks to Ignacio Piantanida for the detective work.
|
||
* Fixed a regression introduced in RubyMotion 2.25 that was causing a
|
||
build error in environment using Ruby 1.8.
|
||
* Fixed a regression introduced in RubyMotion 2.25 that was causing a
|
||
`not precompiled' error if the method would handle a BOOL pointer as an
|
||
argument.
|
||
* Fixed a bug where Boxed subclasses could not be re-opened safely.
|
||
* Fixed a bug which shortcut for the method which was implemented on Ruby
|
||
would not respond.
|
||
|
||
= RubyMotion 2.26 =
|
||
|
||
* Fixed a regression introduced in the previous release that was causing a
|
||
crash when checking if a class supports weak references on iOS 6.
|
||
|
||
= RubyMotion 2.25 =
|
||
|
||
* Added support for Xcode 5.1 and iOS 7.1 final.
|
||
* Added support for OSX 10.6 as deployment target (experimental).
|
||
* Improved user feedback by printing a warning when overriding a protocol
|
||
method that was previously defined with one of the `attr_*' methods. This
|
||
may print false positives.
|
||
* Improved `rake ctags' to index the application's .rb files. Thanks to
|
||
Hwee-Boon Yar for the patch (pull request #152).
|
||
* Improved use of `WeakRef' to raise an exception when trying to create a
|
||
weak reference to one of the unsupported classes. For more information, see
|
||
`Which classes don’t support weak references?' at http://bit.ly/1iiSOaU.
|
||
* Added some introspection support to `ImmediateRef'. It can now report the
|
||
actual class, its methods, and a inspect description string.
|
||
* Added gemspec call to Gemfile for gem template. Thanks to Mark Rickert for
|
||
the patch (pull request #151).
|
||
* Fixed a bug where `rake device debug=1' did not work with Xcode 5.1.
|
||
* Fixed an error in `rake device debug=1' if it would use UTF-8 as app name.
|
||
* Fixed a bug where an application could not be installed and launched on the
|
||
Simulator or a device due to the application bundle containing a directory
|
||
called `Resources'. This will now fail the build with a descriptive error.
|
||
* Fixed a bug where the OS X REPL did not work on 10.7 Lion.
|
||
* Fixed a bug where KVC property validation methods defined in Ruby would not
|
||
be compiled with the appropriate (Pointer) types.
|
||
* Fixed a bug where Ruby methods defined on Objective-C tagged pointer
|
||
objects could not call methods on itself.
|
||
* [iOS] Made `tap' test helper work with `UISwitch'.
|
||
* Fixed a bug where methods with BOOL arguments would not be handled properly.
|
||
* Fixed a bug where the cycle detector did not work for Array/Hash objects.
|
||
* Fixed a memory leak in Object#{method, public_method, instance_method,
|
||
public_instance_method}.
|
||
* Fixed a bug where Boxed#copy would cause a crash.
|
||
* Fixed a bug where Range#copy would cause a malloc_error_break error.
|
||
* Improved Object#instance_variable_set performance. ~20% faster.
|
||
* Improved Object#method performance. ~50% faster.
|
||
* Improved method dispatcher performance. ~5% faster.
|
||
* Improved fine-grained lock performance. ~20% faster.
|
||
* Improved memory management performance. ~25% faster.
|
||
|
||
= RubyMotion 2.24 =
|
||
|
||
* Fixed a regression introduced by the last build where environments running
|
||
versions of Ruby not handling source files as unicode by default would be
|
||
broken due to the presence of a unicode character in one of the files.
|
||
|
||
= RubyMotion 2.23 =
|
||
|
||
* Added support for objects conforming to the Subscripting interface
|
||
(Objective-C Literals).
|
||
* Fixed a bug with the `motion activate' CLI command. Thanks to Joffrey
|
||
Jaffeux for the patch.
|
||
* Fixed a regression when specifying external templates to `motion create'.
|
||
* Fixed a bug where WeakRef.new would cause a crash when nil, true, false,
|
||
Fixnum or Float objects were passed.
|
||
* Fixed a bug where `vendor_project' with `:static' did not reuse `:cflags'
|
||
for the BridgeSupport generation.
|
||
* Fixed a bug where manually created BridgeSupport metadata files were no
|
||
longer being used by the compiler. Now if one exists in the root of the lib
|
||
dir, that will be used instead of one in the platform-specific build dir.
|
||
* Added temporary files that are sometimes generated by the REPL to the
|
||
default `gitignore' file. Thanks to Mark Rickert for the patch (pull
|
||
request #150).
|
||
* Added support for "value of def-expr" feature (ex. `def foo; end' returns
|
||
the `:foo' symbol).
|
||
* Fixed a bug where NSDate.distantFuture returns a wrong value.
|
||
* Fixed a memory leak when an exception message is created.
|
||
* Fixed a bug where the cycle detector would be activated during asynchronous
|
||
Dispatch::Queue blocks even if ARR_CYCLES_DISABLE was set.
|
||
* Fixed a bug where #send would freeze the app when passed a method name
|
||
which accepts a bool if the method would be used with #send only.
|
||
* Optimized methods converting implicitely types using #to_str etc.
|
||
* Improved String#to_sym performance. ~40% faster.
|
||
* Improved performance in dispatcher. ~20% faster.
|
||
* Improved performance where allocates internal memory of String objects.
|
||
~10% faster.
|
||
* Improved performance of methods where accepts Regexp object. ~20% faster.
|
||
* Improved String literals performance. ~60% faster.
|
||
* Improved String performance where it handles short strings. ~25% faster.
|
||
* Improved String#{strip, rstrip, lstrip} performance. ~70% faster.
|
||
* Improved String#{[], []=, +, =~} and Array#+ performance. ~20% faster.
|
||
* Improved String#{==, !=} performance. ~50% faster.
|
||
* Improved String#include? with UTF-8 strings performance. ~15% faster.
|
||
* Improved String#{==, <=>}, NSString#== and Hash#== performance if it would
|
||
compare other class object. ~8 times faster.
|
||
* Improved Time#{+, -} performance. ~25% faster.
|
||
* Improved Time#{==, !=, <, <=, >, >=} performance. ~2 times faster.
|
||
* Improved Time#+ with float performance. ~80% faster.
|
||
* Improved Array#{==, !=} performance. ~25% faster.
|
||
* Improved Hash#{==, !=} performance. ~50% faster.
|
||
* Improved Range literals performance. ~20% faster.
|
||
* [iOS] Fixed a bug with the `flick' UI test helper not working with
|
||
`UISwitch' on iOS 7.
|
||
* [iOS] Added support for launching an application for background fetch in
|
||
the iOS Simulator with the `background_fetch=1' rake option.
|
||
* [iOS] No longer query the simulator application for its window metrics when
|
||
it is connected to a REPL but not the active application.
|
||
* [iOS] Improved the automatic selection of codesign certificates.
|
||
* [iOS] Improved error reporting when specifying the rake `target' option
|
||
with a version lower than the configured deployment target and when
|
||
specifying `retina=false' when targeting iOS 7.
|
||
* [OSX] Fixed a bug where the REPL wouldn't work in development mode if the
|
||
app is sandboxed.
|
||
* [OSX] Removed backtrace symbolication when an application is sandboxed and
|
||
print the command to allow the user to symbolicate themselves instead.
|
||
* Jim Weirich, 1956 - 2014. Without you I would not exist. Rest in Peace.
|
||
|
||
= RubyMotion 2.22 =
|
||
|
||
* Fixed a bug with `vendor_project' and prebuilt libraries, where the
|
||
BridgeSupport file could not be created, as the build directory wouldn’t
|
||
exist yet.
|
||
* Fixed a bug with `vendor_project' and Xcode projects, where the
|
||
BridgeSupport files were being searched in the wrong location.
|
||
|
||
= RubyMotion 2.21 =
|
||
|
||
* Added reference zeroing to `WeakRef' starting from iOS 5 and OS X 10.7. It
|
||
will now raise an exception in case a message is sent after the reference
|
||
has been deallocated. Use the `WeakRef#weakref_alive?' method to check if
|
||
it has been deallocated or not.
|
||
* Improved performance where Array elements would be converted from Ruby to
|
||
Objective-C instance. ~10% faster.
|
||
* Fixed a bug where incorrect SDK version values were being used in the
|
||
Info.plist file resulting in iOS App Store submissions being rejected.
|
||
* Fixed a bug where `motion update --cache-version=X' is broken.
|
||
* Fixed a bug where vendored Xcode OS X projects were build with the
|
||
IPHONEOS_DEPLOYMENT_TARGET option instead of MACOSX_DEPLOYMENT_TARGET.
|
||
* Fixed a memory leak where the objects with a cyclic reference would not
|
||
be released when used inside an asynchronous Dispatch::Queue.
|
||
* Fixed a bug where BridgeSupport files for external projects included via
|
||
`vendor_project' were being shared across platform and not removed with
|
||
`rake clean'.
|
||
|
||
= RubyMotion 2.20 =
|
||
|
||
* Improved command-line interface, e.g. `$ motion create --help' will now no
|
||
longer create an application called ‘--help’. This deprecates the interface
|
||
for any command plugins and this will fully be removed with RubyMotion v3.
|
||
* Added support for loading plugins through RubyGems. Libraries that used to
|
||
use `~/Library/RubyMotion' to load commands and/or templates should no
|
||
longer do so, but instead add a `lib/motion_plugin.rb' file (see Joybox for
|
||
an example). The `~/Library/RubyMotion' is from now on only meant for local
|
||
usage, i.e. outside of the scope of a gem.
|
||
* Added the Proc#owner method, which returns a reference to the object the
|
||
block was created from (the `self' reference).
|
||
* Improved Rational performance. ~4 times faster.
|
||
* Improved Proc#new performance. 15% faster.
|
||
* Improved performance of Range objects created with the literal syntax.
|
||
~80% faster.
|
||
* Improved Object#inspect performance. ~25% faster.
|
||
* Improved Object#!~ performance. ~3 times faster.
|
||
* Improved Object#{send, respond_to?} performance. ~30% times faster.
|
||
* Improved performance in dispatcher. ~25% faster.
|
||
* Improved performance of arithmetic methods with Float objects in 32-bit.
|
||
~80% faster.
|
||
* Fixed a bug where methods accepting variadic arguments would not be working
|
||
as expected when a method of the same signature was used before.
|
||
* Fixed a bug in the build system with Ruby 2.1 where an application whose
|
||
name contains UTF-8 characters could not be built.
|
||
* Fixed a race condition bug in the runtime where a crash would occur if
|
||
the same Objective-C constant was being resolved at the same time from
|
||
different threads.
|
||
* Fixed the runtime to be able to deal with all tagged pointers from the
|
||
Objective-C world. For instance, using NSTaggedManagedObjectID would lead
|
||
to a runtime crash.
|
||
* Fixed a bug where the user defined bang (!) method would be not called.
|
||
* Fixed a memory leak when creating compile time constants.
|
||
* Fixed a memory leak in Dispatch::Queue.new.
|
||
* Fixed a memory leak in Array#shift.
|
||
* Fixed a bug where Method#to_proc would not return a lambda block.
|
||
* Fixed a bug where CFType structures in AudioToolbox could not be used.
|
||
* Fixed a bug which Kernel.raise could not raise an NSException object.
|
||
* Fixed a bug where #alias and #respond_to? methods would cause a race
|
||
condition.
|
||
* Fixed a bug in the compiler that would ignore BridgeSupport enum values if
|
||
they only have a 64-bit value.
|
||
* Fixed a bug where NSMutableArray#delete_at would immediately release an
|
||
object.
|
||
* Made `vendor_project' accept glob patterns for the `source_files' option.
|
||
* Made BridgeSupport metadata generation for `vendor' projects by default use
|
||
the `:cflags` option.
|
||
* [iOS] Made the UI test helper search for views from the `keyWindow' instead
|
||
of the `current' window that was created specifically for the test. This
|
||
makes it easier to interact with modal views such as `UIAlertView'.
|
||
* [iOS] Fixed a bug in the build system where a link error would be caused
|
||
when building for arm64 with Xcode 5.1. Thanks to Andrew Larssen for the
|
||
patch (pull request #146).
|
||
* [OSX] Fixed a bug where an NSDate object convered to a Time object would
|
||
cause a calculation error.
|
||
* [OSX] Fixed the `rake crashlog' task.
|
||
* [OSX] Added `external_frameworks' config variable, which is used for
|
||
frameworks that are outside of `/System/Library/Frameworks`, but are not
|
||
meant to be embedded inside the application.
|
||
E.g. `/Library/Frameworks/iTunesLibrary.framework'.
|
||
* [OSX] Fixed a bug where method types of NSOpenPanel and NSSavePanel were
|
||
not being cached for their private counterparts that are substituted at
|
||
runtime in case the application is running in a sandbox.
|
||
|
||
= RubyMotion 2.19 =
|
||
|
||
* [iOS] Fixed a regression related to the sim launcher changes for Xcode 5.1
|
||
that broke `rake simulator debug=1`.
|
||
* [OSX] Fixed a regression where #eval support was not working anymore.
|
||
* Improved Hash#{default, shift} when Hash#default_proc returns a block.
|
||
2 times faster.
|
||
* Improved comparison iterator blocks that return Float objects.
|
||
(Ex. Array#sort{|a,b| return float_object }). 2 times faster.
|
||
|
||
= RubyMotion 2.18 =
|
||
|
||
* Added the `rake crashlog:device' task which will download crash reports
|
||
generated by the app on the device, symbolicate them and save them on the
|
||
local file system. The latest generated file will then be automatically
|
||
opened in Console.app.
|
||
* Improved the terminal output when using `vendor_project` with an Xcode
|
||
project so that it matches the build system output. This feature is using
|
||
the XCPretty project. Thanks a lot to Marin Usalj and Delisa Mason for it.
|
||
* [iOS] Fixed a bug where applications could not be launched on the simulator
|
||
when using Xcode 5.1. Due to this change, Xcode 4 is no longer supported.
|
||
* [OSX] Fixed a bug where apps generated on i5/i7 machines would fail to run
|
||
on older machines (ex. core2) due to the use of a new instruction.
|
||
* Fixed a bug where Hash#{[]=, clear, removeObjectForKey} will immediately
|
||
release an object.
|
||
* Fixed a bug where Array#{delete, clear} will immediately release an object.
|
||
* Fixed a bug where Struct#[]= and setter of Struct member will immediately
|
||
release an object.
|
||
* Fixed a bug where setter of Boxed member will immediately release an object.
|
||
* Fixed a bug where Kernel#instance_variable_set will immediately release an
|
||
object.
|
||
* Fixed a bug in the cycle detector where weak Proc objects would have their
|
||
`self' reference scanned, resulting in a double-release crash at runtime.
|
||
* Fixed a bug where Kernel#block_given? would not work as expected if a Proc
|
||
object was passed as a method argument.
|
||
* Fixed a bug in the spec runner app that could cause the test suite to be
|
||
started multiple times. Thanks to Jason W. May for the patch (pull request
|
||
#145).
|
||
* Improved Range.new performance. 20% faster.
|
||
* Improved Array#flatten performance. 70% faster.
|
||
* Improved Time#strftime performance. ~30% faster.
|
||
* Improved Numeric#{div, to_int} performance. 20-60% faster.
|
||
* Improved Fixnum#== and Float#== performance when it would compare an object.
|
||
2.5-3 times faster.
|
||
* Improved Enumerable#grep performance. 2 times faster.
|
||
* Improved the build system to compile as many spec files in parallel as
|
||
possible.
|
||
|
||
= RubyMotion 2.17 =
|
||
|
||
* Added the `Proc#weak!' method which transforms the strong reference to the
|
||
block `self' variable into a weak reference. Once the `self' variable is
|
||
weakly referenced there is no coming back to a strong reference. This
|
||
method can be used to break cyclic references that the cycle detector is
|
||
not able to handle yet.
|
||
* Defined implementations of NSObject methods, such as `conformsToProtocol:',
|
||
that take Ruby semantics into account on all classes created by RubyMotion.
|
||
* Fixed a bug in compiler where boxed types would not be properly registered
|
||
if a structure was only used for a pointer.
|
||
* Fixed the dispatcher to let methods expecting a structure of type A accept
|
||
a structure of type B who has the exact same fields signature, as in C
|
||
(ex. MKCoordinateRegion and CGRect).
|
||
* Added support for dynamic name directory in project templates. Thanks to
|
||
Toshiwo for the patch (pull request #144).
|
||
* Fixed a bug in NSArray#{take,drop} where nil could be returned instead of
|
||
an empty Array object in certain cases.
|
||
* Fixed a bug where NSDate objects would be wrongly converted to Time objects.
|
||
* Fixed a bug where certain structures of the same signatures could not be
|
||
used. (Ex. NSRect and CGRect in a 64-bit OS X app)
|
||
* Improved Range.new performance. 20% faster.
|
||
* Improved Array performance where finalizes object and expands internal
|
||
memory. 15% faster.
|
||
* Fixed bugs where ARC's rules related to method names starting with `new` or
|
||
containing `copy` or `Copy` where not being followed. This lead to objects
|
||
returned from Objective-C methods that matched these rules not being
|
||
autoreleased and objects returned from Ruby to Objective-C not being
|
||
retained.
|
||
* Fixed the runtime to prefix certain kernel symbols we export (ex. selCopy)
|
||
in order to avoid clashes at link time with certain 3rd-party libraries.
|
||
* Fixed a bug in in the build system where duplicated entries in the
|
||
app.resource_dirs array would mess up the resource-copying process.
|
||
* Fixed a bug where nested WeakRef objects (WeakRef.new(WeakRef.new(...)))
|
||
would not be properly resolved at dispatch time.
|
||
* Fixed a bug in {NSObject,Boxed}#== with a WeakRef object operand where said
|
||
operand would not be resolved.
|
||
* Fixed a compiler bug where `not precompiled' errors when it uses structure
|
||
of GLKit framework.
|
||
* [iOS] Fix various bugs in the UI test helpers, like `tap`.
|
||
* [OSX] Fixed #eval to honor the self binding when evaluating the string.
|
||
* [OSX] Introduced the `app.codesign_for_release' variable, which controls
|
||
whether code-signing should occur during `rake build:release'. The default
|
||
value for this variable is `true'.
|
||
|
||
= RubyMotion 2.16 =
|
||
|
||
* Fixed a heap overflow in floating point parsing (CVE-2013-4164).
|
||
* Improved Time#{<, >, ==, eql?} performance. 9 times faster.
|
||
* Improved the performance when NSDate objects are converted to Time objects.
|
||
10 times faster.
|
||
* Fixed regression in the REPL that made it impossible to use block local
|
||
variables.
|
||
|
||
= RubyMotion 2.15 =
|
||
|
||
* Added support for Xcode 5.1 Developer Preview and iOS 7.1 Beta.
|
||
* Improved REPL to recognize Simulator at any scale and orientation. The only
|
||
unsupported variant at this time is a Simulator window with scroll bars.
|
||
* Fixed REPL<->Simulator coordinate translation when run on a Retina Mac.
|
||
* Fixed undefined behaviour in REPL such as local variables not being stored.
|
||
* Improved dispatching of shortcut methods (ex foo= is shortcut of setFoo:).
|
||
20 times faster.
|
||
* Improved the performance where Fixnum and Float are returned. 20% faster.
|
||
* Improved Array#concat performance. About 2 times faster.
|
||
* Improved Array#reverse performance. 2 times faster.
|
||
* Improved Array#reverse! performance. 8 times faster.
|
||
* Improved Array#rotate performance. 5 times faster.
|
||
* Improved Array#rotate! performance. 40 times faster.
|
||
* Improved iterators performance (ex Array#{each, map}). 2-3 times faster.
|
||
* Fixed a bug where Array#rotate! causes a crash in REPL.
|
||
* Fixed a bug where the objects created by "CFxxxCreate(args)" are not
|
||
released.
|
||
* Fixed a bug in dispatcher where #super cannot look up the shortcut method.
|
||
(ie #foo=)
|
||
* Improve the precision of Float value.
|
||
* Raise error if cleaning a build artefact fails.
|
||
* [iOS] Fixed and optimized remote debugging (`rake device debug=1').
|
||
* [iOS] Fixed a bug where `rake device' would no longer print the application
|
||
logs from the device.
|
||
* [OSX] Fixed a bug on OSX platform where compiler flags for iOS are passed
|
||
when it generates bridgesupport file for vendor library.
|
||
* [OSX] Added missing bridgesupport metadata for Carbon, OSServices and
|
||
ApplicationServices frameworks.
|
||
* [iOS] Deprecated optional block that can be passed to the `tests` method
|
||
when making use of the view test helpers. This can be done with normal
|
||
`before` filters.
|
||
|
||
= RubyMotion 2.14 =
|
||
|
||
* Really fix the inline function problem described in the previous update.
|
||
|
||
= RubyMotion 2.13 =
|
||
|
||
* Fixed a bug where the methods which are defined as inline functions in
|
||
iOS/OSX framework are not working properly.
|
||
* Fixed a bug where using the mouse-over functionality in the REPL would
|
||
lead to an internal deadlock and hang the process.
|
||
* Fixed a bug in the REPL where the result of evaluated expressions could be
|
||
prematurely released before being sent back to the command-line.
|
||
* [iOS] Work around an issue where Instruments.app wants an integer
|
||
UIDeviceFamily value and App Launcher wants a string.
|
||
* [iOS] Fixed a big where the running the REPL in 64-bit mode would result
|
||
in an error related to the fact that the REPL library was i386-only.
|
||
|
||
= RubyMotion 2.12 =
|
||
|
||
* Added support for OS X Mavericks (10.9). The toolchain is now fully usable
|
||
on a Mavericks machine and can also be used to create Mavericks OS X apps.
|
||
* Added `profile' rake tasks that launch builds through Instruments.app for
|
||
iOS (both simulator and device) and OS X applications. Run a `rake clean'
|
||
before using the task on an existing project.
|
||
* [OSX] Added optional support for the #eval method. To enable it, you can
|
||
set the `app.eval_support' variable to true (default is false). Support
|
||
is currently experimental and will increase your application bundle size
|
||
by about 28MB.
|
||
* Fixed a internal memory leak in the Enumerator object.
|
||
* Added support to compile the Objective-C source codes which uses Modules
|
||
syntax in `app.vendor_project'.
|
||
* Added a custom `gen_bridge_metadata' which enables recursive function
|
||
pointer parsing to support Objective-C blocks that yield blocks.
|
||
* Added support for functions/methods that return Objective-C blocks by
|
||
wrapping those as Proc's.
|
||
* Fixed a memory leak when ObjC #initXXX methods will return internal class
|
||
object (ex NSMutableData#initWithLength, NSArray#initWithArray).
|
||
* Fixed where #new method doesn't work for GLKKit structure.
|
||
(ex GLKMatrix2.new, GLKVector2.new).
|
||
* Fixed a bug in Array#sample where it would return duplicated elements when
|
||
a value greater than self length was passed into argument.
|
||
* Fixed a bug where `motion update' might cause an error when it displays the
|
||
changelog on OSX 10.9.
|
||
* Fixed a compiler bug where it causes a crash with `rake device' when it
|
||
overrides the method which has structure as argument.
|
||
* [iOS] Fixed a crash when using certain NSIndexPath objects (64-bit only).
|
||
* [iOS] Fixed `rake debug=1` on OS X 10.9 not working.
|
||
* [iOS] Fixed a bug in the build system where it would generate invalid
|
||
values for the UIDeviceFamily key (was using strings instead of integers).
|
||
|
||
= RubyMotion 2.11 =
|
||
|
||
* Added the `rake clean:all' task which deletes all build object files
|
||
(ex. those in ~/Library/RubyMotion/build). We recommend using that task
|
||
before building an App Store submission.
|
||
* Added support for Xcode asset catalogs. This can be used to manage all your
|
||
image assets in a visual way, including your application’s icons. You can
|
||
create and edit a new catalog like so:
|
||
$ mkdir resources/Images.xcassets && open -a Xcode resources/Image.xcassets
|
||
* Fixed a long standing limitation in the compiler where overriding in Ruby
|
||
an Objective-C method that accepts a C-level block was not possible.
|
||
* Fixed a regression where `return' from a block would terminate the app.
|
||
* Improve the build system to always copy embedded.mobileprovision. Thanks to
|
||
Jan Brauer for the patch (pull request #121).
|
||
* Fixed a bug where a boxed struct would incorrectly be interpreted as a
|
||
object type, leading to the dispatcher not recognizing a signature.
|
||
* Fixed a bug where compiled object files of a vendored project were not
|
||
actually being cleaned when running `rake clean`.
|
||
* Fixed a bug where defining a singleton method on an object inside a method
|
||
with named parameters (Objective-C-style selector) would result in that
|
||
method being defined in the runtime with a wrong selector.
|
||
* Fixed a bug where Range objects created with non-literal begin/end points
|
||
would never be released, and therefore leaking memory.
|
||
* Added `context` method as `describe` alias in spec. Thanks to Ryo Katsuma
|
||
for the patch (pull request #134).
|
||
* Fixed a small internal memory leak in the dispatcher when sending the
|
||
#method_missing message.
|
||
* Fixed a bug in the compiler where providing nil as the value of a C-level
|
||
block argument would not actually pass NULL but an empty Block structure
|
||
instead. Thanks to Ruben Fonseca for the detective work.
|
||
* [iOS] Fixed a bug where device log is wrong filtered with `rake device'
|
||
when performed day is 1-9.
|
||
* [iOS] Added support to launch the app as 64-bit in simulator.
|
||
* [iOS] Fixed where non-retina iPad simulator does not launch as default.
|
||
Thanks to Fabio Kuhn for the patch (pull request #133).
|
||
* [iOS] Fixed a regression where certain GameKit class properties could not
|
||
be used (ex. GKMatchRequest#minPlayers).
|
||
* [iOS] Fixed a link error where "ld: framework not found IOKit" is caused
|
||
with iOS 7 SDK when it will run `rake device'.
|
||
* [OSX] Fixed the wrong default settings of short cut key in menu. Thanks to
|
||
Kazuhiro NISHIYAMA for the detective work.
|
||
|
||
= RubyMotion 2.10 =
|
||
|
||
* Fixed a critical regression in the compiler where DWARF metadata would not
|
||
be generated, causing .dSYM bundles to miss debugging symbols for Ruby
|
||
code. The regression was introduced in 2.8. If you submitted apps built
|
||
with 2.8 or 2.9 to Apple and need to symbolicate crash reports, you can
|
||
rebuild them with 2.10 and use the new .dSYM bundle.
|
||
* Fixed a bug where `motion changelog' does not work.
|
||
* Fixed a regression introduced in 2.9 that could lead to a compiler crash
|
||
when using the GLKit framework.
|
||
* Fixed a bug in `rake device' where it could sometimes crashes when
|
||
retrieving console logs.
|
||
* Fixed a bug in the build system where the build would fail when generating
|
||
BridgeSupport metadata if the Xcode path contained a space character.
|
||
Thanks to Michal Jirku for the detective work.
|
||
* Fixed a warning in the build system when creating a universal static
|
||
archive for a vendored project.
|
||
* [iOS] Fixed the build system to really not build for 64-bit by default.
|
||
* [iOS] Fixed a regression where exceptions could be not rescued in GCD
|
||
blocks on device, apparently due to an underlying change in iOS 7.
|
||
Thanks to Mark Frawley for the detective work.
|
||
* [iOS] Fixed a bug where `rake device' would cause an Assertion Failed when
|
||
`app.name' contains non-ascii characters.
|
||
|
||
= RubyMotion 2.9 =
|
||
|
||
* Work around what is very likely a bug in the App Store verification
|
||
process which would reject RubyMotion apps based on the fact that certain
|
||
__builtin__xxx_chk() functions of the C runtime are marked as private API.
|
||
These functions are called by the compiler in certain scenarios in order
|
||
to detect overflows. So far we know Apple rejects __strlcpy_chk() and
|
||
__strlcat_chk() calls, so we removed them from the RubyMotion runtime.
|
||
|
||
= RubyMotion 2.8 =
|
||
|
||
* Added support for iOS 7.0 GM and Xcode 5.0 GM.
|
||
* Added support for building 64-bit iOS apps for iPhone 5S (experimental).
|
||
The toolchain is now able to create x86_64 apps for the simulator and
|
||
arm64 apps for the device. Given the fact that 64-bit iOS has just been
|
||
announced and that many 3rd-party projects have not yet been updated, the
|
||
support is disabled by default. To enable, you can edit your Rakefile and
|
||
set the following lines: app.archs['iPhoneOS'] << 'arm64';
|
||
app.archs['iPhoneSimulator'] << 'x86_64'
|
||
* Improved the compiler to emit assembly instead of LLVM bitcode, which
|
||
results in a significant performance improvement (~3x faster builds).
|
||
* Upgraded the toolchain to LLVM 3.3 and to use clang compilers by default.
|
||
Xcode 4 (llvm-gcc) is no longer required to exist in the file system.
|
||
* Fixed a bug in build system where it could not build an app that was using
|
||
Korean characters in the name.
|
||
* Fixed a bug in the `motion update' command where a non-ASCII character was
|
||
wrongly used in the source code, causing the process to fail in certain
|
||
versions of Ruby. Thanks to Clay Allsopp for the patch (pull request #125).
|
||
* Fixed the compiler to emit debugging (DWARF) annotations for expressions
|
||
that weren't covered before (ex. variables assignments).
|
||
* Fixed a bug where Time#{==, eql?} would return the wrong value when using
|
||
duplicated object from #copy.
|
||
* Fixed a bug in the build system in the `app.vendor_project' method where
|
||
providing custom compiler flags (:cflags => '...') wouldn't work if the
|
||
project was being built twice (ex. `rake build' which builds for both the
|
||
simulator and the device). Thanks to Nick Quaranto for finding the bug.
|
||
* [iOS] Development builds for the device will now compile for the lowest
|
||
architecture possible, in order to create faster builds.
|
||
* [iOS] Fixed a malloc error bug when retrieving a NSDate object from the
|
||
ABRecordCopyValue() function.
|
||
* [iOS] Fixed a bug where methods of the ABPersonViewController,
|
||
ABNewPersonViewController and ABUnknownPersonViewController would cause
|
||
crashes in iOS 7.
|
||
* [iOS] Fixed a bug where the platform/SDK key in Info.plist would indicate
|
||
`iphoneos' even for simulator builds. It has now been changed to
|
||
`iphonesimulator', like Xcode. Thanks to Hwee-Boon Yar for the patch
|
||
(pull request #129).
|
||
* Fixed a bug where template working trees would not be updated upon git pull
|
||
with `motion create [AppName] -template=[git repository path]'.
|
||
Thanks to Jamon Holmgren for the patch (pull request #128).
|
||
|
||
= RubyMotion 2.7 =
|
||
|
||
* Added support for iOS 7.0 Beta 6 and Xcode 5.0 DP 6.
|
||
* Bundler is now integrated in new iOS and OS X projects. A default Gemfile
|
||
will be created and the Rakefile file will require and initialize the
|
||
bundler gem. In case Bundler is not to be found in the Ruby distribution
|
||
that is being used, the build system keeps working as usual.
|
||
* Added the `--cache-version' flag to the `motion update' command which lets
|
||
you keep multiple versions of RubyMotion in your computer. Cached versions
|
||
are installed as `/Library/RubyMotion<XXX>' (where XXX is the version
|
||
number). A project can use an older version of RubyMotion by changing its
|
||
Rakefile to point to `/Library/RubyMotion<XXX>/lib'. The `--force-version'
|
||
flag previously available in `motion update' has been removed.
|
||
* Added the `motion device:console' command to print the logs of the USB
|
||
connected device. New messages will be printed in real-time. Use ^C to
|
||
disconnect from the device.
|
||
* Added the `motion changelog' command to open the NEWS file in the terminal.
|
||
Thanks to Dan Loewenherz for the patch (pull request #107).
|
||
* Added the `String#to_fourcharcode' method which converts the receiver into
|
||
a FourCharCode type (used when doing Carbon/AppleEvent programming). The
|
||
receiver must have exactly 4 characters.
|
||
* Added `*.gem' into .gitignore in gem template.
|
||
* Removed calls from the String/Encoding/Regexp classes to ICU functions that
|
||
Apple has marked as non-public API. As a result, certain operations on
|
||
UTF-32 encodings are not possible anymore, until we figure out a solution.
|
||
* Fixed a memory crasher in Range.new.
|
||
* Fixed a bug in `rake crashlog' where it would fail with a missing
|
||
Shellwords constant, and also when it was not able to locate any crash
|
||
report file.
|
||
* Fixed the wording of the message printed when an application terminates
|
||
with a non-zero status code.
|
||
* Fixed a bug in `rake spec' where it would always return exit(0) status.
|
||
* Fixed the default value of app.short_version to be the same value as in
|
||
app.version. Thanks to Justin Campbell for the patch (pull request #62).
|
||
* Improved the `Boxed#to_a' to recursively send the `#to_a' message on fields
|
||
of the Boxed class (ex: CGRectMake(1, 2, 3, 4).to_a #=> [[1, 2], [3, 4]]).
|
||
* Improved Time class implementation in order to follow Ruby 1.9, so far it
|
||
was based on a Ruby 1.8. This would handle a time that exceeds the value of
|
||
the 32 bit. Added Time#{round, subsec, to_r} methods and changed Time#{new,
|
||
localtime, getlocal} methods to allow the variable arguments.
|
||
* Fixed a minor bug in the cycle detector where it would scan the instance
|
||
variable slots of a pure-Ruby object that have not been initialized yet.
|
||
* Fixed a memory crasher in the REPL that would happen when attempting to
|
||
set the libedit prompt from another thread, leading to a race condition.
|
||
* Fixed a bug, apparently caused by a change in the Objective-C runtime in
|
||
Xcode 5, that would make certain methods (ex. MKAnnotationView#image) not
|
||
returning a proper type at runtime but a pointer to a structure instead.
|
||
* Fixed the build system to make the content of the ARR_CYCLES_DISABLE
|
||
environment variable persistent when distributing an app.
|
||
* [iOS] The `rake device' task will now start the application (without the
|
||
need to attach a debugger). Logs emitted by the app will be redirected in
|
||
the terminal. ^C quits the app. In order to just install the app, the
|
||
`install_only' option can be given (ex. `rake device install_only=1').
|
||
* [iOS] Fixed the REPL/mouse-over functionality when using the simulator in
|
||
retina mode (which is the default when targetting iOS 7).
|
||
* [iOS] Added experimental support for remote debugging with lldb (Xcode 5).
|
||
* [iOS] Added support for the compilation of SpriteKit texture atlas files.
|
||
The build system will now compile directories with the `.atlas' extension
|
||
into one large file inside the app bundle, similar to how Xcode does it.
|
||
* [iOS] Added `:light_content' as new possible value for the
|
||
`app.status_bar_style' Rakefile variable. Thanks to Chris Radford for the
|
||
patch (pull request #116).
|
||
* [iOS] Fixed a bug in `rake debug=1' with Xcode 5 where builtin commands
|
||
(ex. `pro') where not available. We ported the commands from gdb to lldb.
|
||
* [iOS] Fixed a bug where the Accelerate framework was not covered by the
|
||
compiler. Note that the framework is C-only, might be tough to use from
|
||
RubyMotion, and should probably be called in vendored-C code for better
|
||
performance results.
|
||
* [OSX] Added the `app.category' variable which can be used to specify the
|
||
AppStore category. The default value is `utilities'. Thanks to Mark Rickert
|
||
for the patch (pull request #115).
|
||
* [OSX] Fixed the REPL/mouse-over functionality to be able to select views in
|
||
the key window, if the application has multiple windows opened.
|
||
* [OSX] Fixed a bug in Dispatch.once where only the first occurence of the
|
||
call in the code would work as expected.
|
||
* [OSX] Added the `app.codesign_for_development' variable that can be set to
|
||
true to enable codesigning for development builds. The default value for
|
||
this variable is false, and only release builds are codesigned by default.
|
||
|
||
= RubyMotion 2.6 =
|
||
|
||
* Added support for iOS 7.0 Beta 4 and Xcode 5.0 DP 4.
|
||
* Improved the build system so that spec files are also compiled in parallel.
|
||
* Fixed a bug in the cycle detector where it would try scanning objects that
|
||
have already been released. Thanks to Nick Quaranto for the help.
|
||
* Fixed a bug in the cycle detector where instance variables on scanned
|
||
objects would disappear, because of a problem in the WeakRef class.
|
||
* Fixed a bug in `rake crashlog' with application names containing space
|
||
characters. Thanks to Clay Allsopp for the patch (pull request #112).
|
||
* Fixed a bug in the debugger where the debugged process would be terminated
|
||
if ^C was pressed while the app was running.
|
||
* Fixed a bug in the spec framework where a spec that raises a pure
|
||
NSException would cause a runtime error as it would try to send the
|
||
#backtrace message to the object.
|
||
* [iOS] Fixed a bug in the REPL (iOS 7 only) where local variables would not
|
||
be preserved.
|
||
|
||
= RubyMotion 2.5 =
|
||
|
||
* The runtime is now able to detect and break basic circular references
|
||
(when two objects point to themselves). Only objects created from Ruby
|
||
classes (including Objective-C subclasses) are scanned. Cycle detection
|
||
happens when draining the nearest autorelease pool and has a limited number
|
||
of depth iterations, to preserve acceptable runtime performance. To disable
|
||
the cycle detector, set the ARR_CYCLES_DISABLE environment variable to any
|
||
value. To enable debug logging, set the ARR_CYCLES_DEBUG environment
|
||
variable to any value. Many thanks to Joe Noon for pre-testing this feature.
|
||
* Fixed a bug where C-level blocks allocated by the compiler would never be
|
||
released at runtime, as well as the Proc object linked to it. C-level
|
||
blocks are now allocated on the stack, keep a weak-reference to the
|
||
Proc object, and properly implement the Blocks ABI copy/dispose handlers
|
||
to retain/release the associated Proc object when required.
|
||
* The Exception class is now rewritten on top of the NSException class,
|
||
and properly implements its primitive methods. Exceptions are no longer
|
||
being converted. Exception handlers written in Ruby will still catch
|
||
NSException objects by default.
|
||
* Fixed memory leaks in NSMutableArray#{first(n), last(n), pop(n), shift(n)}.
|
||
* Fixed a bug where nested block variables would not be properly synchronized
|
||
if the block terminated early with the `break' or the `return' construct.
|
||
Thanks to Greg Fodor for the report.
|
||
* Fixed a bug where local variables created inside a loop (ex. `while') and
|
||
used inside a nested block would cause the previous value to be released
|
||
twice during the next iteration. Thanks to Daniel Dickison for the report.
|
||
* Fixed Dispatch::*.{sync,async} methods to not catch exceptions inside the
|
||
given blocks, and simply let the process crash naturally.
|
||
* Fixed the build system to not compile default exception handlers in the
|
||
main() entry-point function, as we want the process to crash naturally.
|
||
* Fixed a bug where block variables passed to Dispatch::Queue#async could
|
||
be released twice, leading to a crash.
|
||
* Fixed a bug in the build system where app.deployment_target and
|
||
app.sdk_version were compared as text. Thanks to Andrew Babichev for the
|
||
patch (pull request #108).
|
||
* Changed the `rake simulator' task to print a message when an application
|
||
crashes due to a signal (ex. SIGSEGV) and suggest the user to read the
|
||
crash report file that has been generated by the system.
|
||
* Added the `rake crashlog' task to automatically open the latest crash
|
||
report file that was generated by the system for the current app.
|
||
* Fixed a bug in the REPL where using the <tab> key to enable auto-completion
|
||
could result in a crash due to a missing symbol.
|
||
* Fixed a bug where an object implementing the NSCoding protocol as well as
|
||
#init and #initialize(arg) methods would cause a crash during creation.
|
||
* [iOS] Fixed a warning message from the linker that would be displayed when
|
||
using Xcode 5 to build the app.
|
||
* [iOS] Fixed a bug in the debugger where built-in debug commands weren't
|
||
installed within the simulator.
|
||
* [iOS] Fixed a bug in the build system where an app cmpiled for iOS 5.x
|
||
would immediately crash on the device.
|
||
* [iOS] Fixed a bug where the NSUIntegerMax constant was not properly
|
||
exposed when targeting iOS 7.x.
|
||
|
||
= RubyMotion 2.4 =
|
||
|
||
* Added support for iOS 7.0 Beta 3 and Xcode 5.0 DP 3.
|
||
* Fixed a long-standing set of memory-related bugs related to lambdas.
|
||
Dynamic variables (shared by lambdas and calling scope) are now allocated
|
||
as heap memory inside the Proc data structure. Local variables are properly
|
||
synchronized. Proc objects are properly reclaimed by the system once they
|
||
are no longer used. Changes have been added to both the compiler and the
|
||
runtime.
|
||
* [iOS] Fixed a bug in `rake device' where it could not build an app using
|
||
Xcode 5.x with a deployment target less than iOS 7.0.
|
||
* [iOS] Reduced the size of the Default-568h@2x.png file. Thanks to Gant
|
||
Laborde for the patch (pull request #100).
|
||
* [iOS] Fixed a bug where `rake retina=3.5' would not work with Xcode 5.x.
|
||
* [iOS] Fixed a bug where `rake simulator' would re-launch an iOS 7 simulator
|
||
with Xcode 5.x every time.
|
||
* [OSX] Fixed a bug in the build system where APIs of 3rd-party libraries
|
||
would not be properly handled in 64-bit mode.
|
||
* Fixed a memory crasher when trying to use the old value of an instance
|
||
variable slot as a local variable.
|
||
* Fixed memory leaks in NSMutableArray#insert.
|
||
* Fixed memory leaks when parsing bridgesupport file during compilation.
|
||
* Fixed a bug in NSMutableDictionary#delete where it will cause a crash if it
|
||
would use the result of NSMutableDictionary#delete on the receiver object
|
||
which was created by NSJSONReadingMutableContainers.
|
||
* Fixed a bug where 3rd-party libraries would fail to build if the file path
|
||
of the app contained space characters.
|
||
* Fixed a bug in Kernel#Array() where it would return an incorrected value
|
||
if an NSArray object was passed as argument.
|
||
* Fixed a compiler bug where `not precompiled' errors would sometimes happen
|
||
at runtime when using APIs dealing with BOOL types.
|
||
* Added a block to setup controller in the spec API. Thanks to Katsuyoshi Ito
|
||
for the patch (pull request #104).
|
||
* Fixed the `rake build' task to honor the `keep_temps' environment variable.
|
||
If set, temporary files (such as LLVM bitcode and assembly) will not be
|
||
removed from the build directory. To be used for debugging only.
|
||
|
||
= RubyMotion 2.3 =
|
||
|
||
* Added support for iOS 7.0 Beta 2 and Xcode 5.0 DP 2.
|
||
* Fixed a bug where the `RUBYMOTION_ENV' constant would not be defined before
|
||
executing the main scope of .rb application files, resulting in a const
|
||
lookup error in case the constant was trying to be accessed within a file
|
||
or module scope.
|
||
* [iOS] Fixed a bug where `rake simulator' would open 2 simulator apps at
|
||
the same time, due to the fact that the application name changed between
|
||
Xcode 4.x and Xcode 5.
|
||
* [iOS] Fixed a bug where certain NSObject methods would be missing in the
|
||
Foundation framework compiler file.
|
||
* [iOS] Fixed a warning message from the linker that would be displayed when
|
||
building for iOS 7.0.
|
||
* Fixed a bug in defined?(super) where it would return an incorrect value
|
||
when used from an included module.
|
||
* Improve string interpolation performance. 40% faster.
|
||
* Improve String#delete performance. 5 times faster.
|
||
* Improve Objective-C methods performance in String object. 50% faster.
|
||
* Added `output=colorized' in `rake spec'.
|
||
* Added `skip_build' option to `rake simulator' (iOS) and `rake run' (OSX) to
|
||
to run the program without recompiling (ex. `rake skip_build=1').
|
||
* Added git repository support for templates. (ex. `motion create
|
||
--template=https://github.com/IconoclastLabs/smart-ios.git test').
|
||
Thanks to Gant Laborde and Matt Garrison for the patch (pull request #92).
|
||
* Fixed a build error that was happening with Xcode 3.
|
||
Thanks to Matt Garriott for the patch (pull request #97).
|
||
* Added callback after created controller in spec. Thanks to Katsuyoshi Ito
|
||
for the patch (pull request #96).
|
||
* Fixed the build system to set `spec_mode' before running the `setup' block
|
||
in Rakefile. Thanks to Clay Allsopp for the patch (pull request #84).
|
||
* Added the `app.exclude_from_detect_dependencies' Rakefile variable. Thanks
|
||
to Clay Allsopp for the patch (pull request #81).
|
||
* Fixed a bug in the build system where it would remove `.nib' ressource
|
||
files even corresponding `.xib' files did not exist. Thanks to Kristian for
|
||
the patch (pull request #98).
|
||
* Added back `motion ri' support, which was incidentally removed due to a
|
||
mistake on the build machine.
|
||
|
||
= RubyMotion 2.2 =
|
||
|
||
* Added iOS 7.0 and OS X 10.9 support. Xcode 5.0 DP must be installed and
|
||
activated as the default (using `xcode-select'). Xcode 4.x must remain in
|
||
/Applications/Xcode.app as RubyMotion will still be using it, until we
|
||
properly migrate to the new compilers. You can revert to Xcode 4.x (using
|
||
`xcode-select') for stable development. *WARNING* iOS 7.0 and OS X 10.9
|
||
are Apple confidental and cannot be discussed online. Do not post code
|
||
using the new APIs online.
|
||
|
||
= RubyMotion 2.1 =
|
||
|
||
* Improved the `rake simulator' (iOS) and `rake run' (OSX) tasks to honor the
|
||
`args' environment variable, which can be used to provide command-line
|
||
arguments that will be passed to the app executable when launching.
|
||
(ex. rake simulator args="-com.apple.CoreData.SQLDebug 1").
|
||
* [iOS] Improved `rake archive' to generate a `manifest.plist' file that can
|
||
be used for Ad-Hoc distribution. Added the `app.manifest_assets' Rakefile
|
||
variable which can be set to an array of hashes describing the assets to be
|
||
included in the file. The default is an empty array, and no file is then
|
||
generated. (ex. app.manifest_assets << { :kind => 'software-package',
|
||
:url => 'http://hipbyte.com/foo.ipa' }).
|
||
* [iOS] Fixed `rake simulator' to show a warning message in case the user is
|
||
running tmux without `reattach-to-user-namespace', which is necessary.
|
||
* [iOS] Fixed compilation issues with 6.0 SDK.
|
||
* [OSX] Fixed a bug in `rake debug=1' where the debugger would not properly
|
||
start in case the application name includes a space character.
|
||
* [OSX] Added `rake ctags' task to generate `tags' file.
|
||
* [OSX] Added `rake static' task to create a static .a archive file.
|
||
* [OSX] Added `rake build' task as a shortcut for both `build:development'
|
||
and `build:release'.
|
||
* [OSX] Fixed `rake archive' to honor the content of the `app.entitlements'
|
||
project variable when code-signing the binary.
|
||
* [OSX] Added the `app.embedded_frameworks' Rakefile variable that can
|
||
include paths to 3rd-party frameworks that should be copied in the app
|
||
bundle's 'Frameworks' directory (ex. app.embedded_frameworks +=
|
||
['~/src/MyFramework.framework']). The build system will also fix the
|
||
install name of the executable. The default value is an empty array.
|
||
* [OSX] Fixed `rake archive:distribution' to properly codesign the app
|
||
executable twice, necessary for App Store submissions.
|
||
* [OSX] Fixed the Info.plist file generation to include the minimum OS
|
||
requirement key, necessary for App Store submissions.
|
||
* Fixed a bug in `Dispatch.once' where it would sometimes not yield the block.
|
||
* Fixed the require statement in the `gem' template Rakefile. Thanks to
|
||
Devon Blandin for the patch (pull request #88).
|
||
* Fixed the `iOS' template warning message to print the right library path.
|
||
Thanks to Tom Milewski for the patch (pull request #86).
|
||
* Fixed a bug in `app.files_dependencies' where it would not allow a path
|
||
containing "../" (ex. app.files_dependencies 'foo.rb' => '../bar.rb').
|
||
Thanks to Jeremy Ruppel for the patch (pull request #90).
|
||
* Fixed a bug in `app.vendor_project' to properly set the
|
||
CONFIGURATION_BUILD_DIR variable for non-standard Xcode projects. Thanks to
|
||
Jack Chen for the patch (pull request #94).
|
||
* Fixed `app.vendor_project' with Xcode projects to rebuild the project in
|
||
case a file changed. Thanks for Jack Chen for the idea and initial work.
|
||
* Fixed a bug where the .gitignore file would not be generated anymore when
|
||
creating a new project.
|
||
* Added the .gitignore file into the `gem' template.
|
||
* Added the BasicObject#__id__ method for CRuby compatibility.
|
||
* Fixed a bug in `undef' and Module#remove_method where it would raise an
|
||
'undefined method' error if the method was called before being removing.
|
||
* Fixed a memory bug where an object would be prematurely released if an
|
||
#initXXX method was called right from within #initialize.
|
||
* Fixed a bug in #respond_to? where WeakRef objects would not be properly
|
||
handled.
|
||
* Fixed a bug in detecting file dependencies where it will not detect file
|
||
dependencies if the files contain nested constants.
|
||
|
||
= RubyMotion 2.0 =
|
||
|
||
* Added OSX development support. Use `motion create --template=osx' to create
|
||
an OSX project. Use `rake -T' inside to see the available tasks and
|
||
`rake config' to see the application config variables. RubyMotion OSX apps
|
||
are built for both i386 and x86_64 architectures and can support OSX v10.7
|
||
and v10.8 as deployment targets. Check out the HipByte/RubyMotionSamples
|
||
repository on GitHub for sample code and the devcenter for documentation.
|
||
* Added command-line plugin system, which lets developers extend the
|
||
`/usr/bin/motion' command-line tool with new commands (ex. `motion foo').
|
||
Builtin commands have been extracted as plugins and 3rd-party plugins can
|
||
be created inside the `~/Library/RubyMotion/command' directory.
|
||
* Added a RubyMotion gem project template. Use `motion create --template=gem'
|
||
to create one and check `rake -T' inside to see the available tasks.
|
||
* Added project templates system (usage: `motion create --template=xxx').
|
||
RubyMotion comes with 3 templates: `ios' (default), `osx' and `gem'.
|
||
3rd-party project templates can be created inside the
|
||
`~/Library/RubyMotion/template' directory.
|
||
* Deprecated `require "motion/project"' in project Rakefiles. Existing iOS
|
||
projects should now require `motion/project/template/ios' instead. We
|
||
preserve compatibility for now but please do migrate.
|
||
* Added the `motion account' command to open the license account page.
|
||
* Added the `WeakRef' class to create weak references. Usage is
|
||
`WeakRef.new(obj)' and follows CRuby's WeakRef stdlib class. Passed
|
||
references will not be retained. Use with caution as sending a message
|
||
to a WeakRef object whose reference has been prematurely collected will
|
||
cause a runtime crash. The `WeakRef' class will be replaced by a no-op
|
||
once the runtime is able to deal with cyclic references.
|
||
* Improved the detection of file dependencies to handle absolute paths.
|
||
Thanks to Clay Allsopp for the patch (pull request #82).
|
||
* Improved the build system by using a separate build directory for source
|
||
files that resides outside of the project (ex. gems) in order to reduce
|
||
the compilation time.
|
||
* Fixed a bug where a crash would happen when calling a method defined using
|
||
#define_method that was contained in an extended module or in an inherited
|
||
class that includes a module.
|
||
* Fixed a bug where a crash would happen when trying to override the
|
||
`drawMapRect:zoomScale:inContext:' method in a MKOverlayView subclass.
|
||
* Improve `rake spec' to display an error message if there are no spec files
|
||
in the `spec' project directory.
|
||
* Fixed a bug where trying to set a constant inside another constant that is
|
||
not a Module object would not raise an exception (ex. `A=42; A::B=42').
|
||
* Fixed a bug where Module#include? would not be raising an exception if the
|
||
receiver was not a Module object.
|
||
* Fixed a bug where `return' on a yielded block that used `ensure' would not
|
||
work.
|
||
* Fixed a bug where `catch' and `throw' would not work on an iOS device.
|
||
* Fixed a bug where a crash would happen when using a variadic method from
|
||
the Cocos2D framework.
|
||
* Fixed a bug where a memory leak would happen when creating an object and
|
||
passing an arbitrary expression to the initializer method.
|
||
* Fixed a bug in build system where a "stack level too deep" exception could
|
||
happen.
|
||
* Fixed a bug when detecting file dependencies where classes or modules
|
||
defined using the `XXX::YYY' syntax could not be properly parsed.
|
||
* Fixed a limitation in Struct where creating a struct with more than 10
|
||
fields was not possible. We moved the limit to 100 fields.
|
||
* Fixed a limitation in the dispatcher where dynamically sending a message
|
||
or yielding a block with more than 10 arguments was not possible. We moved
|
||
the limit to 100 arguments.
|
||
* Fixed a bug in the REPL where it would get corrupted when receiving too
|
||
much input from the evaluator (ex. when using auto-completion).
|
||
* Fixed a bug where a compilation error would happen when parsing a
|
||
BridgeSupport structure that included a very large field.
|
||
* Improved the `motion ri' command to honor the $PAGER environment variable.
|
||
* Improved the `app.vendor_project' method to honor the :bridgesupport_cflags
|
||
and :bridgesupport_exceptions options, which will be appropriately passed
|
||
to the BridgeSupport generator. Thanks to Juan Karam for the patch.
|
||
* RubyMotion is one year old! Thanks all for your support.
|
||
|
||
|\ _,,,---,,_
|
||
/,`.-'`' -. ;-;;,_
|
||
|,4- ) )-,_..;\ ( `'-'
|
||
'---''(_/--' `-'\_)
|
||
|
||
= RubyMotion 1.35 =
|
||
|
||
* Added support for string constants defined in 3rd-party header files using
|
||
the macro system (ex. #define MyConstant @"SomeValue").
|
||
* Added the `no_start' option to `rake device debug=1' to let the user attach
|
||
a custom debugger. This is for the RubyMine integration.
|
||
* Fixed a bug in the REPL where the history could not be saved if it included
|
||
UTF-8 characters.
|
||
* Fixed a caching bug in Object#respond_to? which could return true for a
|
||
method that did not exist.
|
||
* Fixed a bug in REPL where an error message was often printed after using the
|
||
`quit' or `exit' command.
|
||
* Fixed a bug where the AVPlayer#currentTime method caused a `{?=qiIq}@:' not
|
||
precompiled' error.
|
||
* Improved `rake spec' error messages to include more details. Thanks to
|
||
Steven Webb for the patch (pull request #68).
|
||
* Improved `rake spec files=...' to make the `_spec' suffix optional. Thanks
|
||
to Dave Lee for the patch (pull request #71).
|
||
* Fixed a bug where using the AudioQueueBuffer structure would cause a crash.
|
||
* Added the `:force_load' option for the `app.vendor_project' Rakefile method.
|
||
This flag has a default value of `true' and can be set of `false' when
|
||
vendoring 3rd-party libraries that include duplicated symbols.
|
||
* Added the Dir#to_path method for CRuby compatibility.
|
||
* Fixed a bug where calling #alias on a new method would cause a crash.
|
||
* Fixed a bug where defining a method with #define_method on a module then
|
||
messaging the method would cause a crash.
|
||
* Fixed a bug where 'rake device debug=1' would cause a crash if the project
|
||
name included UTF-8 characters.
|
||
* Fixed a bug in the build system where framework dependencies would not
|
||
properly be loaded.
|
||
* Fixed a rare bug in the `super' dispatcher.
|
||
|
||
= RubyMotion 1.34 =
|
||
|
||
* Fixed a regression where command + mouse-over would not work in the
|
||
simulator window.
|
||
* Fixed a regression in the build system where updated resource files would
|
||
not be copied.
|
||
|
||
= RubyMotion 1.33 =
|
||
|
||
* Fixed a bug where certain Float object would be losing 2-bits of precision.
|
||
This was happening because the compiler optimized floats to fit in a 30-bit
|
||
data structure. The runtime will now allocate 32-bit floats on the heap
|
||
when they cannot be accurately stored as 30-bit.
|
||
* Added a feature to support multiple resource directories. Introduced the
|
||
`app.resources_dirs' variable which defaults to `['./resources']' and can
|
||
be modified to specify another resource directory to the build system. The
|
||
previous `app.resources_dir' variable is now deprecated.
|
||
* Added a feature to automatically create the `Default-568h@2x.png' file in
|
||
the resources directory during `motion create', in order to support 4-inch
|
||
screens.
|
||
* Fixed a bug in the build system where apps whose names include an UTF-8 or
|
||
UTF8-MAC character would not compile.
|
||
* Fixed a bug in the simulator mouse-over which could not properly select
|
||
views if the iOS simulator was rotated.
|
||
* Fixed a bug where the iOS simulator would not launch on OSX 10.6.
|
||
* Fixed a bug in `NSDate.alloc.init.timeIntervalSince1970' which would cause
|
||
a malloc_error_break error.
|
||
* Fixed memory leaks in NSDate.new and NSDate.alloc.init.
|
||
* Fixed a bug in Dir.entries and Dir.foreach where an exception was always
|
||
raised.
|
||
* Added the NSData#to_s method which is alias for NSData#to_str.
|
||
* Fixed a bug in Hash#delete where the deleted object would be prematurely
|
||
released by the table.
|
||
* Fixed a bug where the iOS simulator would not launch if `app.xcode_dir'
|
||
pointed to a path other than the '/Applications' folder.
|
||
* Fixed a bug where the iOS simulator would be relaunched every time with
|
||
`rake' command.
|
||
|
||
= RubyMotion 1.32 =
|
||
|
||
* Added support for Xcode 4.6 and iOS 6.1 SDK.
|
||
* Improved Array#hash performance.
|
||
* Fixed a bug in IO#closed? and File#closed? where an exception wasn't raised
|
||
if the receiver wasn't initialized.
|
||
* Fixed a bug in IO#gets where a memory heap overrun would be triggered.
|
||
* Fixed a bug in IO#close where it would close the wrong stream when opened
|
||
in both read/write mode by IO#open.
|
||
|
||
= RubyMotion 1.31 =
|
||
|
||
* Fixed a bug in Kernel.sprintf and NSDate.new which would cause a
|
||
malloc_error_break error.
|
||
* Added .sass-cache, .idea and app/pixate_code.rb to the default .gitignore
|
||
file.
|
||
* Fixed memory leaks in Complex and Rational classes.
|
||
* Improved String#{[]=, index} performance when a String object has only
|
||
ASCII code range characters. 5-14 times faster.
|
||
* Improved String#{==, eql?} performance when the length of the strings do
|
||
not match. 15 times faster.
|
||
* Improved String#+ performance by pre-allocating heap memory.
|
||
* Fixed a bug in MatchData where it caused a crash due to an assertion when
|
||
used on an uninitialized MatchData object.
|
||
* Fixex a bug in the automatic dependencies checker where it would cause a
|
||
build error when `app.files' contained a non-flat Array.
|
||
* Improved the automatic dependencies checker in the build system to be way
|
||
faster. Thanks to Yury Korolev for the patch.
|
||
* Fixed a memory crasher that would happen when symbolicating large exception
|
||
backtraces (simulator only). Thanks to Doug Puchalski for the help.
|
||
* Fixed a bug in `rake spec' where an ArgumentError exception would be raised
|
||
when `it' clauses in spec files would not be defined with a block.
|
||
* Improved the `tap' format of `rake spec' to print the number of each test
|
||
instead of the total number, and also a better description.
|
||
|
||
= RubyMotion 1.30 =
|
||
|
||
* Fixed a bug in the build system where it could not detect file dependencies
|
||
using nested classes (ex. `module M; class C' and `class C2 < M::C').
|
||
* Fixed a bug where MapKit annotation pins would disappear, because certain
|
||
Ruby objects (in this case, MKAnnotations) would use a Bignum value as the
|
||
return value of the `hash' method, which would not work properly when used
|
||
within MapKit.
|
||
* Added formatter for RubyMine tests runner. Thanks to Dennis Ushakov for the
|
||
patch.
|
||
* Fixed a bug in Float#hash where (-0.0).hash returned a different value with
|
||
(0.0).hash.
|
||
* Fixed a bug in Float#** and Fixnum#** which would return a Complex object
|
||
when the receiver was a negative value.
|
||
* Fixed a bug in Float#round which would return an inaccurate value.
|
||
* Fixed a bug in Numeric#div which would not call the super `floor' method.
|
||
* Fixed a bug in Range#step where it would return an object of the wrong type
|
||
when a float value was given as range.
|
||
* Fixed a bug in Range#{inspect, eql?, ==, hash} where crashes would happen
|
||
when using cyclic range objects.
|
||
* Fixed a bug in Range#each where it would not work if the receiver was
|
||
created using #to_str for the beginning of the range.
|
||
* Fixed a bug in Range#first(n) where it returned (n + 1) elements.
|
||
* Added the Object#singleton_class method.
|
||
* Fixed a bug in String#upto where it did not return an Enumerator object
|
||
when a block was not given.
|
||
* Fixed a bug in MatchData#[] where it would return a wrong value when a
|
||
negative Fixnum object was passed as the index.
|
||
* Fixed a bug in Regexp#options where it was returning a wrong value.
|
||
* Fixed a bug in Range#{min, max} where it would not evaluate the block.
|
||
* Fixed a bug in {File::Stat, Dir, StructClass}.new where it was crashing.
|
||
* Fixed memory leaks in the following classes: Boxed classes (ex. `CGRect'),
|
||
Pointer, Range and Time.
|
||
* Fixed memory leaks where the following methods would return an object that
|
||
would be leaking: Object#{dup, clone}, Time#{gm, getgm} Time._load,
|
||
Object#enum_for, NSDictionary#{inspect, dup, to_a, keys, values, value_at,
|
||
select, reject, merge}, NSMutableDictionary#{delete_if, select!},
|
||
NSArray#{dup, inspect, [], select, values_at, +, *},
|
||
NSMutableArray#{select!, uniq!}, Pointer.magic_cookie, Boxed#dup.
|
||
* Fixed memory leaks where some internal data in following classes and
|
||
methods would be leaking: Bignum, Random, Symbol, File::Stat, StructClass,
|
||
Dispatch::Queue, Marshal.{dump, load}, Kernel.sprintf, Regexp.{new, quote},
|
||
Hash.new, String#{split, count, delete, tr, tr!, tr_s, tr_s!}, Array#hash,
|
||
Symbol#inspect.
|
||
|
||
= RubyMotion 1.29 =
|
||
|
||
* Fixed a loading error with the ripper library when using Ruby 1.8.
|
||
* Fixed a bug where the files that only contained constants were not detected
|
||
by the file dependencies system.
|
||
* Fixed a bug where cyclic file dependencies would cause a `stack level too
|
||
deep' error.
|
||
* Fixed a bug where detecting file dependencies would cause a build error
|
||
when the list of files would not be given as a flat array.
|
||
|
||
= RubyMotion 1.28 =
|
||
|
||
* Added the `motion ri' command to access to API information on command line.
|
||
Ex: motion ri Dispatch::Queue#sync
|
||
* Improved the build system to detect file dependencies automatically.
|
||
This feature is experimental, if you encounter any problem you can disable
|
||
it by setting `app.detect_dependencies = false' in the Rakefile.
|
||
* Fixed the build system to set a 5 seconds timeout when accessing the
|
||
software updates server. Thanks Nick Quaranto for the patch.
|
||
* Improved `rake simulator' to honor the SIM_STDOUT_PATH, SIM_STDERR_PATH
|
||
and SIM_WAIT_FOR_DEBUGGER environment variables, to respectively set the
|
||
path of the stdout and stderr streams and to tell the simulator launcher
|
||
that it should wait for a debugger before starting the application. These
|
||
variables will be used in the RubyMine integration.
|
||
* Fixed a bug in Dispatch::Object#dispatch_object on iOS versions below 6.0
|
||
* Fixed a bug in NSDictionary#select which always raised an exception.
|
||
* Fixed a bug in String#<< which raised an ArgumentError exception instead of
|
||
RangeError if the given object was is out of range.
|
||
* Fixed a bug in Kernel.catch when no argument was given.
|
||
* Fixed a bug in Kernel.Rational which was not raising a TypeError exception
|
||
if a Symbol object was passed.
|
||
* Fixed a bug in Symbol#clone and Sybmol#dup which didn't raised TypeError
|
||
exceptions.
|
||
* Fixed a bug in Symbol#match and Symbol#=~ which did not properly return
|
||
an index of the beginning match.
|
||
* Fixed a bug in Symbol#succ and Symbol#next which returned a String object.
|
||
* Added the following methods: Complex#rationalize, ENV#select! and
|
||
ENV#keep_if.
|
||
* Fixed a bug in Complex#/ which raised an exception when passed 0.0.
|
||
* Fixed a bug in Complex.rect and Complex.polar which raised an ArgumentError
|
||
exception instead of TypeError when a wrong value was given.
|
||
* Fixed a bug in Regexp.last_match which raised an IndexError exception when
|
||
an index out of the matched range was given.
|
||
* Fixed a bug in ENV#[]= which did not raise an Errno::EINVAL exception if
|
||
the given String object included the '=' character.
|
||
* Fixed an error message in `rake target' when it cannot find iOS simulator.
|
||
* Fixed a bug when using TWTweetComposeViewController's methods on iOS 6.0
|
||
below would trigger a crash at runtime.
|
||
|
||
= RubyMotion 1.27 =
|
||
|
||
* Fixed a bug where NSDecimalNumber.decimalNumberWithDecimal would not work
|
||
since 1.24 in development mode, because of a regression introduced after
|
||
changing the default set of optimization passes.
|
||
* Fixed a bug where the `dispatch_object' method would not return a proper
|
||
value on iOS 6.0, because it wasn't conforming to the new os/object.h
|
||
structure.
|
||
* Fixed a bug in `rake spec' where certain UIAutomation-based methods would
|
||
not be callable because of a regression introduced in the previous update.
|
||
* Fixed a bug in the compiler to compile references to C functions using the
|
||
weak linkage. If the symbol of a C function is not available at runtime,
|
||
the function will not be defined and respond_to? will return false.
|
||
This fixes applications linking against AddressBook.framework on 6.0 and
|
||
making conditional use of the new ABAddressBookCreateWithOptions().
|
||
* Fixed a bug in the runtime where calling `super' in certain methods
|
||
(ex. UISlider's thumbRectForBounds:trackRect:value:) would crash the
|
||
program due to an assertion.
|
||
* Fixed a bug in the compiler where certain structures could be returned as
|
||
an object of the wrong class (ex. MKCoordinateRegion.region returning
|
||
AudioValueRange instead of CLLocationCoordinate2D).
|
||
* Fixed a bug in Object#{dup,clone} where #{initialize_dup,initialize_clone}
|
||
would not be called.
|
||
* Fixed a bug in Object#instance_eval where the receiver object was not
|
||
properly yield to the block.
|
||
* Fixed a bug in Array#== and Marshal.dump where unnecessary private methods
|
||
were being looked up.
|
||
* Fixed a bug in Array#{rotate,rotate!} where it would not raise a TypeError
|
||
exception if nil was given.
|
||
* Fixed Array#{uniq, uniq!} and NSArray#{uniq, uniq!} to support blocks.
|
||
* Fixed a bug in Range#dup where the begin/end values were not copied.
|
||
* Fixed a bug in Range#step which would not behave like Numeric#step if given
|
||
a Float argument.
|
||
* Fixed a bug in String#<< with a codepoint argument where an exception would
|
||
be raised when called on US-ASCII/BINARY strings.
|
||
* Added .DS_Store, temporary files and project files into the default
|
||
.gitignore file. Thanks to Mark Rickert and Eric Summers for the patch.
|
||
|
||
= RubyMotion 1.26 =
|
||
|
||
* Fixed a bug in the build system where the Info.plist file would not be
|
||
generated with the right DT* values when targetting iOS 6.0. This fixes
|
||
AppStore submissions for apps made for the iPhone 5 new retina format.
|
||
* Fixed a bug in the build system when building .bridgesupport files where
|
||
it would fail to process header paths including space characters.
|
||
* Fixed a bug where the `rake static' task would not work with iOS 6.0.
|
||
* Fixed a compiler bug when using the
|
||
`TWTweetComposeViewController#setInitialText' method on iOS 5.1 or below
|
||
would trigger a crash at runtime.
|
||
* Fixed a bug in Pointer#cast! where symbol arguments could not be given to.
|
||
* Fixed a bug where methods that take variable arguments do not call
|
||
the appropriate function if an ArgumentError exception if raised.
|
||
* Fixed a bug where calling super from a #define_method block would fail.
|
||
* Fixed a bug in the compiler when compiling references to C constants which
|
||
might already exist in the kernel module (ex. kCFBooleanTrue).
|
||
* Fixed a bug when starting the simulator with the 'retina=true' option.
|
||
Thanks to Scott Pierce for the patch.
|
||
* Fixed the build system to build vendored Xcode projects into the `.build'
|
||
directory instead of `build', as some projects come with such a directory.
|
||
* Fixed a memory bug when calling `File.open' with a splat Array argument.
|
||
* Fixed a regression introduced in 1.21 which prevented the OCMock framework
|
||
to work, because the dispatcher was performing one additional selector on
|
||
NSProxy-based receivers and OCMock counts the number of messages.
|
||
* Fixed a bug in `rake spec' where the simulator launcher would exit with an
|
||
error status even if the spec suite was successful.
|
||
* Improved Hash#[]= performance when an Array is used for key to use a
|
||
MurmurHash function instead of hashing on the length. 400 times faster.
|
||
* Added the Pointer#value method which is alias for Pointer#[0].
|
||
* Added the `app.framework_search_paths' variable that lets you configure
|
||
the custom framework paths for the project build.
|
||
* Added the `RUBYMOTION_VERSION' Ruby constant at runtime which points to the
|
||
version of RubyMotion, as a String. Cleaned up other RUBY_ constants.
|
||
* Added the `spec:device' Rake task which will run the spec/test suite on the
|
||
device via the debugger.
|
||
|
||
= RubyMotion 1.25 =
|
||
|
||
* Fixed a bug when using Objective-C properties implemented using message
|
||
forwarding (ex. GKMatchRequest's maxPlayers).
|
||
* Fixed a bug in build system where the app.info_plist dictionary would not
|
||
be re-generated if app.info_plist is called before changing other settings
|
||
(ex. app.name).
|
||
* Fixed a bug in the build system where vendored Xcode projects (including
|
||
projects via CocoaPods) would not be built honoring the Rakefile
|
||
app.deployment_target variable.
|
||
* Fixed a bug in the `rake device' debugger task where the debugger would
|
||
fail to attach if the application name includes a space character.
|
||
* Fixed a bug in the build system where a project whose path includes a space
|
||
character would fail to build the second time.
|
||
* Fixed a bug in the runtime where methods defined with `define_method' that
|
||
are either aliased or created via a module inclusion would crash when
|
||
called at runtime.
|
||
* Fixed a bug in the build system where the `get-task-allow' entitlement
|
||
which is set to true by default could not be set to false. Thanks to
|
||
@andreas for the patch.
|
||
* Fixed a bug in `rake simulator' where a stty-related warning would be
|
||
printed in case the task is launched from a process where stdout is not a
|
||
tty. Thanks to Dennis Ushakov for the patch.
|
||
* Fixed a bug in Range's evaluation order, where the beginning part would not
|
||
be evaluated at first (ex. (x = 0)..(x + 1)).
|
||
* Improved the Regexp class to support octal literals and '\[hH]' matchers.
|
||
* Fixed Math.atan2 to follow the Ruby 1.9.3 specs when both arguments are 0.0.
|
||
|
||
= RubyMotion 1.24 =
|
||
|
||
* Added support for the GM version of the iOS 6 SDK.
|
||
* Added support for the iPhone5 architecture (armv7s).
|
||
* Added new values for the `retina' option of `rake simulator': `3.5' (for
|
||
iPhone4) and `4' (for iPhone5). A `true' value will default to `3.5' in
|
||
case the simulator target is lesser than 6.0, otherwise, `4' will be used.
|
||
* Added debugging support (experimental) for both simulator and device.
|
||
Simply set the `debug' parameter to any value to attach the debugger
|
||
(ex. `rake debug=1' for simulator and `rake device debug=1' for device).
|
||
The Ruby code compiles with relevant DWARF metadata and the debugger
|
||
used is gdb. Note that the debugger experience is a work in progress and
|
||
will be significantly improved in future releases.
|
||
Check out http://www.rubymotion.com/developer-center/articles/debugging
|
||
* Fixed the `development' mode to not compile with LLVM optimizations. This
|
||
results in faster compilation times and also better debugging support,
|
||
but the code might run a bit slower. The `release' mode builds with the
|
||
entire optimization passes.
|
||
* Added to the build system the `mode' option which can be used to specify
|
||
the build mode, either `development' (default) or `release'. You can now
|
||
test your app in release mode by using `rake mode=release' for simulator
|
||
and `rake device mode=release' for device.
|
||
* Fixed the build system not to execute the user-defined application setup
|
||
block twice, which is no longer necessary with the new `mode' option.
|
||
* Removed the `archive:development' and `archive:release' tasks which are
|
||
no longer necessary with the new `mode' option.
|
||
* Added the `archive:distribution' task which builds an .ipa with distribution
|
||
settings (certificate, default entitlements, symbols stripped).
|
||
* Fixed `rake spec' to produce an .app bundle that uses a different bundle
|
||
identifier than the regular app. This is necessary in Xcode 4.5 to avoid
|
||
simulator installation issues.
|
||
* Fixed a bug in the simulator launcher when output to stdout would not be
|
||
displayed in case the rake process was piped to another process
|
||
(ex. `rake spec | ...').
|
||
* Added the Dispatch.once method, which wraps the dispatch_once() function,
|
||
that can be useful to implement singletons. Usage: Dispatch.once { ... }.
|
||
* Added support for `define_method'. Like `attr_*', it cannot be used to
|
||
overwrite existing Objective-C methods due to limitations of the compiler.
|
||
* Fixed a bug when converting Bignum objects into 'long long' types.
|
||
* Fixed a bug in the build system where relative source paths pointing to the
|
||
parent directory would not properly be expanded and would trigger build
|
||
failures.
|
||
* Fixed several bugs in String#% related to arguments and precision format.
|
||
* Improved String#[]= performance. 50 times faster.
|
||
* Improved String#length performance with multibyte characters. If String
|
||
includes multibyte characters, its length will be cached and reused.
|
||
500 times faster.
|
||
* Improved String#reverse performance with ASCII-compatible string. 30 times
|
||
faster.
|
||
* Improved Fixnum/Float modulo performance. 2 times faster.
|
||
* Fixed memory leaks in String#{reverse, reverse!}
|
||
* Fixed a bug when calling a method on an uninitialized Regexp object.
|
||
(ex. Regexp.allocate.to_s).
|
||
* Fixed a bug when calling NSArray#flatten(level) with 0.
|
||
* Fixed bugs in NSArray#rindex, NSArray#values_at, NSArray#values_at,
|
||
NSDictionary#values_at and Kernel.#sprintf which could raise uncatchable
|
||
exceptions.
|
||
* Fixed a bug in Dispatch::Source.timer which couldn't handle the
|
||
Dispatch::TIME_FOREVER constant for interval.
|
||
* Fixed a bug in NSArray#delete_if where nil could not be returned if the
|
||
receiver did not change.
|
||
* Added the following methods: NSArray#rotate, NSMutableArray#rotate!,
|
||
NSMutableArray#sort_by!, NSMutableArray#select!, NSMutableArray#keep_if,
|
||
NSMutableDictionary#select!, NSMutableDictionary#keep_if.
|
||
|
||
= RubyMotion 1.23 =
|
||
|
||
* Fixed a bug where conformsToProtocol: would not return true on objects
|
||
implemented in Ruby for protocols using required/optional sections (ex.
|
||
AQGridView).
|
||
* Fixed a bug in the compiler metadata file for the CMSampleBufferRef type
|
||
which would prevent methods accepting this type to be called.
|
||
* Fixed a bug in the runtime where certain classes (ex. Random) would create
|
||
instances released twice, triggering malloc errors later on. Thanks to
|
||
Hugues Lismonde for the detective work.
|
||
* Changed `rake device' to honor the `id' environment variable that can be
|
||
used to specify the ID of the device where the app should be installed.
|
||
This is useful when you have several iOS devices connected on your machine
|
||
and don't want `rake device' to deploy to the first one.
|
||
* Fixed a bug in String#strip where certain multibyte characters would be
|
||
considered as whitespace. Thanks to Watson for the patch.
|
||
* Fixed vendor_project (:static) to create static libraries with an object-
|
||
file index, which is mandatory as of Mountain Lion.
|
||
* Fixed the build system to support nested directories containing xib and
|
||
storyboard files. Patch by Mike Kelley.
|
||
* Fixed a bug in the `tap' method of the `spec/ui' library to properly handle
|
||
the `at' option. Patch by Clay Allsopp and Marc Schwieterman.
|
||
* Added the RuntimeError#nsexception method which, in case the exception
|
||
comes from an Objective-C method, contains the original NSException object.
|
||
This can be useful when you need to access specific NSException-level
|
||
information (such as the `userInfo' dictionary).
|
||
* Fixed a bug where the REPL methods (ex. `sessions') were added on the
|
||
Kernel module, making them available to all objects. This was causing
|
||
collisions (ex. when creating a CoreData `Session' entity).
|
||
* Fixed the build system to pass -fobjc-arc to the linker in case the app
|
||
is built for the 4.3 deployment target. This is necessary so that the ARC
|
||
runtime is properly linked into the app, when vendoring 3rd-party projects
|
||
that are ARC-only (ex. SVPullToRefresh). Patch by Satoshi Ebisawa.
|
||
* Fixed the build system to no longer re-build all .rb files in case the
|
||
project's Rakefile changed.
|
||
|
||
= RubyMotion 1.22 =
|
||
|
||
* This release adds support for iOS 4.3 and 5.0 back which wasn't present in
|
||
1.21 due to a bug in the build system. Sorry folks!
|
||
|
||
= RubyMotion 1.21 =
|
||
|
||
* Fixed a regression in the BridgeSupport generator in Mountain Lion where
|
||
APIs dealing with CFTypeRef would accept or return Pointer objects instead
|
||
of genuine objects.
|
||
* Fixed a bug where C structures starting with a lower-case character could
|
||
potentially be registered more than once in the runtime, leading to weird
|
||
memory issues (ex. many cocos2d structures).
|
||
* Fixed a bug where certain bignums (ex. ALAssetsGroupAll) could not be
|
||
passed as `unsigned int' arguments.
|
||
* Fixed a bug in `rake static' where the static archives would not be created
|
||
with an object-file index, which is now mandatory in Mountain Lion.
|
||
* Fixed a bug in the runtime where Objective-C properties implemented using
|
||
message forwarding could not be called (ex. GKPlayer's alias or playerID).
|
||
|
||
= RubyMotion 1.20 =
|
||
|
||
* Fixed a bug in the runtime where apps compiled for iOS5 calling into APIs
|
||
using certain C typedefs would raise an exception in iOS6 because of an
|
||
ABI incompatibility (introduced by clang's new enumerator_attributes
|
||
extension).
|
||
* Fixed a bug in the runtime where an exception would occur when Objective-C
|
||
code would try to allocate a new instance of a class defined in Ruby using
|
||
the +new method (ex. RestKit).
|
||
* Fixed a memory bug in Hash.[] when a Hash was passed (ex. Hash[a:'a']).
|
||
* Fixed a bug in certain Dispatch APIs when the main Dispatch::Queue object
|
||
was passed causing an ArgumentError exception.
|
||
* Fixed a bug in #public_send where an exception would not be raised if the
|
||
method is marked private.
|
||
* Fixed a bug when preparing blocks for libdispatch where dynamic variables
|
||
could be prematurely collected.
|
||
* Fixed a bug when certain methods implemented using message forwarding
|
||
would not be properly precompiled and would be raising an exception at
|
||
runtime (ex. UITextInputTraits enablesReturnKeyAutomatically).
|
||
* Removed a dyld warning that was printed on stderr when generating the
|
||
backtrace of an exception (dyld: DYLD_ environment variables being ignored
|
||
because...). Mountain Lion only.
|
||
* Fixed the runtime to be able to use Objective-C classes whose names start
|
||
with a lower-case character by capitalizing the name, similar to how C
|
||
constants and enumerations are mapped. (Ex. ICarrousel.new for the
|
||
iCarrousel class).
|
||
* The iOS 6.0 version of the runtime has been recompiled for iOS 6.0 Beta 3.
|
||
|
||
= RubyMotion 1.19 =
|
||
|
||
* Fixed a compiler bug (segfault) that could happen when compiling files
|
||
using C opaque types.
|
||
|
||
= RubyMotion 1.18 =
|
||
|
||
* Fixed a problem introduced in 1.16 that was causing objects returned from
|
||
certain initializers to be autoreleased twice.
|
||
* Added the `motiondir' project variable that can be used to specify the path
|
||
of the RubyMotion distribution (defaults to /Library/RubyMotion/lib).
|
||
Patch by Marc Schwieterman.
|
||
* Added support to test Storyboards in the testing layer. Patch by Marc
|
||
Schwieterman.
|
||
* Added the `--force-version=X' argument to `motion update' which can be used
|
||
to downgrade to a specific version of RubyMotion. This can be useful to
|
||
reduce bugs. Ex: motion update --force-version=1.15
|
||
* Fixed the iOS 6.0 Rakefile to use Xcode 4.5 DP2 by default.
|
||
|
||
= RubyMotion 1.17 =
|
||
|
||
* Removed the Bundler support as it's apparently causing issues on certain
|
||
environments. It will be added back once we figure out the edge cases.
|
||
|
||
= RubyMotion 1.16 =
|
||
|
||
* Fixed a compiler bug in the way certain opaque types in the CoreMIDI
|
||
framework would not properly be handled, causing crashes at runtime.
|
||
* Fixed a regression in the build system where spec files in nested
|
||
directories would not be taken into account. Patch by Marc Schwieterman.
|
||
* Bundler is now optionally required by the build system. If you use bundler,
|
||
you do not need to require it in the project's Rakefile anymore. Patch by
|
||
Vladimir Pouzanov.
|
||
* Disabled exception logging when running in spec mode.
|
||
* Fixed a bunch of memory leaks due to a bug in the compiler that was not
|
||
properly autoreleasing objects returned from overloaded initializers.
|
||
Thanks to Satoshi Ebisawa for the detective work.
|
||
* Fixed a memory bug in Array that was happening when re-allocating the
|
||
storage after a #shift call.
|
||
* Fixed a compiler bug where C or Objective-C APIs returning 32-bit integers
|
||
whose values cannot fix in 30-bits would not be properly converted into
|
||
Bignum types.
|
||
* Fixed a bug in the simulator launcher where iPad projects could be started
|
||
in the iPad simulator but using an iPhone simulator frame.
|
||
* The iOS 6.0 version of the runtime has been recompiled for iOS 6.0 Beta 2.
|
||
|
||
= RubyMotion 1.15 =
|
||
|
||
* Improved the spec framework to leverage UIAutomation's functionality. This
|
||
lets you write functional tests on views and controllers by using the same
|
||
event generators, but in pure Ruby (and not Javascript).
|
||
Check http://www.rubymotion.com/developer-center/articles/testing for more
|
||
information about the new API. Feature contributed by Eloy Duran.
|
||
* Introduced spec helpers. `rake spec' will now honor the files inside the
|
||
`spec/helpers' directory (if it exists) and compile them before the spec
|
||
files.
|
||
* Introduced the `files' option to `rake spec', which can be used to filter
|
||
the spec files that should be run. Filters can be either the basename of
|
||
a spec file or its full path, and are separated by a comma.
|
||
Example: rake spec files=main_spec,kvo_spec,spec/foo_spec.rb
|
||
* Introduced the RUBYMOTION_ENV constant in the runtime which can have one of
|
||
the following string values: 'test', 'development' and 'release'.
|
||
* Introduced the `rake static' task which creates a universal static library
|
||
containing the project's object files and the RubyMotion runtime, which is
|
||
suitable for inclusion in Objective-C/Xcode projects.
|
||
* Introduced weak frameworks support. The `app.weak_frameworks' setting can
|
||
be set to an array of framework names, similar to how `app.frameworks'
|
||
works (ex. app.weak_frameworks += ['Twitter']). Patch by Satoshi Ebisawa.
|
||
* Fixed a bug in the build system where files within symlinks inside of the
|
||
resources directory would not be copied. Patch by Nick Quaranto.
|
||
|
||
= RubyMotion 1.14 =
|
||
|
||
* Fixed a bug in the Struct class where certain instances would be released
|
||
twice and triggering a malloc error.
|
||
* Fixed a bug where aliasing a method generated by attr_* would trigger an
|
||
assertion at runtime when being called.
|
||
* Fixed a bug where calling methods generated by attr_* from Objective-C
|
||
would return NSNull instead of nil in case the attribute is nil.
|
||
* Fixed a bug in the random number generator where the generator would not be
|
||
properly initialized in certain cases (ex. Array#sample), therefore always
|
||
returning the same values.
|
||
* Fixed a bug where using C structures containing bitfields (ex. NSDecimal)
|
||
would trigger an exception at compilation time.
|
||
* Added support for pointers to C strings (needed for glShaderSource()).
|
||
Usage: Pointer.new(:string, n) where n is the number of C strings, then
|
||
simply assign Ruby strings with #[]=.
|
||
* Changed the runtime to log all raised exceptions via NSLog(). This behavior
|
||
can be controlled via the Exception.log_exceptions variable (which is true
|
||
by default, but can be set to false).
|
||
* Introduced new project variables: short_version, background_modes and
|
||
status_bar_style. Patch by Francis Chong.
|
||
|
||
= RubyMotion 1.13 =
|
||
|
||
* Fixed a regression in `rake simulator' introduced by the last update.
|
||
Also, the environment variable used to set the SDK target is renamed to
|
||
`target' (ex. rake target=4.3).
|
||
* Fixed a bug in the build system where certain .rb files would be rebuilt
|
||
every time `rake build' was executed, because the object directory was not
|
||
touched.
|
||
* Fixed a bug in the build system where the RUBYOPT variable would not be
|
||
cleared when calling the gen_bridge_metadata tool, which would cause some
|
||
issues later on. Patch by Satoshi Ebisawa.
|
||
|
||
= RubyMotion 1.12 =
|
||
|
||
* Fixed a bug where sending an `init' message alone (without using `alloc'
|
||
before) would lead to a memory crash. This was possible when overloading
|
||
an initWith* method and doing `self.init' inside.
|
||
* Fixed a bug where performing Objective-C methods that accept CFType objects
|
||
would crash the program (ex. [ABPersonViewController setDisplayedPerson:]).
|
||
* Switched to clang++ to link the executable bits. This fixes linker crashes
|
||
on iOS 6.0.
|
||
* Added `fast' output for `rake spec'. Fixed a bug in the other outputs.
|
||
Patch by Marin Usalj.
|
||
* Improved the build system to let the user specify CPU archs that should be
|
||
used for a certain platform. The `app.archs' method returns a Hash that one
|
||
can tweak. This is so far only useful when you target 4.3 (which is armv6
|
||
and armv7) and want to link with a 3rd-party library that only supports
|
||
armv7 (ex. app.archs['iPhoneOS'] = ['armv7']).
|
||
* Improved `rake simulator' to honor the `deployment_target' environment
|
||
variable (ex. rake deployment_target=4.3). Patch by Satoshi Ebisawa.
|
||
* Fixed a bug in the build system where the compiler would not use the right
|
||
BridgeSupport files when using a lower deployment_target.
|
||
Patch by Satoshi Ebisawa.
|
||
* Fixed the build system to re-link the .app executable in case one of the
|
||
vendored libraries changed.
|
||
* Fixed bugs in both ARM/simulator compilers where structures smaller than
|
||
64 bits would not be following the ABI and causing unexpected behavior in
|
||
certain cases (ex. cocos2d). Thanks to Aaron Hurley for the detective work.
|
||
* Removed Kernel#select as it clashes with a private `select' method defined
|
||
by iOS and triggered when hitting the select button in a paste action.
|
||
Thanks to Francis Chong for the detective work.
|
||
|
||
= RubyMotion 1.11 =
|
||
|
||
* Fixed a bug where the runtime would not allow `nil' to be passed as a
|
||
C-level block argument.
|
||
* Fixed a bug where methods defined by attr_* would abort the program when
|
||
called by Objective-C.
|
||
* Improved `rake spec' to honor the `output' environment variable, which can
|
||
be used to select a different output format. Available formats: spec_dox,
|
||
test_unit, tap and knock (ex. rake spec output=test_unit).
|
||
* Support for the iOS 6.0 Beta 1 SDK can be generated after having installed
|
||
Xcode 4.5 by typing the following command:
|
||
$ cd /Library/RubyMotion/data/6.0; rake update
|
||
|
||
= RubyMotion 1.10 =
|
||
|
||
* Fixed the build system to validate the content of the `app.icons' variable,
|
||
since a wrong value may trigger an "unrecognized selector" exception in
|
||
Application Loader when trying to submit the app to the App Store.
|
||
* Fixed the Rakefile created by `motion create' to include the magic utf8
|
||
comment, as the file may contain multibyte characters and be parsed by
|
||
Ruby 1.9. Patch by @pchw.
|
||
* Fixed a memory bug when using symbols as Hash keys.
|
||
* Exposed iOS 4.3 (or greater) libdispatch APIs.
|
||
* The following NSString methods that used to raise a "does not work on
|
||
NSStrings" exception are no longer defined: byte_size, get_byte, set_byte,
|
||
force_encoding, valid_encoding?, ascii_only?, bytes, each_byte, to_data,
|
||
pointer. This allows the developer to use respond_to?. These methods
|
||
however are available on strings created in Ruby.
|
||
* Fixed a bug in `rake simulator' where the value of `deployment_target'
|
||
would be used as the SDK version, causing a `system_root != nil' assertion
|
||
in some cases.
|
||
* Fixed the compilation of empty symbols (:'').
|
||
* Fixed the generation of .bridgesupport files on Snow Leopard by not
|
||
passing the '--no-64-bit' flag (which was added in Lion).
|
||
* Fixed `motion create' to accept dash or underscore characters in the app
|
||
name. Patch by Mark Villacampa.
|
||
* Added a workaround for an iOS 5.1 bug that causes write(2) to return EBADF
|
||
when writing to stdout. The bug seems to happen on devices not configured
|
||
for development. Writing to stdout (using p/puts) in this scenario becomes
|
||
a no-op.
|
||
* Fixed the simulator launcher to properly propagate exit(2) status codes
|
||
from the simulated app. This fixes `rake spec' to properly exit with 1 in
|
||
case one or more specs failed to run.
|
||
* Fixed the RUBY_ENGINE constant to be 'rubymotion' (was 'macruby' before).
|
||
* Objective-C objects conforming to the NSFastEnumeration protocol can now be
|
||
iterated using the #each method. The method is created on demand on these
|
||
objects.
|
||
* Fixed a bug in the simulator REPL where hitting the Home button would
|
||
trigger an insane CPU usage.
|
||
|
||
= RubyMotion 1.9 =
|
||
|
||
* Fixed a bug in the build system where the paths of vendored libraries
|
||
would not be properly quoted and cause a build failure in case they
|
||
contain space characters.
|
||
* Fixed a bug in the build system where using a lower deployment_target
|
||
version would cause a link error at runtime because the application was
|
||
linking against a framework that does not exist (ex. CoreImage on 4.3).
|
||
* Fixed the `rake spec' task to not move the simulator window to the
|
||
foreground.
|
||
* Fixed a bug in the compiler where APIs accepting pointers to
|
||
CoreFoundation types could not be given Pointer objects of the :object
|
||
type (ex. CFErrorRef*).
|
||
* Added support for CoreAudio (experimental). At the very least, constants
|
||
pointing to four-bytes characters should be properly covered.
|
||
* Fixed a typo in "expected array of %d elements, got %d" exception message
|
||
where the numbers were inverted. Thanks Enrico Thierbach.
|
||
* Fixed a bug in the compiler where compiling strings containing only null
|
||
characters (ex. "\x00") would cause a crash.
|
||
|
||
= RubyMotion 1.8 =
|
||
|
||
* Fixed a bug in the generation of BridgeSupport files for multiple headers
|
||
directories.
|
||
* When building vendored projects, unset environment variables that could
|
||
potentially make the build to fail.
|
||
https://github.com/HipByte/motion-cocoapods/issues/12
|
||
|
||
= RubyMotion 1.7 =
|
||
|
||
* Fixed a bug in the compiler where the proper signature would not be used
|
||
when defining informal protocol methods with CF types as arguments.
|
||
* Fixed iOS constants to be looked up at demand (when being used) and not
|
||
when the app starts, because certain constants are not set until a certain
|
||
API is called (ex: the kAB... constants of the AddressBook framework).
|
||
This change should also speed up a little bit the app starting time.
|
||
* Fixed a bug in the compiler where very long selectors would be truncated
|
||
and causing exceptions later at runtime.
|
||
* Fixed a bug in the compiler where memory-related selectors (alloc, dealloc,
|
||
retain, release, etc.) could not be defined in Ruby.
|
||
* Fixed a bug in the compiler where NSObject instance methods could not be
|
||
called on classes (ex. MyClass.performSelector(...)).
|
||
* Fixed a bug in the build system where vendored 3rd-party APIs dealing with
|
||
types defined in iOS headers could not be used (ex: enums or structs).
|
||
|
||
= RubyMotion 1.6 =
|
||
|
||
* Fixed a regression in the build system introduced by the previous update
|
||
(when compiling .xib files).
|
||
* Fixed the vendoring system to include all source code files. Merged patch
|
||
from https://groups.google.com/d/msg/rubymotion/tPCxSMCA2f4/w2DIHFo2AVAJ
|
||
* Fixed the REPL to not crash if you give it an empty expression.
|
||
|
||
= RubyMotion 1.5 =
|
||
|
||
* Improved the REPL to support multi-line expressions.
|
||
* Fixed a bug when compiling Core Data model files where the `momc' utility
|
||
was not given absolute paths.
|
||
* Removed legacy MacRuby code that was using the private `isaForAutonotifying'
|
||
selector and causing a warning during an App Store submission.
|
||
* Fixed a bug in Enumerable#sort_by that would lead to a crash.
|
||
* Fixed a bug in the REPL where it would not detect the iOS Simulator window
|
||
if certain windows were in front or created later.
|
||
* Fixed a bug in the build system where framework dependencies would not be
|
||
properly handled.
|
||
* Added support for .lproj directories (i18n). Thanks Aaron Hurley.
|
||
* Fixed a bug where objects from pure Ruby classes sent to KVO would not be
|
||
properly handled later (because KVO inserts a new singleton class).
|
||
* Fixed attr_writer to emit KVO notifications (will/didChangeValueForKey).
|
||
|
||
= RubyMotion 1.4 =
|
||
|
||
* Added support for the compilation of .xcdatamodeld and .storyboard resource
|
||
files. Thanks Ian Phillips, Andrew Vega and Michail Pishchagin.
|
||
* Fixed a bug when the build system would fail in case the resources dir does
|
||
not exist. Thanks Watson.
|
||
* Fixed a bug in the Xcode project vendoring code when header files at
|
||
different directory levels would not be properly handled. This also fixes
|
||
the motion-cocoapods gem. Thanks Eloy Duran.
|
||
* Added a way to start the simulator in retina mode by setting the `retina'
|
||
environment variable to `true' (other values will be considered false).
|
||
For example: `rake retina=true'. Thanks Marcin Maciukiewicz for the idea.
|
||
* Fixed an ABI bug in the way we compile Ruby methods overloading Objective-C
|
||
methods returning small C structures that can fit in a 64-bit integer.
|
||
Thanks Kristoph Cichocki-Romanov for the report.
|
||
* Added support for the iOS 4.3 SDK.
|
||
|
||
= RubyMotion 1.3 =
|
||
|
||
* Fixed a bug in format strings with width / precision modifiers.
|
||
* Disabled the automatic loading of motion- gems.
|
||
* Added support for the compilation of Interface Builder resource files.
|
||
.xib files present in the `resources' directory will be compiled to .nib
|
||
files then copied in the app bundle. .nib files are added to the default
|
||
.gitignore and removed during `rake clean'. Thanks Ian Phillips.
|
||
* Improved the `rake device' error message to mention that Wi-Fi sync might
|
||
cause device deployments to fail.
|
||
* Fixed a bug in NSArray#reject where the new array would not be returned.
|
||
|
||
= RubyMotion 1.2 =
|
||
|
||
* Fixed a couple bugs in the project vendoring code that would be triggered
|
||
when using the motion-cocoapods gem. The fixes were merged from the
|
||
https://github.com/HipByte/motion-cocoapods/issues/1 discussion.
|
||
* Fixed codesign bugs in `rake archive:release'.
|
||
* Improved the Xcode detection code by printing a warning message in case
|
||
the user installed a recent Xcode in /Applications that has not been
|
||
set as the default Xcode in the system yet.
|
||
* Fixed a typo in the REPL help message (thanks Mike Clark).
|
||
|
||
= RubyMotion 1.1 =
|
||
|
||
* Fixed `rake device' to print a human-readable error message in case the
|
||
deployment might fail because another process is connected to the device.
|
||
* Fixed a bug in `rake simulator' where view detection would not work on
|
||
non-English desktops (error "Cannot locate the Simulator app").
|
||
Make sure to exit the Simulator app after applying this update.
|
||
|
||
= RubyMotion 1.0 =
|
||
|
||
* First release.
|