Zig 0.14 Programlama Dili: C Alternatifi Sistem Programlama Başlangıç Rehberi (2026)

09.03.2026 19:43 Haber

C ve C++ yerine ne kullanılır? Rust çok mı karmaşık geldi? O zaman Zig programlama dili tam size göre. Alesta Web olarak Zig 0.14'ü inceledik: sıfır gizli kontrol akışı, sıfır gizli bellek tahsisi, C interoperability ve놀라울 derecede basit syntax. İşte 2026'da Zig öğrenmek için kapsamlı başlangıç rehberi.

Zig Nedir? (What is Zig?)

Zig, Andrew Kelley tarafından 2016'da geliştirilen, sistem programlama (systems programming) için tasarlanmış modern bir dildir. C'nin yerini almak için değil, daha iyi bir C olmak için yazıldı. 2026 itibarıyla v0.14 ile birlikte production kullanımına oldukça yaklaşmış durumda.

Zig'in Temel Felsefesi / Core Philosophy

1. Gizli kontrol akışı yok (No hidden control flow)
2. Gizli bellek tahsisi yok (No hidden memory allocations)
3. Önişlemci makro yok (No preprocessor macros)
4. Garbage collector yok (No garbage collector)
5. Runtime exception yok (No runtime exceptions)
? Kimler Kullanıyor? / Who Uses Zig?

Bun.js JavaScript runtime, TigerBeetle veritabanı ve bazı oyun motorları Zig ile yazılmış. Bun runtime'ın Node.js'den 3-5x hızlı olması büyük ölçüde Zig'e dayanıyor.

Neden Zig? C ve Rust ile Karşılaştırma (Why Zig? Comparison with C and Rust)

Özellik / Feature C Rust Zig
Öğrenme Eğrisi Orta Zor (borrow checker) Orta ✅
Bellek Güvenliği Manuel (unsafe) Compile-time güvenli Manuel + optional safety
C Interop Native ✅ FFI gerektirir Native ✅
Derleme Süresi Hızlı Yavaş Hızlı ✅
Cross Compilation Karmaşık Orta Çok kolay ✅

Zig 0.14 Kurulumu (Installation)

Linux/macOS Kurulumu

# Zig 0.14 indir (tarball)
wget https://ziglang.org/download/0.14.0/zig-linux-x86_64-0.14.0.tar.xz

# Aç
tar -xf zig-linux-x86_64-0.14.0.tar.xz

# PATH'e ekle (~/.bashrc veya ~/.zshrc)
echo 'export PATH=$HOME/zig-linux-x86_64-0.14.0:$PATH' >> ~/.bashrc
source ~/.bashrc

# Kontrol et
zig version
# → 0.14.0

Windows Kurulumu

# winget ile kur (Windows Package Manager)
winget install zig.zig

# Veya scoop ile:
scoop install zig

# Kontrol et:
zig version

ZLS (Zig Language Server) Kurulumu - VSCode için

# VSCode'da "Zig Language" extension kur
# Ardından ZLS otomatik indirilir

# Manuel kurulum:
wget https://github.com/zigtools/zls/releases/download/0.14.0/zls-linux-x86_64.tar.gz
tar -xf zls-linux-x86_64.tar.gz
sudo mv zls /usr/local/bin/

İlk Zig Programı (First Zig Program)

Proje Oluşturma / Create Project

# Yeni Zig projesi oluştur
mkdir merhaba-dunya && cd merhaba-dunya
zig init

# Oluşturulan dosyalar:
# ├── build.zig        ← Build scripti
# ├── build.zig.zon    ← Paket tanımı (package manifest)
# └── src/
#     └── main.zig     ← Ana kaynak dosya

src/main.zig - Merhaba Dünya

const std = @import("std");

pub fn main() void {
    // stdout'a yaz
    const stdout = std.io.getStdOut().writer();
    stdout.print("Merhaba Dünya! Alesta Web'den selamlar.\n", .{}) catch {};
}

// Derleme ve çalıştırma:
// zig build run

Derleme Seçenekleri / Build Options

# Geliştirme modunda çalıştır
zig build run

# Release binary üret (optimize edilmiş)
zig build -Doptimize=ReleaseFast

# Farklı platform için cross-compile
zig build -Dtarget=x86_64-windows
zig build -Dtarget=aarch64-linux
zig build -Dtarget=x86_64-macos

Bellek Yönetimi: Allocator Sistemi (Memory Management: Allocator System)

Zig'in en önemli özelliği explicit allocator sistemidir. Her fonksiyon hangi allocator kullandığını açıkça belirtir — gizli bellek tahsisi yoktur.

Allocator Kullanımı / Using Allocators

const std = @import("std");

pub fn main() !void {
    // General Purpose Allocator (geliştirme için - memory leak tespit eder)
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const allocator = gpa.allocator();

    // Dinamik bellek tahsis et
    const dizi = try allocator.alloc(u8, 100);
    defer allocator.free(dizi);  // Temizlemeyi unutma!

    // ArrayList kullanımı
    var liste = std.ArrayList(i32).init(allocator);
    defer liste.deinit();

    try liste.append(42);
    try liste.append(100);

    std.debug.print("Liste: {any}\n", .{liste.items});
}
? Allocator Türleri / Allocator Types:
  • GeneralPurposeAllocator - Geliştirme (leak tespiti)
  • ArenaAllocator - Toplu serbest bırakma (bulk free)
  • FixedBufferAllocator - Stack üzerinde (gömülü sistemler)
  • c_allocator - C malloc/free wrapper

Hata Yönetimi: Error Union Types (Error Handling)

Zig'de exception yoktur. Hatalar değer olarak döndürülür ve compile time'da yakalanmak zorundadır.

Error Union ve try/catch

const std = @import("std");

// Hata seti tanımla (define error set)
const DosyaHatasi = error{
    DosyaBulunamadi,
    OkumaHatasi,
    YazmaHatasi,
};

// !void = hata döndürebilir veya void
fn dosyaOku(yol: []const u8) DosyaHatasi![]u8 {
    _ = yol;
    return DosyaHatasi.DosyaBulunamadi;
}

pub fn main() void {
    // try: hata varsa üst fonksiyona ilet
    const icerik = dosyaOku("/tmp/test.txt") catch |err| {
        std.debug.print("Hata: {}\n", .{err});
        return;
    };
    _ = icerik;
}

C Kodu ile Entegrasyon (C Interoperability)

Zig'in süpergücü: mevcut C kütüphanelerini header dosyası olmadan kullanabilirsiniz.

C Fonksiyon Çağırma / Calling C Functions

const c = @cImport({
    @cInclude("stdio.h");
    @cInclude("string.h");
});

pub fn main() void {
    // C'nin printf'ini Zig'den çağır
    _ = c.printf("Merhaba C'den! - Alesta Web\n");

    // strlen kullanımı
    const uzunluk = c.strlen("Zig harika!");
    _ = c.printf("Uzunluk: %zu\n", uzunluk);
}

Zig'i C Derleyicisi Olarak Kullanma (Zig as C Compiler)

# Zig ile C kodu derle (clang'den daha iyi cross-compile)
zig cc -o program main.c

# Windows için cross-compile (Linux'tan):
zig cc -target x86_64-windows -o program.exe main.c

Zig 0.14 Yenilikleri (What's New in Zig 0.14)

Öne Çıkan Değişiklikler

✅ Build System iyileştirmeleri (daha hızlı incremental compile)
✅ @trap() builtin eklendi (undefined behavior için)
✅ std.Random API yeniden tasarlandı
✅ Async/await sistemi yeniden yazılıyor (önizleme)
✅ WASI (WebAssembly System Interface) desteği iyileştirildi
✅ Hata mesajları çok daha okunabilir hale geldi
✅ Compiler bootstrap süresi ~%15 iyileşti
⚠️ Dikkat / Warning:

Zig henüz 1.0 sürümüne ulaşmadı. Her minor sürümde breaking changes olabilir. Production kritik projeler için dikkatli değerlendirin. Bun.js gibi projeler kendi Zig fork'larını kullanıyor.

✅ Zig Hazır! (Zig is Ready!)

Zig 0.14, sistem programlama dünyasında C ve C++'a ciddi bir alternatif sunuyor. Alesta Web olarak özellikle C interoperability ve cross-compilation yeteneklerinin etkileyici olduğunu söyleyebiliriz. Rust'ın karmaşıklığından çekinen ama C'nin güvensizliğinden kaçmak isteyenler için Zig çok mantıklı bir seçim.

Hızlı Özet / Quick Summary:

  • ✅ Zig 0.14 kuruldu (Zig 0.14 installed)
  • ✅ İlk program çalıştırıldı (first program running)
  • ✅ Allocator sistemi anlaşıldı (allocator system understood)
  • ✅ C interop öğrenildi (C interop learned)
  • ✅ Cross compilation test edildi (cross compilation tested)

Faydalı Linkler / Useful Links:

© 2026 AlestaWeb - Tüm hakları saklıdır.

WM Tools
💫

WebMaster Tools

15 Profesyonel Araç