Η πρόκληση της συμβατότητας στα 64-bit Windows
Η διατήρηση της συμβατότητας προς τα πίσω (backwards compatibility) αποτελεί ακρογωνιαίο λίθο της στρατηγικής της Microsoft. Ωστόσο, η μετάβαση στην αρχιτεκτονική 64-bit και η κατάργηση του Virtual DOS Machine (NTVDM) έθεσαν ένα σκληρό όριο: οι εφαρμογές 16-bit δεν μπορούν πλέον να εκτελεστούν εγγενώς. Η αναζήτηση για την παλαιότερη εφαρμογή GUI που «επιβιώνει» στα Windows 11 στρέφεται αναγκαστικά προς τα πρώτα 32-bit binaries της εποχής του Windows NT.
Τεχνικά εμπόδια: Από το cdecl στο stdcall
Κατά την ανάλυση builds από το 1991 και 1992, προκύπτουν δύο βασικά ζητήματα:
- PE Format: Τα πρώιμα drafts του Portable Executable (PE) format δεν είναι συμβατά με το σύγχρονο loader των Windows 11.
- Calling Conventions: Πολλές εφαρμογές της εποχής χρησιμοποιούσαν τη σύμβαση κλήσης
cdecl, όπου ο καλών (caller) καθαρίζει τη στοίβα (stack). Αντίθετα, το σύγχρονο Windows API απαιτείstdcall, όπου η συνάρτηση καθαρίζει τη στοίβα. Αυτή η ασυμφωνία οδηγεί σε διπλή αφαίρεση ορισμάτων, προκαλώντας άμεσο crash.
Η περίπτωση του CDPLAYER.EXE
Το CDPLAYER.EXE από το build 347 (Νοέμβριος 1992) αποτελεί μια ενδιαφέρουσα εξαίρεση. Η επιτυχής εκτέλεσή του οφείλεται στη χρήση του crtdll.dll, μιας βιβλιοθήκης C runtime που εξακολουθεί να παρέχεται στον φάκελο SysWOW64 των Windows 11 για λόγους διαλειτουργικότητας. Παρόλο που το hardware (CD-ROM) δεν υφίσταται πλέον, η χρήση ενός shim DLL για την εξομοίωση των κλήσεων συστήματος επιτρέπει στην εφαρμογή να λειτουργεί κανονικά.
Η λύση της εξομοίωσης
Αν αποδεχτούμε τη χρήση εργαλείων όπως το otvdm (WineVDM), τα όρια καταρρίπτονται. Με αυτόν τον τρόπο, εφαρμογές όπως το REVERSI.EXE από τα Windows 1.01 (1985) μπορούν να εκτελεστούν σε ένα σύγχρονο περιβάλλον, αποδεικνύοντας ότι το πρόβλημα δεν είναι η παλαιότητα του κώδικα, αλλά η εξέλιξη του runtime περιβάλλοντος και των υποκείμενων APIs.