Fyi, just got new update, 583.
Sure. But using the OnStart() is not a workaround, it is other syntax of the same though not identical function. I am afraid that without marking one of them obsolete, we may turn schizophrenic - one would prefer the new syntax, while others the recent one... I am trying to make a guess which one survives longer and use that one.
In case I use a workaround, I create a test case as well, so if change appears, I have a good chance to spot it. With OOP feature, the unit testing is much easier than before. But in the recent MQL they never fixed bugs I replaced by other solution.
i Think 5 years from now all but the die hards will be using OnStart() simply because by default, File > New > Script creates from the MQ template the base script with void OnTick() already on it.
Edit: I meant with void OnStart() already on it.
The change makes sense. It only applies (I think) to new code, not to existing scripts, and the number of developers who are used to creating dual-purpose EX4 files which run as both script and EA is almost certainly outweighed by the number of non-developers who have had unexpected or adverse consequences from installing a script as an EA and then having it run every tick rather than once.
What's nuts is making this change 24 hours before launch.
I have very strong views on backward-compatibility of EX4 files (and the fact that it remains badly flawed in terms of what tens of thousands of people will have downloaded from places like Forex Factory and are currently using), but I think this kind of change to source code and re-compilation is acceptable. (Particularly because you can continue to compile with old versions of metalang if you want to - though provided that you aren't then hit by a failing of EX4 backward-compatibility.)
What's wrong is the fact that this clearly hasn't been thought through. Someone's made an eleventh-hour decision that it's essential not to be able to mix up EAs and scripts. The thing to have done, way back when the first beta builds came out, was to get the compiler to refuse to allow start(); to insist on either OnStart() or OnTick() - and not both, which is currently permitted; and to provide some GUI assistance and informative error messages for changing that the use of start() as appropriate. Yes, this would have meant changing absolutely all historic source code. But in a trivial way, and there's huge amounts of code which needs to be slightly amended any way.