forked from HipByte/RubyMotion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
2406 lines (2228 loc) · 136 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
= RubyMotion 3.13 =
* [iOS, OSX] Added support for iOS 9 and OS X 10.11 (experimental). To
target these, you will need Xcode 7 (beta). NOTE: If you can't launch your
app on a device running iOS 9, manually trust your certificate by going to
Settings > General > Profiles and selecting your certificate. Also, arm64
is not supported with Xcode 7 at this point, so you will have to remove it
from app.archs['iPhoneOS'] when doing device builds.
* [iOS, OSX] Fixed a bug where certain C structures could not be passed to a
Ruby block from Objective-C code.
* [iOS, OSX] Fixed a bug where broken value would be received when a
Objective-C method returns a small structure on i386 architecture.
* [iOS] Updated Watchkit templates. If your watch app crashes on launch, try
replacing the "initWithContext" methods with "awakeWithContext".
* [Android] Improved compilation time by introduced parallel compiling for
Java files and faster compiling (like iOS/OS X).
* [Android] Fixed a bug where Time#- would not return value with millisecond
precision.
* [Android] Added Time#to_f.
= RubyMotion 3.12 =
* [Android] Added support for Android M (experimental). To target it, set
`app.api_version' to `MNC'.
* [Android] Improved Object#raise to accept an exception class or instance.
* [Android, iOS, OSX] Introduced a new experimental file dependency resolver.
If you have any file dependency manually specified in the Rakefile, the new
resolver should make those unnecessary. To try it, set the environmental
variable "experimental_dependency" (e.g. 'rake experimental_dependency=1').
The new resolver will become the default in a future release.
* [iOS] Fixed "duplicate symbol" error when it would build app for iOS device
using Xcode 6.2.
* [iOS] Fixed a bug where the latest version of the Facebook iOS SDK would
not compile correctly.
* [iOS, OSX] Improved compilation time for projects that have many source
files. 2~ times faster.
= RubyMotion 3.11 =
* [iOS] Fixed a bug which UIInterfaceOrientation would cause link error when
specify iOS 8.2 or below as deployment target.
* [iOS, OSX] Improved floating precision for 64-bit environment.
* [iOS] Fixed a regression where the exception could not be handled on i386
iOS simulator.
* [iOS] Fixed a bug where watch apps could be rejected with iTunes Connect.
Thanks to digitalfx for the patch (pull request #213 and #214).
* [iOS] Fixed a bug where watch apps could not installed to iPad devices.
Thanks to digitalfx for the patch (pull request #215).
* [iOS] Fixed a bug where watch apps were not able to localize.
* [iOS, OSX] Fixed a bug where some GLKit structures could not be created.
* [iOS] Fixed a bug where some GLKit structures could not be created.
* [iOS] Added support for enterprise certificate profiles. Thanks James
Daniels for the patch. (pull request #64)
* [iOS, OSX] Fixed a crash when generating ctags.
* [iOS, OSX] Fixed a bug where it could not pass a pointer of structure into
into Ruby Block from Objective-C.
* [OSX] Fixed a bug where GLKit inline functions could not be used on OS X.
* [Android] Added Kernel#{block_given?,iterator?}.
* [Android] Added Integer#upto.
* [Android] Ruby arrays are now converted to the correct primitive Java array
type when passed as an argument to a Java method in Android 5.0.
* [Android] Fixed a bug where refering to the current exception in a rescue
block would trigger a crash at runtime.
* [Android] Fixed a bug in the REPL where Java package paths could not be
properly evaluated.
* [Android] Fixed a bug where Java classes could not be re-opened.
* [Android] Fixed a bug where classes defined inside modules would not be
exposed to Java. Caveat: the module must be provided when declaring the
class (ex. `class MyModule::MyActivity < Android::App::Activity').
* [Android] Fixed a bug where the compiler would emit Java method definitions
for methods defined in classes not present in the current class' super
class chain.
* [Android] Fixed a bug where app.vendor_project with `:native' pointing to
an array of paths for different architecture libraries would not work.
= RubyMotion 3.10 =
* [Android] Fixed typo in android.rb template which breaks incremental builds.
Thanks to Darin Wilson for the patch (pull request #210).
* [Android] Fixed `rake {emulator,device} debug=1' for multi-arch projects.
* [Android] Added Module#const_get.
* [Android] Fixed a bug where calling a Java method that returned a large
non-Object Java array would crash the runtime by creating a JVM stack
overflow.
* [Android] Fixed a bug when calling the super version of a Java method,
where it would fail if the current stack trace included a super Java call
of the same method name but of a different class.
* [Android] Fixed a bug where #initialize methods would not be honored when
defined in superclasses.
* [Android] Fixed a bug where an assertion would happen when trying to
resolve a Java class at runtime.
* [Android] Fixed a bug where a crash would happen when changing the value
of a local variable that previously contained a reference to a constant
literal (ex. symbol).
* [iOS] Added support for iOS 8.4 (beta).
* [iOS] Fixed a wrong in Watch app templete which notification handler should
invoke `call' method for Proc handler object. Thanks to Dave Shapiro for
the patch (pull request #207).
* [iOS] Fixed a bug which it would be trigger a crash when large structures
(like CMTime) will be passed into Objective-C methods/funtions on ARM64.
* [iOS] Fixed a bug which it would be trigger a crash when it will call
NSDecimalNumber#decimalValue method on ARM64.
* [iOS] Fixed a bug which UIInterfaceOrientation would cause link error when
specify iOS 8.2 or below as deployment target.
* [iOS, OSX] Fixed a bug where small structures with only float members could
not be passed/returned in a 64-bit environment.
= RubyMotion 3.9 =
* [Android] Projects now support multiple architectures. The `app.arch'
variable is replaced by `app.archs' which takes an array of architectures.
By default, we still build for arm 32-bit only.
* [Android] Added x86 (Intel 32-bit) support. This is mainly used to run
apps in faster emulators (such as Genymotion). To build for x86, simply
edit your project's Rakefile to add the architecture (app.archs << 'x86').
* [Android] Added the `app.optional_features' to let users specify optional
features in the manifest file.
* [Android] Make sure all Ruby file paths are flattened into single Array.
Thanks to Darin Wilson for the patch (pull request #189).
* [iOS, OSX] The Ruby runtimes have been rebuilt with Xcode 6.3 final.
* [iOS] Fixed ARM64 issues introduced since Xcode 6.3 final.
* [iOS] Fixed a bug where the REPL would crash when using an old simulator.
* [iOS] Fixed a bug where the value of `app.version' and `app.short_version'
between the container and watch apps were not synchronized when submitting
to iTunes Connect. Thanks to digitalfx for the patch (pull request #205).
* [iOS] Fixed a bug where watch apps could not be submitted to iTunes Connect.
* [iOS] Fixed a bug where satch apps would not follow the deployment target
of the host app.
* [iOS] Fixed a bug where `rake watch' would not launch the watch app when
using Xcode 6.3 stable.
* [iOS] Fixed a bug where dSYM files were embeded even if the app was built
with release mode if app has extensions.
* [OSX] Fixed a bug where app would crash when running tests if the UIDevice
class is defined.
* [iOS, OSX] Fixed a bug where small structures with only float members could
not be passed/returned in a 64-bit environment.
= RubyMotion 3.8 =
* The toolchain has been upgrated to LLVM 3.5.
* [Android] Added the `motion android-setup' command which downloads and
installs the Android SDK and NDK automatically. Run the
`motion android-setup --help' command for more information.
* [Android] Added 'app.support_libraries' option in the Rakefile, which is an
array containing the names of Android support libraries to be included in
your app E.g.:
app.support_libraries << 'google-play-services'
app.support_libraries << 'android-support-v4'
* [Android] Added support for API level 22. Removed support for very old
versions of Android that are no longer supported in the SDK.
* [Android] Added support to generate Ctags file via the `rake ctags' task.
* [Android] Fixed a bug where classes.dex would not be re-generated when a
resource file was changed. Thanks Eito Katagiri for the patch.
* [Android] Fixed a bug where running specs would crash.
* [iOS] Fix a bug where a build error would happen when building a project
for ARM 64-bit using Xcode 6.3 Beta.
* [iOS, OSX] Fixed the build system to not recompile `.strings' files on
every build.
* [iOS, OSX] Fixed a bug where `rake profile' could not launch Instruments.app
when it will specify Instruments template with Xcode 6.2.
* [iOS] Fixed a bug where `rake background_fetch=true' would not work with
with Xcode 6.2.
* [iOS, OSX] Fixed the build system to print a warning if a framework included
in the Rakefile does not have a corresponding .bridgesupport file (e.g. it
has been mispelled).
* [iOS, OSX] Fixed the build system to not delete '.storyboardc' files if the
corresponding '.storyboard' file does not exist.
* [iOS, OSX] Fixed a rare case where gdb would be used instead of LLDB when
running in debug mode.
= RubyMotion 3.7 =
* Fixed a bug where the `motion' command would not work as expected if Ruby
was installed with rbenv/RVM.
* [iOS] Fix a bug where the build system would not detect the properties of
the running simulator if it existed with a different version of iOS.
* [iOS] Fixed a bug where a WatchKit app would not launch on the simulator
if it was built with x86_64 (64-bit Intel) only.
* [iOS, OSX] Improved the symbolication of exception backtraces. Backtraces
are now properly symbolicated when running on the device. This is done by
parsing the dSYM bundle at runtime. For this to work, in development mode,
the dSYM will be embedded within the application bundle. (This is disabled
in release mode). You can control this setting with the `app.embed_dsym'
variable in the project's Rakefile.
* [iOS, OSX] Improved performance when creating empty Hash objects.
~2 times faster.
* [iOS, OSX] Improved performance when creating very small Array objects.
~30% faster.
* [iOS, OSX] Bridgesupport files for vendor projects are now generated in the
common build directory (~/Library/Rubymotion/build). This fixes a problem
when vendoring the Reveal framework.
* [iOS, OSX] Added a feature to disable capturing view (command key + moving
mouse over) in iOS simulator or OS X app. To enable/disable capturing view,
run `enable_capture' or `disable_capture' commands in REPL. If you want to
disable capturing before the application is launched, you can set the
DISABLE_CAPTURE environment variable when you will run the `rake' command.
(ex. `$ rake DISABLE_CAPTURE=1').
* [Android] The runtime is now using the GNU C++ stdlib for better internal
support and also upcoming new features.
* [Android] Improved compilation time, compiling multiple files in parallel.
* [Android] Support for defining manual file dependencies via
'app.files_dependencies'.
* [Android] Added Module#module_function.
* [Android] Added Symbol#to_sym.
* [Android] Added Time#usec.
* [Android] Object#send now accepts strings.
* [Android] Improved Kernel#rand to accept ranges (of fixnums and floats).
* [Android] Fixed a bug where undefined local variables or methods returned
false instead of raising an exception.
* [Android] Fixed a bug where Java getter/setter shortcuts would sometimes
not work.
* [Android] Fixed a bug where a crash would happen when running a spec with
a lot of test cases.
* [Android] Fixed memory leaks when symbolicating an exception backtrace.
= RubyMotion 3.6 =
* [iOS] Added support for iOS 8.3. Xcode 6.3 beta is required.
* [iOS, OSX] Fixed a bug where the build would fail when using Xcode 5.
* [iOS] Fixed a bug where WatchKit applications could not be launched with
Xcode 6.2 beta 5.
* [iOS] Fixed a bug where device log wouldn't be displayed with `rake device'
if `CFBundleName' property was changed.
* [Android] Improved the build time of projects, by not compiling the
internal bitcode of Ruby files that have not changed.
* [Android] Added Math module.
* [Android] Added Time#{+, -}.
* [Android] Added Hash#{default, default=, default_proc, default_proc=}.
* [Android] Added String#{[]=, slice!, chop, chop!, chomp, chomp!, sub, sub!,
gsub, gsub!, split}.
* [Android] Improved Float#to_s, String#[], Array#{[]=, values_at} for CRuby
compatibility.
* [Android] Improved Hash#{shift, replace} for CRuby compatibility.
* [Android] Fixed a build error in a Bundler environment.
* [Android] Fixed a bug where Array#[] would crash when returning a large
array.
* [Android] Fixed a bug where Array#delete would crash when removing a lot of
elements.
* [Android] Fixed a bug where Array#[start, length]= would crash when
providing a large start position.
* [Android] Fixed a bug where Array#pop(number) would crash when specifying
a large number.
* [Android] Fixed a bug where Array#flatten would crash when used on a large
array.
* [Android] Fixed a bug where String#scan would crash if many elements would
be matched.
* [Android] Fixed a bug where String#scan returned the wrong value if the
Regexp group would be passed as argument.
* [Android] Fixed a bug where attempting to retrieve a Java field on an
inner Java class would always return null/zero on Android 21 / ART,
apparently due to a JNI regression (we added a workaround).
= RubyMotion 3.5 =
* [iOS, OSX] Fixed a regression introduced by the previous release where the
REPL would not work.
= RubyMotion 3.4 =
* [iOS] Fixed a bug where iOS 8 extensions and their host app could not have
different deployment_target values.
* [iOS] Fixed a bug where an incorrect architecture would be chosen when
debugging on a device. Now defaults to the device architecture.
* [iOS, OSX] Fixed a bug where small structure types couldn't be returned
from Objective-C methods in 64-bit.
* [Android] Added Bundler support to the project template.
* [Android] Added the `app.theme' Rakefile variable to set up the theme of
the app. The default value is `Theme.Holo'.
* [Android] Added Array#{flatten, flatten!, slice, slice!}.
* [Android] Added Enumerable#{reverse_each, each_with_object, each_entry,
each_slice, each_cons, collect, map, count, find, detect, grep, find_index,
flat_map, collect_concat, partition, group_by, first, all?, any?, one?,
none?, min, max, minmax, min_by, max_by, minmax_by, member?, include?}.
* [Android] Improved Array#[] for CRuby compatibility.
* [Android] Disabled internal/debug VM logs since they impact launch time and
general performance. If you want to set them back on (for debugging), the
`app.vm_debug_logs' variable can be set to `true'.
* [Android] Fixed a bug where Fixnum#* would cause a runtime crash if the
receiver was zero.
* [Android] Fixed a bug where an `ensure' statement would cause the project
to fail to build, due to a linking error.
* [Android] Fixed a bug in the Java method dispatcher where it would fail
to call methods returning arrays of non-object types (ex. the `getBytes'
method of java.lang.String).
* [Android] Fixed a bug where trying to set/assign a value to a Java object
field would cause a NoMethodError.
* [Android] Fixed Enumerable#{each_with_index, select} to return an Enumerator
when if no block is given.
* [Android] Fixed a bug where Enumerable methods would be taken in priority
over Hash methods (ex. `select'), due to the fact that the module was
included in the wrong class.
* [Android] Fixed a bug where the use of the `break' keyword inside a block
would cause a compilation crash.
* [Android] Fixed a bug in the spec framework where the `main_activity'
helper method would only work as expected in the first spec file, and
return nil in other spec files.
= RubyMotion 3.3 =
* [iOS] Fixed a bug where a WatchKit application could be launched on an iOS
8.1 simulator, which does not actually support WatchKit and would crash.
* [iOS] Fixed a bug where the compiler would no longer emit proper DWARF
metadata for ARM64 due to an Xcode / clang change.
* [iOS] Print an informative error when no simulator devices are configured.
* [iOS, OSX] Fixed a bug where the #== method in a pure Ruby object would
not resolve WeakRef operands.
* [iOS, OSX] Fixed a bug where small structure cannot be passed into
Objective-C funcitons with 64-bit app.
* [iOS, OSX] Fixed a bug where the #kind_of? method in an ImmediateRef would
not compare against the reference object's class.
* [iOS, OSX] Fixed a memory leak in Array#{uniq, uniq!, compact, compact!,
select, select!, keep_if}.
* [iOS] Fixed a bug where it would trigger a crash when Ruby method which has
5 or more arguments will be called from Objective-C code in arm64 device.
* [OSX] Updated Edit menu to include items generated by Xcode. Thanks to
Hwee-Boon Yar for the patch (pull request #187).
* [Android] Introduced app.manifest, which makes it possible to directly
manipulate the contents of the AndroidManifest.xml file from the Rakefile.
Read the documentation in the "Providing Custom Values" section of the
Android Project Management guide on the Rubymotion website. Thanks to
Daniel Brooker for the patch.
* [Android] Added String#{[], slice}.
* [Android] Fixed a bug where projects with an XML file in the 'resources'
directory would not compile correctly.
* [Android] Fixed a bug where Object#instance_eval would crash when targeting
old versions of Android (below 14).
* [Android] Fixed a bug where Ruby methods and blocks where limited by the
number of arguments they could accept.
* [Android] Fixed a bug where Hash would not include Enumerable.
* [Android] Fixed a bug where Ruby Hash methods (ex. #[]) would not be
available on Java *Map objects.
* [Android] Fixed a bug where Hash objects with a default Proc (ex. created
with `Hash.new {}') would not dispatch the Proc when a key isn't found.
* [Android] Fixed a bug where Ruby String methods were not available on
java.lang.String objects.
* [Android] Fixed a bug where passing java.lang.String objects to Ruby
String methods expecting String arguments would cause a runtime crash.
= RubyMotion 3.2 =
* [iOS] Fixed a bug where RubyMotion frameworks could not be loaded due to
required RubyMotion symbols being stripped from application/extension.
* [iOS] Pick-up new certificates prefixed with `iOS` instead of `iPhone`.
* [iOS] Fixed a bug where WatchKit applications did not honor `xcode_dir`.
* [iOS] Fixed a bug where it couldn't debug with `rake device debug=1' on
device. Now, debugging only support `armv7' in `app.archs['iPhoneOS']'.
(i.e. app.archs['iPhoneOS'] = ['armv7'])
* [iOS] Fixed a bug where it could not deploy app to iOS 8.2 beta 3 device.
* [iOS] Fixed a bug where it could not deploy app which contained Watch app.
* [OSX] Fixed a bug where NSString#initWithXXX would trigger a crash by double
free.
* [iOS, OSX] Fixed a bug where the view object wouldn't be released when it
was created by #init(arg) and super() method.
* [iOS, OSX] Fixed a bug where `nil.isEqual(nil)' would not return `true'.
was created by #init(arg) and super() method.
* [iOS, OSX] Fixed a memory leak when invoking blocks with Dispatch::Queue.
* [iOS, OSX] Fixed a bug where Marshal.dump would trigger a crash.
* [Android] Added Bignum#{+@,-@,%,modulo,&,|,^,~,<<,>>,<,<=,>,>=,<=>,abs,
to_i,to_int,to_f}.
* [Android] Added Time#{to_s, to_i, inspect, <, <=, >, >=, <=>, ==, !=} and
Time.at.
* [Android] Improved Fixnum#{%, <=>, &, |, ^, <<, >>} to take a Bignum in
argument.
* [Android] Fixed a bug where gen_bridge_metadata would not detect classes
that implement interfaces.
* [Android] Fixed a bug where gen_bridge_metadata would not work if the user
had java 8.0 installed (`javap' was emitting unrecognized syntax). Thanks
to "Theo" for the detective work and the patch.
* [Android] Fixed a bug where gen_bridge_metadata would emit template
information in class/interface names, which would then break the compiler.
* [Android] Fixed a bug where gen_bridge_metadata would fail to emit proper
list of methods for a class that had a static initializer.
* [Android] Added the `:native' parameter for `app.vendor_project' which can
be used to specify a 3rd-party shared library to include in the app.
Thanks to René Köcher for the patch.
* [Android] Fixed the extra-packages argument to work with multiple packages.
Thanks to Tom Carey for the patch (pull request #185).
= RubyMotion 3.1 =
* [iOS] Fixed an API validation error when submitting an application that
contains an extension.
* [iOS] Fixed a regression that made it impossible to set environment
variables from a host application and propagate them to extensions.
* [iOS] Fixed a regression that made extensions crash at startup.
* [iOS] Fixed a regression where a Info.plist file would be generated
with wrong details for Background Fetch.
* [iOS] Fixed a bug where `rake background_fetch=1' for background fetch
would not work with Xcode 6.x.
* [Android] Added Fixnum#{~,&,|,^,<<,>>,+@,integer?,odd?,even?}.
* [Android] Added Float#+@.
* [Android] Added Bignum#integer?.
* [Android] Fixed Fixnum#times to return an Enumerator when no block is given.
= RubyMotion 3.0 =
* [Android] RubyMotion for Android support has been merged. Please refer to
the pre-release NEWS file for past changes, and check out our developer
guides for more information about this new platform support.
* [iOS] Added support for WatchKit applications.
Add a target to your iOS application by creating a WatchKit project with the
command: `$ motion create MyWatchApp --template=ios-watch-extension` and
then configure your iOS application by adding:
`app.target 'path/to/MyWatchApp', :extension`
Then from the root of your iOS application, *not* the WatchKit application,
invoke `$ rake watch` to build your iOS and WatchKit applications and launch
the WatchKit application on the simulator.
Additional launch options are `type=glance` for Glance applications,
`type=notification payload=path/to/payload.json` for Notification
applications, and `display=regular` or `display=compact` to launch the 42mm
or 38mm Watch displays respectively.
* [iOS] Added support for specifying launch images from asset catalogs.
* Added support for iOS 8.2 (beta). You will need to install an Xcode 6.2
beta to support it.
* [iOS] Fix `rake crashlog:device' crash report symbolication.
* [iOS] Fixed a bug where Bundler wouldn't be used when it will build
Extensions and Frameworks.
* [iOS] Create a `UIViewController`, `UINavigationController`, and `UIWindow`
in the default new application template.
* [OSX] Only build for 64-bit (`x86_64`) by default.
* [iOS] Enabled arm64 support by default for iOS projects.
* [iOS] Honour explicit `device_name` or `target` specified by user.
Specifying both is disallowed, because a device is configured for a
specific SDK.
* [iOS] Fixed a regression where Extension and Frameworks could not build for
the iOS device platform.
* [iOS] Fixed a bug where `rake spec' would return 0 as exit code even if it
failed due to a crash.
* [iOS] Fixed a bug in `rake spec' where #tap and #rotate_device were
causing a crash when ran in 64-bit mode (simulator).
* [iOS] Fixed a bug where all rake task could not be run under the root
directory of Extension or Framework, preventing CocoaPods libraries to be
installed properly.
* [iOS] Fixed a bug where shared frameworks would not be built for 64-bit.
* [iOS] Fixed a bug where it was not possible to customize the Action and
Share extension's icon. The `app.icons' property can now be set in the
extension's Rakefile.
* [iOS] Fixed a bug where extensions could not be built if Bundler was not
installed due to a Pathname dependency.
* [iOS] Added launch images for iPhone 6 and iPhone 6 Plus. Thanks to
Hwee-Boon Yar for the patch (pull request #170).
* [iOS] Fixed the "ERROR ITMS-9000" error when trying to submit an app that
contained extensions. Thanks to Hwee-Boon Yar for patch.
* [iOS] Fixed a bug where the relative path cannot be used in
`app.provisioning_profile'.
* [iOS] Fixed a bug where iPad simulator would not launch app as 64-bit even
if app contains 64-bit binary. Changed default simulator to `iPad Air'.
* Fixed a regression where a link error would be caused in Xcode when trying
to use a static library which was generated by `rake static'.
* Fixed a bug where the wrong Boxed object would be returned from an
Objective-C method.
* Fixed the `motion support' command invocation to print both the stable and
pre-release versions of RubyMotion.
* Fixed a bug where a "Symbol not found" exception would be triggered when
trying to use a constant which was not defined in an older SDK version.
* Fixed a bug which it would not solve framework dependencies in embedded
frameworks.
* Fixed a memory leak when invoking blocks passed to Dispatch::Queue.
* Fixed a bug where `rake profile' could not launch Instruments.app when
being given the Instruments template with Xcode 6.2 Beta.
= RubyMotion 2.38 =
* Optimized the app executable size when a project has too many Ruby source
files, by removing unnecessary internal code. ~30-60% lighter.
* Disabled armv7s support for iOS projects. If you want to add armv7s support
back, simply add the 'armv7s' value to the `app.archs['iPhoneOS']' config
in the project's Rakefile. This architecture is no longer enabled by
default in Xcode.
* Fixed a bug where a compiled Core Data model would be removed when cleaning
when an original `xcdatamodeld' was not available.
* Fixed a bug where in certain circumstances cleaning would try to be
performed when the vendor dir, e.g. `vendor/Pods' did not exist.
* Fixed a few cases where the Yosemite version number was parsed incorrectly.
* Added support for `axel' as an alternative to `curl' when downloading
updates, which supports resuming and uses 10 connections to improve speed.
Axel is available from http://wilmer.gaast.net/main.php/axel.html or can be
installed through Homebrew: `$ brew install axel'.
* Fixed a regression where `rake spec' did not work on OS X platform.
* Fixed a bug where Dispatch.once did not work correctly with x86_64 on
iPhone simulator and i386 on OS X platforms.
* Fixed a bug where `:cflags' for `:static' vendored projects could not
override those set by the toolchain by default. E.g. `-fno-modules'.
* Fixed the `motion --version' command invocation to print both the stable
and pre-release versions of RubyMotion.
* [OSX] Fixed a bug where embedded frameworks would not be codesigned as per
the current requirements for the App Store.
* [iOS] Removed `Symbols not found...' message when app will be deployed into
iOS device if Xcode dumped device symbols into user directory.
* [iOS] Fixed a bug which it could not recognized Provisioning Profile which
is generated with "iOSTeam Provisioning Profile".
* [OSX] Fixed a bug where BigDecimal#inspect would return invalid string on
Yosemite.
= RubyMotion 2.37 =
* Fixed a regression where Dispatch.once did not work correctly when it was
invoked in some points.
* Fixed a bug where the compiler would crash with an assertion message
`[BUG] Object: SubtypeUntil ...' when compiling certain Ruby files.
* Fixed a bug in the compiler when compiling for ARM64 where certain types
would still be emitted with a 32-bit architecture in mind.
* Fixed a bug in the compiler when compiling for ARM64 where certain structs
would not be properly available (such as NSDecimal).
= 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.