New in RubyMotion: Blocks Rewrite, Retain Cycle Detection, Better Crash Reports
blog.rubymotion.com
blog.rubymotion.com
Not too happy about the way the change came about, though: when the blocks bug was first reported, the HipByte team all but dismissed it saying it was a well known and understood problem with a clear workaround. It's only after the public caused a ruckus that they stopped developing new features and got around to fixing it.
This may have been the right choice - delay fixing things until there was an explosion of public pressure - but it also worries me. Why wait so long to fix something that was so fundamental? Not properly supporting blocks broke a fundamental contract; that you could write Ruby and it would Just Work(TM). The lack of support was undocumented and ignored until HN got all riled up and swore to boycott RubyMotion because of it. Then HipByte put their hero helmets on and got to work.
What happened to fixing bugs before you develop new features?
A single feature like native or not native does not dictate the quality of an application.
Also, I was trying to help some guy who only makes 1100/mo.
Sure you don't get native ui components, but I look at that as an advantage, because if you use web views you can create a uniform approach.
The onus of performance is always on the developer, and most likely not the tools.
EDIT: Looks like it, great! :D (Also: it was the block changes, not GC changes).
Correction: RubyMotion uses an ARC-like method to manage memory.
That said, duly noted, and I'll make sure to refer to it as reference counting in the future.
That's a very.... narrow definition, to say the least. I've never seen this outside of the objective-c world. In my mind, garbage collection is automatic memory management, of which objective-c provides an arguably better solution than imprecise collectors. To distinguish between them at all strikes me as pedantic and counterproductive.
Anyway, the only real difference between python and objective-c is that yes, python has a garbage collection routine that bulk frees objects with refcounts of 0... functionality conveniently provided by @autorelease. This would make ARC a superset of python's GC.
ARC is purely a compile time feature. And an awesome one at that. There is no ARC runtime process/thread. There is no ARC memory manager.
Anyway. Feel free to respond. I have said all I am going to.
On another note, is there any way to be informed/notified that someone responded to a post? Or do you have to keep coming back and checking? I feel that I drop out of conversations because I lose track.
It sounds like you believe a garbage collection system must achieve a certain level of complexity beyond reference counting, and I can't help with that—however, it's a fairly pointless distinction if we switch from saying "GC" to "GC and reference counting" to talk about automatic memory management. What does that give us? And why WOULDN'T you want this simplicity? I don't much care how trivial you consider ARC to be, it certainly collects garbage effectively. No memory scans to worry about interrupting your real time application. If you really need to not deallocate in a tight loop you can autorelease (I never claimed it was a garbage collection mechanism).
And I am not aware of a way to be notified by HN itself but a lot of apps and sites provide that. (I don't use one myself, I just check threads I am still interested in.)
I was also thinking "garbage collector" not "garbage collection". :P
It's not the time that's undeterministic, it's that the 'deconstructor' may not be called at all if python can't guarantee collecting cyclical references in the right order. The object will still be released/deallocated.
In this sense, Objective-C—mostly because you have complete control over the reference counting—has superior reference counting semantics.
I'd like to note that there's nothing stopping Python from using similar approaches.