Quote
I don't really want to waste my time changing everything because someone chose that the correct syntax should be like this (which I think the given option didn't improve scripting at all) instead of maybe creating something new. And now I'm afraid that in the future someone will suggest something again, and the author will change the option without considering that it might break existing scripts.
Your reaction is typical and is unfortunate.
Khaled has been careful and tried very hard, over the years, not to break backward compatibilities, quite successfuly in fact.
But doing so come with a very high price of preventing the scripting language from evolving correctly for people who wanted to see it evolve. Almost any of the backward compatible change are about preserving 'incorrect' (scripters knew what they were doing is incorrect but kept doing it instead of reporting it as a bug) behavior just to prevent older scripts from breaking. Which means adding layer of layer of unecessary code to keep the support for weird stuff (exactly like this one). Which ultimately means a lot of useless bloat in the code, meaning that 1000 if statements are checked for various thing instead of 1. This makes the language slower, and impossible to maintain/evolve and I've been fighting hard against Khaled to force him to break these compatiblities for the language to be faster and possible to enhance. While the language doesn't need to be enhanced much structurally speaking, having thousand of lines to change/maintain instead of 500 ultimately makes Khaled warry of doing changes which sounds easy on the surface.

In this case, one might be using something like this:

if (%prefix == !) var %com msg $chan
else var %com msg $nick
$iif(%somevar,%com = param1,%com = param2)


and expecting the command 'msg $chan = param1' to be executed if %prefix equals ! and if %somevar is *set*, which is ENTIRELY how mirc scripting works, there's no debate about this, but it's not hard either to understand while someone less experienced with the language would want %com = in that $iif to be seen as a variable assignment because that would be starting the line and starting a line with such fomat DOES a variable assigment. For that I blame the help file for not explaining how mirc scripting is supposed to work as a whole, but the language is meant to be simple and easy to access so the help file is always too simple on purpose.

So rest assured that Khaled is extremely considering whether or not to break compatiblities (aka to break scripts or not) and almost always goes against breaking them, but this case is just reaching a limit where the behavior goes against a fundamental rule of the scripting language.

Let me finish on this note, yes it's great that 20 yo scripts are still working without a change, but does that compare to having no new script written in general nowadays because of what I've explained above?


#mircscripting @ irc.swiftirc.net == the best mIRC help channel