Journal Pythran 0.9.3 a une Fedora sur la tête

Posté par (page perso) . Licence CC by-sa.
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 (page perso) . Licence CC by-sa.
Tags :
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 (page perso) . Licence CC by-sa.
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 (page perso) . Licence CC by-sa.
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.

(...)

Sortie de LLVM, Clang, lld, lldb 8.0.0

Posté par (page perso) . Édité par Ontologia, Benoît Sibaud, Sylvestre Ledru, tankey, Davy Defaud, palm123 et Bruno Michel. Modéré par patrick_g. Licence CC by-sa.
Tags :
35
21
mar.
2019
C et C++

Après cinq versions candidates, l’étiquette finale a été apposée sur la branche 8.0.0 de la famille LLVM.

Cette dépêche reprend les points importants des notes de sortie associées. C’est une sélection totalement biaisée, libre à vous de lire les journaux des modifications respectifs pour avoir tous les détails !

Journal Écrire pour mieux finir

Posté par (page perso) . Licence CC by-sa.
Tags : aucun
21
20
mar.
2019

Demat'iNal,

Il y a un peu moins de trois ans, je commençais à coucher sur le clavier (oui parce que coucher sur le papier, ça me fait bizarre) le résultats de mes pérégrinations autour du compilateur pythran sur pythran-stories.

Et hier, alors que je postais un article sur l'analyse de use-def chains pour Python à l'aide du paquet beniget, un sentiment de complétude a surgi inopinément, à la manière d'un pokemon sauvage surgissant des fourrés. Et chose curieuse (...)

Journal Bootstrap Binary seed

60
4
fév.
2019

Demat'iNal,

J'ai été frappé (ouille) par cet exposé au FOSDEM 2019.
Le sujet sous-jacent était « comment arriver à un compilateur C » à partir de… source. Et il est vrai que jamais je ne m'étais posé la question sous cet angle : arriver à faire qu'un compilateur pour un langage X soit écrit dans ce même langage X suppose… que l'on ait déjà un compilateur pour X. Ce problème se gérant soit par la disponibilité d'un autre compilateur, soit (...)

Journal Pythreries - Perl ou Python?

Posté par (page perso) . Licence CC by-sa.
Tags :
22
6
jan.
2019

Demat' iNal

Au hasard d'un nouveau projet autour de l'analyse du langage Python, j'ai découvert quelques détails du langage Python que l'on peut résumer en cette simple ligne:

def _(*,_=...): [...]

outre l'aspect très perlesque de cette ligne, elle illustre plusieurs détails cocasses :

  1. Il est possible de réutiliser le nom de la fonction dans un de ces arguments, et c'est l'argument qui a la priorité

  2. C'était la première fois que je (...)

Journal Carnet de route - taume 0

Posté par (page perso) . Licence CC by-sa.
Tags : aucun
7
30
nov.
2018

Notes et découvertes faites lors de mes voyages informatiques

Vérifier si deux énoncés parmi N (N >= 2) sont vrais, en Python

sum(map(bool, l)) > 1

Je n'ai pas trouvé de one-liner satisfaisant qui s'arrête dès que la condition est vérifiée :-/

Spécialiser une fonction C(11) pour un type donné

Pour vérifier qu'on n'a pas un niveau de pointeur en trop :

void dump_ptr(void* ptr) { printf("%p",
(...)

Journal Conversion entre pointeurs de fonctions incompatibles

Posté par (page perso) . Licence CC by-sa.
Tags :
14
7
nov.
2018

Posons nous dans le cas suivant (oui ça commence direct)

int strange_apply(int (*f)(int) {

    return reinterpret_cast<(int(*)(int, int)>(f)(1, 2);

}

Ce code compile avec un warning depuis le dernier gcc, et c'est bien car c'est en fait un undefined behavior (cast entre types de fonctions incompatibles dans le cas présent).

Et pourtant on voit pas mal de code (...)

Journal Pythran - 0.9.0 - kozhamzer

Posté par (page perso) . Licence CC by-sa.
Tags :
24
7
nov.
2018

Petite mise en bouche en alexandrin pour annoncer une nouvelle version de Pythran, compilateur pour le Python scientifique.

L'automne arrive, avec son lot de feuilles mortes
Pythran jamais ne dérive, il fallait qu'il sorte
Pas de grande nouveauté, juste le nécessaire
Tout est vectorisé, vraiment il faut le faire !

Le logiciel est comme toujours disponible sur pypi, anaconda et Github.

Comme annoncé dans les vers ci-dessus, la grande nouveauté vient du passage de boost.simd à xsimd (...)

Journal Mémorisation partielle de fonction constexpr

Posté par (page perso) . Licence CC by-sa.
Tags :
23
25
sept.
2018

Demat'inal,

Dans la lignée des expériences C++ que j'essaie de partager ici, je vous soumets ce bout de code qui m'a bien amusé :

template<class F, class T, T... Vs>
struct memoized {
    auto operator()(T v) const
    {
        static constexpr frozen::map<T, decltype(F{}(v)), sizeof...(Vs)> cached = {{Vs, F{}(Vs)}...};
        auto where = cached.
(...)

Journal Pythran - 0.8.7

Posté par (page perso) . Licence CC by-sa.
20
17
sept.
2018

Demat'i-nal,

La mouture 0.8.7, tendrement nommée skol-loarn de Pythran, est de sortie. Rappelons que Pythran est un compilateur dédié au calcul scientifique pour Python. Il s'installe avec pip ou conda et nécessite juste un compilateur C++ qui parle le dialecte c++11 sur l'hôte. Car oui, Pythran fait partie de cette ignoble lignée des transpileurs…

Quelques liens utiles :

Journal Une structure partiellement constante en C++

Posté par (page perso) . Licence CC by-sa.
Tags :
27
6
juil.
2018

Hop, quelques réflexions sur un langage non réflexif.

Si on veut un tableau de taille statique, on peut utiliser depuis C++11 la classe std::array<T, N>.

std::array<long, 5> my_array{{1, 2, 3, 5, 8}};

Si on veut forcer ce tableau à ne contenir que des constantes utilisables à compile-time, on a la possibilité de marquer cette déclaration constexpr.

constexpr std::array<long, 5
(...)

Journal Pythran, en plein délire

Posté par (page perso) . Licence CC by-sa.
50
23
mai
2018

Cher journal, je dois te confesser que j'ai déclenché quelque chose dont j'ai un peu honte.

Tu te souviens bien sûr de Pythran, ce compilateur pour noyau scientifiques écrit en Python, et de ce petit détail d'implémentation qui veut que le compilateur commence par transformer les fonctions Python en fonctions C++ template (a.k.a. transformer du code Python en meta-programme C++ pour faire stylé voire pédant).

Un choix de design a été de faire en sorte que ces fonctions ne (...)