1 puan yazan GN⁺ 2023-07-10 | 1 yorum | WhatsApp'ta paylaş
  • .NET modül dosya biçiminin sınırlarını keşfederek standart çıktıya "Hello, World!" yazdıran en küçük yürütülebilir dosya oluşturuluyor.
  • Deney için yazar, C# veya CIL ile uygulanmış yönetilen bir giriş noktası kullanılması, .NET Framework 4.x.x üzerinde çalışması ve üçüncü taraf bağımlılık içermemesi gibi keyfi kurallar belirliyor.
  • Yürütülebilir dosyanın boyutunu adım adım küçültmek için null olabilir başvuru ek açıklamaları devre dışı bırakılıyor, .NET modülü elle yazılıyor, importlar ve temel yeniden konumlandırmalar kaldırılıyor, gereksiz meta veriler siliniyor ve ASCII dizgelerinin kullanımı optimize ediliyor.
  • Nihai sonuç, geçerli bir .NET PE dosyası için teorik olarak mümkün olan en küçük boyut olan 889 baytlık bir yürütülebilir dosya.
  • Makale, yürütülebilir dosya boyutunu küçültmek için yapılan her adımın kod örneklerini ve açıklamalarını sunuyor.
  • Yazar, dosya biçimini anlamanın ve yürütülebilir dosya boyutunu optimize etmek için stratejik kararlar vermenin önemini vurguluyor.
  • Kullanılmayan padding segmentine dizgeleri taşımak dosyayı 13 bayt küçültüyor.
  • mscorlib başvurusunu kaldırmak ikili dosyada yer tasarrufu sağlayabiliyor.
  • .NET metadata dizinindeki VersionString'i kısaltmak ek bayt tasarrufu sağlıyor.
  • İkili dosyanın nihai boyutu 834 bayt ve sıkıştırıldığında 476 bayta kadar daha da düşürülebiliyor.
  • Anlamsız bir proje olsa da, mevcut sistemlerin sınırlarını keşfetmek eğlenceli olabilir.
  • Yazar, başvuru amacıyla tüm kaynak kodunu GitHub'da sunuyor.
  • Makalede tersine mühendislik, code golf ve PE dosyası optimizasyonu tartışılıyor.
  • Yazar, kendi deneyimini paylaşıyor ve dosya boyutunu daha da küçültmeye yönelik ek keşifleri teşvik ediyor.
  • Bu makale yazar tarafından CC BY 4.0 ile lisanslanmıştır.

1 yorum

 
GN⁺ 2023-07-10
Hacker News görüşü
  • Michal Strehovský, .NET kullanarak 8KB'den küçük bir Snake oyunu yaptı.
  • Çalıştırılabilir dosya sistemde kurulu bir runtime gerektirdiği için bu makale insanları yanıltabilir.
  • Gerçek çalıştırılabilir dosya için güvenilir kaynak Native AOT binary'leridir.
  • Yazarın bulunduğu yer, ilgi çekici bir konum olan Antarktika'daki McMurdo İstasyonu.
  • Bölüm hizalaması 0x200 bayt olduğu için dosya boyutu büyür.
  • Demoscene 1k binary'ler üretti.
  • Binary'nin ayrıntılarını derinlemesine incelemek, güçlü içgörüler kazanmayı ve bilgiyi zenginleştirmeyi sağlayabilir.
  • Tamamen bağımsız derlenmiş bir C# Hello World yaklaşık 440 kB boyutunda olabilir.
  • Klasik .NET Framework artık kullanım dışıdır ve yeni uygulamalar bunun üzerine inşa edilmemelidir.
  • C derleyicisiyle derlemek, .NET kullanmaktan daha kolay olabilir.
  • Bazı görüşler, native olarak derlenmiş .NET çalıştırılabilir dosyalarına ilgi gösteriyor.
  • Oberon+ IDE'nin Hello.dll modülü yalnızca 2048 bayt.
  • TurboPascal v1 kullanılarak 1k'den küçük bir Hello World com oluşturuldu.