Zig
Basisdaten
Paradigmen: imperativ, objektorientiert, funktional, parallel, modular
Erscheinungsjahr: 2016
Entwickler: Andrew Kelley
Aktuelle Version 0.10.1 (19. Januar 2023)
Typisierung: Stark, statisch
Wichtige Implementierungen: ziglang
Beeinflusst von: C, C++, Rust, Go, JavaScript/TypeScript
Betriebssystem: Plattformunabhängig
Lizenz: MIT-Lizenz
ziglang.org

Zig ist eine seit 2016 von Andrew Kelley entwickelte Programmiersprache mit objektorientierten, imperativen sowie deklarativen Sprachelementen. Sie lehnt sich äußerlich an C und TypeScript an, ohne damit sprachlich kompatibel zu sein. Der Compiler kann die Bibliotheken von C/C++ direkt importieren sowie Header-Dateien für diese Sprache bei der Kompilierung generieren. Die direkt ausführbaren Binärdateien werden in der Ursprungsimplementation durch ein LLVM-Backend erzeugt.

Die Sprache zeigt durch das "comptime" Attribut auf, wie durch Auswertung von Ausdrücken zur Kompilierzeit generische Typen einfacher geschrieben werden können, und dabei laufzeitoptimierter Code entsteht. Bei der Fehlerbehandlung und Parallelausführung lehnt es sich an Go an. Im Gegensatz zu anderen Erweiterungen von C können neue und alte Module frei gemischt werden und erlauben so eine graduelle Umstellung. Die Laufzeitbibliothek wurde nicht erweitert – es genügt eine libc-Implementierung.

Beispiele

Hello World

const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, {s}!\n", .{"world"});
}

Generische Verlinkte Listen

pub fn main() void {
    var node = LinkedList(i32).Node {
        .prev = null,
        .next = null,
        .data = 1234,
    };

    var list = LinkedList(i32) {
        .first = &node,
        .last = &node,
        .len = 1,
    };
}

fn LinkedList(comptime T: type) type {
    return struct {
        pub const Node = struct {
            prev: ?*Node,
            next: ?*Node,
            data: T,
        };

        first: ?*Node,
        last:  ?*Node,
        len:   usize,
    };
}

Einzelnachweise

  1. ziglang.org.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.