[m-dev.] Removal of Managed C++

Eric Taucher gluon at earthlink.net
Tue Jul 3 02:04:13 AEST 2007



> -----Original Message-----
> From: owner-mercury-developers at csse.unimelb.edu.au [mailto:owner-mercury-
> developers at csse.unimelb.edu.au] On Behalf Of Jonathan Morgan
> Sent: Monday, July 02, 2007 9:34 AM
> To: mercury-developers at csse.unimelb.edu.au
> Subject: [m-dev.] Removal of Managed C++
> 
> I would like to remove support for Managed C++ from the compiler for
> the following reasons:
> * It is only supported by Microsoft, making it harder to use code
> using it with other platforms (e.g. Mono).
> * It is not used in any of the standard library (C# or IL are used
> exclusively)
> * Microsoft have deprecated it in favour of C++/CLI
> * Almost anything required by Mercury can be done just as well in C#
> (possibly better).
> * Removing it will simplify the dependencies and the build process,
> and limit the amount of work that has to be duplicated in both C# and
> MC++ [incidentally, Eric Taucher asked independently for it to be
> removed for the same reason]

I have no problem with Jon's statements and again want to thank both him and
Peter for their continued help and support with the creation of a .NET 2.0
Mercury.dll. 

I do want to put some history behind my request and what I was thinking at
the time so that those that follow will not have to repeat my steps, but
instead improve on the work.

A few weeks ago, I had sent a list of statements I believed to be true to
both Jon and Peter as a basis for building the .NET 2.0 Mercury.dll. One of
those statements was  

"There is no need to make any CPP files, and the make process can be
modified to remove these dependencies."

The reason was that I could find no use of C++ for making the 0.13.1 version
library, and removing it would simplify the build process. At the time and
now, I still believe that the make process for the library is more
complicated than it needs to be. In the responses, it was noted that someone
may add CPP code back into the library. As such, I have not actively pursued
removing or changing the Managed CPP code or make process.

Currently, I have no problem building .NET 2.0 Mercury.dll if Managed C++ is
left in or taken out. 

> 
> I will remove support shortly unless there are any major objections to
> it.  While it might be an interesting project to convert the support
> for MC++ to support C++/CLI, I think that it will be better for the
> compiler just to drop C++ completely and focus on C#, which seems to
> do almost everything required for our purposes.
> 

While I can't say positively that using only C# in the future will allow us
to do anything we want; using C# and CIL should since Managed C++ is
converted into CIL. In other words, you may have to write some CIL code, or
write the code in managed C++ then convert the code to CIL and add by hand.
Also, in building .NET 2.0 Mercury.dll, I have been able to remove
dependencies on external DLLs and use enhancements of the .NET 2.0 Common
Object Runtime libraries to simplify the code using C#, were the code once
required use of P/Invoke.


> Jon
> --------------------------------------------------------------------------
> mercury-developers mailing list
> Post messages to:       mercury-developers at csse.unimelb.edu.au
> Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
> Subscriptions:          mercury-developers-request at csse.unimelb.edu.au
> --------------------------------------------------------------------------


--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the developers mailing list