À propos du projet

V est un langage de programmation compilé et typé statiquement, conçu pour créer des logiciels maintenables. Ses objectifs déclarés sont la simplicité, la compilation rapide, des performances comparables à C et la sécurité. Le compilateur est écrit en V lui-même et peut démarrer en moins d'une seconde sur du matériel typique. Caractéristiques principales décrites par le projet : - Simplicité : le langage est conçu pour être appris en peu de temps. - Compilation rapide : le README cite environ 110 000 lignes/seconde avec un backend Clang et environ 500 000 lignes/seconde avec les backends natif et tcc sur une machine de test spécifique. - Auto-hébergement : V se compile rapidement, et le backend principal émet du C lisible par l'humain. - Fonctionnalités de sécurité : pas de null, pas de globales, immuabilité par défaut, et travail vers l'élimination des comportements indéfinis. - Options de gestion de la mémoire : ramasse-miettes par défaut, plus modes manuel (`-gc none`), allocation par arènes (`-prealloc`) et libération automatique (`-autofree`). - Traduction C vers V, démontrée avec une démo de traduction de DOOM. - Rechargement de code à chaud. - ORM intégré et framework web intégré (veb). - Backends C et JavaScript, plus un REPL. - Bibliothèque d'interface utilisateur multiplateforme et bibliothèque graphique intégrée. - Cross-compilation facile, y compris des binaires statiques via les images Docker Alpine/musl. L'installation se fait principalement à partir des sources : clonez le dépôt et exécutez `make` (ou `makev.bat` sur Windows, `gmake` sur BSD/Solaris). La construction télécharge un Tiny C Compiler groupé lorsqu'une version compatible existe. Des Dockerfiles Docker et Alpine sont également fournis. `v up` met à jour le compilateur, et `v symlink` l'ajoute au PATH. Le support des éditeurs et IDE est disponible pour Atom, CodeLite, Emacs, JetBrains, Sublime Text, Vim/Neovim, VS Code et Zed, avec des capacités de serveur de langage fournies par v-analyzer. Les exemples couvrent un hello world, un compteur de mots, un récupérateur de nouvelles, Tetris et 2048. Les exemples d'interface graphique et de jeux utilisant les modules sokol ou gg nécessitent des bibliothèques de développement système supplémentaires. Les modules réseau (net.http, net.websocket) et `v install` peuvent utiliser Mbed-TLS groupé ou OpenSSL système via `-d use_openssl`. Le module sync dépend de libatomic. Le README note que le langage est pré-1.0 et peut encore changer, avec des changements de syntaxe largement gérés par vfmt. Après 1.0, le projet prévoit un gel des fonctionnalités similaire à Go, avec seulement des corrections de bogues et des améliorations de performances.