Zig — імператыўная, статычна-тыпаваная, кампілюемая сістэмная мова праграмавання агульнага прызначэння, распрацаваная Эндру Кэлі. Мова распрацавана для «надзейнасці, аптымальнасці і простасці абслугоўвання коду», падтрымлівае джынэрыкі і рэфлексію падчас кампіляцыі, крос-кампіляцыю і кіраванне памяццю ўручную. Асноўная мэта мовы — канкурыраваць (і ўдасканальваць) C, у той жа час беручы натхненне з мовы Rust.

Zig мае мноства функцый для праграмавання на нізкім узроўні, у прыватнасці: насычаныя структуры (структуры з нулявым водступамі паміж палямі), цэлалікавы тып вольнага памеру і некалькі тыпаў указальнікаў.

Кампілятар напісаны на Zig і C++, з выкарыстаннем LLVM 11 у якасці бэкэнда, такім чынам падтрымлівае ўсе тыя ж платформы, што і LLVM. Кампілятар — гэта бясплатнае праграмнае забеспячэнне з адкрытым зыходным кодам паводле ліцэнзіі MIT. Кампілятар Zig прадастаўляе магчымасць кампіляцыі C і C++, аналагічна Clang, з дапамогай каманд zig cc і zig c++, адпаведна. Мова праграмавання Nim падтрымлівае выкарыстанне zig cc у якасці кампілятара C.

Прыклады

Hello world const std = @import("std");

pub fn main(init: std.process.Init) !void { var stdout_buffer: u8 = undefined; var stdout: std.Io.File.Writer = .init(.stdout(), init.io, &stdout_buffer); try stdout.interface.print("Hello, {s}!\n", .{"world"}); try stdout.interface.flush(); }

Абагульнены звязаны спіс 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,

Спасылкі Афіцыйны сайт Zig на GitHub

Катэгорыя:Мовы праграмавання