Utilisez vos librairies C avec Go

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
103
Mois de parution
juillet 2019
Spécialités


Résumé

Go est arrivé en force dans nos usages, directement ou indirectement (Docker, Caddy, etc.). Mais malgré une adoption de plus en plus grande, il peut arriver qu’une brique indispensable à notre projet ne soit pas disponible en Go et que réaliser un portage s’avère trop coûteux. Heureusement pour nous, les concepteurs du langage ont fait en sorte que Go puisse communiquer avec des librairies dont l’ABI (Application Binary Interface) est compatible avec l’ABI C.


L’apparition de nouveaux langages de programmation est une opportunité pour remettre en question nos connaissances et les différentes technologies que nous utilisons quotidiennement. Ces nouveaux savoir-faire arrivent souvent à se faire une place de premier plan dans notre processus de développement. Mais pouvons-nous pour autant oublier nos anciens outils et opérer une migration sans perte ? Dans le cadre de cet article, nous explorerons la capacité du runtime Go à appeler du code C. L’exemple choisi dans cet article se veut plus pédagogique que pertinent. La méthode présentée est généralisable à tout projet mêlant Go et C.

L’auteur part du principe que le lecteur possède les notions élémentaires concernant le langage C ainsi que le processus de compilation. L’ensemble du code Go utilisé dans cet article est disponible sur le dépôt GitHub correspondant [1].

1. Une histoire de GPS

L’auteur de cet article a acquis un « logger » GPS Navilink...

Cet article est réservé aux abonnés. Il vous reste 97% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite
Références

[1] Code source des exemples : https://github.com/yageek/go-navilink

[2] OpenStreetMap : https://openstreetmap.org

[3] NAVILINK Protocol : https://splitbrain.haz.wiki/navilink

[4] Protocole RS232 : https://fr.wikipedia.org/wiki/RS-232

[5] Pilotes pour puces Prolific : http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41&showlevel=0041

[6] Python C API : https://docs.python.org/2/c-api/index.html

[7] Ruby C API : https://docs.ruby-lang.org/en/2.6.0/extension_rdoc.html

[8] Rust Nomicon FFI : https://docs.ruby-lang.org/en/2.6.0/extension_rdoc.html

[9] Manuel d’utilisation de la commande cgo - section « Using cgo with the go command » : https://golang.org/cmd/cgo/#hdr-Using_cgo_with_the_go_command

[10] Manuel d’utilisation de la commande cgo – section « Go references to C » : https://golang.org/cmd/cgo/#hdr-Go_references_to_C

[11] Librairie C implémentant le protocole Locosys : https://github.com/yageek/navilink

[12] Librairie C gérant l’accès au port série : https://sigrok.org/wiki/Libserialport

[13] Format GeoJSON : https://fr.wikipedia.org/wiki/GeoJSON

[14] Format GPX : https://fr.wikipedia.org/wiki/GPX_(format_de_fichier)

[15] Paquet Go gérant le format GeoJSON : http://github.com/kpawlik/geojson



Articles qui pourraient vous intéresser...

Hyperautomatisation d’un serveur d’intégration continue à l’aide d’Ansible et de Podman

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
115
Mois de parution
juillet 2021
Spécialités
Résumé

Dans cette ère de l’automatisation poussée et le déploiement d’applications sur des infrastructures Cloud, la valeur d’un système se juge de plus en plus sur sa capacité à être intégralement mis en place sans intervention humaine. Nous allons donc explorer dans cet article un tel cas d’étude, en proposant d’automatiser entièrement l’installation d’un serveur d’intégration continue (Jenkins) à l’aide d’Ansible et de Podman !

À la découverte des GitHub Actions

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
115
Mois de parution
juillet 2021
Spécialités
Résumé

La discipline du CI/CD est incontournable dans l'industrie du logiciel, tant en open source que dans les projets d'entreprise, avec des outils toujours plus nombreux et efficaces. La maîtrise d'au moins un acteur principal du marché est de plus en plus regardée comme indispensable, ce qui prend tout son sens une fois qu'on a pris l'habitude d'automatiser ces opérations. Démonstration avec les GitHub Actions.

« Je veux ma maquette de satellite » : analyse du format G3DB d’objets 3D en vue de leur impression

Magazine
Marque
GNU/Linux Magazine
Numéro
250
Mois de parution
juillet 2021
Spécialités
Résumé

Nous explorons le format G3DB exploité dans nombre de jeux programmés en Java sous Android s’appuyant sur la bibliothèque LibGDX. Cette étude sera l’occasion de découvrir le format universel binaire JSON, conçu pour sa compacité tout en conservant une facilité d’analyse bien connue de ce format de données. Nous aboutirons ainsi à un modèle 3D exploitable dans tout logiciel de conception assistée par ordinateur et conclurons par l’impression des divers éléments de la maquette et son assemblage.

Utilisez les énumérations en Python

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
115
Mois de parution
juillet 2021
Spécialités
Résumé

Il existe dans tout langage des éléments simples, pratiques, mais qui sont pourtant peu employés par les développeurs. En Python, les énumérations se retrouvent dans cette catégorie. Je vous propose dans cet article de découvrir leur intérêt.