Commençons très fort : « comment allez vous, yau de poële ?»
Aux détours de mes pérégrination dans le monde de l'open source à travers ce magnifique projet de traducteur Python Scientifique vers C++ que certains d'entre vous suivent depuis quelque temps déjà, le (bien connu ?) Pythran, j'apprends plein de truc. Alors hop on partage !
Au programme (ahah) :
- de la conception d'un logo
- des temps de compilation en C++
- de la gloire
Conception de Logo
Pleins de projets ont un logo. Un logo c'est joli, classouille, ça fait bien sur les présentations et c'est… pas un truc de programmeur. La preuve, c'est que je m'y suis essayé, et ça avait donné ça. Par chance, un super ex-étudiant (ex-super étudiant me semblait peu clair) a des relations, et les adorateurs de Pythran (comptez bien 5 personnes) ont pu choisir parmi plusieurs logos ! Une fois le choix fait, un petit coup de GIMP permet de passer en mode deux couleurs pour avoir un look moins crayonné, et facilite la vectorization de l'image. Hop, un petit coup d'Inkscape et on finit avec un beau logo votre navigateur affiche-t-il le SVG ? sinon comme ça peut-être ?
Temps de compilation
Pythran simule le polymorphisme dynamique de Python en utilisant le polymorphisme statique fournit par les template de C++ (et vive C++11 et les variadics template d'ailleurs). Un gros inconvénient est que la bibliothèque utilisée par Pythran pour réimplémenter (une toute petite partie de) la bibliothèque standard Python est du coup fournit sous forme d'un fichier d'en-tête. Oui, un fichier d'en-tête, naïf que j'étais :-) Quel désastre, il fallait près d'une minute pour compiler un « hello world » car on tirait toutes les dépendances (oui, même nt2) inutiles.
Comme Pythran a une connaissance complète du code généré, un gros chantier a été entrepris : éclater le bousin en pleins de fichiers d'en-tête et n'inclure que le strict minimum. C'est chose faite et on est retombé sur des temps de compilation raisonnables, de l'ordre de quelques secondes, plus pour les quelques gros cas. Le temps de validation (plus de 1000 cas test quand même) est passé de plus de deux heures (invivable) à moins de trente minutes (raisonnable).
NT2 et toutes les libs Boost sont construites comme ça, ça aurait du me mettre la puce à l'oreille…
Petit désagrément, tout l'historique du fichier est perdu, car l'arborescence a complètement changée. Mais je ne voyais pas de solution au problème.
la gloire
Après presque deux ans de dev, recevoir un mail d'un américain qui utilise le projet, puis d'un français, forcément linuxfrien, c'est… très troublant ! On a envie de répondre à toutes les questions, corriger tout les problèmes relevés, bref c'est chouette.
Et quel surprise de présenter son compilo à l'autre bout de la planète et de croiser des français qui t'abordent en disant « je lis linuxfr, j'aime bien ce que tu fais ».
Ça, c'est du carburant propre pour la machine à coder !
# Navigateur et SVG
Posté par tuxicoman (site web personnel) . Évalué à 10.
Encore faut-il que le serveur web dise que c'est un svg et non du texte.
# pré-compilation ?
Posté par Pierre Roc . Évalué à 2.
Je ne m’y suis remis que récemment, alors je vais peut-être dire une bêtise (j’ai pas bien compris à quoi servait le extern template du C++11), toutefois mon astuce pourrait améliorer les temps de compilation je suppose.
Ce que je fais, c’est créer un
.h
, par exemple (bidon) :et un
.cpp
:Ainsi je compile le nécessaire dans mon .cpp, une fois et un seule, tandis que l’inclusion de mon .h ne me coûte rien en terme de temps de compilation.
Le seul inconvénient, c’est qu’il faut prévoir tous les cas possibles dans le
.cpp
.[^] # Re: pré-compilation ?
Posté par serge_sans_paille (site web personnel) . Évalué à 2.
Et oui. Malheureusement, la plupart des algos sont génériques, à la STL et il existe une infinité de cas possibles…
Ceci dit ce n'est pas le cas de tous les algos, et on pourrait quand même les pré-instancier pour les types les plus connus.
Ensuite (et indépendamment des problèmes de temps de compilation) c'est assez confortable de ne livrer que des fichiers d'en-tête, comme ça on a un paquet composé uniquement de
.py
et de.hpp
qui est donc relativement facile à distribuer. Bref, beurre, argent du beurre, crémière…Pour le mot clef
export
, je croyais qu'il avait été supprimé du standard car supporté par un unique compilo avant 2011, mais enfin il est juste passé en obsolescence (je ne cite pas le standard).[^] # Re: pré-compilation ?
Posté par Gof (site web personnel) . Évalué à 5.
Le mot clef
export
a en effet été suprimmer.Mais en C++11 il y a
extern template
En gros, dans le .h tu fais
et dans un .cpp
extern template
dit au compilateur qu'il n'y a pas besoin d'instancier le template dans cette unité de compilation pour int et string car une autre unité de compilation le fait déjà. Ça permet de gagner du temps de compilation, mais aussi d'éviter des doublons des fonctions dans plusieurs bibliothèques.Et sinon, pour diminuer le temps de complations, il faut utiliser les entêtes pré-compilée. Et bientôt il y aura les modules.
[^] # Re: pré-compilation ?
Posté par serge_sans_paille (site web personnel) . Évalué à 1.
Oh ! une ref ?
[^] # Re: pré-compilation ?
Posté par Gof (site web personnel) . Évalué à 2. Dernière modification le 23 janvier 2014 à 14:25.
http://isocpp.org/blog/2012/11/modules-update-on-work-in-progress-doug-gregor
http://clang.llvm.org/docs/Modules.html
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3347.pdf
# ben... je préfère ton logo
Posté par J Avd . Évalué à 10.
en toute honnêteté. ..
"Gentoo" is an ancient african word, meaning "Read the F*ckin' Manual". "Gentoo" also means "I am what I am because you all are freaky n3rdz"
[^] # Re: ben... je préfère ton logo
Posté par titi_pas_cool . Évalué à 6.
pareil
[^] # Re: ben... je préfère ton logo
Posté par serge_sans_paille (site web personnel) . Évalué à 2.
Et en ascii art ?
[^] # Re: ben... je préfère ton logo
Posté par Nonolapéro . Évalué à 4. Dernière modification le 23 janvier 2014 à 12:15.
Pas convaincu non plus, l'ancien était rigolo.
Tu aurais pu faire une demande ici comme pour i3 https://linuxfr.org/users/grom/journaux/i3-recherche-un-contributeur-pour-son-logo
[^] # Re: ben... je préfère ton logo
Posté par chimrod (site web personnel) . Évalué à 2.
Trois ans et demi après tous les liens donné dans la page sont morts… Le web va finir par crouler sous la masse d'informations perdues !
# Séminaire calcul Python et… pythran
Posté par lolop (site web personnel) . Évalué à 4. Dernière modification le 23 janvier 2014 à 02:56.
https://www.lri.fr/seminaire.php?sem=555
D'ailleurs c'est la même personne que tu as rencontré à l'autre bout de la planète.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Séminaire calcul Python et… pythran
Posté par serge_sans_paille (site web personnel) . Évalué à 1.
moi pas comprendre
^^!
À qui se rapporte de c' ?
[^] # Re: Séminaire calcul Python et… pythran
Posté par lolop (site web personnel) . Évalué à 2.
Je pensais à Serge Guelton qui cause dans les deux événements… puis j'ai vu que tu sembles bosser avec lui :-) mais il était trop tard pour corriger (et c'est pas trop important ;-)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Séminaire calcul Python et… pythran
Posté par serge_sans_paille (site web personnel) . Évalué à 6.
Ahah, c'est moi ;-)
# Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
# vous yau de poële
Posté par Bayet Thierry . Évalué à -1.
Tu tu… si on sais pas ce qu'est un tuyau, peut-être le sait-on du vousyau.
Allez, c'est peut-être fort intéressant, mais je vais me coucher.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.