Zig est un langage de programmation système bas niveau, créé par Andrew Kelley en 2016, conçu comme une alternative moderne au C. Il vise à être simple, performant et sûr, sans sacrifier le contrôle sur la mémoire.
Caractéristiques principales
| Fonctionnalité | Description |
|---|---|
| Pas de GC | Gestion manuelle de la mémoire via des allocators |
comptime |
Exécution de code à la compilation (remplace macros et templates) |
| Interop C | Import direct de headers C avec @cImport |
| Pas de macros | Syntaxe uniforme et lisible |
| Cross-compilation | Intégrée nativement dans le compilateur |
| Undefined behavior détecté | Les overflows, pointeurs nuls etc. sont gérés explicitement |
Exemple
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, {s}!\n", .{"world"});
}
L'une des forces de Zig est le comptime, qui permet d'exécuter du code arbitraire à la compilation :
fn multiply(comptime T: type, a: T, b: T) T {
return a * b;
}
// Utilisable avec n'importe quel type numérique
const result = multiply(i32, 4, 5); // 20
À retenir
- Zig est un remplaçant moderne du C : même niveau de contrôle, moins de pièges.
- Le mot-clé
comptimeest la killer feature : il remplace les macros et les templates de façon élégante et lisible. - Zig peut compiler du code C existant directement, ce qui facilite la migration progressive.
- Utilisé notamment pour des systèmes embarqués, des outils CLI performants et du WebAssembly.
