Verilator 4.002

Posté par (page perso) . Édité par Davy Defaud, BAud, Trollnad Dump, ZeroHeure, palm123 et Benoît Sibaud. Modéré par ZeroHeure. Licence CC by-sa.
29
24
sept.
2018
Matériel

La version 4.002 de Verilator a été annoncée à la conférence ORConf2018 en Pologne.

Verilator est sans conteste le simulateur HDL open source le plus rapide du « marché ». Il permet de simuler des porte‐grammes écrits en Verilog synthétisable.

Le nouveau logo de Verilator

Journal Le quiz c++ de l'été - Débriefing

Posté par (page perso) . Licence CC by-sa.
Tags :
12
31
août
2018

Très bonne discussion sur le fil du Quizz C++ de l'été !

Sur le problème en lui-même, Clément V a donné la bonne réponse en parlant de temporaire dans le 4ème appel (shared_ptr de B). Je vais développer :

Les deux premiers appels sont identiques en terme de code machine. En effet, en C++, un objet B dérivant de A est, au point de vue de l'arrangement mémoire, un A, suivi des attributs de B (oublions l'héritage virtuel pour le (...)

Journal Ⓒ✙✙ Le tiret bas (underscore) au début des variables membres ?

11
18
août
2018

En réponse à guppy, j’ai rédigé un long commentaire qui mérite d’être promu en journal.   \_o_/

La norme C++ réserve l’utilisation du tiret bas (underscore)

Résumé de la norme Ⓒ✙✙ : https://en.cppreference.com/w/cpp/language/identifiers

[…]

An identifier can be used to name objects, references, functions, enumerators, types, class members, namespaces, templates, template specializations, parameter packs, goto labels, and other entities, with the following exceptions:

  • the identifiers that are keywords cannot be used for other purposes;
  • the identifiers with a double underscore (...)

Journal Tirez-vous une bûche, qu'on cause C++ et singletons

Posté par (page perso) . Licence CC by-sa.
Tags :
17
14
août
2018

Le métier est venu me voir. "On aime beaucoup ton composant A, celui qui cache les données depuis la base, mais on voudrait l'instancier tout plein de fois, sans qu'il recharge tout à chaque fois."

Comme j'aime bien le métier, je me suis attelé à la tâche, je me suis bouché le nez, et je leur ai planqué une petite variable globale des familles histoire de mettre en commun les caches. Et ils étaient fort contents.

Ensuite, j'ai regardé ma (...)

Journal Faites des tests !

Posté par . Licence CC by-sa.
14
22
juil.
2018

Actuellement sur le développement d'un programme en langage C++ et avec la quête de produire un logiciel fiable et performant je me suis mis à la recherche d'outils me permettant d'atteindre cet objectif.

Après quelques recherches, j'en ai découvert deux, le test unitaire et fonctionnel. Pour le test unitaire j'ai choisi la librairie Boost et un script Bash pour le test fonctionnel.

Durant la rédaction de ces tests, j'ai été surpris plusieurs fois à corriger des bugs dans mon programme (...)

Journal Une structure partiellement constante en C++

Posté par (page perso) . Licence CC by-sa.
Tags :
27
6
juil.
2018

Hop, quelques réflexions sur un langage non réflexif.

Si on veut un tableau de taille statique, on peut utiliser depuis C++11 la classe std::array<T, N>.

std::array<long, 5> my_array{{1, 2, 3, 5, 8}};

Si on veut forcer ce tableau à ne contenir que des constantes utilisables à compile-time, on a la possibilité de marquer cette déclaration constexpr.

constexpr std::array<long, 5
(...)

Journal Pythran, en plein délire

Posté par (page perso) . Licence CC by-sa.
Tags :
50
23
mai
2018

Cher journal, je dois te confesser que j'ai déclenché quelque chose dont j'ai un peu honte.

Tu te souviens bien sûr de Pythran, ce compilateur pour noyau scientifiques écrit en Python, et de ce petit détail d'implémentation qui veut que le compilateur commence par transformer les fonctions Python en fonctions C++ template (a.k.a. transformer du code Python en meta-programme C++ pour faire stylé voire pédant).

Un choix de design a été de faire en sorte que ces fonctions ne (...)

vcpkg, un gestionnaire de bibliothèque pour C++

Posté par . Édité par Davy Defaud, Nÿco et Benoît Sibaud. Modéré par Trollnad Dump. Licence CC by-sa.
21
25
avr.
2018
C et C++

Depuis 2016, Microsoft développe vcpkg, un outil bien sympathique qui permet de télécharger et compiler un ensemble de bibliothèques et leurs dépendances. Jusqu’à présent, cet outil était disponible uniquement pour la plate‐forme Windows. Depuis le 24 avril 2018, cet outil prend également en charge les plates‐formes GNU/Linux et macOS. vcpkg est publié sous licence MIT.

Une limite cependant est que la compilation des bibliothèques sur GNU/Linux est uniquement statique. La raison invoquée est qu’il est plus compliqué d’utiliser des bibliothèques sur GNU/Linux (LD_LIBRARY_PATH, rpath, etc.) que sous Windows, où l’on peut tout mettre dans un seul répertoire.

Quoi qu’il en soit, c’est une bonne nouvelle. Même si les paquets des distributions resteront une source privilégiée pour obtenir les fichiers de développement d’une bibliothèque, vcpkg offre une alternative intéressante pour ceux qui voudraient tout construire en statique de manière à fournir un seul binaire pour toutes les variantes de GNU/Linux.

C++17 libère size(), data() et empty()

Posté par (page perso) . Édité par David Marec, Benoît Sibaud, Oliver H, Davy Defaud, palm123, gbdivers, whity, audionuma, Xavier Claude et kp. Modéré par Davy Defaud. Licence CC by-sa.
Tags :
36
17
mar.
2018
C et C++

Cette évolution est dans la continuité de la libération de begin() et end() en C++11. Ces trois nouvelles fonctions, size(), data() et empty(), avaient été oubliées lors des deux dernières évolutions. Le C++17 corrige le tir.

Tout d’abord, nous allons revenir sur les raisons de cette évolution. Puis, nous détaillerons ce qu’apporte chacune de ces trois fonctions. Et, pour conclure, nous verrons comment on va pouvoir les utiliser.

Les fonctions empty(), data() et size() sortent de la prison « class » et rejoignent les fonctions begin() et end() qui les accueillent. Ces deux dernières fonctions accueillent également string_view. Derrières les barreaux de la prison des spécifications techniques, Unified-Call-Syntax va devoir y rester trois ans pour tenter de sortir avec C++20

Forum général.petites-annonces [Stage][Annecy] Développeur middleware C++

Posté par . Licence CC by-sa.
0
8
mar.
2018

Bonjour à tous,

Ce stage se déroulerait au sein de la société Overkiz à Annecy.

Description de l'entreprise

Avec sa gateway, Overkiz permet aux fabricants, fournisseurs de service, constructeurs immobiliers et distributeurs, de commercialiser rapidement des solutions domotiques.
Grâce à sa plateforme IoT, ils peuvent installer, connecter, piloter et entretenir une vaste gamme d’équipements multi-marques, destinés à l’automatisation de l’habitat.

Mission du stage

Pour votre stage vous serez intégré à l’équipe middleware, travaillant en méthode agile scrum, dans un (...)

Journal 'Markdown presentation processor' (ou de l'intérêt des fichiers texte).

20
25
fév.
2018

Cherchant à réaliser une présentation vidéo, et utilisant déjà par ailleurs Writer de Libre Office, je me suis naturellement tourné vers Impress pour cela. C'est peut-être un très bon logiciel dans le genre, mais, personnellement, le fait de devoir m'occuper, en même temps, et du contenu, et de sa mise en forme, le peu de motivation que je pouvais avoir disparaissait comme neige au soleil. C'est la première fois que je rédigeais une telle présentation, et c'est le genre (...)

Forum général.petites-annonces Stage Qt/C++ Lyon (5-6 mois).

Posté par (page perso) . Licence CC by-sa.
Tags :
5
27
nov.
2017

Bonjour à tous,

La fondation Kiwix (un de mes clients) recherche un stagiaire pour un stage de fin d'étude (5-6 mois) pour de développement Qt/C++.
Nous avions déjà posté une annonce similaire l'année dernière ici.

Vous pouvez retrouver l'annonce officiel sur le site de kiwix mais je vous la remets ici.

Objectif

Kiwix est une suite logicielle libre développée depuis une dizaine d’années pour permettre l’accès à des contenus Web sans accès à Internet – elle permet d’avoir une (...)

Forum général.petites-annonces Changements mineurs dans le créateur/gestionnaire de projets mk-project.

0
17
nov.
2017

Description de mk-project

mk-project prend la forme d'une barre de menu:

  • Projects
  • Terminals
  • Targets
  • Configuration
  • Info

Et de 2 sortes de terminaux, implémentés grâce a libvte-2.91.

Make terminal

Ici l'on voit la sortie des nombreux make targets que mk-project implémentes, si vous utilisez l'élément du menu Targets afin de lancer les commandes que vous voulez.

Edit terminal

Ce notebook de terminaux servira aux utilisateurs de ed, vim, emacs…

Afin d'éditer des fichiers car l'ont peut bien sur ajouter des onglet/terminaux (...)

Journal Compilateur trop intelligent

Posté par (page perso) . Licence CC by-sa.
Tags :
30
1
nov.
2017

Une belle illustration des decisions radicales que peut prendre l'optimiseur de clang quand il rencontre des comportements indéfinis :

exemple en c++ sur https://gcc.godbolt.org

L'explication se trouve ici , je ne spoile pas pour ceux qui veulent trouver tout seuls comment le compilateur a choisi d'effacer le disque dur.

Journal Calculs numériques en précision absolue.

Posté par (page perso) . Licence CC by-sa.
13
28
sept.
2017

Introduction

La lecture de ce journal m'a remémoré une bibliothèque de calcul numérique que j'ai développée et qui pourrait peut-être en intéresser quelques-uns ici.

J'ai rarement utilisé les nombres flottants à cause de leur précision limitée, et les entiers se sont parfois révélés inadaptés de par leur intervalles limités. Aussi ai-je développé une bibliothèque de gestion d'entiers dynamiques, et, en m'appuyant sur cette dernière, une bibliothèque de gestion de nombres rationnels qui prend en charge les 4 opérations mathématiques de (...)