Forum: Duyurular RSS
dmd 2.072 çıktı
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4515 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: dmd 2.072 çıktı
  http://dlang.org/changelog/2.072.0.html

İlginç değişiklikler:

  • Virgül işlecinin değerinin kullanılması emekliye ayrıldı (deprecated). Bu işleç C, C++, ve önceki D'de şu anlama geliyordu: virgüllerle ayrılmış ifadeleri yazıldıkları sırada işlet ve sonuçta sonuncu ifadenin değerini kullan:
void main() {
    int a;
    int sonuç = (++a, ++a, a + 10);
    assert(sonuç == 12);    // Değer, a + 10'dur:
}
Hatalara ve karışıklıklara neden olduğundan virgül işlecinin değerinin kullanılması artık D'de emekliye ayrıldı. (Bunu C'ciler ve C++'çılar da bunu büyük hevesle beklerler.) Virgül işleci bütünüyle kaldırılamadı çünkü for döngüsünün ilerletme bölümünde kullanımı çok yaygın:
    for ( ;  ; ++i, ++j) {    // bu kullanım hâlâ geçerli ve zaten hatalı bir durum yok
        // ...
    }
Yakın zaman önce kendi başımdan geçen virgül işleci anıları:

1) DConf 2016'daki sunumumda doğru olduğunu düşündüğüm aşağıdaki yapıyı kullanmış ve bir saydamda göstermiştim:
    synchronized (kilitA, kilitB) {
        // ...
    }
O, hesapta her iki kilidin de kilitlenmesini gerektiren bir deyim ve Andrei'nin kitabında da geçiyor. Meğerse synchronized'ın bu kullanımı henüz gerçekleştirilmemiş. Derleyicinin hata vermemesinin nedeni ise parantez içindeki ifadenin virgül işleci olması ve bütün deyimin şuna dönüşmesiymiş:
    synchronized (kilitB) {
        // ...
    }
Hatta, Steve Schveighoffer hatayı sunumum sırasında göstermişti ve o olay virgül işlecinin sonunda dilden çıkartılmasına neden olmuştu. Dolaylı da olsa katkı sağlamış oldum! :p

2) Çalıştığım yerde karşılaşılan bir performans sorununda istenmeden yazılmış bir parantez nedeniyle parametreler arasında olması gereken bir virgül, virgül işleci olarak algılanmış ve lazy olması gereken bir ifadenin hevesle işletilmesine neden olmuş. (Tam ayrıntısını bilmiyorum.)

  • Dizgi sabitlerinin otomatik olarak birleştirilmeleri emekliye ayrıldı. Birleştirilmeleri istendiğinde aralarına ~ koyulması gerekiyor. (Derleme zamanında olduğundan bunun bir performans maaliyeti yok.)
    string[] arr = [ "Hello", "buggy" "World" ]// Hata: İstenmeden iki elemanlı dizi oluyor (üç yerine) 

  • __FILE__'a ek olarak yeni __FILE_FULL_PATH__ geldi:
    // Ek olarak, pragma(msg)'ın birden fazla parametre alabildiğine de dikkat edin.
    // Bunu kısa zaman önce öğrenmiştim.
    pragma(msg, "Bu kaynak dosyanın adı     : ", __FILE__);
    pragma(msg, "Bu kaynak dosyanın tam yolu: ", __FILE_FULL_PATH__);

Kitapları güncelledim:

  http://ddili.org/ders/d/index.html

Ali
Bu mesaj acehreli tarafından değiştirildi; zaman: 2016-10-31, 13:57.
zafer #2
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Gerçek hayat hikayeleri her zaman ilgi çekici ve öğretici olur. Ali bildiğim kadarıyla artık tüm gün D yazıyorsun :) Ara ara bizimle karşılaştığın ilginç vakaları paylaşır mısın? Hem D ile ilgili olması hemde senin güzel anlatımınla çok keyifli olacağına eminim.
https://github.com/zafer06 - depo
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Duyurular RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-10-23, 15:33:25 (UTC -07:00)