GitHub raconte son passage à Ruby 2.7

Par:
fredericmazue

jeu, 27/08/2020 - 12:23

Le service d'hébergement de code en ligne GitHub fonctionne avec le langage Ruby sous le capot. Les évolutions de ce langage ont donc des impacts sur tout le service. GitHub vient de mettre à niveau vers Ruby 2.7 et raconte que ce ne fut pas une petite affaire.

En effet, pour Ruby 2.7, l'équipe Ruby Core a déprécié le comportement des arguments de mot-clé. Avec cette évolution, les futures versions de Ruby n'accepteront plus les passages d'arguments hachés lorsqu'une méthode attend des arguments mot-clé.

Or GitHub tenait a exécuter son application sans obsolescence, notamment pour éviter de prendre du retard sur les futures mises à niveau. Cela a nécessité la correction de 11 000 avertissements dans les 400 000 lignes de code de l'application, mais aussi au sein de bibliothèques externes.

Pour effectuer tout ce travail, une stratégie a été nécessaire. Notamment GitHub a configuré son application pour qu'elle soit à double amorçage sur Ruby 2.6 et Ruby 2.7 en utilisant une variable d'environnement. Cela a facilité la tâche d'effectuer des modifications rétrocompatibles, de les fusionner dans la branche principale et d'éviter de conserver une longue branche pour la mise à niveau. 

Beaucoup de travail donc, à cause d'une évolution d'un langage de programmation... Mais pour GitHub cela présente aussi des côtés positifs. Ainsi l'application démarre désormais en 70 secondes contre 90 auparavant et elle a une empreinte mémoire plus faible avec 668k allocations d'objets contre 780k auparavant.