Zig (langage)

Zig est un langage de programmation compilé impératif polyvalent, typé statiquement, conçu par Andrew Kelley[1],[2]. Le langage est conçu pour la «robustesse», l'«optimalité» et la «maintenabilité»[3],[4], prenant en charge les génériques et la réflexion au moment de la compilation, la compilation croisée et la gestion manuelle de la mémoire[5] . Un objectif majeur du langage est de concurrencer (et d'améliorer) C[6],[7], tout en s'inspirant également de Rust[8],[9], entre autres.

Pour les articles homonymes, voir Zig.

Zig

Date de première version
Paradigme Fonctionnel, impératif
Auteur Andrew Kelley
Développeur Andrew Kelley, Open Source
Dernière version 0.7.1 (13/12/2020)
Typage Fort, statique
Influencé par C, C++, LLVM IR, Go, Rust, JavaScript
Écrit en C++, Zig
Systèmes d'exploitation Multiplateforme
Licence Licence MIT
Site web https://ziglang.org/
Extensions de fichiers .zig

Zig possède de nombreuses fonctionnalités pour la programmation de bas niveau, notamment des types composés (struct) avec zéro padding, des entiers de taille arbitraire[10] et différents types de pointeurs.[11]

Le compilateur est écrit en Zig et C++, utilisant LLVM 11[12] comme back-end[13] , prenant en charge plusieurs de ses cibles natives.[14] Le compilateur est un logiciel libre et open source distribué sous la licence MIT[15] . Le compilateur Zig fournit la possibilité de compiler du C et du C++, similaire à Clang en utilisant respectivement la commande "zig cc" et "zig c++"[16]. Le langage de programmation Nim prend en charge l'utilisation de zig cc comme compilateur C. [17]

Exemples

Hello World

// zig version 0.7.1
const std = @import("std");

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

Liste chaînée générique

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

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

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

Notes et références

  1. (en-US) « Zig has all the elegant simplicity of C, minus all the ways to shoot yourself in the foot », JAXenter, (consulté le )
  2. (en-US) « Tired of C? New programming language Zig aims to be more pragmatic and readable », (consulté le )
  3. (en) Yegulalp, « New challenger joins Rust to topple C language », InfoWorld, (consulté le )
  4. (en-US) « Zig language and C », Sina Corp, (consulté le )
  5. (en-US) « The Zig Programming Language », ziglang.org (consulté le )
  6. (en-US) « Mozilla's Observatory, the Zig programming language, and uSens' VR/AR SDK—SD Times news digest: Aug. 29, 2016 », SD Times, (consulté le )
  7. (en-US) « The Zig Programming Language », ziglang.org (consulté le )
  8. (en) Company, « Sudo Null - IT News for you », SudoNull (consulté le )
  9. (en-US) Kelley, « Unsafe Zig is Safer Than Unsafe Rust », andrewkelley.me (consulté le )
  10. (en) Tim Anderson 24 Apr 2020 at 09:50, « Keen to go _ExtInt? LLVM Clang compiler adds support for custom width integers », www.theregister.co.uk (consulté le )
  11. (en-US) « Documentation - The Zig Programming Language », ziglang.org (consulté le )
  12. (en-US) « SD Times news digest: C++20 concepts in Visual Studio 2010 version 16.3, Bootstrap to drop IE support, and Zig 0.60 released », SD Times, (consulté le )
  13. (en-GB) « A Reply to The Road to Zig 1.0 », www.gingerbill.org, (consulté le )
  14. (en-US) « The Zig Programming Language », ziglang.org (consulté le )
  15. (en) « ziglang/zig », GitHub (consulté le )
  16. (en-US) « 0.6.0 Release Notes · The Zig Programming Language », ziglang.org (consulté le )
  17. (en) « Add support for 'zig cc' as C compiler. by hessammehr · Pull Request #13757 · nim-lang/Nim », GitHub (consulté le )

Voir également

Articles connexes

Liens externes

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.