Skip to content

Details

ENGLISH WILL FOLLOW.

IMPORTANT : Cette rencontre est un atelier de programmation. CHAQUE PARTICIPANT DOIT APPORTER SON LAPTOP.

Au mois de juin 2017, Herb Sutter a publié une proposition d'évolution du langage : les métaclasses. La proposition comporte de nombreux exemples d'application du mécanisme qui enrichissent considérablement le langage. Non seulement cette proposition est-elle très emballante, elle est également accompagnée d'une version expérimentale de clang qui permet d'expérimenter concrètement avec ces idées. L'objectif de cet atelier est d'expérimenter avec cette proposition et d'échanger des idées d'applications pratiques. LES MÉTACLASSES NE SONT PAS UN STANDARD ET IL N'Y A PAS DE GARANTIE QU'ELLES LE SERONT SOUS CETTE FORME OU UNE AUTRE. À CE STADE, C'EST EXPÉRIMENTAL.

Il y a plusieurs étapes de préparation qui vous permettront de profiter au maximum de l'atelier :
1- Compiler la version expérimentale de clang sur votre machine
2- Lire cet article de Jonathan Boccara qui résume la proposition sur les métaclasses : http://www.fluentcpp.com/2017/08/04/metaclasses-cpp-summary/
3- Lire la proposition originale de Herb Sutter : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0707r0.pdf
4- Écouter la conférence de Herb Sutter à l'ACCU 2017 : https://youtu.be/6nsyX37nsRs
5- Installer le Compiler Explorer de Matt Godbolt sur votre machine

Pour compiler clang, il faut d'abord télécharger plusieurs dépôts à des révisions spécifiques. Ensuite il faut suivre les instructions de LLVM pour assembler les projets de la bonne façon, invoquer CMake, bâtir et installer le tout. Voici les URLs des dépôts que vous devez télécharger (les autres éléments optionnels de LLVM ne sont pas requis) :

1- LLVM : https://github.com/llvm-mirror/llvm/archive/40b1e969f9cb2a0c697e247435193fb006ef1311.zip
2- clang : https://github.com/asutton/clang/archive/master.zip
3- libcxx : https://github.com/llvm-mirror/libcxx/archive/64182a5877865cde2538c6038f98e3df33c93a03.zip
4- libcxxabi : https://github.com/llvm-mirror/libcxxabi/archive/c515867bc14c433febcc574baedd081c078124d1.zip
5- compiler-rt : https://github.com/llvm-mirror/compiler-rt/archive/06f1c090cb4e27ea82320bfa7af1e3cfb681edeb.zip

Ensuite, il faut suivre les instructions d'installation de LLVM : https://github.com/llvm-mirror/llvm/blob/40b1e969f9cb2a0c697e247435193fb006ef1311/docs/GettingStarted.rst#getting-started-quickly-a-summary

Finalement, si vous aimeriez utiliser le Compiler Explorer, il faut le télécharger ici : https://github.com/mattgodbolt/compiler-explorer/archive/master.zip

Pour l'installer, il faut d'abord installer Node.js, et ensuite il suffit d'invoquer `make`, ce qui va exécuter un serveur local avec la configuration par défaut. Ensuite, afin que le serveur offre le compilateur expérimental compilé un peu plus tôt, il faut modifier la configuration de la façon suivante :
1- Ouvrir le fichier /etc/config/c++.defaults.properties
2- Modifier `compilers` afin d'y ajouter le chemin vers l'exécutable `clang++` que l'on vient de créer (c'est une liste de chemins séparés par le caractère ':')
3- Modifier `defaultCompiler` afin d'utiliser le chemin du compilateur expérimental
4- Modifier `options` afin d'y ajouter des paramètres de compilation par défaut : -std=c++1z -Xclang -freflection -I/include -stdlib=libc++ -include cppx/meta -include cppx/compiler
5- Ajouter, au besoin, un paramètre de compilation supplémentaire dans les `options`. Par exemple, sur mon Mac, j'ai dû ajouter le SDK de macOS avec le paramètre : -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include

Compléter cette configuration avant l'atelier vous permettra de mieux en profiter. Compiler clang peut prendre près d'une heure sur un portable selon la puissance de votre matériel. Si vous avez des difficultés avec ces instructions, n'hésitez pas à poser des questions dans les commentaires.

La rencontre a lieu dans les bureaux de Microsoft à Montréal, au 5e étage, suite 550. Les portes seront ouvertes à partir de 18h. De la pizza sera servie sur place, gracieuseté de notre commanditaire Druide Informatique inc. L'atelier est libre, ce qui veut dire que vous pouvez vous mettre au travail et/ou échanger avec d'autres participants dès 18h00.

Members are also interested in