Pinball… Windows 95 vaktinden XP vaktine kadar tüm işletim sistemlerinde olan, oyuncuların gönlüne taht kurmuş bir oyun. Pekala neden artık varsayılan olarak Windows’un bir kesimi değil?
Çok uzun müddettir Windows grubunda olan Raymond Chen, oyunun kaldırılma sebebi olarak 64 bitlik kayan nokta (floating point) aritmetiğini gösteriyor. Nesnelerin çarpışıp çarpışmadığı bir kayan nokta bug’ı sebebiyle bilgisayar tarafından anlaşılamıyormuş. Bunun yanında grubun elinde kısıtlı bir süre ve dokümante edilmemiş bir kod varmış. Bu yüzden oyun, Windows XP 64 Bit sürümünden kaldırılmış. Lakin durum yalnızca bundan ibaret değil.
Sunucular ve iş istasyonları için daha fazla işlemci ve bellek gücüne ihtiyaç olduğu ortadaydı. Intel ve HP, kolları sıvayarak yeni bir işlemci mimarisi hazırlamaya başladı. Microsoft ise bu işlemcilere Windows’u geçirmek istiyordu lakin geliştiricilerde yalnızca Itanium işlemcilere ilişkin bir emülatör mevcuttu. Milyonlarca satırın kelam konusu olduğu bir yazılım projesinde emülatör kullanmak çok fazla vakit alan bir iş.
1999’da Compaq, Alpha işlemciler kullanan bilgisayarlara Windows takviyesini kesti. Bunun sonucunda Microsoft’un elinde Alpha işlemciye sahip bolca bilgisayar, platforma ilişkin sayfalarca dokümantasyon ve platforma yazılım geliştirme konusunda tecrübeli isimler kaldı.
Alpha, 64 bitlik RISC tabanlı bir işlemci mimarisiydi. Ellerinin altında bu iş istasyonları bulunan geliştiriciler, simülatör kullanmak yerine sistemi Alpha’ya taşıdılar. Geliştiricilerin emeli Alpha’ya yeni bir Windows sürümü çıkartmak değildi. Sistem yazılımlarının 64 bit sistemlerde nasıl çalıştığı, ne üzere yanılgıların olduğunu Alpha üzerinde gördüler. Böylelikle işin güç kısmı olan 32 bit’ten 64 bit’e yazılım geçirme safhasını tamamladılar.
Bu geçiş mühletinden ötürü Windows XP’nin farklı versiyonları mevcut. Chen’in bahsettiği “Windows XP 64 Bit Edition” sürümü, Itanium makineler ile uyumlu. Windows XP’nin 2 farklı sürümü daha mevcut; “Windows XP 64 Bit Edition Version 2003” (Itanium 2) ve “Windows XP Professional 64 Bit Edition” (x86-64). Bu versiyonların ortak noktası ise hepsinin çıkış noktasının Alpha üzerinde derlenen sürüm tabanlı olması.
Pinball’un geçirildiği ve geçirilmeye çalışıldığı tüm platformlar IEEE 754 kayan nokta aritmetik standardını kullanıyor. Bu standarda nazaran bit düzeyinde süreçler yapılarak bilimsel gösterim kullanılabilir ve ondalıklı sayıları bu türlü gösterebiliriz. Ama bunu limitli bir bit alanında yaptığımız için işler beklendiği üzere gitmeyebiliyor.
Örneğin Python’da 0.2 ile 0.1’i topladığımız vakit 0.30000000000000004 sonucunu elde ediyoruz, çünkü IEEE 754‘e nazaran 0.3 ile 0.30000000000000004’ün gösterim hali aynı! Öte yandan IEEE 754 standardında 0’ın (sıfır) bile bir işareti bulunuyor.
Ondalıklı sayıların IEEE 754 standardına nazaran gösterim biçimlerine buradan bakabilirsiniz. Ayrıyeten test ettiğimiz bilgisayarın x86-64 tabanlı bir i5-6500T işlemciye sahip olduğunu belirtelim.
Pinball, 1997 yılında kapanmış Cinematronics tarafından yazılan bir oyun. Bundan ötürü Microsoft mühendislerinin Pinball ile alakalı rastgele bir kaynağı yahut soru soracakları muhatapları yoktu. Grubun kısıtlı bir süresi ve limitli dokümantasyonu olması sebebiyle Pinball, 64 bit sistemlerde rafa kalktı.
Raymond Chen’in iddialarına nazaran Pinball’un çarpışma tespit sistemindeki bug’ın sebebi, C kütüphanesinin varsayılan yuvarlama (rounding) modunun yanlış olması yahut MSVC derleyicisiyle alakalı bir yanılgıydı. Bu kusurun sebebi ise 32 bit’ten 64 bit’e geçiş esnasında ondalık sayı gösteriminde mutlaklığın değişmesi ve yapılan yuvarlama sürecinin eski mutlaklığa nazaran yapılmasıydı. Şu anki sistemlerde Pinball’un hatasız bir formda çalıştığını da belirtelim.
Ek olarak Pinball’un kaynak kodları hala daha Cinematronics’in üst kuruluşlarında. Evvelce imzalanan NDA’den (gizlilik sözleşmesi) ötürü Microsoft, kaynak kodunu paylaşmamakla yükümlü.
Özet
Bu yazımızda siz kıymetli okurlarımız ile Pinball’un neden Windows’tan kaldırdığını paylaştık. Sizce Microsoft Pinball’u opsiyonel bir özellik olarak tekrar son kullanıcı ile paylaşabilir miydi? Görüşlerinizi “Yorumlar” kısmında bekliyoruz!