Flux RSS

mardi 24 octobre 2006

Nous allons vous faire aimer Ruby...

Comme vous le savez sans doute, ces temps-ci j'étudie dbus... J'ai en particulier téléchargé son binding python, pour pouvoir le décortiquer (après tout, python aussi est objet, non ?).

Je suis vite tombé de haut devant ce genre de code (définition d'une structure) :

struct __pyx_vtabstruct_13dbus_bindings_Connection {
PyObject *((*__cinit__)(struct __pyx_obj_13dbus_bindings_Connection *,PyObject *,DBusConnection (*)));
PyObject *((*_set_conn)(struct __pyx_obj_13dbus_bindings_Connection *,DBusConnection (*)));
DBusConnection (*((*_get_conn)(struct __pyx_obj_13dbus_bindings_Connection *)));
};

Des casts en veux-tu en voilà, des pointeurs et les parenthèses qui vont avec... Quand on sait qu'en Ruby/C tout repose sur le type VALUE, qui représente un objet ruby, et qu'on manipule sans le moindre soucis, ça détonne un peu, surtout dans un projet ausis officiel : zéro typedef, ça me laisse un peu perplexe...

Bilan : nous avons les moyens de vous faire aimer Ruby :-)

lundi 16 octobre 2006

DBus4r : ça avance comme ci, comme ça...

Ca fait un peu près un mois que Dbus4r est sur mon TODO, mais le tout n'avance pas aussi vite que je le voudrais... J'en ai profité pour mieux connaître mkmf (le module utilisé dans extconf.rb), j'ai appris quelques petits choses en programmation Ruby/C, mais globalement ça n'avance pas, deux raisons à cela :

  • Le binding Ruby actuel est basée sur une ancienne version de dbus, avec des différences d'API plus que conséquentes : DBUS_BUS_ACTIVATION est devenu DBUS_BUS_STARTER, les types ont changés, de même que les manières de les manipuler...
  • Ce qui nous mène au deuxième probleème : n'ayant encore jamais utilisé dbus dans mes programmes, cela revient à se promener dans les header pour deviner quelle ancienne fonction est devenu quoi, et à quoi elle sert... Même en admettant que je finisse par arriver à quelque chose qui compile (déjà ça j'en doute), ce sera catastrophique à l'utilisation. Pire même, ne l'ayant jamais utilisé, je dois reconnaître que ça se ressent sur la motivation...

Bilan, plutôt que de continuer la programmation en aveugle, je laisses tomber pour l'instant et j'apprends à faire du dbus en C. ca fera un peu de temps perdu, mais j'ai comme l'impression que ce sera très largement rattrapé quand je m'y remettrais : Il faut que je vois ce qu'il en est avec jd :-p