[Officiel] Python sur MOS

15 sujets de 1 à 15 (sur un total de 119)

  • Yomgui

      #1275

      Derniere version de Python sous forme d’un paquet MorphUP:

      Index pour MorphUP

      Introduction

      Comme je vous l’ai annoncé sur le thread « Blender et Python sur MOS » je split mes 2 dev car l’un et l’autre sont asser important pour avoir leur propre thread.

      Ici c’est donc Python uniquement, pour l’autre je demande aux modos de me le fermer, il aura bien vécu (plus de 2600 visites merci ;-)).

      Et Blender c’est ici le thread.

      Rappel:

      20/01/2005:

      Python 2.4: V0.4.beta2 dispo sur le Wiki Peg. (binaire inclus)

      Historique:

      21/01/2005:

      – ouverture du thread

      02/02/2005:

      – ça chauffe.. ça chauuuuuffe :-)

      07/02/2005:

      Ah y est !!!!! J’ai le grand plaisir de vous annoncer que ce w.e. j’ai obtenue la première version de Python en .library sur un compatible-Amiga.. est c’est sur Morphos ;-)

      Donc ça n’a pas était sans un grand mal, j’aurai bossé au moins dans les 80h pour passer de la version statique en dynamique.

      Un grand merci à Henes qui m’a expliqué comment marche les bibliothèques en mode « baserelative » et qui est toujours à l’écoute de mes petits pb avec le SDK ;-) (PS: j’ai trouvé des bugs dans la nouvelle mouture de cvinclude.pl, je t’envois bientôt ma correction).

      Je ne remercie pas Henes pour m’avoir fait voir que j’allais passer mon w.e. à recoder la plus part des fonctions de la stdio et de la stdlib :-P.

      Donc Python-Phase 2 = fini… (bien qu’il faut encore que je corrige qq bugs, mais l’appli ne hit pas en tout cas!)

      Phase-3 => les modules en bibliothèques aussi, porter le code .py de distutils et faire une release officielle.

      Rappel: Phase-4 => finir le port des principaux modules, ça sera normalement la dernière phase avant de passer au port de SCon pour pouvoir compiler Blender (et donc passer à ce dernier).

      07/02/2005:

      SCons porté. Mais en attente d’être testé avec Python. Officiellement déclaré auprès des auteurs de SCons.

      02/03/2005:

      Phase 3 bientôt finie. Hier j’ai enfin pu lancé un script python (setup.py utilisant distutil) permettant de générer automatiquement un module python.

      [edit]Auto-modération: Le texte qu’il y avait ici, n’était plus à jour.[/edit]

      17/03/2005:

      – Arrêt du développement pour 3 mois. Reprise au mois de Juillet. (non, c’est pas pour des vacances :-P)

      27/04/2005:

      – j’ai quand même un tout petit peu travaillé sur Python et très bonne nouvelle: un gros bug est résolus je vais enfin pouvoir livrer qq chose.

      02/05/2005:

      – Première version de la python.library fonctionnelle, vous pouvez la télécharger sur cette page du Wiki Peg.

      08/09/2005:

      – Nouvelle archive python corrigant un bug pour le lancer depuis Ambient, ainsi qu’un gros pb dans le SDK qui le rendait inutilisable. La référence est 20050908

      11/09/2005:

      – Nouvelle archive python corrigant une demi-tonnes de pb avec les appli utilisant le SDK (genre blender…). Un vrai bordel ce SDL… Enfin aller chercher tout ça sur mon site comme d’hab ;-)

      05/03/2006:

      Version 2.4.2 sortie ;-)

      Aucuns changements majeurs côté MorphOS en faite… juste une synchronisation sur le developpement principal.

      Toujours sur mon site ;-)

      10/03/2006:

      Officialisation du port: Pages officielle des port de Python

      29/03/2006:

      Passage de Python sous forme d’un paquet MorphUP: Index pour MorphUP

      – Nouvelle version retro-compatible avec la 2.4 pour la bibliotheque python.libray.

      05/10/2006:

      Support des modules dynamiques!!

      C’est avec une joie non cachee que je vous annonce que le systeme de chargement de module dynamique commence enfin a fonctionner! 8-)

      Avec les infos de CISC, la libdl de BigFoot et un bonne refonte du code actuelle de la part de votre serviteur, le reve est realite.

      Je vous laisse donc profiter d’un premier jet (pollue par plein de debug sur le port serie et dans la console python ;-)) pour authentifier mes dires.

      [d]L’archive est la[/d]. Jetez-vous dessus. X-D

      PS: attention cette version risque de ne plus faire fonctionner Blender (j’ai pas teste, a vos risques et perils!!!! :-p)

      Pensez a sauver l’ancienne.

      10/10/2006:

      – Version officielle de la python.library generation 6 avec support des modules dynamiques.

      L’archive est la. Note: meme chose que le 5, il faut que je refasse des binaires Blender car ils ne fonctionnes plus avec cette version.

      16/10/2006:

      – Encore une autre, mais celle-ci c’est important, vu qu’elle fait fonctionner Blender. Au passage divers fixes comme sur arexxmodule.

      L’archive est la

      07/11/2006:

      – Super update avec une bonne gestion des modules dynamiques. Maintenant les CTDT sont geres et si erreur il y a durant leur execution, seul le module n’est pas charge (au lieu d’un exit() complet de l’application). Cela permet en plus de compiler des modules fait pour d’autres platformes, sans ce compilquer a changer le code existant pour ouvrir des bibliotheques comme TinyGL ou PowerSDL.

      L’archive est la

      – Avec cette update je vous propose quelques modules que j’ai compile pour vous:

      Numeric: gestion evoluee de tableaux multidimenssionnels et d’operations mathematiques dessus. Remplace par NumPy maintenant, mais je ne l’ai pas compiler :-/. Demande par PyGame et PUG ;

      PIL:

      Python Imaging Library, manipulations basiques d’image (chargement, sauvegarde, correction chromatographique, dessin, …) ;

      PyGame: Le fameux module permettant d’acceder a la lib SDL en Python et faire rapidement des jeux sympathiques.

      PGU: Ce module permet de cree des interfaces graphiques (GUI) avec PyGame. Il y a aussi de bon exemples de jeux sur la homepage de PGU.

      Tous sont telechargeable dans ce repertoire.

      Pour l’installation des modules:

      – copier ‘include’ et ‘lib’ dans usr: si ils existent.

      – copier tout le reste dans SYS: (Base dir ou ce trouve python normalement, C:, LIBS:, …).

      lugduweb

        #30277

        Copié/collé :

        La liste des modules pour Python est assez impressionante :

        Je vous invite à y jeter un coup d’oeil (au moins juste pour voir).

        Liste de modules Python

        Il y a de tout : bases de données, serveur HTTP, browser HTTP,

        OpenGL, weblog, wiki, bot IRC !!!

        Reste plus qu’à porter les modules quoi.

        Voilà une bonne idée non ?

        Yomgui

          #30278

          Avant toute chose, il faudrait que qq1 prenne le code du module _socket (Modules/_socketmodule.c) et vérifie qu’il soit correct et qu’il tourne bien.

          (Y a aussi une partie en scripts, cf Lib/socket.py, faudra aussi que je donne un patch pour rajouter ce qu’il manque dans Lib/plat-morphos/, un IN.py pour être précis qui se génére avec le fichier genbidultruc.py qu’il faut légérement modifier)

          Yomgui

            #30279

            Bonjour à tous, c’est pour pleurer.

            Y en a marre des appli nunux qui font chier avec leurs variables globales de partout qui font chier quand on veut faire un lib partagé e sur ‘miga like !

            Tous ça pour dire que c’est pas gagné pour avoir Python en .library….

            un exemple de ce que je veux dire ? regardez le fichier Objects/object.c par exemple dans l’archive de python. Au tout début il y a un « int Py_DivisionWarningFlag; ».

            => variable globale, si vous utilisez directos ce fichier dans un .library, chaque tâche l’utilisant accéderont à la même zone mémoire en attaquant ce symbole => risque de conflit garantis!

            Or sous nunux les variables globales sont en faite des variables locales à un processus, soit privées au processus. 2 processus utilisant la lib ne voit donc pas la même zone de mémoire => pas de conflits (sauf entre thread par contre, qui sont des enfants du processus).

            Mais le pire.. c’est que c’est aussi valable pour les variable déclarées ‘static’ ! et là y en a un paquet dans le code.

            Et ça c’est juste pour 1 fichier… il faut faire un passe sur tout le code de python et modifié tous les accès à des variables globales (‘static’ ou non).

            En résumé et pour se la péter à table: le ‘core’ de python n’est pas ‘Thread-safe’…

            PS: merci Henes pour les qq explications hier soir à un mec fatigué ;-)

            ACE

              #30280

              Yomgui je te felecite pour ton courage ce que tu fais est formidable

              Le PSG qui gagne la ligue des champions c'est possible ... Que dans Swos.
              Amiga Morphos Rules.

              Yomgui

                #30281

                @ACE: merci ;-)

                entre courage et folie mon coeur balance ;-)

                Mon petit si tu manges pas ta soupe tu finiras développeur plus tard!

                Yomgui

                  #30282

                  Bon j’ai qq chose d’important à dire:

                  Du faite de mon travail important sur Python, qui me coute pas mal sur ma vie physique/morale/privée/publique/etc… je tiens donc en garder les rennes qq temps. De ce fait seule la version dite ‘statique’ de python sera livrée avec les sources (dernière en date = 0.4.beta2).

                  La nouvelle version qui sera (si je la termine 8-)) la première à supporter le chargement dynamique des modules et à être elle même sous forme d’une .library n’aura pas son code ouvert.

                  Python en v2.4 est effectivement « GPL-compatible », ce qui implique (lisez le fichier LICENSE) que je peux utiliser le code de Python, le modifier mais pas forcement livrer les sources.

                  Petit passage du README aussi:

                  (…)

                  This Python distribution contains no GNU General Public Licensed

                  (GPLed) code so it may be used in proprietary projects just like prior

                  Python distributions. There are interfaces to some GNU code but these

                  are entirely optional.

                  (…)

                  Donc voilà. c’est dit ;-)

                  PS: ne vous inquiétez, si les extra-terrestres doivent m’enlever, le code sera livré à qq1 d’autre (enfin si lui non plus s’est pas fait enlever en même temps que moi…)

                  warp3

                    #30283

                    @Yomgui:

                    Mon petit si tu manges pas ta soupe tu finiras développeur plus tard!

                    Y’a pas de honte à être développeur !

                    Et puis, j’en connais au moins un (pas sur amiga-like) qui

                    gagne plutôt bien sa vie avec ce métier.

                    Yomgui

                      #30284

                      Y’a pas de honte à être développeur !

                      Et puis, j’en connais au moins un (pas sur amiga-like) qui

                      gagne plutôt bien sa vie avec ce métier.

                      Mais c’est plus souvent ingrat…

                      PS: moi aussi je gagne ma vie (pas autant que cela devrait mais bon… c’est un autre sujet) grace au développement. mais ça reste ingrat…

                      Lanza

                        #30285

                        Or sous nunux les variables globales sont en faite des variables locales à un processus, soit privées au processus. 2 processus utilisant la lib ne voit donc pas la même zone de mémoire => pas de conflits (sauf entre thread par contre, qui sont des enfants du processus).

                        Il existe un type de library qui permet ce genre de choses, ce sont les classes Boopsi. M’enfin je pense pas que ce soit très indiqué dans le cas qui t’interesse.

                        Sinon je dis pitet des couneries, j’ai pas cherché plus loin, mais tu pourrais faire un objet de contexte. Genre une struct PythonContext dont une appli supportant ta lib demanderait l’initialisation juste après l’ouverture de la lib et la libèrerait juste avant la fermeture. Ce qui est chiant c’est que du coup tu risques de devoir la passer en paramètre à chaque appel de fonction. :-(

                        Yomgui

                          #30286

                          @Lanza :

                          oula… non Lanza! Le problème est bien plus compliqué que cela…

                          Tu peux pas changer le code (dans ta solution il faudrais changer TOUTES les fonctions) car il provient de l’extérieur et on a pas le contrôle dessus.

                          Mais t’inquiéte j’ai la solution (merci Henes) => library relatives à R13. ainsi c’est le compilo qui se charge de tout.

                          Lanza

                            #30287

                            Tant mieux alors. Je me doutais bien que ça risquait d’être dangereux de toucher à l’API, mais sait-on jamais.

                            [off topic]

                            C’est quoi les libs relatives à R13 ? Y a t’il un équivalent sous OS3 ?

                            [/off topic]

                            Yomgui

                              #30288

                              [off topic]

                              C’est quoi les libs relatives à R13 ? Y a t’il un équivalent sous OS3 ?

                              [/off topic]


                              @lanza
                              :

                              [ouverture du off topic]

                              r13 c’est le 13ième registre global sur un powerpc. dans la doc sur les ABI (en particulier sur ‘System V.4’) fournie dans le SDK (SDK:Documentation/Articles/Porting/PowerOpenABI.txt), on y voit que le registre r13 contient l’adresse des données du type ‘small’. Grace à cela, tu peux gérer pour chaque tâche un espace de variables propre à celle-ci, en générant d’une certaine façon les fichiers .o et la .library (-mresident32, code spécific dans init de la lib, stubs pour sauvegarde du registre r13).

                              Il existe effectivement un équivalent en OS3 il me semble… mais je le connait pas dans le détail.

                              [fermeture du off topic]

                              Yomgui

                                #30289

                                bientôt ici une très bonne nouvelle pour Python sur morphos ;-)

                                notre OS favoris aura une belle exclusivité face à tous les autres OS… 8-)

                                falcon1

                                  #30290

                                  yes yes yessssss

                                  arexx ???

                                15 sujets de 1 à 15 (sur un total de 119)

                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement [Officiel] Python sur MOS

                                Amiga Impact