Thread overview
dmd 2.077 ... 2.084 çıktı
Feb 27, 2019
kerdemdemir
February 26, 2019

En son 2.076'nın haberini 2 Eylül 2017'de vermişim. Geçen sürümlerin benim için kayda değer olanakları aşağıda. Bazılarını ben de yeni öğreniyorum. :)

2.077 https://dlang.org/changelog/2.077.0.html

2.078 https://dlang.org/changelog/2.078.0.html

  • -betterC modu biraz daha kullanışlı hale geldi.

  • Sayı ortalaması alan std.algorithm.mean eklendi.

2.079 https://dlang.org/changelog/2.079.0.html

  • delete anahtar sözcüğünü emekliye ayrılma süreci (deprecation) sonunda başladı.

  • @nogc kodun hata atabilmesini sağlayan şimdilik deneysel -dip1008 derleyici seçeneği eklendi.

  • -i derleyici seçeneği modülleri komut satırında belirtmeye gerek bırakmadan otomatik olarak ekliyor.

  • @safe kodda dizilerin .ptr niteliği artık kullanılamıyor.

  • Çöp toplayıcıyı hiç kullanmayan programları gereksiz bir masraftan kurtarmak için çöp toplayıcı artık ilk kullanımda (tembel olarak) ilkleniyor.

  • Dizgilerin format'a şablon parametresi olarak verilmeleri (örneğin, format!"%s"(a)), format'ın güvenli kullanımına ek olarak artık daha hızlı işlemesini de sağlıyor: format sonuç dizginin uzunluğunu baştan bilebildiğinden bellekten tek seferde yer ayırabiliyor.

  • std.algorithm.fold gibi işleyen std.parallelism.TaskPool.fold eklendi. (Benim tek kayda değer Phobos katkım. :) )

  • toString artık OutputRange çeşidinden aralık kullanabiliyor.

2.080 https://dlang.org/changelog/2.080.0.html

2.081 https://dlang.org/changelog/2.081.0.html

  • Sözleşmeli programla (contracts) için çok daha kullanışlı ifadeli söz dizimi

2.082 https://dlang.org/changelog/2.082.0.html

  • @system (@safe olmayan) kodların debug kod bloklarında kullanılmaları mümkün

  • Kullanıcı nitelikleri (UDA - user defined attribute) işlev parametrelerinde kullanılabiliyor

  • Eşleme tablolarına "eleman mevcut değilse buyur bu ifadeyi kullan" anlamına gelen .require işlevi eklendi

  • Eşleme tablolarına "eleman mevcut ise bu işlemi, değilse şu işlemi uygula" anlamına gelen .update işlevi eklendi

  • Örneğin bir araklığın elemanlarından sabit uzunluklu dizi (static array) oluşturmaya yarayan std.array.staticArray eklendi (Başka yolla mümkün değildi. :) )

2.083 https://dlang.org/changelog/2.083.0.html

2.084 https://dlang.org/changelog/2.084.0.html

  • -check derleyici seçeneği hangi olası hataların denetleneceğini belirliyor: assert, bounds (dizi dışına çıkma), in (sözleşme), invariant (sözleşme), out (sözleşme), switch

  • -color seçeneği derleyicinin çıktısını renklendiriyor

  • -mixin derleyici seçeneği, mixin ile üretilen kodu kaydediyor

2.085 (Çıkmak üzere) https://dlang.org/changelog/2.085.0.html

  • --DRT-gcopt=gc:precise derleyici seçeneği, nesne çeşitlerinden haberi olan (precise) çöp toplayıcı kullanılmasını sağlıyor

Ali

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

February 27, 2019

Değişiklikleri görmek insanı sevindirip motive ediyor.

Alıntı:

>

Sayı ortalaması alan std.algorithm.mean eklendi.

Alakasız olacak ama algorithm.mean gördüğüme sevindim. Olurda variance hesaplamak isteyen olursa ben şöyle yapıyordum:

double mean = list.sum() / list.length ;
double variance = sqrt(reduce!( (a,b) => a + pow(b - mean,2.0) / list.length )(0.0, list))/mean;

Artıl sum()/length dememe gerek kalmamış tek satıra çevrilebilir belki.

Alıntı:

>

delete anahtar sözcüğünü emekliye ayrılma süreci (deprecation) sonunda başladı.

Güle güle hiç kullanmadığım delete.
Alıntı:

>

Sözleşmeli programla (contracts) için çok daha kullanışlı ifadeli söz dizimi

Bu sözleşmeli programlama bu işlerden çok anlamayan programcılar için ( ben :) ) baya kafa karıştırıyor. Yok efendim "body" filan baya yeni bilmediğim anahtar kelime geliyor. Benim gibi artık eskiyen C++ tabanlı yazılımcılar için ne yazıkki bir dezavantaj olarak görüyorum. Ama dil için sevinçliyim.

Alıntı:

>

Eşleme tablolarına "eleman mevcut değilse buyur bu ifadeyi kullan" anlamına gelen .require işlevi eklendi

Eşleme tablolarına "eleman mevcut ise bu işlemi, değilse şu işlemi uygula" anlamına gelen .update işlevi eklendi

Bizi eğer "in" gibi anahtar kelimelerden kurtaracaksa ne güzel.

Genel olarak Arog filminde Cem Yılmazın dediği gibi "Cilalı taş süper abi ". https://youtu.be/BsGh0_VDoXQ?t=2410 :)

Erdemdem

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

February 27, 2019

Sözleşmeli programlamanın bazı sorunları var. (Örneğin, hangi denetimler sözleşmeye ait olmalı, hangi denetimler işlevin içinde işletilmeli?) Ama yine de kullanışlı bir olanak ve bu yeni expression-based contract syntax yazımı çok güzelleştiriyor. Örneğin body'ye gerek bırakmıyor. (Ek olarak, istendiğinde 'body' yerine artık 'do' da yazılabiliyor. Böylece 'body' gibi bir sözcüğü artık değişkenler için filan da kullanabiliyoruz.)

int[] foo(int adet, int değer)
 in (adet > 0)                        // <-- Artık kod bloğu değil
 out (sonuç; sonuç.length == adet)    // <-- Artık kod bloğu değil
{
 import std.range;
 return değer.repeat(adet).array;
}

void main() {
 auto a = foo(7, 42);
}

Ali

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