De la nécessité d’adopter les opérations atomiques C11 ?

50
1
mar.
2018
Linux

Jonathan Corbet, fondateur de LWN et contributeur au noyau Linux, a publié en juin 2016 un article important sur l’apport de la dernière version du langage C dans les recherches d’optimisation du noyau. En voici une traduction.

N. D. M. : Les articles publiés sur LWN le sont généralement sous licence Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)

Écrire son OS - Partie 2 : configurer ses outils

Posté par  . Édité par Benoît Sibaud et palm123. Modéré par bubar🦥. Licence CC By‑SA.
47
10
déc.
2015
Technologie

Eh bien voilà, très (trop) longtemps après le premier épisode, me revoilà pour reprendre avec vous la série sur l'écriture d'un système d'exploitation pour un microcontrôleur STM32F103. Pour rappel, mon système d'exploitation MOS est écrit dans un but d'apprentissage. Il vise à être simple à appréhender et à permettre à chacun de découvrir les entrailles d'un OS. Cela implique deux conséquences :

  • je réinvente la roue puisque je réécris tout de zéro
  • il y aura sûrement des bugs, n'essayez pas de le mettre en production (!)

Voilà, tout ceci étant dit, on va pouvoir attaquer les choses sérieuses. Dans cet épisode, nous allons organiser notre projet et configurer nos outils. Bonne lecture !

LLVM 2.9 !

Posté par  (Mastodon) . Modéré par patrick_g. Licence CC By‑SA.
45
8
avr.
2011
Technologie

La version 2.9 de LLVM vient de sortir et a été annoncée par Chris Lattner le 6 avril !

Pour ceux qui se posent encore la question, LLVM est une suite de compilation concurrente de GCC, sous licence UIUC (semblable à BSD), qui a pour but de produire des briques de bases modulaires pour construire toute sorte de programmes : compilateurs, debugger, assembleur, etc. L'aspect hautement modulaire permet également de pouvoir travailler sur une petite partie et d'en faire bénéficier toutes les autres. C'est notamment le cas des optimisations : en effet, LLVM utilise une représentation intermédiaire (IR) parfaitement spécifiée et les optimisations se font sur cette représentation. Et ce n'est qu'un des nombreux avantages de LLVM.

Cette version 2.9 permet de consolider plein d'aspects de LLVM. Parmi les nouveautés principales, on notera :

  • la génération de code a été améliorée, en particulier pour l'architecture ARM ;
  • l'optimisation au moment de la liaison (LTO) a été améliorée également ;
  • un nouvel allocateur de registre a été écrit, mais n'est pas activé par défaut pour cette sortie ;
  • l'infrastructure Machine Code est désormais utilisée par défaut pour produire du code objet directement (plutôt que de passer par un assembleur externe) ;
  • Clang, le compilateur C/C++/Objective-C/Objective-C++ gère le C++0x de mieux en mieux, avec l'ajout des rvalue references et des variadic templates ;
  • LLDB, le débugger du projet LLVM, atteint un certain stade de maturité alors que ce n'était qu'un projet larvaire à la dernière sortie.

Coccigrep, un grep sémantique pour le langage C basé sur Coccinelle

Posté par  (site web personnel) . Modéré par patrick_g. Licence CC By‑SA.
45
2
sept.
2011
C et C++

Lorsque l'on travaille sur un projet C comportant un certain nombre de fichiers et de lignes de code, il arrive fréquemment que l'on se pose des questions comme "Mais où est modifié le champ data de ma structure Packet ?". grep ne suffit pas pour répondre à ce genre de questions car ne comprenant pas C, il ne sait pas, par exemple, que la variable monbopkt est une structure Packet.

coccigrep, basé sur coccinelle qui est un outil très puissant de recherche et de modification automatique de code, est un logiciel libre chargé de répondre à ce genre de questions. Il vient d'être publié en version 1.0rc1, sous licence GPL v3. Il est écrit en Python et s'interface avec les éditeurs Vim et Emacs, ce qui permet de faire les recherches depuis l'éditeur.

Journal PyAlsaCap : Python, pointeurs, et cartes sons…

Posté par  (site web personnel) . Licence CC By‑SA.
44
14
mar.
2013

Sommaire

Pour fêter le retour de DLFP après cette trop longue vacance, voici un petit journal pythonesque, mais pas seulement !

Dans mon dernier journal, nous avions joué avec l'introspection Python et l'export de fonction sur D-Bus. Pour ce faire, nous avions généré du Python avec Python !

Cette fois-ci, (…)

Journal Des nouvelles d'Ulfius, framework web en C

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
43
9
oct.
2018

J'avais parlé ici d'Ulfius, un framework web écrit en C pour se faciliter la vie quand on veut développer des API web.

J'en profite donc de sortir la dernière version 2.4 pour en parler à nouveau et vous raconter ce que ca peut faire.

Adresse du projet: https://github.com/babelouest/ulfius

Le besoin est d'avoir un framework web pour écrire des applications web en C, en combinant la rapidité d'exécution ainsi que la consommation de mémoire plus réduite, avec un niveau d'abstraction permettant (…)

Journal Polycode : Moteur 2D/3D open-source

42
17
nov.
2013

Hello,

J'aimerai vous parler d'un "nouveau" moteur de jeu (2D/3D) sur lequel je suis tombé: Polycode.

Développé par un seul gars depuis près de 7 ans (chapeau l'artiste !), il est publique depuis fin 2011 et sa première version stable est pour bientôt.
Activement développé, il est possible de suivre sa progression sur son Tumblr (le choix est discutable…).

Le moteur en lui même se compose d'une librairie et de plusieurs modules (interface, réseau, …) pour être utilisé en C++, (…)

Journal Les codes fantastiques (et où les trouver)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
42
1
juil.
2023

Demat' iNal,

Depuis fin 2022, j'anime une petite rubrique dans GNU/Linux Magazine, intitulée les codes fantastiques, où est décrit en une page une petite aventure informatique, un bout de code qui m'a amusé / plus / interpelé. [0]

Comme c'est les 25 ans de LinuxFR, et que j'en écris plus que ce qu'ils peuvent publier (trois d'avance pour le moment !), voici une sorte de ?hors série? que je ne publierai pas là bas du coup.

Les codes fantastiques

(…)

Qt 4.8 est sorti

Posté par  . Édité par Gof, Florent Zara, _PhiX_ et Nÿco. Modéré par j. Licence CC By‑SA.
Étiquettes :
39
19
déc.
2011
C et C++

La nouvelle version de Qt (prononcer « cute » comme mignon en anglais), le framework en C++ derrière KDE et bien d'autres applications libres, est sortie. Celle-ci est la dernière version majeure de la branche 4.x et la prochaine sera la branche 5.

Merci à Gof, Nÿco, _PhiX_ et reno pour leur aide lors de la rédaction de cette dépêche.

Journal scrcpy, une appli pour afficher et contrôler des devices Android

Posté par  (site web personnel) . Licence CC By‑SA.
38
9
mar.
2018

Bonjour nal,

Je viens te présenter une application que j'ai développée, qui permet d'afficher et de contrôler des devices Android connectés en USB.

Elle se concentre sur :

  • la légèreté (native, affiche uniquement l'écran)
  • les performances (30~60fps)
  • la qualité (1920×1080 ou plus)
  • la faible latence (70~100ms)
  • un démarrage rapide (~1 seconde pour afficher la première image)
  • la non-intrusivité (rien ne reste installé sur le device)

Je l'ai appelée scrcpy.

Il fallait un nom aussi imprononçable que mon précédent projet, gnirehtet (…)

Journal Ma domotique avec le Système Angharad, 3e génération

Posté par  (site web personnel) . Licence CC By‑SA.
36
28
sept.
2016

Préambule

Il y a quelques deux ans de ca, j'ai parlé de mon système domotique maison à base d'API REST et de client Web avec plein de JQuery dedans.
Depuis, j'ai continué ce projet avec entrain, et il en est maintenant dans sa 3e génération: Angharad sur Github

Pourquoi 3e génération et pas version 3.0 ? Parce que au début c'était pas mal un serveur autonome, mais avec le temps c'est devenu un d'ensemble de logiciels qui forment un écosystème et (…)

Journal Debug de code Python embarqué dans du code C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
35
30
sept.
2020

Demat' iNal,

On m'a posé tantôt une question assez intrigante au premier abord :

Dans une application native qui embarque un interpréteur Python, et que l'on est en train de déboguer avec gdb, comment faire pour débogguer le code Python associé ?

Pour donner un peu de contexte, on peut lire la doc Python et en extraire ce petit code C:

 #define PY_SSIZE_T_CLEAN
#include <Python.h>

int
main(int argc, char *argv[])
{
    wchar_t *program
(…)

Journal Écrire son OS - Partie 1 : préparer le terrain

Posté par  . Licence CC By‑SA.
35
18
fév.
2015

Bonjour à tous,

Pour ce premier journal, je vous propose de vous raconter un peu les différentes étapes de mon projet du moment : écrire un petit OS pour un microcontrôleur STM32.

De quoi ça s'agit ?

J'ai récupéré une carte de développement construite autour d'un STM32F103RBT6. C'est un microcontrôleur basé sur un cœur ARM Cortex-M3. Il est un peu daté mais bon, on fait avec ce qu'on a (surtout quand c'est gratuit :). Pour situer un peu le bouzin (…)