En gros ils disent que Coccinelle est un système pour appliquer des patch sur une large base de code, initialement Linux.
Par exemple on change un appel de fonction par un autre.
Comme Linux et beaucoup de projets utilisent Rust, il faut l’adapter à Rust.
Problème Rust est particulièrement complexe à cause de ses règles complexes (je pense borrow-checker)… ils ont implémenté les fonctionnalités minimales pour le moment.
PS : je ne connaissais pas Coccinelle. Super projet.
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
Problème Rust est particulièrement complexe à cause de ses règles complexes (je pense borrow-checker)… ils ont implémenté les fonctionnalités minimales pour le moment.
Le borrow checker n'est pas le principal problème ici. Le soucis est la richesse de la syntaxe de Rust et la variété de situations qu'il faut couvrir.
Oui Coccinelle naïvement peut servir à automatiser le changement de nom d'une fonction dans Linux. Mais ça à la limite c'est le cas facile en C à gérer.
L'intérêt est plutôt : on a tel objet qui s'initialise d'une autre façon (nouveaux paramètres, nouveau code de sortie, etc.), il faut automatiser la détection et correction du code impacté pour se conformer à la nouvelle manière de faire.
C'est là son point fort surtout pour une base de code si large et avec beaucoup de code qui finalement se ressemble, un pilote I2C reste un pilote I2C, y'en a des centaines qui ont un squelette similaire donc en cas de refonte cela peut vite devenir pénible à faire à la main.
Non, l'objectif est de pouvoir identifier dans du code C existant des situations d'une manière formelle et d'appliquer une transformation dessus. Cela n'a pas été fait pour créer du code nouveau (à ma connaissance) et les capacités d'expressions semblent vraiment orientées dans une optique de maintenance de code que d'écriture.
En général les patchs générés dans le noyau avec ont la commande associée dans le message de commits pour expliquer comment cela a été obtenu. Je ne trouve pas la syntaxe de Coccinelle particulière lisible ou avantageuse sur ce point, mais c'est efficace pour l'objectif poursuivi car de nombreuses transformations qui semblent simples en apparence peuvent être exprimées de manière différentes et il faut pouvoir les capturer au maximum.
# en gros
Posté par abriotde (site web personnel, Mastodon) . Évalué à 1 (+0/-0).
En gros ils disent que Coccinelle est un système pour appliquer des patch sur une large base de code, initialement Linux.
Par exemple on change un appel de fonction par un autre.
Comme Linux et beaucoup de projets utilisent Rust, il faut l’adapter à Rust.
Problème Rust est particulièrement complexe à cause de ses règles complexes (je pense borrow-checker)… ils ont implémenté les fonctionnalités minimales pour le moment.
PS : je ne connaissais pas Coccinelle. Super projet.
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: en gros
Posté par Renault (site web personnel) . Évalué à 5 (+2/-0).
Le borrow checker n'est pas le principal problème ici. Le soucis est la richesse de la syntaxe de Rust et la variété de situations qu'il faut couvrir.
Oui Coccinelle naïvement peut servir à automatiser le changement de nom d'une fonction dans Linux. Mais ça à la limite c'est le cas facile en C à gérer.
L'intérêt est plutôt : on a tel objet qui s'initialise d'une autre façon (nouveaux paramètres, nouveau code de sortie, etc.), il faut automatiser la détection et correction du code impacté pour se conformer à la nouvelle manière de faire.
C'est là son point fort surtout pour une base de code si large et avec beaucoup de code qui finalement se ressemble, un pilote I2C reste un pilote I2C, y'en a des centaines qui ont un squelette similaire donc en cas de refonte cela peut vite devenir pénible à faire à la main.
[^] # Re: en gros
Posté par Nicolas Boulay (site web personnel) . Évalué à 4 (+1/-0).
Donc, coccinelle pourrait être un code de haut niveau qui génère du C ?
"La première sécurité est la liberté"
[^] # Re: en gros
Posté par Renault (site web personnel) . Évalué à 6 (+3/-0).
Non, l'objectif est de pouvoir identifier dans du code C existant des situations d'une manière formelle et d'appliquer une transformation dessus. Cela n'a pas été fait pour créer du code nouveau (à ma connaissance) et les capacités d'expressions semblent vraiment orientées dans une optique de maintenance de code que d'écriture.
En général les patchs générés dans le noyau avec ont la commande associée dans le message de commits pour expliquer comment cela a été obtenu. Je ne trouve pas la syntaxe de Coccinelle particulière lisible ou avantageuse sur ce point, mais c'est efficace pour l'objectif poursuivi car de nombreuses transformations qui semblent simples en apparence peuvent être exprimées de manière différentes et il faut pouvoir les capturer au maximum.
Car des exemples valent mille mots, une diapo qui montre les capacités tirés d'exemples réels : https://events.static.linuxfound.org/sites/events/files/slides/part1.pdf
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.