http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027767.html shows that Pál Kornél is now working on supporting apps that use msvcrt.
Go Pal go!
Hi,
I am working on it but seems to be a longer process because MSVCRT depends on a lot of undocumented characteristics of the MS implementation of .NET Framework and documented functionality that is not used outside of C++ (so isn't implementet by Mono).
If you know real world applications using mixed-mode assemblies please let me know because I am currently using only simple "Hello World"-like programs. Currently I only want to make them work with Mono but later I'll need real world apps for testing.
Currently it's very unlikely that Mono will have it's own MSVCRTs (I mean mixed-mode versions) in the near future. Do you know whether they are redistributable?
Note that my given name is Kornél but in the Hungarian language we use first names and last names in reverse order.
Kornél
----- Original Message ----- From: "Dan Kegel" To: "Wine Developers List" Sent: Friday, May 09, 2008 12:18 PM Subject: mono progress on mixed-mode assemblies...
http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027767.html shows that Pál Kornél is now working on supporting apps that use msvcrt.
Go Pal go!
On Fri, May 9, 2008 at 4:21 AM, Kornél Pál kornelpal@gmail.com wrote:
Currently it's very unlikely that Mono will have it's own MSVCRTs (I mean mixed-mode versions) in the near future. Do you know whether they are redistributable?
Yes, but the license is restrictive, and you can't redistribute them with wine or mono, only with applications. When running apps that forgot to bundle them, I often use this script to download them from microsoft: http://kegel.com/wine/winetricks
But Wine has its own increasingly useful implementation of msvcrt, at least the part that uses the C api. (The C++ api is difficult for us because it has to be written in C; g++ uses a different ABI than Microsoft C++.)
Perhaps, once we work the kinks out, Mono can rely on Wine once more to get this and related functionality. - Dan
On Friday 09 May 2008, Dan Kegel wrote:
On Fri, May 9, 2008 at 4:21 AM, Kornél Pál kornelpal@gmail.com wrote:
Currently it's very unlikely that Mono will have it's own MSVCRTs (I mean mixed-mode versions) in the near future. Do you know whether they are redistributable?
Yes, but the license is restrictive, and you can't redistribute them with wine or mono, only with applications. When running apps that forgot to bundle them, I often use this script to download them from microsoft: http://kegel.com/wine/winetricks
But Wine has its own increasingly useful implementation of msvcrt, at least the part that uses the C api. (The C++ api is difficult for us because it has to be written in C; g++ uses a different ABI than Microsoft C++.)
The GCC people might be working on that, e.g. to enable free software library developers on Windows to use their tool chain for providing binary packages.
Cheers, Kevin
Hi,
From: Dan Kegel But Wine has its own increasingly useful implementation of msvcrt, at least the part that uses the C api. (The C++ api is difficult for us because it has to be written in C; g++ uses a different ABI than Microsoft C++.)
Perhaps, once we work the kinks out, Mono can rely on Wine once more to get this and related functionality.
That would be great.
Because mixed-mode (there is no pure managed version) msvcrts require Managed C++ and C++/CLI and there is no open source compiler supporting any of these so MS compilers would be required.
Also note that Mono's Class Library is licensed under MIT/X11 because inlining (done by the runtime) may be incompatible with GPL that would not allow non-GPL programs to be executed within Mono. Would it be possible to have a MIT/X11 licensed msvcrt?
Kornél
On Wed, May 14, 2008 at 2:37 AM, Kornél Pál kornelpal@gmail.com wrote:
Because mixed-mode (there is no pure managed version) msvcrts require Managed C++ and C++/CLI and there is no open source compiler supporting any of these so MS compilers would be required.
Bleah. Well, you gotta do what you gotta do!
Also note that Mono's Class Library is licensed under MIT/X11 because inlining (done by the runtime) may be incompatible with GPL that would not allow non-GPL programs to be executed within Mono. Would it be possible to have a MIT/X11 licensed msvcrt?
That's an interesting question. If you start from scratch, and make it part of Mono, sure. If you start with Wine's source code, you would need to get permission from the authors who have contributed to Wine's msvcrt. I don't know how many there are, but it would probably only take an hour or so for somebody to write a script that generated the list of authors... - Dan
From: Dan Kegel
Also note that Mono's Class Library is licensed under MIT/X11 because inlining (done by the runtime) may be incompatible with GPL that would not allow non-GPL programs to be executed within Mono. Would it be possible to have a MIT/X11 licensed msvcrt?
That's an interesting question. If you start from scratch, and make it part of Mono, sure. If you start with Wine's source code, you would need to get permission from the authors who have contributed to Wine's msvcrt. I don't know how many there are, but it would probably only take an hour or so for somebody to write a script that generated the list of authors...
I think that the best idea would be to have two separate code bases because that would allow more freedom for an experimental managed C++ runtime.
On the other hand patches could be merged manually so both Wine and Mono could benefit the changes.
So the question is: If the current authors permit to make msvcrt MIX/X11 licensed would it be possible to make Wine's msvcrt MIT/X11 licensed for future releases as well (no legal question but philosophical)?
Kornél
On Wed, May 14, 2008 at 8:37 AM, Kornél Pál kornelpal@gmail.com wrote:
So the question is: If the current authors permit to make msvcrt MIX/X11 licensed would it be possible to make Wine's msvcrt MIT/X11 licensed for future releases as well (no legal question but philosophical)?
You will need to review the git history and contact anyone that has contributed to msvcrt since the Wine changeover to LGPL and get permission.
From: Steven Edwards
So the question is: If the current authors permit to make msvcrt MIX/X11 licensed would it be possible to make Wine's msvcrt MIT/X11 licensed for future releases as well (no legal question but philosophical)?
You will need to review the git history and contact anyone that has contributed to msvcrt since the Wine changeover to LGPL and get permission.
Thanks for the information. This makes the list even shorter.
If contributors agree only the current version will be MIT/X11 licensed.
But I would like to know if the Wine community is willing to license msvcrt under MIT/X11 after that in the future in Wine's source repository to help Mono?
Kornél
On Wed, May 14, 2008 at 5:48 AM, Kornél Pál kornelpal@gmail.com wrote:
If contributors agree only the current version will be MIT/X11 licensed.
But I would like to know if the Wine community is willing to license msvcrt under MIT/X11 after that in the future in Wine's source repository to help Mono?
We can certainly discuss it. - Dan
Hi,
I have spent some time to investigate the mixed-mode msvcrt issue.
There are three different runtime DLLs: msvcm80/90.dll managed C++ runtime implemented using native code msvcp80/90.dll C++ runtime msvcr80/90.dll C runtime
The managed version does only have it's own functionaly while even managed executables created with MS VC++ import the usual C/C++ runtime functionality from msvcp80/90.dll and msvcr80/90.dll files.
So there is no need to duplicate C runtime functionality in msvcm80/90.dll.
msvcm80/90.dll files are part of MS VC++ redistributable files just as the other runtime files are so I think there is no need to duplicate this functionality because the original MS versions are redistributable with the applications.
I also have read the EULAs of MS VC++ 2005 and 2008 redistributables and none of the forbids the use on non-Microsoft operating systems: http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-... http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-...
Kornél
On Wednesday 14 May 2008 14:48:53 Kornél Pál wrote:
But I would like to know if the Wine community is willing to license msvcrt under MIT/X11 after that in the future in Wine's source repository to help Mono?
I've learned the hard way that it doesn't make sense to discuss this stuff before you actually have the code. So I'd suggest you first go and see if you can get the authors of that dll to agree to relicense for you and once that's done, we can discuss what happens with Wine's copy.
Cheers, Kai
I've learned the hard way that it doesn't make sense to discuss this stuff before you actually have the code. So I'd suggest you first go and see if you can get the authors of that dll to agree to relicense for you and once that's done, we can discuss what happens with Wine's copy.
I'll try to make this process a little easier for you. The code was MIT/X11 licensed prior to 2002, so you don't need explicit permission from authors prior to that time. Furthermore, some of the authors since that time have explicitly licensed their contributions as LGPL and MIT/X11. At least Eric Pouch and I are in that set. Transgaming has a list somewhere, though I couldn't find it just now.
The main contributors that have not done so that I saw after a quick perusal were Alexandre and Rob Shearman. If you can't get their permission, you'd have to start with the last MIT/X11 licensed version, or get Transgaming's most recent ReWind version and start from there. --Juan
From: Juan Lang The main contributors that have not done so that I saw after a quick perusal were Alexandre and Rob Shearman. If you can't get their permission, you'd have to start with the last MIT/X11 licensed version, or get Transgaming's most recent ReWind version and start from there.
I had a look at msvcrt of the latest ReWind that is quite old but should be enough as well for the reqired parts. After examining the mixed-mode msvcrt (just the metadata not the code) I found that it contains little if any managed code so I will most likely be able to forward calls to a native msvcrt.
As a conclusion I think that there will be no licensing problems.
I'm not sure if you realise it, but Wine is licensed under the LGPL, not the GPL so I don't think using Wine's msvcrt code would be a problem with inlining and using non-GPL programs.
Inlining (done by the JIT at run time) is not just linking (that is permitted LGPL) and may not be permitted by LGPL.
Kornél
Kornél Pál wrote:
Also note that Mono's Class Library is licensed under MIT/X11 because inlining (done by the runtime) may be incompatible with GPL that would not allow non-GPL programs to be executed within Mono. Would it be possible to have a MIT/X11 licensed msvcrt?
I'm not sure if you realise it, but Wine is licensed under the LGPL, not the GPL so I don't think using Wine's msvcrt code would be a problem with inlining and using non-GPL programs.
However, I understand that having a uniform license for Mono's Class Library is probably highly desirable.
Hi,
Mono 2.0 (Preview 1) is available for download on http://mono.ximian.com/monobuild/preview/download-preview/
This includes a lot of improvements over version 1.9 including my work on supporting mixed-mode assemblies.
Please try it. Feedback is welcome, version 2.0 has not been released yet.
Note that MSVCRT is not yet supported.
There are some test projects in the SVN repository available at http://anonsvn.mono-project.com/viewcvs/trunk/mono/mono/tests/mixed-mode/
Only MixedModeApp and MixedModeLibrary are supposed to work.
Kornél