www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6024] New: Windows 2000 SP4 is not supported any more? And what is still supported?

reply d-bugmail puremagic.com writes:
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



---
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
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Jonathan M Davis <jmdavisProg gmx.com> changed:

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



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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Vladimir Panteleev <thecybershadow gmail.com> changed:

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



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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Walter Bright <bugzilla digitalmars.com> changed:

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



12:11:54 PDT ---

 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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




12:12:48 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.
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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




12:21:10 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.
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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




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
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




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: -------
May 17 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


twk <twkrimm gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |twkrimm gmail.com



I would like to have Windows 2000 supported,
but I will understand if you decide not to support Windows 2000.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 20 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




22:09:23 PST ---

 Jonathan,
 After quickly patching out RtlCaptureContext,
Can calling RtlCaptureContext simply be bypassed if the program is running on Win2K? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 20 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




00:56:37 PST ---

 Can calling RtlCaptureContext simply be bypassed if the program is running on
 Win2K?
RtlCaptureContext is non-essential (it's used for stack trace generation for uncaught exceptions), so yes. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 21 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Jonathan M Davis <jmdavisProg gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Platform|All                         |x86
         OS/Version|All                         |Windows



PST ---
Why would you change this to All Platforms and All OSes? It's Windows-specific.
Windows _2000_ specific, no less. It should be x86 Windows.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 06 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




Sorry, it was a 'misplaced tab in Opera' (I opened the wrong link :)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 06 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




PDT ---
I would note that with 2.059, we removed support for Windows 9x.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 27 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




2012-05-12 10:01:09 MSD ---
A pull for Windows 2000 support:
https://github.com/D-Programming-Language/druntime/pull/212

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 11 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Jonathan M Davis <jmdavisProg gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WONTFIX



PDT ---
It looks like we've decided that Win2k is not supported anymore. We will
probably go with the official policy of only supporting versions of Windows
that Microsoft still supports.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 08 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Denis Shelomovskij <verylonglogin.reg gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|WONTFIX                     |



2012-07-09 10:36:11 MSD ---

 It looks like we've decided that Win2k is not supported anymore. We will
 probably go with the official policy of only supporting versions of Windows
 that Microsoft still supports.
Reopened, because the issue is that there is no notes in changelog/download pages and this confuses D users. As I wrote:
 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".
-- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 08 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Alex Rønne Petersen <alex lycus.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |alex lycus.org



CEST ---
Please submit a pull request to the dpl.org repo so we can get this out of the
way. :)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 09 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




00:30:05 PDT ---
https://github.com/D-Programming-Language/d-programming-language.org/pull/312

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 07 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




00:36:10 PDT ---
https://github.com/D-Programming-Language/d-programming-language.org/pull/312

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 07 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024




Commits pushed to master at
https://github.com/D-Programming-Language/d-programming-language.org

https://github.com/D-Programming-Language/d-programming-language.org/commit/e65e5ebf90834cb5590aa95a886b515db03d94be
fix Issue 6024 - Windows 2000 SP4 is not supported any more? And what is still
supported?

https://github.com/D-Programming-Language/d-programming-language.org/commit/8b0d9ea28a7aaffe88a8ace5545cc0ae342af11e


fix Issue 6024 - Windows 2000 SP4 is not supported any more? And what is...

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 07 2013
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6024


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
                 CC|                            |andrej.mitrovich gmail.com
         Resolution|                            |FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 07 2013