Responding to Alexandre and Jeremy.
Alexandre Julliard wrote:
Basically the argument is that some sort of scripting language is better than plain C for two reasons:
- It is much easier to install under Windows than a full development
environment, and we don't have to worry about supporting a dozen different compilers. We can simply provide a zip file containing the compiled script interpreter, and people can be up and running in seconds.
Completely agree with this one.
- The scripts are independent from the compilation environment, which
allows testing binary compatibility. In C you have to compile the tests under Wine using the Wine headers, which means you can't spot wrong definitions in the headers since the test will see the same definition as Wine itself. The only way around is to build tests under Windows and run them under Wine but this is a major pain. With a script you are guaranteed to run the exact same thing in both environments.
It seems the problem is not so big. It will be sufficient to run the binary, compiled under Windows not more often than once a month.
There are probably a number of things you cannot do from Perl, like threads or exception handling, and for that we will want some kind of C framework too. But I believe we can already go a long way with the Perl stuff we have today.
Some technical challenges we can overcome by improving our Perl framework, other we will be handled with C.
Maybe I'm wrong, maybe it's really unusable and we need to scrap it and redo a C environment from scratch; but we won't know that until we try to use it seriously.
Whether Perl in convenient enough language in comparison with C remains to be decided.
I see following biggest problems with Perl:
1) as I mentioned before the first problem is in capturing audience of test creators. Even be Perl the best programming language ever: a) existing Wine developers are experts in C. Even those who knows Perl are more experienced in C. b) attracting new developers. We want to target developers who already knows or want to know Win32 API, right? Usually these people are not those who program in scripting languages. I'm not sure if we will be able to justify before them learning new language.
2) Wine targets problem "Compilation and execution of Win32 applications". C is the native language of this problem. All the problems and solutions can be easy expressed in C and require translation when converted to other languages. All the documentation, learning materials are C-oriented. BTW, tests in Perl address only execution of applications, not compilation.
The biggest advantage of scripting language in this application is easiness of installation. Most people who know or want to learn Win32 API already have to use some kind C development environment.
I'd prefer to lose 10 developers who don't want to learn C instead of losing one expert in Win32 API who thinks that Perl sucks ;-)
Andriy Palamarchuk