Hi all, just wanted to chime in on a few sentiments I’m seeing here. I definitely understand how frustrating it can be to encounter bugs and try to figure out how to work around them. Just like you, we build our stuff on other people’s stuff — in our case, it’s the OS’s put out by Apple, Google, and Microsoft.
Let me first talk about some of our approaches and thoughts. You might not agree with how we approach them, but at least you know where we come from.
First, when there is a new version of an OS, there will inevitably be growing pains that any developer will have to face. It’s a fact of life. Our team (collectively and individually) have learnd that if you want to target the newer OS, you should expect to bleed. That’s why it’s best to be conservative.
We designed Corona so that your apps should be forward compatible with newer versions of an OS. Consequently, there is usually no need to switch to the newer OS target right away, and so our rule of thumb is that if you have an app built against an older OS, you should continue to target that older OS.
This is especially true, if you are about to ship your app. Minimize the moving parts.
Second, when Apple (or Google, etc) releases new versions of its OS, we do tend to wait-and-see, at least until the later betas. That’s deliberate. In the past (too often, in fact), we’d get bug reports against Corona only to find out that these were bugs in the OS, later to be fixed by Apple. A poignant example that comes to mind is that the Mac version of the Corona Simulator would not work on Yosemite due to OpenGL/layer-backed regressions that later got fixed by Apple (no changes in Corona were needed).
Third, we have to make some assumptions about what is going to work and what doesn’t in a new version. For example, we have to assume the OpenGL APIs on a new version of the OS will continue to work as they have in the past. So, it’s not practical for us to go through each OS-level API to make sure that it works according to spec, as that would not be an effective use of time or resources. In other words, we do expect the majority of APIs in a new version of an OS to be consistent with the previous.
And so finding the tiny minority of things that breaks between releases is really difficult. It’s like finding a needle in a haystack. What we do focus on is whether our set of test cases continues to work, in hopes that everything passes (or that we find that needle). So for example, with rendering, we exercise a set of test projects to make sure things are working as expected.
Finally, let me address one area of complaints here that’s relevant, and that is mapviews:
@GBF Comm, we just re-ran our test and everything works fine. This is why we ask for test projects because it’s a 100% certainty that our assumptions about how you set things up code-wise are different from how you actually set things up, and the critical clues lie in those differences.
@AidanWolf, if there’s a sudden change in behavior such as the fact that offscreen mapviews have worse performance from onscreen mapviews, that’s not something Corona is doing specifically to distinguish those cases. That suggests it’s an OS-level thing. And if I were to hazard a guess, it’s b/c Apple wants to optimize performance for the intended use case of MKMapView objects (which is what Corona is wrapping) which is that the user is interacting with a mapview onscreen.