Zig (язык программирования) - Zig (programming language)

Зиг
Логотип Zig 2020.svg
Парадигмы Мультипарадигма : императивная , параллельная , процедурная , функциональная
Разработано Эндрю Келли
Впервые появился 8 февраля 2016 г . ; 5 лет назад ( 2016-02-08 )
Предварительный выпуск
0.8.0  Отредактируйте это в Викиданных / 4 июня 2021 г . ; 3 месяца назад ( 4 июня 2021 г. )
Печатная дисциплина Статический , сильный , предполагаемый , структурный , общий
Платформа x86-64 , ARM , MIPS , IA-32 , WebAssembly , RISC-V
Операционные системы Кроссплатформенность
Лицензия Лицензия MIT
Расширения имени файла .zig, .zir
Веб-сайт ziglang .org
Под влиянием
C , C ++ , LLVM IR , Go , Rust , JavaScript

Zig - это императивный , универсальный , статически типизированный , скомпилированный системный язык программирования, разработанный Эндрю Келли. Язык предназначен для «надежности, оптимальность и ремонтопригодности», поддерживая во время компиляции дженериков и отражения , кросс-компиляции и ручное управление памятью . Основная цель языка - улучшить язык C , в то же время черпая вдохновение в Rust .

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

Этап 1 компилятор написан на Zig и C ++ , с использованием LLVM 11 в качестве обратного конца, поддерживающий многие из своих родных целей. Компилятор является бесплатным программным обеспечением с открытым исходным кодом под лицензией MIT .

Компилятор Zig предоставляет возможность компилировать C и C ++ аналогично Clang с помощью команд «zig cc» и «zig c ++», предоставляя множество заголовков, включая libc и libcxx для многих различных платформ, позволяя подкомандам Zig cc и c ++ действовать как кросс-компиляторы из коробки.

Разработка Zig финансируется Zig Software Foundation (ZSF), некоммерческой корпорацией, президентом которой является Эндрю Келли, которая принимает пожертвования и нанимает нескольких штатных сотрудников.

Примеры

Привет, мир

const std = @import("std");

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

Общий связанный список

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,
    };
}

Смотрите также

использованная литература

  1. ^ Келли, Эндрю. «Введение в язык программирования Zig» . andrewkelley.me . Проверено 8 ноября 2020 .
  2. ^ «Примечания к выпуску 0.8.0» . Проверено 7 июня 2021 года .
  3. ^ «Зиг обладает всей элегантной простотой С, за исключением всех способов прострелить себе ногу» . JAXenter . 2017-10-31 . Проверено 11 февраля 2020 .
  4. ^ «Устали от C? Новый язык программирования Zig стремится быть более прагматичным и читаемым» . 2017-10-19 . Проверено 22 апреля 2020 .
  5. ^ Yegulalp, Сердар (2016-08-29). «Новый претендент присоединяется к Rust, чтобы свергнуть язык Си» . InfoWorld . Проверено 11 февраля 2020 .
  6. ^ "Зиг язык и C" . Син Corp . 2020-07-12 . Проверено 12 августа 2020 .
  7. ^ "Язык программирования Zig" . ziglang.org . Проверено 11 февраля 2020 .
  8. ^ «Обсерватория Mozilla, язык программирования Zig и SDK uSens VR / AR - дайджест новостей SD Times: 29 августа 2016 г.» . SD Times . 2016-08-29 . Проверено 11 февраля 2020 .
  9. ^ "Язык программирования Zig" . ziglang.org . Проверено 11 февраля 2020 .
  10. Компания Sudo Null. «Sudo Null - IT-новости для вас» . SudoNull . Проверено 11 февраля 2020 .
  11. ^ Келли, Эндрю. «Небезопасный зиг безопаснее, чем небезопасный ржавчина» . andrewkelley.me . Проверено 11 февраля 2020 .
  12. ^ Тим Андерсон 24 апр 2020 в 09:50. «Готов пойти _ExtInt? Компилятор LLVM Clang добавляет поддержку целых чисел произвольной ширины» . www.theregister.co.uk . Проверено 24 апреля 2020 .
  13. ^ «Документация - Язык программирования Zig» . ziglang.org . Проверено 24 апреля 2020 .
  14. ^ «Дайджест новостей SD Times: концепции C ++ 20 в Visual Studio 2010 версии 16.3, Bootstrap для отказа от поддержки IE и выпущен Zig 0.60» . SD Times . 2020-04-14 . Проверено 19 апреля 2020 .
  15. ^ "Ответ на _The Road to Zig 1.0_" . www.gingerbill.org . 2019-05-13 . Проверено 11 февраля 2020 .
  16. ^ ziglang / zig , язык программирования Zig, 11 февраля 2020 г. , получено 11 февраля 2020 г.
  17. ^ "Язык программирования Zig" . ziglang.org . Проверено 11 февраля 2020 .
  18. ^ "зигланг / зиг" . GitHub . Проверено 11 февраля 2020 .
  19. ^ «Примечания к выпуску 0.6.0 · Язык программирования Zig» . ziglang.org . Проверено 19 апреля 2020 .
  20. ^ " ' zig cc': мощная замена для GCC / Clang - Эндрю Келли" . andrewkelley.me . Проверено 28 мая 2021 .
  21. ^ «Зиг заставляет кросс-компиляцию просто работать» . Сообщество DEV . Проверено 28 мая 2021 .
  22. ^ "https://twitter.com/kubkon/status/1377146321136537602" . Twitter . Проверено 28 мая 2021 . Внешняя ссылка в |title=( помощь )
  23. ^ "Объявление о Zig Software Foundation ⚡ Zig Programming Language" . ziglang.org . Проверено 28 мая 2021 .
  24. ^ "Спонсор ZSF ⚡ Язык программирования Zig" . ziglang.org . Проверено 28 мая 2021 .

внешние ссылки