Prior to version 2.18, the init section in the alternative syntax of createUnit was accepting local variables from the higher scope. Changes to the variables in the init were accessible to the higher scope. When version 2.18 came out, this stopped working.
There are circumstances where the first syntax is problematic - spawning units into a group of a side other than their init leads to friendly fire, even if a joinSilent is used.
There are also circumstances where using the alternate syntax with global variables is a problem - running mulitple instances of a spawn script at the same time would either cause the wrong units to spawn in the wrong places, or require many global variables to be managed.
If this was a fix for what was seen as a bug, is possible to implement an efficient way to pass local variables into and out of the init? Would it be possible to alter the first syntax to automatically join the side of the group, or create a third syntax that solves all these issues?