To make this 100% clear: .NET implements locale aware number formatting in the 
VM, e.g. for format specifiers like 'e' (exponential) or 'f' (fixed-point)  it 
calls into the VM for formatting.
We don't have this in Mono atm., so the only way is to restrict it to the 
invariant format specifiers (which doesn't hurt existing Mono users, since it 
didn't work before too).
-- Alex
 
From: alex.koeplin...@outlook.com
To: mig...@xamarin.com
Date: Wed, 3 Dec 2014 17:01:42 +0100
CC: mono-devel-list@lists.ximian.com
Subject: Re: [Mono-dev] Porting System.Numerics from referencesource, 
approaches for copying code?




Hey,
we need to ensure we only continue for the format specifiers used in 
decimalFmt. Any other format specifier (i.e. culture-specific ones) would 
result in a call into unmanaged code later on 
(https://github.com/akoeplinger/referencesource/blob/mono/System.Numerics/System/Numerics/BigNumber.cs#L611-L634)
 which we of course don't have implemented.
 
Note that it only throws an exception when decimalFmt == false, i.e. when any 
of the culture-specific specifiers was used (which is *not* a common code 
path). This is exactly what the current Mono code also does: 
https://github.com/mono/mono/blob/f8a517624de3fdfc070d2f0660fce1b62d41bc4c/mcs/class/System.Numerics/System.Numerics/BigInteger.cs#L1470
 
-- Alex
 
From: mig...@xamarin.com
Date: Wed, 3 Dec 2014 10:52:04 -0500
Subject: Re: [Mono-dev] Porting System.Numerics from referencesource, 
approaches for copying code?
To: alex.koeplin...@outlook.com
CC: mono-devel-list@lists.ximian.com

Hello Alex,
I am not sure I am understanding this.
This looks like we are choosing to not bring features that we are missing?   
Why would we want to do that?
Miguel
On Wed, Dec 3, 2014 at 10:33 AM, Alexander Köplinger 
<alex.koeplin...@outlook.com> wrote:



Mono today also only supports the format specifiers used in decimalFmt: 
https://github.com/mono/mono/blob/f8a517624de3fdfc070d2f0660fce1b62d41bc4c/mcs/class/System.Numerics/System.Numerics/BigInteger.cs#L1458-L1471
 
So using this #if for Mono is the correct way to go.
 
(reposted, seems like the mailing list ate my previous mail) 

-- Alex
 
From: mig...@xamarin.com
Date: Sat, 29 Nov 2014 12:06:20 -0500
Subject: Re: [Mono-dev] Porting System.Numerics from referencesource, 
approaches for copying code?
To: alex.koeplin...@outlook.com
CC: mono-devel-list@lists.ximian.com

Can you explain the rationale for the #if used with the same SILVERLIGHT 
setting?
It seems like it limits the code.
On Sat, Nov 29, 2014 at 12:03 PM, Alexander Köplinger 
<alex.koeplin...@outlook.com> wrote:



Yeah, that was what I was doing.
 
I created these PRs:
https://github.com/mono/referencesource/pull/1
https://github.com/mono/mono/pull/1433 

-- Alex
 
From: mig...@xamarin.com
Date: Sat, 29 Nov 2014 11:23:01 -0500
Subject: Re: [Mono-dev] Porting System.Numerics from referencesource, 
approaches for copying code?
To: alex.koeplin...@outlook.com
CC: mono-devel-list@lists.ximian.com

I just realized it might not have been 100% clear what I think we should do.
We would in this case replace the references to our mono/mcs/class/XX/*/*cs 
source files, with the "../../external/referencesource/..." files, and then 
alter the original referencesource file with the #if statements.
We have done that already in a couple of places.
(More to come, last night we got XML working, but needs some work)
On Sat, Nov 29, 2014 at 11:21 AM, Miguel de Icaza <mig...@xamarin.com> wrote:
Thanks Alex.
I do not think that we will have a strict rule for when to copy and when to 
reference.  
There are scenarios where we will want to keep a lot of the code in one of our 
files, and pull code from the referencesource.   At that point, we will have to 
determine whether the use of #ifdefs or partial classes is a better long-term 
maintenance approach than copying the source.
In this particular case, I feel that we can modify the reference source, and 
add the #if MONO around it.
The reason is that the changes are pretty straight forward, it is mostly about 
disabling code, and not about picking some specific bits of code and putting 
them on our tree.   So an #if would be nice, since we can do a few things (a) 
we can later find out what code is being disabled by the port (looking at work 
we can do in the future to import new versions, or contribute back to .NET) and 
(b) the changes are minimal right now.
Miguel
On Sat, Nov 29, 2014 at 10:59 AM, Alexander Köplinger 
<alex.koeplin...@outlook.com> wrote:



Here's the diff between my trimmed version and the original: 
http://www.mergely.com/9E70e5Ls/
 
Hmm, I actually think that most of the removed methods don't matter (as they 
aren't called anyway). I just wanted to make the file only contain the code 
that is necessary.
The only "real" changes I had to make where accesses to internal fields in 
NumberFormatInfo, I just replaced them with accesses to the public properties 
that read them.

Maybe it makes more sense to correct those accesses directly in the 
referencesource, so we can reference it from there?
As a general guidance, when should we copy something to the Mono tree vs. 
editing referencesource? And if we copy, should we keep unneeded methods or 
remove them? 
 
-- Alex
 
From: mig...@xamarin.com
Date: Sat, 29 Nov 2014 10:40:10 -0500
Subject: Re: [Mono-dev] Porting System.Numerics from referencesource, 
approaches for copying code?
To: alex.koeplin...@outlook.com
CC: mono-devel-list@lists.ximian.com

Hey Alex,
In general, the approach works.
I am curious as to what is that you had to remove, and why.   Can you describe 
the needed changes?   (I saw the diff, but it is hard to tell what happened 
with it).
I thought that Numerics was pretty much standalone.
On Sat, Nov 29, 2014 at 10:32 AM, Alexander Köplinger 
<alex.koeplin...@outlook.com> wrote:



Hey, I've been trying to port System.Numerics (BigInteger, Complex classes) 
from referencesource to see and feel what the process looks like.
It mostly went fine, but there was one file (number.cs) I couldn't reference 
directly from the submodule and had to copy to the assembly folder in the Mono 
tree.
 
I had to remove a bunch of code from that file to trim it down to only what is 
needed for System.Numerics to compile (all the tests pass now as well).
Question: is this a valid approach or is there something better? Note that 
ifdefing the file wasn't feasible as it originally sits inside corlib and has 
many other unrelated methods in it.
 
Here's the commit with the WIP: 
https://github.com/akoeplinger/mono/commit/d7c461155a975a35f76b79ebcc3fe33407bd5dce
 
-- Alex
                                          

_______________________________________________

Mono-devel-list mailing list

Mono-devel-list@lists.ximian.com

http://lists.ximian.com/mailman/listinfo/mono-devel-list



                                          



                                          

                                          

                                          

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list                        
                  
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to