Thread overview
D Runtime nedir?
Feb 27, 2017
zafer
Feb 27, 2017
zafer
Jun 11, 2017
Salih Dinçer
Jun 22, 2017
Salih Dinçer
February 27, 2017

Merhaba,
D runtime nedir? Ne amaçla kullanılır? Nasıl çalışır ve oluşturduğumuz D programlarının neresinde yer alır?

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

February 27, 2017

Peki, DRuntime bizim D ile oluşturduğumuz çalıştırılabilir dosyaların içine mi yerleşiyor? Runtime kodlarını derleyici otomatik olarak mı ekliyor?

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

February 27, 2017

Her dilde bir runtime var. Kodları programın çalışması sırasında destekleyen kodlara deniyor.

D'dekiler şunlar:

  • Program çalıştırılırken verilen parametre değerlerini (arguments) bir araya getirmek

  • Programın kullanacağı ve dil kavramlarıyla ilgili ortamı hazırlamak. Örneğin, çöp toplayıcıyı ilklemek

  • Programın main ile başlayan noktasını parametre değerleri ile çağırmak

  • Dil kurallarını desteklemek. Örneğin, bir diziye ~= işleci uygulandığında dizinin ilklenmiş olup olmadığına bakmak, sonra sonunda yer olup olmadığına bakmak, yokta çöp toplayıcıdan yeni yer ayırmak, elemanları oraya taşımak, vs. (Eşleme tabloları (AA), Unicode desteği, vs.)

  • Programın nasıl sonlandığına göre çıktıya Assert bilgisi veya Exception bilgisi yazmak, çalıştıran ortama olası dönüş değerini döndürmek

Onları kafadan yazdım. Referans olarak, tam proje şurada:

https://github.com/dlang/druntime

Ali

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

February 27, 2017

Evet ve evet. :)

Bu da gömülü sistemlerde D kullanmak isteyen kişiler için program boyutu açısından sorun oluşturuyor. Druntime'ı programdan çıkartmak için farklı yöntemler deneyenler var:

  • Druntime işlevlerini bağlayıcı yoluyla çıkartıyorlar

  • Standart olarak gelen druntime işlevleri yerine aynı isimdeki kendi boş işlevlerini yazıyorlar

Sonuçta kısıtlı da olsa D kullanabiliyorlar. Ben bundan fazla ayrıntısını bilmiyorum ama kısa süre önce Reddit'te bir tanesinin blogu çıkmıştı:

https://www.reddit.com/r/programming/comments/5ug222/bios_boot_to_d/

EK: Aslında o blogun bir önceki yazısı konuyla daha ilgili. Druntime'ın programdan çıkartılmasını anlatıyor:

https://theartofmachinery.com/2016/12/18/d_without_runtime.html

Ali

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

June 11, 2017

Merhaba Ali hocam,

Verdiğin cevaplar gerçekten de bir hoca edasıyla şekillenip bizlere ulaşıyor. Sakın "aman estağfirullah canım" deme burada mütevaziliğe gerek yok, süpersin hocam :)

Dolaylı da olsa bu konuyu şu güncel "Web sayfasından uygulama çalıştırmak (http://ddili.org/forum/post/12626)" başlığı ile ilgili olduğu için araya iliştirmek istiyorum. D'yi ben de çok sevenler arasındayım ve şu an benim için hobi olsa da bundan para kazanmak isterdim ya da boş iş imkanları açarak kazandırtmak...

Ama şu run-time, bizi kısıtlı sunucu imkanlarıyla zorlayabilir. Yani D'de küçük bir uygulama yazsak bile hafızada bunun çalışır ve etkin şekilde kalabilmesi için fazlan sistem kaynağı demek oluyor. Bir sitenin ziyaretçisi arttıkça bu anlık her kullanıcı için dehşet miktarda hafıza demek.

Belki çözüm PHP ve Perl gibi script dillerinde olduğu gibi çıktı üreten birden fazla JSON veya DUB dosya olması ve bunları yorumlayan tek executable dosya çalışması. Ne dersiniz?

Sevgiler, saygılar...

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

June 12, 2017

Ama D programı sunucu olarak çalıştığında her kullanıcı için ayrı başlatılmıyor. Her kullanıcı açık porttan giriyor, her kullanıcıya haberleşmeye devam edilecek ayrı bir port veriliyor ve tek sunucu hepsini idare ediyor.

Söylediğin CGI yöntemi için geçerli ama o durumda bile işletim sistemi kullanılan bellek sayfalarını paylaştırıyor. Örneğin, 100 D programı çalışıyor diye druntime bellekte 100 farklı yere kopyalanmıyor. Sözde 100 farklı druntime oluyor çünkü her program kendi druntime'ına sahip olduğunu sanıyor ama aslında yer kaplama açısından tek yer harcanıyor. Bunu söylerken druntime'ın kodlarından bahsediyorum çünkü her programın çöp toplayıcısı kendine ait bellek sayfaları kullanıyor. Ama dediğim gibi, bu CGI yönteminde geçerli. Tek sunucu olduğunda değil.

Öte yandan haklı da olabilirsin. Ben de kendi deneyimim üzerine konuşmuyorum. Başkalarının yaptıklarına bakıyorum.

Ali

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

June 22, 2017

Bir VPS'e SSH ile bağlanıp web sunucusunu kapamadan başka porttan deneme yapılabilir sanırım. Sonra diğer sunucu kapanıp yükü D programına vermemiz durumunda bu web sitesini taşır mı denemek lazım.

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