Journal LLVM 11.0.0

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
34
13
oct.
2020

Demat'iNal,

Après 6 release candidates, la version 11.0.0 de l'écosystème LLVM a finalement été rendue publique.

LLVM suit un cycle de sortie de 6 mois, quelles sont donc les grandes nouveautés ? On notera déjà l'arrivée du compilateur Flang dans la suite officielle LLVM, qui se dote ainsi d'un compilateur Fortran. Il vient remplacer le peu usité llvmgo qui a été retiré du dépôt officiel.

LLVM release note

LLVM possédait déjà un type vectoriel, p.e. <i32 x 4> pour (…)

Journal Debug de code Python embarqué dans du code C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
35
30
sept.
2020

Demat' iNal,

On m'a posé tantôt une question assez intrigante au premier abord :

Dans une application native qui embarque un interpréteur Python, et que l'on est en train de déboguer avec gdb, comment faire pour débogguer le code Python associé ?

Pour donner un peu de contexte, on peut lire la doc Python et en extraire ce petit code C:

 #define PY_SSIZE_T_CLEAN
#include <Python.h>

int
main(int argc, char *argv[])
{
    wchar_t *program
(…)

Journal C++ Hell/Heaven et les concepts

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
11
17
sept.
2020

Salut à tous,

C++20 apporte les concepts, mais par pure nostalgie, regardons comment émuler ça en C++11

#include <utility>

#define REQUIRES(x) class _ = decltype(x)

template<class T,
         REQUIRES(((std::declval<T>()==0), T(1), std::declval<T>() * (std::declval<T>() -1)))>
T fact(T const& n) {
    return n == 0
(…)

Journal Analyse de plage de valeurs dans Pythran

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
16
11
mai
2020

Demat'iNal,

Il y a quelques semaines, Pythran a gagné une analyse de plage de valeurs un peu plus solide que la précédente implémentation. Rien qui ne révolutionne la recherche, mais l'occasion pour moi d'explorer le sujet avec vous ici.

L'histoire commence en octobre 2018 avec l' issue #1029, alors que j'essayais de convertir des bouts de code de scikit-image à Pythran.

La fonction _integ

La fonction ci-dessous est extraite du fichier _hessian_det_appx.pyx, écrite en cython

# cython: wraparound=False
(…)

Journal Sortie de LLVM 10.0.0

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
39
31
mar.
2020

Demat'INal,

La semaine dernière sortait, après un processus de release candidate bien plus long que d'habitude (la rc1 date quand même du 30 janvier 2020), la version 10.0.0 de la toolchain LLVM, dont un des représentants les plus connus est le compilateur Clang.

Ce petit journal pour faire une sélection partiale des nouveautés.

Niveau Clang

[release note]

On notera principalement le support des concepts de C++20 à travers le drapeau -std=c++2a.

Si vous avez l'habitude de lancer (…)

Journal Toujours plus de fun avec C

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
10
27
mar.
2020

Demat' iNal,

En regardant cette vidéo: https://www.youtube.com/watch?v=lkgszkPnV8g, j'ai découvert une de ces petites perles qui viennent rompre la monotonie d'un quotidien où l'on dérive constamment.

int(riguant);

Ce code C compile. C'est d'ailleurs aussi un code C++, qui compile également.

Mais pourquoi donc ?

Journal C++, surcharge d'opérateur, ordre d'évaluation

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
17
21
fév.
2020

Demat'iNal,

Un collègue a récemment piqué mon intérêt (ouille) avec ce petit bout de code :

#include <map>
#include <iostream>

int main() {
    std::map<int, int> m;
    m[1] = m.size();
    std::cout << m[1] << std::endl;
    return 0;
}

Qui, compilé par deux version différentes de GCC (9.2 et 5.1) donne deux résultats différents (voir https://godbolt.org/z/4_xVPV).

Qu'en déduire (…)

Journal De retour du FOSDEM 2020

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
17
4
fév.
2020

Demat’iNal,

Le week‑end dernier avait lieu le FOSDEM, événement annuel, gratuit, pendant lequel différentes communautés se retrouvent autour d’un thème — les devrooms ou autour de sujets fédérateurs.

Il y a une ambiance assez spéciale pour une conf, vu que c’est éclaté sur le campus de l’ULB, et que vu la gratuité de l’évènement et son rayonnement, il y a beaucoup de monde. Vraiment beaucoup, à tel point que la stratégie gagnante me semble être de choisir (…)

Journal Exit Pyth(on|ran)2

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
41
10
jan.
2020

Demat'iNal,

parmi les vœux de 2020, il y en a un qui ne devrait pas passer inaperçu tellement il est attendu depuis longtemps. Je veux bien évidement parler de l'abandon officiel du support de Python2 au profit de Python3.

Les plus abasourdis pourront lire le python 3 statement. Et tout particulièrement cette phrase :

We will then be able to simplify our code and take advantage of the many new
features in the current version of the Python language (…)

Journal Quelques surprises techniques dans Pythran

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
31
7
nov.
2019

Demat' iNal,

Il y a peu sortait la version 0.9.4 du compilateur Pythran, délicatement appelée Hollsent. Pour rappel, Pythran est un compilateur pour du code scientifique écrit en Python, canal optimisation de performances.

À cette occasion, en plus de l'habituelle annonce sur la mliste de diffusion, un petit pot-pourri des améliorations techniques a été rédigé par votre serviteur. Et comme c'est quand même plus marrant d'écrire en français, en voici une traduction libre.

C'est surprenant, mais il (…)

Journal Pythran 0.9.3 a une Fedora sur la tête

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
15
21
août
2019

Demat'iNal,

Te remémores-tu de Pythran, ce compilateur pour le Python scientifique caractérisé par la compatibilité de ces entrées avec Python et l'effort mis sur l'optimisation de codes de haut niveau écrits en Numpy ? Si oui, tu peux lire la suite. Si non, une petite plongée dans l'histoire peut être bénéfique :-)

La version 0.9.3 a été publiée hier, et est disponible sur pypi, conda (à travers conda-forge) et à travers un tag git.

Mais (…)

Journal CPPP

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
22
13
juin
2019

Demat' iNal,

Ce samedi 15 juin aura lieu à Paris la conférence CPPP. Cette conférence s'adresse à tous ceux qui malgré ce dernier journal ont conservé une tendre affection (ou un syndrome de Stockholm) pour le langage C++.

On notera la présence de plusieurs orateurs anglophones ayant fait des présentations à succès à CppCon:

(…)

Journal Retour d'expérience sur l'empaquetage d'une bibliothèque native pour Python

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
23
26
mai
2019

Jonbour, Nal !

Je vais t'écrire au sujet de l'empaquetage d'une bibliothèque native pour Python, à travers un bref retour d'expérience un tant soit peu motivé, avec des choix pas évidents dedans et un petit vernis technologique pour attirer le chaland. Tu es ferré ? C'est parti.

Le compilateur Pythran est principalement distribué à travers PyPI. La majorité des dépendances sont des dépendances bien empaquetées sous PyPI (par exemple les paquet networkx ou numpy, mais il y a (…)

Journal Pythran 0.9.2 - koailh

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
19
6
mai
2019

Demat' iNal,

C'est avec délectation que je t'annonce la sortie de la révision 0.9.2 du compilateur pythran. Pythran est un compilateur pour les noyaux de calcul écrits en Python, compatible avec un (large) sous-ensemble de Python. Il comprend les annotations OpenMP et est capable de générer des instructions vectorielles grâce à xsimd.

La dernière sortie date de plus de 4 mois, donc pas mal de nouveautés sont au rendez vous. La liste complète est consultable en ligne.

(…)