Le langage de programmation Safe-C a été créé en 2011. Il résulte d'un effort pour moderniser le langage C afin qu'il puisse être utilisé pour écrire des logiciels fiables.
En particulier, les indices de tableau et les pointeurs sont vérifiés afin qu'ils ne puissent pas accéder à la mémoire en dehors des règles du langage.
Le Safe-C est très semblable au C (95% de la syntaxe est identique),
de sorte qu'un programmeur C n'aura aucune difficulté pour passer au Safe-C.
Un compilateur Safe-C pour Windows est disponible
à ce lien.
Safe-C a été utilisé pour développer les logiciels client et serveur du monde virtuel 3D multi-utilisateur https://planet-samuro.com
La librairie standard du Safe-C comprend les composants suivants :
aes | AES encryption |
arithm | arithmétique simple (abs, min, max) |
base64 | encodage en base64 |
bintree | arbres binaires équilibrés (AVL) |
calendar | calendrier |
console | écriture/lecture sur la boite de commande |
crc | checksums md5, sha2, adler et crc |
db | database (insert/delete/update/retrieve, transations sur fichiers .db - documentation) |
des | DES encryption |
directx | interface pour DirectX 10 & 11 |
draw | dessiner dans un buffer mémoire (ligne, cercle, texte, image) |
exception | traitement d'exception |
files | fichiers texte et binaire, répertoires, disque. |
ftp | protocole pour transfert de fichiers (ftp) - client et serveur |
gui | interface utilisateur (fenêtres, listbox, etc ..) avec une fenêtre principale utilisant le composant directx |
hash | table de hashage, dictionnaire (clé vers valeur) |
http | client et serveur internet (login, pages html virtuelles, ..) |
image | compression et décompression (jpg, gif, png, ..), traitement d'image |
inifile | lecture de fichiers .ini |
integer | opérations sur grands nombres entiers non-signés |
linear_algebra | opérations sur vecteurs et matrices |
math | fonctions mathématiques (sin, cos, ..) |
odbc | interface odbc 3.0 pour database sql |
opus | codec audio (voir http://www.opus-codec.org/) |
création de fichiers PDF | |
printer | imprimante |
netcard | informations sur les cartes réseaux (spécifique windows) |
random | génération de nombres aléatoires |
registry | écrire/lire une clé de la base de registre (spécifique windows) |
rsa | encryption asymétrique |
service | Services Windows - processus d'arrière-plan (spécifique windows) |
shortcut | installation de programmes, créer un shortcut sur le bureau |
smtp | envoi d'e-mails par protocole smtp |
sorting | tri de tableaux (bubblesort, heapsort, quicksort) |
sound | microphone et haut-parleur |
strings | chaines de caractères (strcpy, sprintf, ..) |
system | informations système (nom du PC, mémoire, nbre de CPUs) |
tcpip | connection réseau par tcpip (ipv4 et ipv6) |
text | stockage d'un texte composé de lignes |
thread | threads parallèles, synchronisation, timers |
tracing | fichiers de trace |
url | url internet |
utf | conversion entre ascii, utf-8 et utf-16 |
vpeg | compression video pour images avec peu de mouvement |
webcam | interface pour source video |
win | interface utilisateur pour créer des fenêtres, boutons, listbox, .. |
xml | lecture de fichiers XML |
zip | compression de données : zip, unzip |
win/windows | interface bas-niveau avec Windows |
win/directx11 | interface bas-niveau avec DirectX 11 |
win/direct_show | interface bas-niveau avec DirectShow |
Le "Safe-C Reference Manual" est une description normalisée du langage Safe-C destiné aux gens qui souhaitent développer un compilateur Safe-C.