# Sondage “Développeur Python 2020”

par Alexis Richter

Le sondage “Développeur Python 2020”, organisé en partenariat par la Python Software Foundation et JetBrains, est en cours. Comme les sondages précédents, celui-ci aura pour but de faire un tour d’horizon du monde du développement Python et d’en identifier les dernières tendances. 

En 2019, plus de 24 000 développeurs Python, répartis sur 150 pays, ont participé au sondage. On y apprend, que 84% des personnes interrogées utilisent Python comme langage principal, l’analyse de données et le développement web restant les domaines privilégiés. Au-delà des questions plus générales, on trouvera aussi des réponses concernant les frameworks, librairies, les plateformes cloud et les bases de données les plus utilisées, ainsi que la répartition des participants en termes de situation professionnelle, expérience, âge, etc. 

Et bien sûr, vous y trouverez aussi la réponse à la question qui ne doit jamais manquer : Quel est votre éditeur favoris ?

sondage 2020: https://surveys.jetbrains.com/s3/c18-python-developers-survey-2020

résultats sondage 2019: https://www.jetbrains.com/lp/python-developers-survey-2019/

# Python 3.9 est arrivé

par Alexis Richter

Le 05 Octobre 2020, la version 3.9 de Python est apparue. Comme toutes les nouvelles versions Python, celle-ci inclut des fonctionnalités nouvelles, améliorées et dépréciées. Parmi les nouvelles fonctionnalités, on trouvera : une meilleure gestion des fuseaux horaires, une fusion simplifiée pour les dictionnaires, des type hints annotés, la suppression de suffixe et préfixe traités nativement, des décorateurs plus flexibles et plus…

Une fusion simplifiée pour les dictionnaires

La version 3.9 de Python introduit deux nouveaux opérateurs pour les dictionnaires:

  • union: |
    • permet de fusionner deux dictionnaires
    • si deux clés identiques sont présentes, c’est la dernière valeur qui prime
  • in-place union: |=
    • permet d’ajouter des informations à un dictionnaire
    • alors que union ne fonctionnera qu’avec deux dictionnaires, in-place union acceptera des dictionnaires, listes, tuples, etc.

Type Hints annotés

Introduit avec la version 3.0 de Python, l’annotation de fonction permettait l’ajout de méta-information arbitraire lors de la déclaration d’une fonction. Avec l’introduction de PEP 593 dans la version 3.9, l’annotation avec méta-information a été étendue au type hints.

Une des devises les plus citées dans le monde Python est « we are all consenting adults here« , en d’autres termes : étant des développeurs responsables, c’est à notre appréciation d’appliquer le type hint ou pas, donc le type hint ne sera pas forcé, sauf si explicitement demandé, avec l’utilisation de MyPy par exemple.

Un nouveau parseur

Python 3.9 introduit un nouveau parseur. Depuis ses débuts, Python utilise un parseur LL(1). Mais cela fait longtemps que Guido Van Rossum (créateur du langage Python) fait des recherches pour implémenter un parseur PEG. La version 3.9 sera déployée avec les deux parseurs et l’ancien parseur LL(1) sera abandonné pour la version 3.10

Modification du cycle de déploiement

Traditionnellement, une nouvelle version Python est déployée approximativement tous les 18 mois. À partir de maintenant, une nouvelle version sera livrée tous les 12 mois, en Octobre. Chaque nouvelle version sera maintenue pendant 5 ans. La version 3.9 bénéficiera donc de fix de sécurité jusqu’en 2025.

# Version majeure pour npm, «7» un nouveau départ

par Guillaume Poittevin

NodeJS 15 a été annoncé cette semaine (voir ici et ), parmi les nouveautés :

  • AbortController
  • N-API Version 7
  • npm 7
  • Throw on unhandled rejections
  • QUIC (experimental)
  • V8 8.6

Quelques petites nouveautés pour cette version non LTS. Le plus gros point est le passage de npm 7, cette nouvelle version majeure de npm est une réécriture modulaire de l’outil de gestion de package pour NodeJS. Outre un gros travail de réécriture, pour rendre les futurs développements plus simple par cette approche modulaire, nous pouvons noter l’ajout de fonctionnalités importantes, présentes par exemple chez yarn, telles que :

  • La gestion des workspaces
  • La gestion des «peerDependencies»
  • Intégration de npx

Un article résume l’ensemble des changements chez NextInpact.

# Sortie de Git en version 2.29

par Guillaume Poittevin

Le 19 octobre dernier une nouvelle version de Git est sortie, le logiciel de gestion de version le plus populaire arrive avec quelques nouveautés telles que les «Negative Refspecs», la possibilité d’exclure des branches lors d’un fetch ou encore des améliorations sur la commande shortlog.

Cette version est importante de par l’introduction du support de SHA-256 comme algorithme de hachage. Le support est pour l’instant expérimental, ce qui fait que la majeure partie des services proposant Git (Github, Gitlab, Bitbucket, Gerrit, …) ne supporte pas encore ce format.

Vous pouvez retrouver le billet de blog de Github par ici.

# Nouvelle version de jOOQ 3.14 sortie !

par Aurélien Vernay

L’entreprise Data Geekery a publié le lundi 19 Octobre 2020 la version 3.14 de sa librairie jOOQ. Cet outil multi-usages permet à la fois de générer les classes POJO à partir d’un schéma de base de données, ainsi que d’agir en tant qu’ORM au sein de votre application Java. 

Cette nouvelle version apporte des fonctionnalités bien appréciables : 

  • Un meilleur support des fonctions standards SQL de manipulation d’XML / de JSON  (et des équivalents non-standards sur PostgreSQL et SQL Server)
  • Le support du langage Kotlin : jOOQ permet désormais de générer ses classes de modèle directement en Kotlin, ce qui permet de simplifier son intégration
  • Le support des embeddable types : un embeddable type est l’émulation d’un type défini par l’utilisateur en base de données (UDT), qui permet de garantir une cohérence et une sémantique dans le modèle de données. Le générateur de classes jOOQ est désormais capable d’analyser et de redéfinir ces types dans les classes générées 
  • Un meilleur support des domain types, avec un mapping plus fin sur les POJO générés
  • Un meilleur support de l’opérateur MERGE : jOOQ supporte désormais de multiples clauses WHEN MATCHED AND [condition] THEN [UPDATE / DELETE], ce qui simplifie les requêtes de type “annule-et-remplace”.

Pour plus d’informations, vous pouvez vous reporter sur le site officiel de jOOQ : https://www.jooq.org/notes/?version=3.14.

# Nos outils Javascript peuvent-ils être vraiment beaucoup plus rapides ?

par Aurélien Morlé

C’est en tout cas le but recherché par esbuild, un petit nouveau qui commence à se faire une place vis-à-vis des très connus Webpack, rollup ou parcel.

Celui-ci est écrit en Go et affiche des benchmarks entre 10-100x plus rapides que les autres bundler JavaScript !

En dehors du build, il permet aussi de remplacer le transpileur Babel mais aussi de minifier le code en remplaçant par exemple UglifyJS.

Celui-ci semble très prometteur sur le papier même s’il n’offre pas encore toutes les possibilités que peut offrir webpack avec les loader css par exemple.

# React 17 : goodbye “import React from « react » « 

par Thomas Broyer

Nous en avions déjà parlé il y a deux mois mais cette fois-ci elle est officielle. Depuis la release candidate cependant, une nouvelle transformation JSX a été annoncée, qui permet notamment de se passer du import React from « react », et est intégrée dans cette nouvelle version 17. La fonctionnalité a même été backportée dans les versions précédentes 16.14.0, 15.7.0 et même 0.14.10.