понедельник, 6 сентября 2010 г.

CL-ZMQ

В последнее время совсем не занимался сабжем, в git'е последние патчи от других людей. Пора исправлять ситуацию :)

Хочется поломать совместимость со таким образом:
  • Врапперы для foreign-структур делать на лисповых структурах, а не классах.
Эти биндинги делал сразу после cl-v4l2, в котором вагон с тележкой структур video4linux2 были удобно обёрнуты в классы с генерацией акцессоров, автоматически конвертящих foreign типы в лисповые и обратно. В cl-zmq всё гораздо проще, никаких мудростей на MOP не нужно, можно смело менять на структуры. В Лиспе структуры сделаны очень просто и быстро, примерно, как в Си, а объекты классов из-за мощности CLOS гораздо замороченнее. В cl-zmq нужно, фактически, сишный блоб вешать на символ и прикручивать к нему финалайзер.
  • Поменять символы типа rep, req и т.п. на кейворды. 
Такое сделано в форке - acl-zmq -, и оно более lisp-way выглядит.
  • Не сорить памятью в около-poll'ных делах.
Poll делал, как заглушку, чтобы проверить работоспособность. До переделки в нормальный вид руки не дошли.
  • Сделать zero-copy на Лиспворксе.
У меня что-то с коллбэками из libzmq не срослось, но Марк (босс) подсказал, что Лиспворкс поддерживает вызов лиспового кода из нелисповых тредов, поэтому, вкупе с возможностью статической аллокации объектов, нулевое копирование возможно.

API сломаю под общий шумок в 0MQ 3-й версии. Она (версия) надвигается, и, как говорят, API там тоже будет немного сломано.

Если у кого есть идеи и замечания по cl-zmq - велкам в комменты!

1 комментарий:

  1. Если ближайшее время руки дойдут до реализации некоторой идеи с использованием cl-zmq - то обязательно придирусь к чему-нибудь ;)

    ОтветитьУдалить

Архив блога