Jump to page: 1 2 3
Thread overview
[Issue 6024] New: Windows 2000 SP4 is not supported any more? And what is still supported?
May 17, 2011
Denis
May 17, 2011
Jonathan M Davis
May 17, 2011
Vladimir Panteleev
May 17, 2011
Walter Bright
May 17, 2011
Walter Bright
May 17, 2011
Vladimir Panteleev
May 17, 2011
Jonathan M Davis
May 17, 2011
Vladimir Panteleev
May 17, 2011
Jonathan M Davis
May 17, 2011
Vladimir Panteleev
Jul 21, 2011
twk
Jan 21, 2012
Walter Bright
Jan 21, 2012
Vladimir Panteleev
Feb 07, 2012
Jonathan M Davis
Feb 07, 2012
Yao Gomez
Apr 28, 2012
Jonathan M Davis
May 12, 2012
Denis Shelomovskij
Jul 08, 2012
Jonathan M Davis
Jul 09, 2012
Denis Shelomovskij
Apr 07, 2013
Walter Bright
Apr 07, 2013
Walter Bright
Apr 07, 2013
Andrej Mitrovic
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024

           Summary: Windows 2000 SP4 is not supported any more? And what
                    is still supported?
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: blocker
          Priority: P2
         Component: druntime
        AssignedTo: nobody@puremagic.com
        ReportedBy: verylonglogin.reg@gmail.com


--- Comment #0 from Denis <verylonglogin.reg@gmail.com> 2011-05-17 00:39:19 PDT ---
Since dmd v2.053 RtlCaptureContext function (minimum supported client Windows
XP) is in file
runtime\src\core\sys\windows\stacktrace.d

So on Windows 2000 you have "Entry point not found" error when any D2 program
starts (e.g "void main() { }" program).

I'll understand, if Windows 2000 is not supported any more. I think it can be supported, but if community doesn't want, so be it. But this undefined behaviour is very bad. Please write supported operating systems somewhere in plain view (e.g. in Requirements and Downloads section of http://www.digitalmars.com/d/2.0/dmd-windows.html). And in write in changelog "... OS is not supported any more".

Since some previous version, you have no command line arguments on Windows 98, but in std.file there are a lot of code aimed to support this OS. It's very confusing. So, please, write what systems are supported. "operating system, such as Windows XP" is sounds very obscure (and it is).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Jonathan M Davis <jmdavisProg@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jmdavisProg@gmx.com


--- Comment #1 from Jonathan M Davis <jmdavisProg@gmx.com> 2011-05-17 00:56:09 PDT ---
What is supported depends entirely on which feature or module you're talking about. std.datetime won't work with anything prior to Win2k pro because some of the functions that it needs didn't exist before that. std.file, on the other hand, manages to include compatability for Win98. It's not really possible at this point to say which versions of Windows are supported, because it depends entirely on which features you're talking about. I don't believe that anything in druntime or Phobos requires anything which was added after XP (and given how prevalent XP still is, it shouldn't), but anything older than XP is very much hit and miss.

Personally, I think that it would be a great idea to just declare that anything older than XP is unsupported, but the general approach has been to support the oldest version of Windows that we reasonably can for any particular piece of functionality. I don't know what the situation is with the stacktraces and whether that can be dealt with in a way that allows druntime to function on OSes prior to XP.

If anything, I'd say that the current state is that you should expect that the current dmd and libraries should fully work on XP but with anything before that, you risk it not working. Generally, however, bugs relating to pre-XP will be fixed if it can be reasonably done.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com


--- Comment #2 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-05-17 01:23:33 PDT ---
It looks like the RtlCaptureContext call can be replaced with some simple assembler. All it needs is the contents of the EIP, EBP and ESP registers. Some compilers offer intrinsics for special CPU registers, although I don't think DMD does.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com


--- Comment #3 from Walter Bright <bugzilla@digitalmars.com> 2011-05-17 12:11:54 PDT ---
(In reply to comment #1)
> std.datetime won't work with anything prior to Win2k pro because some of the functions that it needs didn't exist before that.

Which functions?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024



--- Comment #4 from Walter Bright <bugzilla@digitalmars.com> 2011-05-17 12:12:48 PDT ---
(In reply to comment #2)
> It looks like the RtlCaptureContext call can be replaced with some simple assembler. All it needs is the contents of the EIP, EBP and ESP registers. Some compilers offer intrinsics for special CPU registers, although I don't think DMD does.

DMD has inline assembler, so this should be straightforward. What exactly is needed?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024



--- Comment #5 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-05-17 12:21:10 PDT ---
(In reply to comment #4)
> (In reply to comment #2)
> > It looks like the RtlCaptureContext call can be replaced with some simple assembler. All it needs is the contents of the EIP, EBP and ESP registers. Some compilers offer intrinsics for special CPU registers, although I don't think DMD does.
> 
> DMD has inline assembler, so this should be straightforward. What exactly is needed?

The contents of the EIP, EBP and ESP registers. (I only mentioned intrinsics because they would be favorable to inline assembler.)

StackWalk64 also accepts a CONTEXT structure, which, according to its documentation, is optional on x86, but may improve its behavior in certain situations. Thus, RtlCaptureContext should still be used when it is available.

https://github.com/D-Programming-Language/druntime/blob/5098e60a74d5ff06aa808a5f02202f4762feac03/src/core/sys/windows/stacktrace.d#L288

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024



--- Comment #6 from Jonathan M Davis <jmdavisProg@gmx.com> 2011-05-17 12:55:58 PDT ---
None of the Windows system function calls that std.datetime uses existed prior to Win2K Pro. So, if you use SysTime with either LocalTime (which is the default) or a WindowsTimeZone as its time zone, it won't work. Also, it uses Windows system functions to access the registry, and those didn't exist before Win2K Pro. To get those to work, it has the line

pragma(lib, "advapi32.lib");

to link in the necessary library, and I don't know if that library even existed prior to Win2K pro. So, essentially, SysTime can't really be used on a version of Windows prior to Win2K pro, and I suspect that the module won't compile on a Windows version older than that. I'd have to dig through std.datetime to see what the exact list of the system functions is though.

From what I've see of the Windows system calls, a _lot_ of them were added with Win2K pro, and it would be very easy to create a program using much in the way of Windows system calls which wouldn't work prior to Win2K pro. I believe that Vista is the next version of Windows to really add much in the way of system calls (and it added some good ones), but I also don't think that it's at all reasonable to put anything into druntime or Phobos at this point which requires anything newer than XP. XP is still far too prevalent for that (and it would be nice to be able to use some of those calls added with Vista, since some of them are definite improvements over their predecessors).

std.datetime simply cannot do what it does on a Windows system prior to Win2K. The functionality didn't exist as far as system calls go. And honestly, while I'm not opposed to us working to have druntime and Phobos work with versions of Windows prior to XP if we can reasonably do it, I think that it would very reasonable to simply say that we don't support versions of Windows older than XP. The user base for them is very small at this point, and frankly I'm surprised that we have anyone trying to use D on systems that old.

Regardless, std.datetime cannot possibly work on a version of Windows older than Win2K pro. Depending on what you can get to compile, you should be able to use everything other than SysTime and its associated time zone stuff (since none of the rest needs Windows system calls), but they need it and won't work on anything prior to Win2K Pro.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024



--- Comment #7 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-05-17 13:02:52 PDT ---
Jonathan,

A while ago Microsoft updated the "minimum supported Windows version" fields in MSDN to only go back as far as Windows 2000. Thus, do not rely on that information being correct. For example, look at the documentation for GetMessage, the cornerstone function of Windows GUI applications - MSDN will also claim that the "Minimum supported client" is "Windows 2000 Professional".

I believe the reason for that is simply that earlier Windows versions are completely unsupported by Microsoft.

> and I suspect that the module won't compile on a Windows version older than that.

That's not how linking to libraries works on Windows. It doesn't matter which Windows version you compile on, since system DLLs are not accessed during compilation or linking - only the import libraries are. Attempting to run the executable for which the OS can't resolve all dependencies will result in an error message.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024



--- Comment #8 from Jonathan M Davis <jmdavisProg@gmx.com> 2011-05-17 13:12:57 PDT ---
Well, all I have to go on is the documentation, and it says Win2K pro. I have no idea if any of them work prior to that, and if they don't, then there's no way to get that code to work on a version of Windows that old. Still, I find it to be astonishing that we're at all concerned with anything prior to XP at this point. If there are developers who want to make it so that some code checks the version of Windows that it's on and adjusts what it's doing accordingly, then that's fine with me, but if it were my choice, I'd say that we should just say that we're not going to support anything older than XP (or _maybe_ Win2K) and be done with it. Heck, I'd _love_ to be able to require Vista or newer given some of the system calls that they added, but that would be totally unreasonable, since XP is still heavily used. But I wouldn't expect anything older than that to be much used at this point, and particularly for D2, which is a newer language and arguably not even production-ready yet, I think that it would be perfectly reasonable to say that it's not supported on OSes which are very much out-of-date.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 17, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6024



--- Comment #9 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-05-17 13:18:21 PDT ---
Jonathan,

After quickly patching out RtlCaptureContext, I checked and std.datetime unittests start just fine on Windows 98. However, the unit tests fail. The first failure is a failed assert at line 30090 (call to SystemTimeToTzSpecificLocalTime fails).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
« First   ‹ Prev
1 2 3