Thread overview
dmd 2.076 çıktı
Sep 01, 2017
kerdemdemir
Sep 03, 2017
Salih Dinçer
September 02, 2017

betterC 'de ile derlediğimizde kullanamadığımız başka hangi özellikler var acaba. Benim kendi tahminimce aralıkların zincirlenmesi bile etkilenebilir. Çünkü hatırladığım kadarıyla dönüş değerlerinin çöp toplayıcı tarafından toplanması gerekiyordu bazı aralık zincirleme durumlarında. Doğrumu hatırlıyorum acaba ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 01, 2017

Reddit'teki tartışması:

https://www.reddit.com/r/programming/comments/6xf77f/version_20760_of_dmd_the_d_reference_compiler/

dmd sürümleri artık belirli bir düzene oturuyor:

  • Çift numaralı ayların 15'inde beta sürüm

  • Tek numaralı ayların 1'inde yeni sürüm

Bir önceki sürümden bu yana fazla zaman geçmediğinden bu sürümde alışık olduğumuzdan daha az değişiklik var ama bunlardan iki tanesi çok önemli:

  • static foreach

  • Geliştirilmiş -betterC

D'de static foreach zaten var gibi bir şeydi: AliasSeq gibi derleme zamanı düzeneklerinin normal foreach ile kullanımları sonucunda foreach bloğu her döngü için açılıyordu. static foreach en azından iki farklılık getiriyor:

  • foreach'in kullanılamadığı yerlerde de kullanılabiliyor. Örneğin, modül kapsamında veya bir yapının içinde kullanabiliyoruz.

  • Derleme zamanı düzeneği olmayan (ama tabii ki derleme zamanı bilinmesi gereken) ifadelerle de kullanılabiliyor.

Aşağıda iki farklı biçimde kullanılıyor.

import std.stdio : writefln;
import std.meta : AliasSeq;
import std.range : iota;

alias Türler = AliasSeq!(int, double);

// Modüle iki işlev ekleniyor
static foreach (Tür; Türler) {
   Tür ikiKatı(Tür değer) {
       return değer * 2;
   }
}

unittest {
   assert(ikiKatı(42) == 84);
   assert(ikiKatı(1.25) == 2.5);
}

void main() {
   // Buradaki iota ifadesi normalde çalışma zamanında
   // işletildiğinden eskiden olduğu gibi foreach ile kullansak,
   // döngü çalışma zamanında ilerletilirdi. Adı üstünde, static
   // foreach, döngünün derleme zamanında işletilmesini şart
   // koşuyor. Sonuçta, alt alta 3 writefln yazılmış gibi derleniyor.
   static foreach (i; 3.iota) {
       writefln("Merhaba %s", i);
   }
}

-betterC dmd seçeneği, D çalışma zamanını (D runtime) iptal ediyor. Çok basitçe, çöp toplayıcı gibi güzellikler kullanılamıyor ve dmd'nin ürettiği kod C kadar küçük boyutlu olabiliyor. Walter'ın söylediğine göre, bu olanak C programlarındaki işlevlerin ek bellek masrafı getirmeden teker teker D'ye geçirilmelerini sağlıyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 02, 2017

Ben de henüz fazla denemedim ama belgesi şurada:

https://dlang.org/spec/betterc.html

Zincirleme çağrıların ise GC ile özel bir bağlantıları yok çünkü foo(bar(a)) gibi bir çağrının a.bar.foo diye yazılmasından başka bir şey değil. Belki özel bir durumda öyledir ama şu anda aklıma gelmiyor. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 04, 2017

Alıntı (acehreli:1504334539):

>

Bir önceki sürümden bu yana fazla zaman geçmediğinden bu sürümde alışık olduğumuzdan daha az değişiklik var ama bunlardan iki tanesi çok önemli:

  • static foreach

  • Geliştirilmiş -betterC

D'de static foreach zaten var gibi bir şeydi...
Sistematik güncelleme yapmaları güzel bir şey ama az değişiklik olması bunu alışkanlık hale getireceklerini işaret ediyor sanki. Hele ki bir şeyi tekrarlama (bunu birçok şekilde yapabiliyoruz) ve D'nin olanaklarını kapama tatmin edici görünmüyor?

Elbette hataların giderilmesi de önemli ama sanki bizi her seferinde doyuracak bir gelişme beklemememiz gerekecek.; aksine birkaç sürüm sonra daha iyi hale geldiğini göreceğiz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 04, 2017

Sürümleri belirli bir düzene almak firmaların da istediği bir şeydi. "Ne zaman hazır olursa" gibi rasgele zamanlar yerine "o olanağı şu tarihte bitireceğiz" diyebilmek önemli.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]