On 15/01/2016 16:44, Alex Dyachenko wrote:

> Hello MPIR team,
> 
> In my fork, I have created Visual Studio solutions (for versions 2012,
> 2013, and 2015) to build an adapter using C++/CLI that exposes MPIR for
> consumption by .Net 4.5+ languages.  The basic idea is that first you
> build the LIB version of MPIR using one of the existing VS
> solutions, for your desired processor architecture.  Then you build my
> solution that links to that LIB and produces a .Net assembly which
> exposes .Net classes for ints, rationals, and floats, and forwards the
> methods and overloaded operators on those classes to native MPIR calls.
>  Similarly to the native C++ interface, most operations are implemented
> through overloaded operators that produce expressions with
> deferred-to-assignment evaluation, such that a single operation (e.g. a
> = b + c) results in a single MPIR call (mp*_add), while more complicated
> expressions will use temporaries as necessary.  (The actual syntax would
> be a.Value = b + c; the reason for that is that .Net does not support
> overloaded assignment).  This is not just a set of pinvoke signatures,
> but a full OO interface.

This sounds like a useful addition to MPIR as .Net development is very
popular on Windows.

> This effort is now complete with a full suite of unit tests and XML
> comments on the entire public interface (which feed nicely into Visual
> Studio intellisense), tested under both Win32 and Win64, and can of
> course be linked to any processor-specific assembly-optimized build of
> MPIR.  I had to make one small refactoring to the existing MPIR code in
> the raw IO area where the existing entry point was at too high a level
> to be reused, and I split a method in two so I could use my own memory
> allocation and call into the "meat" of the raw IO.  This resulted in a
> couple of new entry points being added to mpir.h but no existing
> signatures were changed.  I could have re-implemented this method
> entirely in my code to avoid making any changes to the MPIR proper, but
> that wouldn't have been in the spirit of writing an adapter whose
> internals are all forwarded.
> 
> I would like to create a pull request to have this addition code
> reviewed and eventually merged in.  I realize this may take a while, and
> I'll be happy to answer your questions and/or tweak the implementation
> based on your input.  I'm also willing to support it in future MPIR
> releases.  Before I do the pull request, I wanted to post this as a
> heads up and to get initial feedback from you as to whether you're
> interested in general.

Your willingness to maintain and support this potential addition is very
important and counts as a big plus point for its inclusion.  It would
also be nice to add a new dewveloper to the MPIR team!

> Also I would like to write up a chapter for the manual, which will
> probably be similar in size and structure to the C++ interface chapter,
> however I'm not sure what tool chain you're using for that.  I have a
> linux VM where I'm able to edit texi sources in the doc folder and
> produce a PDF from them, but if I understand correctly these are
> dual-purpose sources that also work in some other tool that perhaps
> parses out the special texi instructions that don't seem to do anything
> for PDF output, and I wouldn't want to break that.  If you let me know
> the official way to edit and test the documentation, I can get started.

This is a great proposal which will offer a worthwhile addition to MPIR.

If this raises any issues that need attention in my existing VS
solutions, I will be happy to take a look at these.

   Brian

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mpir-devel+unsubscr...@googlegroups.com.
To post to this group, send email to mpir-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/mpir-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to