IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Runtime-Compiled C++, un outil prometteur ? [Infos]


Sujet :

C++

  1. #1
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2010
    Messages : 738
    Points : 3 893
    Points
    3 893
    Par défaut Runtime-Compiled C++, un outil prometteur ?
    Runtime-Compiled C++, un outil prometteur ?
    La modification du code sans interrompre l'exécution pourrait bien révolutionner le cycle quitter - recompiler - redémarrer - recharger !

    Hier, dans les flux d'isocpp.org, une courte nouvelle a attiré mon attention : Runtime-Compiled C++, un outil qui permettrait la modification du code source C++ d'un programme pendant son exécution, est en bonne voie pour conquérir le monde C++.

    La vidéo en page d'accueil du blog donne un aperçu des possibilités de cet outil qui supporte déjà beaucoup de compilateurs (actuellement VS, gcc et clang, support pour Windows XP+, Mac OS X 10.7+, Ubuntu 12.04 64bits) puisqu'il ne nécessite pas de lourde modification à apporter au compilateur contrairement à Cling qui repose sur la LLVM.

    Un exemple d'utilisation intéressante : une console in-game exécutant directement du code C++.

    Ayant dans un de mes projets actuels la contrainte technique zéro-downtime avec introduction fréquente de mises à jour, RCC++ n'a pas manqué de se retrouver dans ma liste de projets à surveiller.

    Cela soulève plusieurs questions : l'introduction de cet outil affecte-t-elle les performances de l'exécutable ? Est-ce utile dans le produit fini ou est-ce à dédier à la production ?


    Ce projet vous semble-t-il intéressant ?
    Avez-vous des contraintes vous imposant un programme sans downtime ?
    Quelle approche utilisez-vous/utiliseriez-vous pour répondre à cette contrainte ?


    Sources

    Le blog officiel
    Le dépôt GitHub du projet

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : mars 2013
    Messages : 4
    Points : 26
    Points
    26
    Par défaut
    Je suis très heureux que vous aimiez le projet. Je suis l'un des auteurs. J'espère que ceci est compréhensible, excusez-moi mon français n'est pas très bon.

    Il ya très peu ou même pas d'effet sur la performance lorsque l'on utilise cette technique car le code est compilé normalement. Voir les pages "Optimizations" de la présentation https://dl.dropbox.com/u/9619385/RCC...evelop2012.pdf pour savoir comment accélérer les "virtual function calls" requis.

    Notre intention pour ce projet est de l'utiliser pendant le développement. La possibilité de charger le code durant l'exécution pose des risques de sécurité, et je ne conseillerais pas de le faire sur un système client.

    Je serais heureux de répondre à d'autres questions, mais je pars en voyage donc il peut y avoir des retards dans mes réponses.

  3. #3
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 290
    Points
    3 290
    Par défaut
    C'est super interessant comme projet. A terme ca pourrait aussi aider a obtenir un environnement de developement ou on peut coder et voir immediatement le resultat (comme c'est deja possible avec les languages plus dynamiques).

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : mars 2013
    Messages : 4
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Klaim Voir le message
    C'est super interessant comme projet. A terme ca pourrait aussi aider a obtenir un environnement de developement ou on peut coder et voir immediatement le resultat (comme c'est deja possible avec les languages plus dynamiques).
    Merci! En fait c'est déjà possible de coder et voir le résultat immédiatement. Pour avoir un environnement il faut un compilateur mais après vous pouvez utiliser un éditeur de texte.

  5. #5
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 290
    Points
    3 290
    Par défaut
    *__*

    Holy shit ca a l'air super!

    Bon j'imagine que ca dois pas marcher avec du code graphique par contre?

    Je suis tente d'utiliser ce genre de technos dans mon jeu, mais pas tout de suite.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    La démo dans la vidéo n'est pas assez graphique pour toi ?

    Ça a l'air génial sinon, bravo.

  7. #7
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 290
    Points
    3 290
    Par défaut
    Citation Envoyé par Troudhyl Voir le message
    La démo dans la vidéo n'est pas assez graphique pour toi ?
    Le code graphique n'est pas impacte, il ne sagit que du comportement (IA si tu veux) des entites. En gros du code qui ne touche pas a l'api graphique.

    Moi j'utilise Ogre par exemple, et admettons que j'ai du code qui cree des entites graphiques (donc, appels a OGL ou DirectX), alors si je change le code c'est difficile de ne pas avoir a tout suprimer puis recharger. Cela dis j'imagine qu'il y a moyen de faire en sorte que le moteur du jeu (qu'il soit generique ou specifique) soit code de maniere a s'adapter a ce genre de c++ live. Mais faut preparer le code pour ca.

    Pour du comportement c'est beaucoup plus facile je pense, ca n'implique pas d'API particuliere.

  8. #8
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Ah j'avais pas vu cette vidéo, j'ai seulement regardé celle en haut de la page d'accueil : changement de couleur en live.

  9. #9
    Nouveau membre du Club
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : mars 2013
    Messages : 4
    Points : 26
    Points
    26
    Par défaut
    Ça marche avec le code graphique, mais on doit ajouter les libraires, voir ici pour opengl et ici pour DX (the DX library code uses an old interface, see the OpenGL example for better automatic library adding via headers). Aussi regardez les pages "Case Study" de cette présentation.

    Je n'ai pas d'exemple à vous montrer pour l'instant, mais je vais le faire bientôt.

  10. #10
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2010
    Messages : 738
    Points : 3 893
    Points
    3 893
    Par défaut
    Je remercie beaucoup dougbinks de répondre ici

    Je dois avouer que ayant 35 secondes de boot à me taper avant d'accéder réellement au jeu, pouvoir modifier directement avec le include tracker ne serait pas un mal !

    Toutefois, je me demandais à quel point c'est invasif pour l'utilisation d'OpenGL, puisque je n'utilise pas ce dernier directement mais par l'écran de la SFML2 (modifier cette dernière ne me pose pas de problème, toutefois moins il y a de changement à apporter mieux c'est) elle-même derrière un moteur graphique assez conséquent.

    L'introduction de RCC++ sur une grande base de code demande-t-elle des modifications importantes également ?

    La possibilité de charger le code durant l'exécution pose des risques de sécurité, et je ne conseillerais pas de le faire sur un système client.
    Sur un système serveur ce serait donc jouable ? J'ai quand même des doutes quand à la performance... En fait il faudrait que je me plonge dans la chose pour savoir comment elle fonctionne pour être rassuré ^^ Si ce n'est que le prix d'une virtualité à payer, ce n'est pas grand chose (voir rien du tout en fait) . (bon si y'en a partout ça peut faire mal )

    Pour le système client, pour pouvoir charger le code il faut disposer du code source sinon que peut-on modifier sinon la totalité du code (et donc ça ne sert plus à grand chose de craquer de cette façon) ? Toutefois je veux bien croire que cela inclue quelques failles de sécurité en effet.


    Ah, une dernière chose, est-ce utilisable avec g++ de MinGW ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : mars 2013
    Messages : 4
    Points : 26
    Points
    26
    Par défaut
    Heureux de vous aider. Je dois partir maintenant, mais je vais essayer de répondre dans un délai de quelques jours.

  12. #12
    Membre chevronné

    Homme Profil pro
    Appui fonctionnel senior
    Inscrit en
    juin 2007
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Appui fonctionnel senior
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 461
    Points : 2 203
    Points
    2 203
    Par défaut
    Bonjour,

    Voilà un projet très intéressant et intriguant. Même si aujourd'hui, je travaille sur des technologies de plus haut niveau, je pense suivre ce projet de très très près

    Par contre, comment cela se passe-t-il d'un point de vue sécurité ? Peux-t-on contrôler le code injecté ?

  13. #13
    Membre actif Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 333
    Points : 249
    Points
    249
    Par défaut
    Pour moi c'est "THE Breakthrough" technologique en C++. Le meilleurs compromis en performance et itération. Que ça fonctionne avec les API graphiques c'est encore mieux.

    Lorsque je voulais faire ça (édition dynamique avec un minimum de perte de perf), je le faisais que dans des cas spécifiques et c'est assez lourd, avec des interfaces, des gros Union de pointeur de fonction, de la résolution de nom à la volé et du code C++ compiler en dll et {un}loadé dynamiquement

    En tout cas ce que permet RCC++ est incroyable ! Y a une très grande valeur ajouté

    Je serais intéressé de voir comportement avec du code template base avec du code généré à la compile etc...

    Et merci pour le "Open Source"

  14. #14
    Invité
    Invité(e)
    Par défaut
    C'est vraiment très impressionnant ! Cela m’intéresse beaucoup !

  15. #15
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    février 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2013
    Messages : 88
    Points : 448
    Points
    448
    Billets dans le blog
    1
    Par défaut
    Un de mes anciens professeurs a créé une techno similaire pour la langage Java et l'utilise actuellement pour ses travaux pratiques afin d'enseigner le langage avec différents problèmes tel qu'une tortue qui doit dessiner plusieurs formes suivant les paramètres donnés à une méthode que les élèves implémentent.

    Ce RCC++ peux être un outil utilisé de la même façon.
    Je serais ravi de voir l'enseignement d'un langage devenir plus ludique de cette façon.

  16. #16
    Expert éminent
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    novembre 2011
    Messages
    2 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2011
    Messages : 2 229
    Points : 7 619
    Points
    7 619
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par dougbinks Voir le message
    Je suis très heureux que vous aimiez le projet. Je suis l'un des auteurs. J'espère que ceci est compréhensible, excusez-moi mon français n'est pas très bon.
    Il est meilleur que nombre de français {'^_^}.
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    C'est Énorme !

    Mais comment cela fonctionne !? Ce sont des libs dynamique qui sont compilé/chargé au runtime ?

Discussions similaires

  1. [Divers] Recherche d'un outil pour la compilation
    Par lefju cabro dans le forum Outils
    Réponses: 5
    Dernier message: 01/07/2015, 08h49
  2. Compilation avec les outils d'Intel
    Par Kaluza dans le forum Langage
    Réponses: 5
    Dernier message: 28/05/2011, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo