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 Pythran, en plein délire

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
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 (…)

Journal un pacman en LaTeX

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
47
5
juil.
2012

(non, ce titre n'annonce pas un tout nouveau gadget pour amateurs de vintage game)
Yo,
quand j'étais en thèse, je faisais pleins de petites présentations informelles pour présenter mes modestes travaux etc, et pour avoir la classe j'utilisais la classe LaTeX beamer. Pratique, élégant, sobre, rapide etc, mais alors pas du tout funky.

Alors pour mettre un peu d'ambiance,
dans mon quartier de vieux débris,
j'ai regroupé toutes mes connaissances,
intellectuelles et c'est depuis que…

j'ai produit un petit (…)

Journal avec Pythran, Numpy file comme le vent

Posté par  (site web personnel) . Licence CC By‑SA.
46
5
avr.
2013

Salut mon petit journal,

je te tiens de temps en temps au courant des avancement de Pythran, ze convertisseur Python -> C++ dédié au calcul scientifique. La dernière fois que nous avons discuté, tu m'avais dit de repasser te voir quand je serais capable de supporter ce genre de calculs:

import numpy as np
n = 100000
b, c = np.ones(n), np.ones(n)
d = np.sqrt(b
(…)

Journal [C++14 ] Expressions template pour les nuls

45
31
mai
2016

Expression Templates pour les nuls

Après un contact prolongé avec Joël Falcou, et pas mal de nœuds aux cerveaux pour arriver à émuler le comportement du broadcasting de Numpy avec des expression templates dans Pythran, j'ai eu l'envie soudaine, un peu folle peut-être, de réécrire un moteur d'expressions template en C++14, mais pour faire simple et didactique.

Mais de quoi zy parle

Les expressions templates sont une maintenant assez vieille technique de C++ qui permet par exemple d'éviter de (…)

Journal Les codes fantastiques (et où les trouver)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
42
1
juil.
2023

Demat' iNal,

Depuis fin 2022, j'anime une petite rubrique dans GNU/Linux Magazine, intitulée les codes fantastiques, où est décrit en une page une petite aventure informatique, un bout de code qui m'a amusé / plus / interpelé. [0]

Comme c'est les 25 ans de LinuxFR, et que j'en écris plus que ce qu'ils peuvent publier (trois d'avance pour le moment !), voici une sorte de ?hors série? que je ne publierai pas là bas du coup.

Les codes fantastiques

(…)

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 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 Pythran 0.8.2 — compilation de noyaux scientifiques écrits en Python

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
38
14
sept.
2017

Mâtin, quel journal !

Pythran est bien vivant
Un vrai compilateur !
Et heure après heure,
Le bonheur vient en codant !

Mais des mois s’écoulèrent,
Sans que je postasse,
Le moindre mot dans l’air,
Ça manque un peu de classe

Et là, tout à coup, soudainement, surgit la version 0.8.2 de Pythran. Que s’est‐il passé depuis mon dernier soliloque sur LinuxFr.org ? Allez, plongeons dans le journal des modifications, mais avant ça, un petit rappel sur Pythran, par l’exemple.

Vous voyez ce bout (…)

Journal Pythran à Scipy2013 !

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
37
4
juin
2013

Ô joie, le compilo Pythran dont les évolutions sont suivies par une foule Linuxienne en délire, a droit de citer lors de la grand messe annuelle du Python scientifique, Scipy2013, plus exactement .

Un grand merci à vous tous qui répondez, critiquez, hurlez, piaillez dans les différents journaux pythranesques, ça m'aide beaucoup pour la motivation, et aussi pour améliorer les choses.

Comme le défi Pythran, c'est d'avoir de la perf en gardant la syntaxe Python, et vu que (…)

Journal Frozen - Une alternative à gperf pour les utilisateurs de C++14 fan de constexpr

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
36
22
mai
2017

Ce journal présente frozen, une bibliothèque open-source, à base d'en-tête qui fournit une version rapide, non-modifiable, compatible avec une utilisation dans un contexte constexpr des bien connus std::set, std::map, std::unordered_map et std::unordered_set, pour C++14. Elle peut être utilisée comme une alternative à gperf.

Introduction

J'ai toujours trouvé frustrant qu'une variable globale déclarée const std::set<int> keys = {1, 2, 3} soit initialisée (…)

Pythran 0.6 - compilation de noyaux scientifiques écrits en Python

Posté par  (site web personnel) . Édité par ZeroHeure, Benoît Sibaud, palm123 et tuiu pol. Modéré par Benoît Sibaud. Licence CC By‑SA.
36
6
nov.
2014
Python

Pythran est un compilateur pour les noyaux de calcul scientifique écrit en Python. Il permet d'écrire des modules dans un large sous-ensemble de Python + Numpy, d'ajouter quelques lignes de commentaire pour spécifier les types des fonctions exportées, enfin de compiler l'ensemble pour obtenir un module natif capable (parfois !) d'utiliser efficacement multi-cœurs et unités vectorielles. Le reste de la dépêche décrit le fonctionnement du compilateur, les évolutions récentes et propose une comparaison avec les alternatives : Cython, numba et parakeet.

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 Pythran 0.8.5 - de l'intérêt des compilateurs

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
35
24
avr.
2018

Demat' Nal

Pythran, compilateur pour un sous ensemble du langage Python dédié au calcul scientifique, en est à sa version 0.8.5.

En guise d'exemple, il permet de transformer un code source comme celui là :

#pythran export weights(uint8[:,:])
#runas import numpy as np; x = np.arange(10, dtype=np.uint8).reshape(5,2); weights(x)

import numpy as np
def weights(input_data, threshold=0.3):
    n_seq, length = input_data.shape
    weights = np.zeros(n_seq, dtype=
(…)

Sortie de LLVM, Clang, lld, lldb 8.0.0

Posté par  (site web personnel) . Édité par Ontologia, Benoît Sibaud, Sylvestre Ledru, bubar🦥, Davy Defaud, palm123 et Bruno Michel. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
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 !