The value returned from "Smalltalk platformName" on the 64 bit 5.2A image is Win32. Does this matter?
C:\Smalltalk\Squeak5.2alpha-18110-64bit-201804030952-Windows\Squeak5.2alpha-18110-64bit\Squeak5.2alpha-18110-64bit.1.image Squeak5.2alpha latest update: #18110 Current Change Set: BBCRR-RestartAt5.2alpha Image format 68021 (64 bit)
- jrm
Hi John-Reed,
On Tue, Jun 26, 2018 at 8:33 AM, John-Reed Maffeo jrmaffeo@gmail.com wrote:
The value returned from "Smalltalk platformName" on the 64 bit 5.2A image is Win32. Does this matter?
Alas it does :-(. There is much code in the system that explicitly tests for 'Win32', for example in various implementations of clipboardInterpreterClass. If the 64-bit VM were to report, more accurately, Win64, then lots of code would break.
Maybe at a major release we could fix this, but when this issue surfaced (May 2017, see commit ca7e8db32835f5d2489ebddc7e14a51c9bbd4697), I chose to - change getSystemAttribute: 1005 (the Windowing system name) to answer Windows instead of Win32 - keep getSystemAttribute: 1001 (the primary OS name) answering Win32
I guess a prudent way to deal with this for the moment is to implement SmalltalkImage>>is32BitWindows & SmalltalkImage>>is64BitWindows (along with some other useful ones) to insulate clients from the details of the getSystemAttribute: interface, and then later we can try and remedy the situation.
In fact, if there are any volunteers motivated enough it would be really nice to see code like
clipboardInterpreterClass | platformName osVersion | platformName := Smalltalk platformName. osVersion := Smalltalk osVersion. (platformName = 'Win32' and: [osVersion = 'CE']) ifTrue: [^NoConversionClipboardInterpreter]. platformName = 'Win32' ifTrue: [^UTF8ClipboardInterpreter]. platformName = 'Mac OS' ifTrue: [^MacShiftJISClipboardInterpreter]. ^platformName = 'unix' ifTrue: [(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]] ifFalse: [ NoConversionClipboardInterpreter ]
rewritten to more closely resemble
clipboardInterpreterClass Smalltalk os isWindows ifTrue: [^Smalltalk os isWindowsCE ifTrue: [NoConversionClipboardInterpreter] ifFalse: [UTF8ClipboardInterpreter]]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter]. Smalltalk os isUnix ifTrue: [^(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]]. ^NoConversionClipboardInterpreter
or
clipboardInterpreterClass (Smalltalk os isWindows and: [Smalltalk os isWindowsCE not]) ifTrue: [^ UTF8ClipboardInterpreter]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter]. Smalltalk os isUnix ifTrue: [(Smalltalk os isMacOSX or: [ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding]) ifTrue: [^MacShiftJISClipboardInterpreter] ^UnixJPClipboardInterpreter]. ^NoConversionClipboardInterpreter
C:\Smalltalk\Squeak5.2alpha-18110-64bit-201804030952-
Windows\Squeak5.2alpha-18110-64bit\Squeak5.2alpha-18110-64bit.1.image Squeak5.2alpha latest update: #18110 Current Change Set: BBCRR-RestartAt5.2alpha Image format 68021 (64 bit)
- jrm
_,,,^..^,,,_ best, Eliot
On 26.06.2018, at 18:26, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi John-Reed,
On Tue, Jun 26, 2018 at 8:33 AM, John-Reed Maffeo jrmaffeo@gmail.com wrote: The value returned from "Smalltalk platformName" on the 64 bit 5.2A image is Win32. Does this matter?
Alas it does :-(. There is much code in the system that explicitly tests for 'Win32', for example in various implementations of clipboardInterpreterClass. If the 64-bit VM were to report, more accurately, Win64, then lots of code would break.
Maybe at a major release we could fix this, but when this issue surfaced (May 2017, see commit ca7e8db32835f5d2489ebddc7e14a51c9bbd4697), I chose to
- change getSystemAttribute: 1005 (the Windowing system name) to answer Windows instead of Win32
- keep getSystemAttribute: 1001 (the primary OS name) answering Win32
I guess a prudent way to deal with this for the moment is to implement SmalltalkImage>>is32BitWindows & SmalltalkImage>>is64BitWindows (along with some other useful ones) to insulate clients from the details of the getSystemAttribute: interface, and then later we can try and remedy the situation.
In fact, if there are any volunteers motivated enough it would be really nice to see code like
clipboardInterpreterClass | platformName osVersion | platformName := Smalltalk platformName. osVersion := Smalltalk osVersion. (platformName = 'Win32' and: [osVersion = 'CE']) ifTrue: [^NoConversionClipboardInterpreter]. platformName = 'Win32' ifTrue: [^UTF8ClipboardInterpreter]. platformName = 'Mac OS' ifTrue: [^MacShiftJISClipboardInterpreter]. ^platformName = 'unix' ifTrue: [(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]] ifFalse: [ NoConversionClipboardInterpreter ]
rewritten to more closely resemble
clipboardInterpreterClass Smalltalk os isWindows ifTrue: [^Smalltalk os isWindowsCE ifTrue: [NoConversionClipboardInterpreter] ifFalse: [UTF8ClipboardInterpreter]]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter].
With the interesting gotcha that UTF is probably the correct thing here and MacShiftJISClipboardInterpreter actually the pre-OSX Mac OS? So, what do the name actually still tell us? :/
Smalltalk os isUnix ifTrue: [^(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]]. ^NoConversionClipboardInterpreter
or
clipboardInterpreterClass (Smalltalk os isWindows and: [Smalltalk os isWindowsCE not]) ifTrue: [^ UTF8ClipboardInterpreter]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter]. Smalltalk os isUnix ifTrue: [(Smalltalk os isMacOSX or: [ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding]) ifTrue: [^MacShiftJISClipboardInterpreter] ^UnixJPClipboardInterpreter]. ^NoConversionClipboardInterpreter
C:\Smalltalk\Squeak5.2alpha-18110-64bit-201804030952-Windows\Squeak5.2alpha-18110-64bit\Squeak5.2alpha-18110-64bit.1.image Squeak5.2alpha latest update: #18110 Current Change Set: BBCRR-RestartAt5.2alpha Image format 68021 (64 bit)
- jrm
_,,,^..^,,,_ best, Eliot
Hi Tobias,
On Jun 26, 2018, at 10:06 AM, Tobias Pape Das.Linux@gmx.de wrote:
On 26.06.2018, at 18:26, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi John-Reed,
On Tue, Jun 26, 2018 at 8:33 AM, John-Reed Maffeo jrmaffeo@gmail.com wrote: The value returned from "Smalltalk platformName" on the 64 bit 5.2A image is Win32. Does this matter?
Alas it does :-(. There is much code in the system that explicitly tests for 'Win32', for example in various implementations of clipboardInterpreterClass. If the 64-bit VM were to report, more accurately, Win64, then lots of code would break.
Maybe at a major release we could fix this, but when this issue surfaced (May 2017, see commit ca7e8db32835f5d2489ebddc7e14a51c9bbd4697), I chose to
- change getSystemAttribute: 1005 (the Windowing system name) to answer Windows instead of Win32
- keep getSystemAttribute: 1001 (the primary OS name) answering Win32
I guess a prudent way to deal with this for the moment is to implement SmalltalkImage>>is32BitWindows & SmalltalkImage>>is64BitWindows (along with some other useful ones) to insulate clients from the details of the getSystemAttribute: interface, and then later we can try and remedy the situation.
In fact, if there are any volunteers motivated enough it would be really nice to see code like
clipboardInterpreterClass | platformName osVersion | platformName := Smalltalk platformName. osVersion := Smalltalk osVersion. (platformName = 'Win32' and: [osVersion = 'CE']) ifTrue: [^NoConversionClipboardInterpreter]. platformName = 'Win32' ifTrue: [^UTF8ClipboardInterpreter]. platformName = 'Mac OS' ifTrue: [^MacShiftJISClipboardInterpreter]. ^platformName = 'unix' ifTrue: [(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]] ifFalse: [ NoConversionClipboardInterpreter ]
rewritten to more closely resemble
clipboardInterpreterClass Smalltalk os isWindows ifTrue: [^Smalltalk os isWindowsCE ifTrue: [NoConversionClipboardInterpreter] ifFalse: [UTF8ClipboardInterpreter]]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter].
With the interesting gotcha that UTF is probably the correct thing here and MacShiftJISClipboardInterpreter actually the pre-OSX Mac OS? So, what do the name actually still tell us? :/
There’s another parameter that answers the OS version number that on Mac OS X, IIRC, is a float, so that 10.10.1 is 1010.1, and hence OS X would be distinguished by that number being >= 1000.
Smalltalk os isUnix ifTrue: [^(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]]. ^NoConversionClipboardInterpreter
or
clipboardInterpreterClass (Smalltalk os isWindows and: [Smalltalk os isWindowsCE not]) ifTrue: [^ UTF8ClipboardInterpreter]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter]. Smalltalk os isUnix ifTrue: [(Smalltalk os isMacOSX or: [ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding]) ifTrue: [^MacShiftJISClipboardInterpreter] ^UnixJPClipboardInterpreter]. ^NoConversionClipboardInterpreter
C:\Smalltalk\Squeak5.2alpha-18110-64bit-201804030952-Windows\Squeak5.2alpha-18110-64bit\Squeak5.2alpha-18110-64bit.1.image Squeak5.2alpha latest update: #18110 Current Change Set: BBCRR-RestartAt5.2alpha Image format 68021 (64 bit)
- jrm
_,,,^..^,,,_ best, Eliot
On 26.06.2018, at 22:33, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Tobias,
On Jun 26, 2018, at 10:06 AM, Tobias Pape Das.Linux@gmx.de wrote:
On 26.06.2018, at 18:26, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi John-Reed,
On Tue, Jun 26, 2018 at 8:33 AM, John-Reed Maffeo jrmaffeo@gmail.com wrote: The value returned from "Smalltalk platformName" on the 64 bit 5.2A image is Win32. Does this matter?
Alas it does :-(. There is much code in the system that explicitly tests for 'Win32', for example in various implementations of clipboardInterpreterClass. If the 64-bit VM were to report, more accurately, Win64, then lots of code would break.
Maybe at a major release we could fix this, but when this issue surfaced (May 2017, see commit ca7e8db32835f5d2489ebddc7e14a51c9bbd4697), I chose to
- change getSystemAttribute: 1005 (the Windowing system name) to answer Windows instead of Win32
- keep getSystemAttribute: 1001 (the primary OS name) answering Win32
I guess a prudent way to deal with this for the moment is to implement SmalltalkImage>>is32BitWindows & SmalltalkImage>>is64BitWindows (along with some other useful ones) to insulate clients from the details of the getSystemAttribute: interface, and then later we can try and remedy the situation.
In fact, if there are any volunteers motivated enough it would be really nice to see code like
clipboardInterpreterClass | platformName osVersion | platformName := Smalltalk platformName. osVersion := Smalltalk osVersion. (platformName = 'Win32' and: [osVersion = 'CE']) ifTrue: [^NoConversionClipboardInterpreter]. platformName = 'Win32' ifTrue: [^UTF8ClipboardInterpreter]. platformName = 'Mac OS' ifTrue: [^MacShiftJISClipboardInterpreter]. ^platformName = 'unix' ifTrue: [(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]] ifFalse: [ NoConversionClipboardInterpreter ]
rewritten to more closely resemble
clipboardInterpreterClass Smalltalk os isWindows ifTrue: [^Smalltalk os isWindowsCE ifTrue: [NoConversionClipboardInterpreter] ifFalse: [UTF8ClipboardInterpreter]]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter].
With the interesting gotcha that UTF is probably the correct thing here and MacShiftJISClipboardInterpreter actually the pre-OSX Mac OS? So, what do the name actually still tell us? :/
There’s another parameter that answers the OS version number that on Mac OS X, IIRC, is a float, so that 10.10.1 is 1010.1, and hence OS X would be distinguished by that number being >= 1000.
Yea, true. I was being a smartass about that names in that method, sorry ^.^
One thing, I think it is still ok to refer to Windows as Win32 even on 64 bit. The api is essentially the same (compared to the "newer" WinRT api…) (stackoverflow links semi-case-inpoint: https://stackoverflow.com/questions/6679396/should-i-define-both-win32-and-w... https://stackoverflow.com/questions/7476814/will-there-be-a-win64-api )
Best regards -Tobias
Smalltalk os isUnix ifTrue: [^(ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding) ifTrue: [MacShiftJISClipboardInterpreter] ifFalse: [UnixJPClipboardInterpreter]]. ^NoConversionClipboardInterpreter
or
clipboardInterpreterClass (Smalltalk os isWindows and: [Smalltalk os isWindowsCE not]) ifTrue: [^ UTF8ClipboardInterpreter]. Smalltalk os isMacOSX ifTrue: [^MacShiftJISClipboardInterpreter]. Smalltalk os isUnix ifTrue: [(Smalltalk os isMacOSX or: [ShiftJISTextConverter encodingNames includes: X11Encoding getEncoding]) ifTrue: [^MacShiftJISClipboardInterpreter] ^UnixJPClipboardInterpreter]. ^NoConversionClipboardInterpreter
C:\Smalltalk\Squeak5.2alpha-18110-64bit-201804030952-Windows\Squeak5.2alpha-18110-64bit\Squeak5.2alpha-18110-64bit.1.image Squeak5.2alpha latest update: #18110 Current Change Set: BBCRR-RestartAt5.2alpha Image format 68021 (64 bit)
- jrm
_,,,^..^,,,_ best, Eliot
squeak-dev@lists.squeakfoundation.org