• [^] # Re: SteckDenis

    Posté par . En réponse au journal Projet Saevia - Recherche de contributeurs. Évalué à 9.

    Ohoh, on parle de moi sans que je l'aie demandé :D .

    /me se dégonfle les chevilles

    En effet, Nuclear m'a envoyé un mail il y a bien longtemps pour me faire part de son intérêt pour Setup, bien qu'il n'était pas encore très avancé (spoiler : il l'est maintenant, avec un front-end graphique, gestion propre des fichiers, serveur de construction, et 22 669 SLOC, journal dans à peu près un mois).

    Le problème est qu'il veut limiter les dépendances, ce que je peux comprendre. Passer un paragraphe complet à expliquer ce que fait une fonction Qt est un peu trop.

    De plus, Setup est devenu un bon gros morceau, très riche en fonctionnalités et en petit détails, et assez solide (on peut même aller jusqu'à taguer un fichier pour qu'il ne soit jamais remplacé lors d'une mise à jour, y compris s'il n'a pas encore été installé).

    Néanmoins, et heureusement pour Nuclear, la partie «difficile» de Setup, à savoir le gestionnaire de dépendances, et très facilement dé-C++-ifiable. Il est grosso-modo codé en C pur, avec des listes chainées (qui utilisent new à la place de malloc(), mais ça se change facilement), et quelques goodies de base du C++ (classes pour la structure, enums dans les classes, et c'est tout). Il pourra donc facilement le récupérer, puis tenter d'expliquer comment marchent 1601 lignes (sans compter le .h) où chacune d'entre elle a son importance, pour former un solveur à hypergraphe, optimiseur (passes d'optimisations comme en compilation, pour retirer ce qui n'est pas nécessaire) et capable d'attribuer un poids à chaque noeuds et chaque chemin (un beau morceau algorithmique ça, surtout quand on connait la complexité effrayante des hypergraphes).

    Sinon, je dois bien encore avoir quelque-part un petit morceau de Setup 1 (l'actuel est le 3), un petit hack tout simple codé en un week-end, qui utilise Qt, wget et tar. Il gère les dépendances dans une fonction de 30 lignes, installe les fichiers en une commande tar, et n'est en C++ que pour bénéficier de ce que Qt apporte (QSettings pour la liste des paquets, QHash et QList pour le reste).

    Pour ceux qui s'intéressent au solveur :

    * Annonce du début de la programmation du solveur : http://logram-project.org/news-2-65-1-nouveau-solveur-pour-s(...)
    * Annonce de la disponibilité du nouveau solveur (qui remplace l'ancien à branches qui avait des défauts) : http://logram-project.org/news-2-66-1-un-nouveau-solveur-de-(...)
    * Journal (sur mon site, je les appelle de la même manière parce que j'aime bien) qui parle de mes premiers essais : http://logram-project.org/news-2-64-1-resolution-de-dependan(...)
    * Les hypergraphes, domaine des mathématiques hautement abstrait et complexe, mais au combien puissant : http://fr.wikipedia.org/wiki/Hypergraphe