C3 0.8.5: Platformlar Arası Pencere Kütüphanesi ve C Arka Ucu

C3 0.8.5: Platformlar Arası Pencere Kütüphanesi ve C Arka Ucu
audio-thumbnail
C3 0.8.5: Platformlar Arası Pencere Kütüphanesi ve C Arka Ucu
0:00
/0

C3 0.8.5: Platformlar Arası Pencere Kütüphanesi ve C Arka Ucu

C3 0.8.5 sürümüyle birlikte, dilin masaüstü uygulamaları geliştirmeye yönelik kapasitesini önemli ölçüde artıran yeni bir kütüphane ve geliştirme aracı tanıtıldı. Bu sürüm, yalnızca küçük bir sayısal değişiklikle geliyor olsa da, içindeki iki temel yenilik, hem geliştiriciler için hem de C3 ekosistemi için önemli bir adım temsil ediyor: hem kendi içinde bir pencere yönetimi kütüphanesi olan std::gfx, hem de C diline dönüştürülebilir bir derleyici arka planı olan deneysel bir C arka planı. Bu gelişmeler, C3'ün bir dil olarak nasıl daha güçlü ve esnek bir hale geldiğini gösteriyor.

std::gfx: Pencere Yönetimi ve Giriş Yönetimi için Standart Kütüphane

C3'ün 0.8.5 sürümünde yer alan std::gfx kütüphanesi, pencere yönetimi, kullanıcı girişleri, monitörler, panolar ve sürükleyip bırakma gibi temel masaüstü özelliklerini destekleyen, kendi içinde bir pencere yönetimi sistemi oluşturmaya odaklanan bir kütüphanedir. Bu kütüphane, doğrudan ekran çizimi yapmak yerine, geliştiricilerin istedikleri bir grafik API'siyle (OpenGL, Vulkan, DirectX, Metal veya WebGPU gibi) çalışmasına olanak tanır.

Neden Bir Pencere Yönetimi Kütüphanesi?

Genellikle standart kütüphanelerde grafiksel kullanıcı arabirimi (GUI) özellikleri yer almaz. Java gibi dillerin java.awt veya Swing gibi grafik kütüphanelerini standart kütüphaneye eklemesi, endüstride büyük bir etki yaratmış olsa da, bu tür çözümler genellikle işletim sistemlerine yakın olmayan bir kullanıcı deneyimi sunmuş ve performans sorunlarına yol açmıştır. Bu nedenle, dillerin genellikle bu tür kütüphaneleri içermez.

C3 ise bu sorunu farklı bir açıdan ele alıyor: tamamen kendi içinde bir pencere yönetimi kütüphanesi geliştirerek geliştiricilere temel yapı taşlarını sunuyor. std::gfx, sadece pencere oluşturmayı, kullanıcı girişlerini almayı ve ekran yüzeylerini yönetmeyi hedefliyor. Çizim işlemleri ise geliştiriciye kalmış; bu sayede hem esneklik hem de kontrol sağlanıyor.

Kullanım Örneği ve Platformlar

module hello;
import std;

fn void main() {
    gfx::init("Hello")!!;
    defer gfx::finalize();

    GfxWindow* win = gfx::create_window("Hello", 200, 200, 900, 600)!!;
    defer win.destroy();

    while (!win.should_close()) {
        if (try e = gfx::wait(gfx::WAIT_FOREVER)) {
            switch (e.type) {
                case WINDOW_CLOSE: return;
                case KEY_PRESSED:
                    if (e.key.value == ESCAPE) return;
                    if (e.key.value == F) win.set_fullscreen(!win.is_fullscreen());
                    default: break;
            }
        }
    }
}

Bu küçük kod parçası, C3'ün std::gfx kütüphanesini nasıl kullanacağımızı gösteriyor. Bu kütüphane, Windows, macOS, Linux (X11 veya Wayland), BSD sistemleri ve hatta Emscripten ile tarayıcıda çalışabilir. Wayland desteği, wlr-layer-shell protokolünü de destekliyor.

Geliştirici için Ne Anlama Geliyor?

std::gfx kütüphanesi, çok sayıda platformda çalışabilen bir uygulama yazmak isteyen geliştiriciler için büyük bir avantaj. 15.000'den fazla satır kod içeren bu kütüphane, X11 ve Wayland arka planları için yaklaşık 6.000 satır kodu içeriyor. Bu platformlar arası uygulamaların geliştirilmesi için gerekli olan çok fazla platform özel kodu, artık geliştiricilerin kendileri tarafından yazılmaması gerekiyor. Bu kütüphane, hem test edilmesi hem de hata ayıklanması açısından daha güçlü bir temel oluşturuyor.

Not: std::gfx henüz alfa seviyesinde olup, 0.9.0 sürümüne kadar API'si üzerinde çalışılacak. Bu nedenle, deneysel bir yapıyla kullanılması öneriliyor.

Deneysel C Arka Planı: Yeniden Hedefleme ve Esneklik

C3 0.8.5 ile birlikte gelen diğer büyük gelişme ise deneysel bir C arka planı. Bu, C3 derleyicisinin artık C diline dönüştürülebilir hale gelmesini sağlıyor. --backend=c bayrağı ile komut satırından derleyici, C kodu üretiyor ve bu C kodu, c3c'nin bildiği bir C derleyiciyle derleniyor.

Neden C Arka Planı?

Bu özellik, özellikle şu durumlarda çok faydalı oluyor: - LLVM tarafından desteklenmeyen platformlara hedef alınması gerektiğinde. - Belirli bir üreticiyle imzalanan bir sözleşmede belirtilen C veya C++ derleyicisinin kullanılması gerektiğinde.

Bu arka plan, hala öncü (pre-alpha) seviyesinde olup, bazı önemli sınırlamaları var. Örneğin, güvenli mod kontrolü (dizi sınırları, null işaretçisi, bölme sıfıra gibi) tam olarak desteklenmiyor. Ayrıca @section ve @noinline gibi öznitelikler yok sayılırken, bazı built-in fonksiyonlar ($$sysclock, $$breakpoint) çalışmaz. Ancak bu, geliştiricilerin deneysel olarak deneyimlemesi ve geri bildirim sağlaması için bir kapı oluşturuyor.

Nasıl Kullanılır?

c3c compile --backend=c --cflags "-std=c23" hello.c3

Bu komutla, hello.c3 dosyası C diline dönüştürülebilir ve ardından c3c'nin bildiği bir C derleyiciyle derlenebilir.

Dil Geliştirmeleri ve Geliştirme Esnekliği

C3 0.8.5 sürümü, sadece grafik ve derleme araçları değil, aynı zamanda dilin kendisindeki gelişmelerle de dikkat çekiyor. Örneğin, $feat ifadesi artık @feat ile aynı sentaksı destekliyor. Bu, const String PLATFORM = $feat(MACOS & AARCH64, LINUX | WIN32) ? "listed" : "not listed"; gibi ifadelerin daha tutarlı ve anlaşılır yazılmasını sağlıyor.

Ayrıca, @section özniteliği artık yerel statik değişkenlerde de kullanılabilir hale geldi. Bu, geliştiricilerin koda daha iyi yapılandırılmış ve yönetilebilir bir şekilde ulaşmasını sağlıyor.

Sonuç: C3'in Masaüstü Yönüne Doğru Bir Adım

C3 0.8.5, sadece bir sürüm yükselmesi değil, dilin masaüstü uygulamaları geliştirme kapasitesini önemli ölçüde artıran bir atak oluyor. std::gfx kütüphanesi, geliştiricilerin platformlar arası uygulamalar yazarken başlangıçta karşılaştığı karmaşık platform özel kod problemlerini çözüyor. Aynı zamanda, deneysel C arka planı, C3'nin daha geniş bir yelpazede kullanılabilirliği sağlıyor.

Bu gelişmeler, C3'ün sadece bir dilden çok, bir geliştirme platformu haline gelmesine katkı sağlıyor. Gelecek sürümlerle birlikte bu kütüphaneler ve araçlar daha olgunlaşacak ve C3, hem mobil hem de masaüstü uygulamaları geliştirmek isteyen geliştiriciler için daha güçlü bir seçenek haline gelebilir.