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 modülü değil?
Çok uzun müddettir Windows takımında 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 takımın 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ış. Ama 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 ama 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 dayanağını 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 hedefi 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 sıkıntı 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. Lakin 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 formu 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. Takımın 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 küsurdu. Bu yanlışın sebebi ise 32 bit’ten 64 bit’e geçiş esnasında ondalık sayı gösteriminde katılığın değişmesi ve yapılan yuvarlama sürecinin eski katılığa nazaran yapılmasıydı. Şu anki sistemlerde Pinball’un hatasız bir biçimde ç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 pahalı 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!