Imaginez : vous êtes à une fête et vous décidez tous que vous voulez jouer à un jeu de société Jackbox. Cependant, le responsable possède chaque paquet. Comment choisissez-vous le jeu auquel vous jouez ? Si tu veux jouer, dis Trivia Murder Party 2 comment fais-tu pour le trouver ? Maintenant, la fête n’est plus amusante. […]
Curl est un outil en ligne de commande destiné à récupérer le contenu d’une ressource accessible par un réseau informatique et gérant de nombreux protocoles.
(Cette dépêche est principalement basée sur l’annonce anglophone par Daniel Stenberg, auteur principal de curl et libcurl ; dépêche rédigée sur un téléphone embarquant curl 7.80, pas vraiment la dernière version…).
La première version de libcurl, baptisée 7.1, date du 7 août 2000. La version de curl précédente, la 6.5.2, pas encore séparée entre une interface ligne de commande et une bibliothèque. Il s’agit de l’écart le plus long entre deux versions de curl. La création de la bibliothèque a été très largement réalisée par Daniel Stenberg seul.
Il décrit son choix de division ainsi : c'était juste une intuition et une conjecture. Je ne savais pas. Je n’avais pas fait de recherches sur cela ou autre chose. Je me suis juste lancé en me disant qu’on verrait plus tard si j’avais raison ou tort.
Le nom de la bibliothèque a été choisi faute d’une meilleure idée. L’API a été définie comme étant bas niveau (on peut toujours ajouter une API de plus haut niveau par-dessus), en observant ioctl(), fcntl() et les fonctions du genre. Le code est en C, langage de prédilection de l’auteur principal.
L’API a bien vieilli : 17 fonctions encore présentes proviennent de la 7.1 ; elle est passée de 17 000 lignes à 171 000 ; elle a survécu aux révolutions HTTP/2 (transferts multiples multiplexés) et HTTP/3 (passer de TCP à UDP).
L’usage a aussi bien progressé depuis l’entrée dans PHP 4.0.2 comme premier binding (ici rendre utilisable en langage PHP), moins d’un mois après la publication de la bibliothèque.
En 2002 a été ajoutée une API multi pour gérer des transferts parallèles concurrents de façon illimitée dans un même thread.
Puis en 2006 vient en surplus le multi_action avec des mécanismes orientés événements, avec une boucle événementielle (comme epoll).
Les premiers changements douloureux sur l’interface binaire (ABI) ont entraîné une volonté de stabilité, de ne jamais casser volontairement cette interface, et ce depuis 2006.
libcurl possède des bindings vers au moins 65 langages de programmation, fonctionne sur au moins 103 systèmes d’exploitation et 28 architectures de processeur, est présent dans les bibliothèques standard de langages de programmation (Python, Java, Rust ou .Net). Son ancien concurrent principal libwww n’est plus développé. Bref 18 ans de stabilité d’API et d’ABI.
L’utilisation de libcurl continue de croître (de plus en plus d’objets connectés notamment). Et curl de manière générale supporte rapidement les nouveaux protocoles et leurs évolutions. À noter que l’auteur principal ne mentionne pas dans ses projections ce qui me semble le plus gros risque pour Curl/libcurl, la difficulté d’avoir une personne prête à lui succéder si quand cela s’avérera nécessaire.
Les amateurs de MicroPython seront heureux d'apprendre qu'une nouvelle bibliothèque qwiic-serlcd-i2c vient d'être ajoutée à notre dépôt esp8266-upy
Qu'est ce que SerLCD?
SerLCD de SparkFun est un afficheur LCD série propulsé par un microcontrôleur
ATmega328P. SerLCD permet d'ajouter un afficheur Cristaux Liquide 16x2
RGB dans votre projet. Le microcontrôleur gère l'écran et les
communications séries!
Les afficheurs SerLCD peuvent communiquer de trois façon différentes:
série, I2C et SPI. L'afficheur est équipé de d'un connecteur Qwiic
(aussi appelé StemmaQT), ce qui l'intègre dans l'écosystème Qwiic qui
simplifie les raccordements grâce à sa connexion universelle.
Outre son connecteur Qwiic/StemmaQt, l'intérêt de SerLCD réside dans son support du bus I2C (il n'a donc besoin que des signaux SDA et SCL) et que l'adresse I2C est modifiable de façon logicielle.
La bibliothèque
Cette dernière -nommée serlcd.py- est disponible sur le dépôt dans le sous-répertoire qwiic-serlcd-i2c.
Elle doit être copiée sur votre plateforme MicroPython avant de pouvoir l'utiliser.
Si vous utilisez mpremote, l'installation peut se faire très simplement à l'aide de la commande suivante:
Pour pouvoir utiliser cet afficheur, il suffit d'utiliser son connecteur Qwiic/StemmaQt avec un câble adaptateur JST-SH 4 . Le raccordement est super simple.
En guise d'exemple, voici le raccordement sur un Raspberry Pico... simple non?