Le projet Solod développe un sous-ensemble du langage Go, transcrit en langage C.

Le langage de programmation Solod (So) a été présenté, offrant un sous-ensemble du langage Go, transcompilé en une représentation en langage C (C11), adapté à la compilation par les compilateurs GCC, Clang et zig cc. La principale différence entre Solod et Go ou Tinygo est l'utilisation d'une gestion manuelle de la mémoire, sans ramasse-mottes, sans allocation automatique de mémoire et sans comptage de références. Le transpileur pour Solod est écrit en Go et est distribué sous la licence BSD. Il est pris en charge sur Linux, macOS et Windows.

Le langage prend en charge les structures, les méthodes, les interfaces, les tranches, le retour de plusieurs valeurs par les fonctions (par exemple, résultat + code d'erreur), les génériques et les appels différés (defer). Pour simplifier, le langage ne prend pas en charge les canaux, les coroutines et les fermetures. Lors du développement en Solod, il est possible d'utiliser des serveurs LSP existants, des linters, des environnements de développement intégrés et des éditeurs de code qui prennent en charge le langage Go, ainsi que l'outil « go test ».

Le code écrit en Solod peut s'intégrer avec des applications en langage C (le langage C peut appeler des fonctions en Solod et vice versa) et ne nécessite pas de runtime attaché. Parmi les principales applications, on note la programmation système avec des fonctionnalités proches du C, mais avec une syntaxe de style Go et un contrôle des types. Solod peut également être utilisé pour le portage de bibliothèques Go à utiliser dans des projets en C. Des paquets Go tels que strings, io, bytes, mem, slices, etc. ont été portés en C. En plus de l'ensemble des bibliothèques Go portées, des programmes en Solod peuvent utiliser des wrappers sur la bibliothèque standard C, libc.

Par défaut, toute la mémoire est allouée sur la pile, mais à l'aide des fonctions Alloc / Free de la bibliothèque standard, il est possible d'allouer de la mémoire sur le tas. Le ramassage des ordures et le comptage des références ne sont pas utilisés, mais Solod fournit des capacités de vérification de types et d'arrêt d'urgence lors des accès hors limites de tableau. Cependant, les vérifications de retour de pointeurs pendants et de libérations de mémoire non effectuées ne sont pas réalisées. La principale méthode pour détecter les problèmes de gestion de la mémoire mentionnée est l'utilisation d'AddressSanitizer (-fsanitize=address) dans les compilateurs modernes.

En termes de performance, les programmes compilés écrits en Solod sont généralement plus rapides que ceux écrits en Go. Par exemple, la performance des fonctions du package Byte est environ 1,5 fois plus rapide avec une consommation de mémoire identique. Le traitement des tampons d'octets est plus rapide de 1,3 fois en lecture et de 2 à 4 fois en écriture. Dans le package Map, la sélection par clé entière est 3,4 fois plus rapide, mais la modification des clés est plus lente de 1,6 fois. La sélection par clés de chaîne est au même niveau que Go, mais la modification est plus lente de 1,5 fois. L'analyse et le formatage des entiers sont deux fois plus rapides, ceux des nombres à virgule flottante le sont de 1,5/1,2 fois. Les fonctions de chaîne sont plus rapides de 1,3 fois, et la création de chaînes l'est de 2 à 4 fois avec une réduction de consommation de mémoire de 10 à 20%.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster