[Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe

Markus Schaber m.schaber at codesys.com
Wed May 8 13:07:36 CEST 2013


Hi,

http://www.johndcook.com/blog/2010/06/08/c-math-gotchas/ explains the problem: The double.MinValue and double.Epsilon in C# have different meanings thant DBL_MIN and DBL_EPSILON in C.

I'm looking for a way how to get the wanted values... :)

Best regards

Markus Schaber

CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH

Inspiring Automation Solutions
________________________________
3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50

E-Mail: m.schaber at codesys.com<mailto:m.schaber at codesys.com> | Web: codesys.com<http://www.codesys.com> | CODESYS store: store.codesys.com<http://store.codesys.com>
CODESYS forum: forum.codesys.com<http://forum.codesys.com>

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915
Von: Ironpython-users [mailto:ironpython-users-bounces+m.schaber=codesys.com at python.org] Im Auftrag von Markus Schaber
Gesendet: Mittwoch, 8. Mai 2013 11:55
An: Vernon D. Cole; Chong, Petra (HARVEY NASH)
Cc: ironpython-users at python.org
Betreff: Re: [Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe

Hi,

Just as a side note:

It seems that sys.float_info.min and epsilon are not correct in IronPython.

Activestate Python 2.7.2:
>>> sys.float_info.min
2.2250738585072014e-308
>>> sys.float_info.epsilon
2.220446049250313e-16

IronPython 2.7.3:
>>> sys.float_info.min
-1.7976931348623157e+308
>>> sys.float_info.epsilon
4.9406564584124654e-324

The python documentation says:
min

DBL_MIN

minimum positive normalized float

epsilon

DBL_EPSILON

difference between 1 and the least value greater than 1 that is representable as a float


For epsilon, it might be different in .NET compared to C, but the given value is rather optimistic given that the mantissa only has 15 digits / 53 bits. :)

So, it seems both values are incorrect for IronPython.


Best regards

Markus Schaber

CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH

Inspiring Automation Solutions
________________________________
3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50

E-Mail: m.schaber at codesys.com<mailto:m.schaber at codesys.com> | Web: codesys.com<http://www.codesys.com> | CODESYS store: store.codesys.com<http://store.codesys.com>
CODESYS forum: forum.codesys.com<http://forum.codesys.com>

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915
Von: Ironpython-users [mailto:ironpython-users-bounces+m.schaber=codesys.com at python.org] Im Auftrag von Vernon D. Cole
Gesendet: Mittwoch, 8. Mai 2013 11:20
An: Chong, Petra (HARVEY NASH)
Cc: ironpython-users at python.org<mailto:ironpython-users at python.org>
Betreff: Re: [Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe

I find that the following works (on all versions I have tested, including Jython):

import sys
def Python_is_64bit():
    if sys.platform == 'cli': #IronPython
        import System
        return System.IntPtr.Size == 8
    else:
        try:
            return sys.maxsize > 2147483647
        except AttributeError:
            return sys.maxint > 2147483647

--
Vernon Cole

On Wed, May 8, 2013 at 8:14 AM, Chong, Petra (HARVEY NASH) <Petra.Chong at uk.bp.com<mailto:Petra.Chong at uk.bp.com>> wrote:
I do indeed get output that looks like yours -

c:\Program Files (x86)\IronPython 2.7>c:\users\xxxxx\Downloads\corflags.exe ipy64.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 9
ILONLY    : 1
32BIT     : 0
Signed    : 1

And if I then run this:

c:\Program Files (x86)\IronPython 2.7>c:\users\xxxxx\Downloads\corflags.exe ipy.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 11
ILONLY    : 1
32BIT     : 1
Signed    : 1

Thanks,

PC


From: Curt Hagenlocher [mailto:curt at hagenlocher.org<mailto:curt at hagenlocher.org>]
Sent: 07 May 2013 17:46
To: Chong, Petra (HARVEY NASH)
Cc: ironpython-users at python.org<mailto:ironpython-users at python.org>
Subject: Re: [Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe

Can you use corflags.exe to confirm that your ipy64.exe is actually not marked for 32-bit execution? Your output should look like this:

PS D:\Program Files\Sho\bin> corflags .\ipy64.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  3.5.30729.1
Copyright (c) Microsoft Corporation.  All rights reserved.
Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 9
ILONLY    : 1
32BIT     : 0
Signed    : 1


On Tue, May 7, 2013 at 9:34 AM, Chong, Petra (HARVEY NASH) <Petra.Chong at uk.bp.com<mailto:Petra.Chong at uk.bp.com>> wrote:
(I also asked this on StackOverflow - http://stackoverflow.com/questions/16422812/ironpython-always-in-32-bit-mode-on-64bit-machine-even-when-running-ipy64-exe - have copy pasted from there).



I am sure I am missing something simple but unfortunately a lot of searching hasn't thrown up what it is..

I am running Windows 7 64-bit (I verified this by looking at Control Panel > All Control Panel Items > System and seeing that it says 64-bit Operating System).

I have IronPython 2.7.3 installed from here (http://ironpython.codeplex.com/downloads/get/423690)

This has created the following shortcut (with no corresponding shortcut in C:\Program Files\IronPython 2.7...):

"C:\Program Files (x86)\IronPython 2.7\ipy64.exe"

If I run this, I get this prompt:





"c:\Projects>"C:\Program Files (x86)\IronPython 2.7\ipy64.exe"

IronPython 2.7.3 (2.7.0.40) on .NET 4.0.30319.296 (32-bit)

The docs from an older version of IronPython (2.6) athttp://ironpython.codeplex.com/releases/view/27350 say that:

"A very visible new feature added to this release is that ipy.exe is now strictly a 32-bit only assembly. That is, it gets executed as a 32-bit CLR process on both x86 and x64 operating systems. ipy64.exe, despite what its name might imply, is a platform agnostic assembly matching the old behavior of ipy.exe in the sense that it gets executed as a 32-bit process on 32-bit OSes and 64-bit on 64-bit OSes."

>From this, I infer that ipy64 should have started as a 64 bit process, but that's not what shows in the prompt.

Any ideas what I am doing wrong? Thanks in advance..

Edited to add: I have also tried running the following in the IronPython shell, which I found from another question on this site, to check whether the OS is 64 bit

>>> import System

>>> System.Environment.Is64BitOperatingSystem

True

... but then I ran the following which indicates that IronPython really is running in 32 bit mode.

>>> import System

>>> System.IntPtr.Size

4


I have tested that I have 64-bit .NET installed by creating a console application in Visual Studio with the line Console.WriteLn(System.IntPtr.Size) and verifying that the output is "8".

Thanks,

PC

_______________________________________________
Ironpython-users mailing list
Ironpython-users at python.org<mailto:Ironpython-users at python.org>
http://mail.python.org/mailman/listinfo/ironpython-users


_______________________________________________
Ironpython-users mailing list
Ironpython-users at python.org<mailto:Ironpython-users at python.org>
http://mail.python.org/mailman/listinfo/ironpython-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20130508/c3a82f16/attachment.html>


More information about the Ironpython-users mailing list