Merci ! J'avoue que mon investissement dans la communauté Windowsienne reste minimaliste hein. Je me trouve même déjà bien altruiste de faire tous ces efforts d'empaquetage !
En vrai, comme évoqué dans le nourjal, rpath ne résout qu'une partie des problèmes, vu qu'il est positionné sur le code généré par Pythran, dont je ne maîtirse pas l'environnement d'exécution futur. Il est heureusement possible à l'utilisateur de Pythran de positionner le rpath lui même, ou d'aller faire un coup de xxd pour éditer le binaire final (mais beurk hein :-))
J'aime bien cette idée de fichier de conf nix qui sert de documentation de dépendances. D'une certaine façon, le .travis.yml et le .appveyor.yml jouent un rôle similaire.
Je reste néanmoins persuadé qu'il est plus facile pour l'utilisateur de rentrer un simple pip install pythran et que ça juste marche :-/ C'est un peu le problème du standard de fait.
Même ainsi, je me demande quelle doit être le mode par défaut : lier avec la lib blas système si elle est présente ? Les blas statiques empaquetées par mes soins ?
Plus la base d'utilisateur augmente, plus la base de contributeurs potentiels aussi, non ?
Pas si sûr... l'écosystème Python scientifique fait que les compétences Compilation, C++ et calcul intensif ne se retrouvent pas forcément dans la base d'utilisateurs. Mais on commence à avoir quelques contributions significatives, donc je suis content !
Une autre source de undefined behaviour est quand on a des pointeur extern "C"
Par exemple:
extern "C" int my_function(int); // Une fonction d'une bibliothèque C
int foo() {
int (*f)(int) = my_function; // Compile sans warnings
f(42); // undefined behaviour
// undefined behaviour dans function_cast::operator()
return apply(my_function);
}
Peux tu détailler l'origine de ce comportement indéfini ? Je pensais que extern "C" changeait juste le name mangling, ça changerait aussi la convention d'appel?
# Billet désaccordé
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran 0.9.3 a une Fedora sur la tête. Évalué à 2.
Si un modo passe dans le coin, tout à mon enthousiasme j'ai oublié l'importante passe de relecture :
(削除) il (削除ここまで)pythran est maintenant empaqueté(削除) la (削除ここまで)la 0.9.3Merci !
[^] # Re: super!
Posté par serge_sans_paille (site web personnel) . En réponse au journal CPPP. Évalué à 2.
C'est surtout un langage de grands enfants : https://twitter.com/MJKlaim/status/1139856421867180033
[^] # Re: Je prends !
Posté par serge_sans_paille (site web personnel) . En réponse au message Offre license JetBrain. Évalué à 2.
oki, envoie moi un mail que je te transfère ça ! Tu trouveras mon contact sur ma page perso.
[^] # Re: rpath sous Windows
Posté par serge_sans_paille (site web personnel) . En réponse au journal Retour d'expérience sur l'empaquetage d'une bibliothèque native pour Python. Évalué à 2.
Merci ! J'avoue que mon investissement dans la communauté Windowsienne reste minimaliste hein. Je me trouve même déjà bien altruiste de faire tous ces efforts d'empaquetage !
En vrai, comme évoqué dans le nourjal,
rpathne résout qu'une partie des problèmes, vu qu'il est positionné sur le code généré par Pythran, dont je ne maîtirse pas l'environnement d'exécution futur. Il est heureusement possible à l'utilisateur de Pythran de positionner lerpathlui même, ou d'aller faire un coup dexxdpour éditer le binaire final (mais beurk hein :-))[^] # Re: Nix?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Retour d'expérience sur l'empaquetage d'une bibliothèque native pour Python. Évalué à 3.
J'aime bien cette idée de fichier de conf nix qui sert de documentation de dépendances. D'une certaine façon, le
.travis.ymlet le.appveyor.ymljouent un rôle similaire.Je reste néanmoins persuadé qu'il est plus facile pour l'utilisateur de rentrer un simple
pip install pythranet que ça juste marche :-/ C'est un peu le problème du standard de fait.Même ainsi, je me demande quelle doit être le mode par défaut : lier avec la lib blas système si elle est présente ? Les blas statiques empaquetées par mes soins ?
[^] # Re: Pythran, numpy et tensorflow
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran 0.9.2 - koailh. Évalué à 3.
Le plus proche que l'on pourrait avoir est en discussion, je te recommande la lecture de ce fil :
https://www.freelists.org/post/pythran/Use-pythran-to-deploy-tensorflow-models
[^] # Re: "Pythran is an ahead of time compiler for a subset of the Python language" : Subset ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran 0.9.2 - koailh. Évalué à 3. Dernière modification le 06 mai 2019 à 12:45.
Pythran ne supporte pas les classes, et ne supporte pas le code polymorphique.
Pour compiler une partie, on peut regarder du côté de https://transonic.readthedocs.io/en/latest/
Pas si sûr... l'écosystème Python scientifique fait que les compétences Compilation, C++ et calcul intensif ne se retrouvent pas forcément dans la base d'utilisateurs. Mais on commence à avoir quelques contributions significatives, donc je suis content !
# Environnement de développement
Posté par serge_sans_paille (site web personnel) . En réponse à la dépêche Fedora 30 bêta est là !. Évalué à 2.
Et son camarade de classe Clang/LLVM taille maintenant du 8
[^] # Re: Flang
Posté par serge_sans_paille (site web personnel) . En réponse à la dépêche Sortie de LLVM, Clang, lld, lldb 8.0.0. Évalué à 3.
À ce sujet, la lecture de ce thread est intéressante.
[^] # Re: Et ça ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythreries - Perl ou Python?. Évalué à 5.
Celui là est facile : appel sans argument d'une lambda sans capture et sans argument en C++11.
Notons qu'avec des virgules ça devient du python valide !
[^] # Re: Vérifier si deux énoncés parmi N (N >= 2) sont vrais, en Python
Posté par serge_sans_paille (site web personnel) . En réponse au journal Carnet de route - taume 0. Évalué à 2.
Exact, merci !
[^] # Re: memcpy en C++...
Posté par serge_sans_paille (site web personnel) . En réponse au journal Carnet de route - taume 0. Évalué à 3.
J'étudiais https://github.com/llvm-mirror/llvm/commit/f724c01683a66e2916b0f5ce26b98b59fd5df59d
Si le types est trivialement copiable alors un
std::memcpyest valide.[^] # Re: Vérifier si deux énoncés parmi N (N >= 2) sont vrais, en Python
Posté par serge_sans_paille (site web personnel) . En réponse au journal Carnet de route - taume 0. Évalué à 3.
Sexy :-) par contre dans le pire des cas tu es en
O(n^2)non ?[^] # Re: Expliciter l'intérêt
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran - 0.9.0 - kozhamzer. Évalué à 2.
En théorie oui, et c'est une proposition sacrément intéressante que tu fais là.
En pratique je n'ai pas le bagage pour ça mais (au choix, non exclusif)
[^] # Re: Expliciter l'intérêt
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran - 0.9.0 - kozhamzer. Évalué à 3.
C'est principalement du à la fusion de boucles, comme expliqué ici : http://serge-sans-paille.github.io/pythran-stories/pythran-case-resampling.html
[^] # Re: std::function
Posté par serge_sans_paille (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2.
On peut imaginer un système d'enregistrement de plugin avec des paramètres optionnels (je dis pas que c'est le bon design hein) :
Ça permet d'avoir des paramètres optionnels pour les plugins.
[^] # Re: extern "C", pointer to member function,
Posté par serge_sans_paille (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2.
Super intéressant, merci !
[^] # Re: Crados
Posté par serge_sans_paille (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2.
Cette vidéo explique très bien un tas de concepts liés : https://www.youtube.com/watch?v=g7entxbQOCc
[^] # Re: extern "C", pointer to member function,
Posté par serge_sans_paille (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2.
Peux tu détailler l'origine de ce comportement indéfini ? Je pensais que
extern "C"changeait juste le name mangling, ça changerait aussi la convention d'appel?[^] # Re: Mensonges !
Posté par serge_sans_paille (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 3.
Un cas proche dans LLVM (bon, plus exactement dans compiler-rt), mais qui porte sur le type de retour :
https://github.com/llvm-mirror/compiler-rt/blob/23b063668e563dd5cc8fc37e00c3199a9afa595f/lib/sanitizer_common/sanitizer_linux.cc#L1715
On retrouve la même dans https://github.com/python/cpython/pull/6008 d'ailleurs.
Un autre cas détecté par GCC qui fait froid dans le dos
[^] # Re: C'est mieux si les paramètres sont inconnus lors de la compilation
Posté par serge_sans_paille (site web personnel) . En réponse au journal Mémorisation partielle de fonction constexpr. Évalué à 4. Dernière modification le 26 septembre 2018 à 20:28.
Complètement d'accord, mon exemple est bien mauvais :-) Merci d'avoir pointé ça !
[^] # Re: Ça pique les yeux
Posté par serge_sans_paille (site web personnel) . En réponse au journal Mémorisation partielle de fonction constexpr. Évalué à 7. Dernière modification le 25 septembre 2018 à 20:41.
Si ça peut te rassurer, ou à défaut t'arracher un sourire, j'ai un sentiment similaire en assistant à CppCon. On est tous le noob de quelqu'un :-)
[^] # Re: simd explicite ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran - 0.8.7. Évalué à 3.
Pour xsimd, non (la lib fournit une abstraction des registres vectoriels).
Pour sleef, elle fournit de nouvelles fonctions compatibles avec l'usage d'intrinsèques, comme le montre cet exemple tiré de leur doc
[^] # Re: simd explicite ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran - 0.8.7. Évalué à 3.
Ce qui répond un peu à la question :-) Il y a plusieurs libs qui fournissent une version vectorisée de la makorité des fonctions de la lib math, p.e. https://software.intel.com/en-us/node/524352, http://sleef.org/, ou https://github.com/QuantStack/xsimd. Pythran utilise ces libs car le compilo ne le fait pas (mais ça bouge, et llvm sait représenter ça au niveau IR, cf. https://reviews.llvm.org/D24951)
[^] # Re: simd explicite ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran - 0.8.7. Évalué à 3.
Malheureusement non. Petit exemple qui illustre mes propos : https://godbolt.org/z/pNNPhx