Accueil Astuces et Informations Tinygo, un compilateur Go basé sur LLVM

Tinygo, un compilateur Go basé sur LLVM

7
4
Tinygo

TinyGo : un compilateur Go pour les petits endroits

Si vous travaillez avec des microcontrôleurs et que vous êtes un amoureux du Go, Tinygo est peut-être pour vous, depuis cela un compilateur Go p est développéPour les domaines qui nécessitent une représentation compacte du code résultant et une faible consommation de ressources, tels que les microcontrôleurs de systèmes embarqués et WebAssembly.

TinyGo est un compilateur qui vise à apporter la version Go à diverses plates-formes cibles qui est mis en œuvre en utilisant LLVM, et les bibliothèques utilisées dans l’ensemble d’outils principal du projet Go sont utilisées pour prendre en charge le langage.

Sur le site Tinygo, il est décrit que :

Vous pouvez compiler et exécuter des programmes TinyGo sur plus de 94 cartes de microcontrôleur différentes, y compris le BBC micro:bit et Arduino Uno.

TinyGo peut également produire du code WebAssembly (WASM) de taille très compacte. Vous pouvez créer des programmes pour les navigateurs Web, ainsi que pour les serveurs et les environnements informatiques Edge qui prennent en charge la famille d’interfaces WebAssembly System Interface (WASI).

Le motif de la création du projet TinyGO était le désir d’utiliser le langage Go habituel dans des appareils compacts: les développeurs ont estimé que s’il existe une version de Python pour les microcontrôleurs, pourquoi ne pas en créer une similaire pour le langage Go ?

Dans TinyGo, le programme compilé peut être exécuté directement sur des microcontrôleurs, lou qu’il permet d’utiliser Go comme langage d’écriture de scripts d’automatisation. TinyGo prend actuellement en charge 94 modèles de microcontrôleursy compris diverses cartes telles que Raspberry Pi Pico, Nordic, SiFive, entre autres.

TinyGo fournit les pilotes spéciaux pour s’interfacer avec des périphériques et capteurs externes connectés, ainsi que pour prendre en charge des interfaces telles que I2C, GPIO et SPI. Les programmes peuvent également être compilés au format WebAssembly (wasm/wasi) pour s’exécuter dans un navigateur et en tant que binaires Linux.

Objectifs clés du projet :

  • La possibilité d’utiliser un sous-ensemble du langage Go familier sur des appareils compacts. Go a été choisi plutôt que Rust car il est plus facile à apprendre, fournit une prise en charge indépendante des threads pour la parallélisation basée sur les routines et offre une bibliothèque standard étendue.
  • Génération de fichiers exécutables très compacts.
  • Prise en charge des modèles les plus courants de cartes de microcontrôleur.
  • La possibilité d’utiliser pour le Web et de créer des applications WebAssembly autonomes à l’aide de WASI (WebAssembly
  • Interface système) pour travailler avec des fichiers, des sockets et d’autres fonctions fournies par le système d’exploitation.
  • Prise en charge de CGo avec une surcharge minimale lors de l’appel de fonctions en langage C.
  • Compatibilité avec la plupart des packages standard et possibilité de compiler du code générique existant sans le modifier.
  • Contrairement au compilateur emgo obsolète similaire, Tinygo conserve le modèle de gestion de la mémoire d’origine de Go via un ramasse-miettes et utilise LLVM au lieu de compiler dans une représentation C pour générer un code natif efficace.

Il convient de mentionner que Tinygo a récemment reçu une nouvelle version, qui est la 0.28 et dans cette nouvelle version, il ressort que la prise en charge de la réflexion est considérablement améliorée et propose sa propre implémentation de la bibliothèque de réflexion, ce qui a permis d’atteindre la compatibilité avec de nombreuses bibliothèques standard. paquets qui avaient des problèmes auparavant.

De plus, la nouvelle version ajoute la prise en charge de la directive “//go:wasmimport” pour l’importation de fonctionnalités depuis WebAssembly, ainsi que la prise en charge de nouvelles cartes comme les badges Gopher.

Finalement Si vous souhaitez en savoir plus, Vous pouvez vérifier les détails dans le lien suivant.

Comment installer Tinygo sur Linux ?

Pour ceux qui sont intéressés à pouvoir installer Tinygo, sur Debian, Raspbian, Ubuntu et dérivés. Ils doivent ouvrir un terminal et nous allons y exécuter la commande suivante :

wget https://github.com/tinygo-org/tinygo/releases/download/v0.28.1/tinygo_0.28.1_amd64.deb
sudo dpkg -i tinygo_0.28.1_amd64.deb

Pour le cas particulier des systèmes pour appareils ARM (versions Raspbian et Ubuntu)

Tapons ce qui suit :

wget https://github.com/tinygo-org/tinygo/releases/download/v0.28.1/tinygo_0.28.1_arm64.deb sudo dpkg -i tinygo_0.28.1_arm64.deb

Dans le cas de ceux qui sont utilisateurs d’Arch Linux et dérivés, ils doivent exécuter la commande suivante :

sudo pacman -S tinygo

Passons maintenant au cas des utilisateurs de Fedora :

sudo dnf install tinygo

Après avoir terminé l’installation, Vous devrez vous assurer que le chemin tinygo se trouve dans votre PATH.

export PATH=$PATH:/usr/local/tinygo/bin

enfin pour vérifier l’installation tapons la commande suivante:

tinygo version

Et ça devrait nous lancer quelque chose comme ça

tinygo version 0.28.1 linux/amd64

Pour en savoir plus, vous pouvez consulter le lien suivant.