Sortie de Nuitka 2.0, un compilateur pour le langage Python

Une version du projet Nuitka 2.0 est disponible, développant un compilateur pour traduire les scripts Python en une représentation C, qui peut ensuite être compilé dans un fichier exécutable en utilisant libpython pour une compatibilité maximale avec CPython (en utilisant des outils CPython natifs pour manipuler des objets). Fournit une compatibilité totale avec les versions actuelles de Python 2.6, 2.7, 3.3 - 3.11. Par rapport à CPython, les scripts compilés montrent une amélioration des performances de 335 % dans les tests pystone. Le code du projet est distribué sous la licence Apache.

Parmi les changements de la nouvelle version :

  • Ajout de la possibilité d'utiliser des variables dans la configuration du package, vous permettant d'interroger les valeurs des packages installés au moment de la compilation et d'utiliser ces valeurs pour définir le backend. La prise en charge des variables dans la configuration vous permet de résoudre de nombreuses tâches de manière standard qui nécessitaient auparavant la connexion de plugins.
  • Ajout de la prise en charge des paramètres définis par l'utilisateur pour influencer la configuration de chaque package. Les paramètres peuvent être lus à l'aide de la nouvelle fonction get_parameter et utilisés pour sélectionner le comportement des modules (par exemple, vous pouvez définir un paramètre pour désactiver Numba JIT ou Torch JIT).
  • Ajout de l'option "--include-onefile-external-data" pour spécifier les modèles de fichiers de données qui sont définis dans la configuration mais doivent être fournis séparément du fichier exécutable lors de la construction en mode onefile.
  • Ajout de l'option « --cf-protection » pour définir le mode de protection CFI (Control Flow Integrity) dans GCC, qui bloque les violations de l'ordre d'exécution normal (flux de contrôle).
  • Pour les fichiers yaml du plugin, la possibilité de créer des sommes de contrôle pour les contrôles d'intégrité a été implémentée, qu'ils prévoient d'utiliser à l'avenir pour organiser la vérification à l'exécution.
  • Les actions permettent de spécifier plusieurs options, séparées par des lignes (une nouvelle ligne est utilisée comme délimiteur). Par exemple : include-data-dir : | a=bc=d
  • Une analyse des types de boucles a été implémentée, qui sera utilisée à l'avenir pour mettre en œuvre des optimisations sélectives.
  • Ajout d'optimisations pour accélérer le travail avec des variables non partagées et échappées.
  • Les capacités du plugin anti-ballonnement ont été étendues, qui peuvent désormais être utilisées pour réduire le nombre de paquets lors de l'utilisation des bibliothèques streamlit, torch, knetworkx, distribué, skimage, bitsandbytes, tf_keras, pip, networkx et pywt (essentiellement, liaison pour pytest, IPython, nose, triton est exclu et dask).

Source: opennet.ru

Ajouter un commentaire