LINUX.ORG.RU

Обновился инструмент для работы с агентами в C++: SObjectizer 5.5.3

 , , ,


1

1

SObjectizer — это небольшой фреймворк для упрощения разработки многопоточных приложений на C++. SObjectizer позволяет создавать объекты-агенты, которые взаимодействуют друг с другом только посредством асинхронных сообщений. Сам SObjectizer берет на себя задачи диспетчеризации сообщений и предоставление агентам рабочего контекста для обработки получаемых сообщений.

Проект живет на SourceForge, распространяется под 3-х секционной BSD-лицензией.

Версию 5.5.3 можно взять либо из секции Files на SF, либо из Svn-репозитория.

Если говорить кратко, то в версии 5.5.3:

  • чуть-чуть упрощено создание дочерних коопераций;
  • добавлена возможность работы с direct_mbox-ами ad-hoc-агентов (т.е. агентов, которые определяются «по месту», без создания отдельного C++ класса);
  • добавлена возможность выбора типа хранилища для подписок агентов;
  • добавлены новые примеры.

Если интересны подробности, то сюда.

Для тех, кто больше любит смотреть слайды есть пара презенташек (для того, чтобы получить более полное представление об инструменте, лучше смотреть вторую, которая подлинее).

★★★★★

живет на SourceForge

На этой помойке заваленной рекламой? Доже заходить туда не хочется.

Хотя судя по презентациям интересная штука.

slovazap ★★★★★ ()

шо, опять? :)

anonymous ()
Ответ на: комментарий от slovazap

На этой помойке заваленной рекламой? Доже заходить туда не хочется.

Ну да, SF уже не тот, что лет десять тому назад. Но работает :) Что до рекламы — вот сейчас мне только один банер показывают и тот, от самого SF.

Хотя судя по презентациям интересная штука.

Вроде да :)

eao197 ★★★★★ ()
Ответ на: комментарий от SystemD-hater

3-x пунктной

Как-то это совсем уже коряво звучит.

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

шо, опять? :)

чой-то давно не общался с анонимными тимлидами, интересно стало, может повысили человека :)

eao197 ★★★★★ ()

А чем оно от ASIO отличается? Судя по презентахе все тоже самое, только не умеет системные события + ограничен тем, что нужно наследоваться от каких-то непонятных сущностей.

anonymous ()
Ответ на: комментарий от anonymous

А ASIO умеет произвольные события и сообщения, не имеющие отношения к системным событиям, между сущностями перемещать?

Например, представьте, что вы на одной нити читаете сообщения из MQTT-шного клиента (или AMQP-шного), а прочитанные сообщения для обработки должны раскинуть на кучу прикладных воркеров.

Наследоваться от сущностей не обязательно. Для любителей лямбда-функций можно ad-hoc-агентов определять, прямо по месту, не создавая никаких классов.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

А ASIO умеет произвольные события и сообщения

Внезапно, умеет. В io_service вполне можно скормить произвольный вызов. На io_service можно навесить очередь (strand), которая будет гарантировать неконкурентное выполнение этих вызовов и системных событий.

Опять же несколько сущностный можно привязать к разным сервисам и раскидать их по разным потокам.

Для io_service можно свой воркер, в конце-концов написать.

anonymous ()
Ответ на: комментарий от anonymous

В io_service вполне можно скормить произвольный вызов.

Произвольный вызов чего? Нужно ведь просто кинуть в очередь экземпляр какого-то сообщения. А его кто-то где-то должен поднять и обработать. Кто, где и когда, отправителю сообщения не ведомо.

На io_service можно навесить очередь (strand)

strand — этож вроде не очередь, а нечто вроде монитора, т.е. замка, который будет блокировать доступ к хендлеру из разных потоков.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Ну да, SF уже не тот, что лет десять тому назад. Но работает :)

SF «тем» никогда не был. Всегда был тормозным и неудобным. Просто 10 лет назад не было альтернатив. «Работает»-то много чего, для кого-то и localhost - хостинг. А логика простая - если проекта нет на github, то либо он не ждёт патчей, либо хочет сделать отправку патчей максимально неудобной. В первом случае он мёртв и не стоит рассмотрения, во втором - от мёртв и не стоит рассмотрения, а также его автор неадекват.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Вам сколько лет, молодой человек? Может пора перестать видеть мир только в черно-белом свете?

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

мы здесь делаем вид что обсуждаем «библиотеку», а не мои карьерные достижения :)

что-то чейнджлог для 4.5 месяцев разработки маловат... а то что было в прошлый раз уже обсудили и пришли к однозначному выводу: ненужно :)

anonymous ()
Ответ на: комментарий от anonymous

мы здесь делаем вид что обсуждаем «библиотеку», а не мои карьерные достижения :)

Вот это новость :)

что-то чейнджлог для 4.5 месяцев разработки маловат...

А вы что-то заказывали и вам этого не сделали?

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

ну вот, только попробовал завязать разговор — сразу переход на личности :)

то что было раньше — ненужно. подробности см здесь: Обновился инструмент для работы с агентами в C++: SObjectizer 5.5.0 . с тех пор ничего не изменилось. о чём разговаривать?

anonymous ()
Ответ на: комментарий от anonymous

то что было раньше — ненужно

Это вы говорили в прошлый раз и ваше мнение полезным не оказалось.

Хотите привлечь к себе внимание в этот раз, придумайте что-то новенькое вместо «ненужно». Напрягите фантазию, проявите оригинальность.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

А вам настолько нечего возразить что ничего не остаётся кроме как апеллировать к возрасту?

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Возрастом такая категоричность объясняется проще всего.

По сути же я смотрю на вещи так: если человек увидел либу, которая действительно решает его проблемы, то человек будет рассматривать либу всерьез и по целому ряду факторов. Насколько при этом будет важен хостинг, с которого качаются исходники либы — это уже отдельный вопрос. Может по сравнению с другими вещами, например, специфическая функциональность, поддержка каких-то платформ, объем и качество документации, это вообще дело десятое.

Что до потенциальных патчей. Практика показала, что когда у кого-то такая надобность возникает, то вопрос решается.

А вообще, ситуация простая. Есть проект, который разрабатывается так, как это удобно его авторам. Результаты выкладываются под лицензией, которая допускает вообще любое их использование. Если это кого-то не устраивает, то нет проблем. CAF (libcppa) или Theron могут показаться более православными.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

я в прошлый раз терпеливо и подробно объяснил почему это ненужно. с тех пор ничего не изменилось. зачем мне «придумывать что-то новенькое»?

anonymous ()
Ответ на: комментарий от anonymous

Вы очень высокого мнения о себе. Почему-то считаете, что кому-то что-то объяснили. Хотя доказали только то, что ничего не поняли.

Но вы правы в том, что ничего не изменилось.

Так что если и сейчас будете повторять «ненужно», то всего лишь станете попугайничать. А это, по меньшей мере, скучно.

Отсюда и просьба придумать что-то новенькое.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

По сути же я смотрю на вещи так: если человек увидел либу, которая действительно решает его проблемы, то человек будет рассматривать либу всерьез и по целому ряду факторов

Ну вообще говоря это узкий взгляд - я, например, с вершины, так сказать, опыта, первым делом смотрю на потенциальную выживаемость проекта, потому что проекты которые «решали мои проблемы» неоднократно забрасывались авторами. Что происходит в таком случае с проектом на SF? Ничего. Замирает навеки со всеми багами что у него были на момент смерти. Патчи слать бесполезно, причём ладно автору наплевать, но по причине убогости SF их едва ли найдут другие пользователи проекта. Если продолжить разработку самому, об этом со страницы проекта также никто не узнает. В то же время на GH можно спокойно разрабатывать свой форк и, во-первых, без задержек пользоваться им самому; во-вторых, он будет виден всем кто зайдёт на страницу оригинального проекта, можно будет сразу посмотреть что было изменено мной, я надеюсь про это не нужно рассказывать. В общем, future-proofness.

Далее, с точки зрения контрибутинга. Я, например, контрибучу в десятки проектов - часть дорабатываю для своих нужд, часть использую как есть и фикшу мелкие проблемы, в части исправляю ошибки сборки под FreeBSD, для чего-то коммичу всякую ерунду типа исправления ошибок в readme и warning'ов, просто когда нечего делать. Так вот - прости, но мне жалко даже нескольких секунд, потраченной не на работу, а на ковыряние с архаичными и кривыми VCS, багтрекерами, хостингами и тормозными авторами, без гарантий что мой патч если не попадёт в апстрим то хотя бы точно будет виден другим. Того же мнения придерживаются мои коллеги, так что я склонен полагать что это скорее правило, также это подтверждает популярность гитхаба.

Касательно VCS. Опять же, стандарт - git, а svn локальную разработку просто не поддерживает, по современным меркам это даже не vcs. Довольно интересно как ты представляешь принятие патчей, если «вопрос так или иначе решается» - должен ли я использовать svn, или ты готов тянуть репу с GH, вытаскивать оттуда патч и накладывать на svn, и если второе - то зачем такие сложности?

Это так, пара мыслей что сразу вспомнились, посколько проектов не на github я не видел довольно давно. Если начать вспоминать то можно настрочить ещё 10 раз по столько же.

Есть проект, который разрабатывается так, как это удобно его авторам

Ну так в том то и дело. Либо он удобен только авторам, тогда непонятно зачем его вообще выкладывать, либо таки стоит задуматься.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Замирает навеки со всеми багами что у него были на момент смерти.

Это никаким боком не имеет отношения к хостингу, на котором живет проект.

Патчи слать бесполезно, причём ладно автору наплевать, но по причине убогости SF их едва ли найдут другие пользователи проекта.

Если автору наплевать, то опять же без разницы, на каком хостинге проект.

В то же время на GH можно спокойно разрабатывать свой форк и, во-первых, без задержек пользоваться им самому; во-вторых, он будет виден всем кто зайдёт на страницу оригинального проекта, можно будет сразу посмотреть что было изменено мной, я надеюсь про это не нужно рассказывать.

Во-первых, если на странице проекта на GH 100500 форков, потенциальный пользователь не будет выискивать, какой из них наиболее живой.

Во-вторых, если вы так любите иметь на GH свою копию проекта, то что вам мешает взять тарбар любого чужого проекта, залить его к себе на GH и там извращаться как вам вздумается.

Касательно VCS. Опять же, стандарт - git, а svn локальную разработку просто не поддерживает, по современным меркам это даже не vcs.

Тяжело нам, старперам, работает себе svn, работает, все чики-пуки, а тут раз и не стандарт.

Довольно интересно как ты представляешь принятие патчей, если «вопрос так или иначе решается» - должен ли я использовать svn, или ты готов тянуть репу с GH, вытаскивать оттуда патч и накладывать на svn, и если второе - то зачем такие сложности?

Начиная от приема diff-файлов, заканчивая предоставлением доступа к svn-репозиторию.

Но, если кто-то как-то модифицирует сабж на GH, пусть просто даст знать. Тогда и будем думать.

Пока просто разговоры о том, почему не там, почему имена не те и т.д.

Ну так в том то и дело. Либо он удобен только авторам, тогда непонятно зачем его вообще выкладывать, либо таки стоит задуматься.

Либо перестать воспринимать мир черно-белым. Если авторам не удобно разрабатывать свой проект, проекта не будет. Если он будет нужен еще кому-то, кого не устраивает формат разработки, можно будет об изменении формата говорить.

Вам удобно пользоваться git-ом — пользуйтесь. Другим не удобно и они, представьте, не желают колоться, но жрать кактус.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

1. я не понял только то, зачем это ненужно может кому-то понадобиться.

2. я не обязан менять своё мнение в связи со сменой номера версии.

anonymous ()
Ответ на: комментарий от anonymous

1. я не понял только то, зачем это ненужно может кому-то понадобиться.

Ну с кем не бывает. Не обязательно понимать абсолютно все в жизни.

2. я не обязан менять своё мнение в связи со сменой номера версии.

Никто не говорит о смене мнения. Речь о том, что повторять то, что вы уже говорили, смысла нет. Хотите что-то еще сказать, скажите что-нибудь новенькое.

eao197 ★★★★★ ()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от eao197

Это никаким боком не имеет отношения к хостингу, на котором живет проект

Имеет. На SF это фатально, на GH нет.

Во-первых, если на странице проекта на GH 100500 форков, потенциальный пользователь не будет выискивать, какой из них наиболее живой

Это делается тривиально кучей способов - по звёздам, по network graph, по количеству под-форков, да хоть бы и руками все форки скачать и просмотреть. На SF это не делается никак.

Во-вторых, если вы так любите иметь на GH свою копию проекта, то что вам мешает взять тарбар любого чужого проекта, залить его к себе на GH и там извращаться как вам вздумается.

Ничего не мешает. Собственно, я бы так и сделал, потому что хочу чтобы мои изменения были общедоступны, наглядны и в свою очередь готовы к патчам от третьих лиц сейчас и будущем, а также потому что хочу использовать нормальную VCS. Однако с оригинальным проектом это связано никак не будет, и не факт что оригинальный автор соизволит забирать изменения себе. В итоге получится форк в плохом смысле, который придётся поддерживать самому, потому что изменения будут слать мне, а не вам на SF. Я не могу и не хочу полноценно подерживать чужой проект, поэтому лучше с таким дела просто не иметь. Вам, проекту и его пользователям от этого лучше?

Но, если кто-то как-то модифицирует сабж на GH, пусть просто даст знать. Тогда и будем думать.

Свежо придание, увы.

Либо перестать воспринимать мир черно-белым

Отучивайтесь говорить заученными шаблонами и вешать ярлыки.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Отучивайтесь говорить заученными шаблонами и вешать ярлыки.

Вот скажите, о чем вы здесь разговариваете? О том, насколько вы считаете правильным GitHub?

Да ёптыть, считайте его каким хотите. К анонсу SO-5.5.3 это не имеет никакого отношения. Этот проект вы вообще вряд ли будете использовать и все эти рассуждения о том, насколько круто поддерживать чужую разработку на GitHub — это пустой треп.

Мне это не интересно.

Вам, проекту и его пользователям от этого лучше?

Мне, проекту и его пользователям лучше, когда задают вопросы вроде вот этого. Такие вещи реально могут улучшить проект или показать направление, в котором стоит двигаться.

Если при движении в нужном направлении я лично буду использовать svn, а не git, это всего лишь маленькая техническая особенность.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Мне это не интересно

Ну и посмотрим на ваш проект через год. Надеюсь, пользователей которым тогда придётся искать более живую альтернативу, автору которой «интересно», у вас не появится.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Первый анонс SObjectizer-а, который я здесь делал, датируется 2008-м годом. Насколько я могу судить вас на LOR-е тогда еще не было. А GitHub-у, если верить Wiki, было тогда около полугода от роду.

И, как видите, проект живет и развивается. Несмотря на SF.

На будущее, конечно, загадывать не берусь, но на какое-то время меня еще хватит. И если у кого-то будет желание развивать SObjectizer без моего участия, то я уверен в том, что этот кто-то будет делать это так и там, где ему будет удобно.

eao197 ★★★★★ ()
Ответ на: комментарий от slovazap

более живую альтернативу

Ну и еще по поводу живых альтернатив.

Вот в Wiki есть сводная табличка по реализациям actor model для разных языков: тыц. Посмотрите, когда обновлялись перечисленные там проекты для C/C++. Внезапно окажется, что живых всего два — CAF и SO. И хостинг при этом не играет никакой роли.

PS. Theron, насколько мне известно, в последний раз обновлялся в начале 2014-го, т.е. год назад.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Тем не менее, «пункты» — это общепринятое.

Да, обычно пишут «трёхпунктной».

SystemD-hater ()
Ответ на: комментарий от eao197

Внезапно окажется, что живых всего два — CAF и SO.

ты так говоришь, как будто это что-то хорошее :)

это потому что ненужно же

anonymous ()
Ответ на: комментарий от SystemD-hater

Да, обычно пишут «трёхпунктной».

Да, трехпунктной звучит лучше. Попробую не забыть к следующему анонсу :)

eao197 ★★★★★ ()

Внезапно окажется, что живых всего два — CAF и SO.
ты так говоришь, как будто это что-то хорошее :)

Во-первых, я так говорю, потому что наблюдал попытки создать что-то подобное, которые начинались со слов «мне не нравится, как это сделано у вас...», а заканчивались ничем.

Во-вторых, живущий и развивающийся программный инструмент (пусть даже такой мелкий, как SO) — это всегда хорошо.

Всяко лучше анонимного пиздежа на форумах о том, что кто-то когда-то писал сотни таких на коленке одной левой, сидя на толчке в офисе большой поисковой компании.

это потому что ненужно же

Лет 7-8 назад для JVM было четыре или пять фреймворков, реализующих тот или иной вариант actor model. Сейчас на слуху только Akka осталась. И те, кто ее используют, вряд ли считают, что «ненужно же».

eao197 ★★★★★ ()
Ответ на: комментарий от slovazap

А логика простая - если проекта нет на github, то либо он не ждёт патчей, либо хочет сделать отправку патчей максимально неудобной
В первом случае он мёртв и не стоит рассмотрения, во втором - от мёртв и не стоит рассмотрения, а также его автор неадекват.

Ололош.

NetBSD вот на гитхабе вроде как нет, и сидят они на доисторической CVS, но при этом патчи охотно принимают в списках рассылки. Как и многие другие проекты.

yoghurt ★★★★★ ()
Ответ на: комментарий от eao197

И те, кто ее используют, вряд ли считают, что «ненужно же».

все 3,5 пользователя?

anonymous ()

все 3,5 пользователя?

Вы насчитали у Akka 3.5 пользователя?

Наверное, ограничились каким-то региональным офисом своей поисковой компании. Может хватит уже своего работодателя позорить?

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

раз уж тебя моя карьера беспокоит больше обсуждаемой поделки, то в «большой поисковой компании» я не работаю уже лет 5. слово akka слышал только от тебя и количество пользователей оценил на глаз исходя из соображений, что акторы уже давно вышли из моды.

anonymous ()
Ответ на: комментарий от anonymous

слово akka слышал только от тебя и количество пользователей оценил на глаз исходя из соображений, что акторы уже давно вышли из моды.

После этого вы все еще будете пытаться претендовать на какие-то практические знания в этой области?

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

мы ещё в прошлый раз установили наличие у тебя когнитивной дисфункции.

почему я должен знать о жабобиблиотеке если крайний раз на жабе лет 10 взад писал?

anonymous ()
Ответ на: комментарий от anonymous

JVM там не суть важна. Речь идет про акторов.

Вы же находитесь при мнении, что акторы давно вышли из моды. Хотя стоит чуть-чуть посмотреть по сторонам, чтобы увидеть, что это не так.

А в случае Akka более чем не так.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

интересно, почему здесь так тихо и безлюдно?

ответ очевиден: ненужно :)

anonymous ()

интересно, почему здесь так тихо и безлюдно?

Очевидно, что промашка с целевой аудиторией. Впрочем, люди отсюда довольно активно ходят по ссылкам, так что размещение анонсов и здесь лишним не кажется.

ответ очевиден: ненужно :)

Вы уже продемонстрировали свою полную безграмотность в этой теме, поэтому что здесь реально «ненужно», так это ваше анонимное мнение.

eao197 ★★★★★ ()

В so-5.5 обнаружена ошибка, которая была исправлена в версии 5.5.3.1. Чуть подробнее здесь.

eao197 ★★★★★ ()

Подготовлено еще одно подробное описание одного из примеров использования SObjectizer. В данном случае показывается, как может выглядеть работа с многопоточностью и использованием простой модели Publish-Subscribe:

Многопоточность и Pub-Sub с помощью SObjectizer.

eao197 ★★★★★ ()

а где посмотреть список продакшна, который использует ваш труд?

anonymous ()
Ответ на: комментарий от anonymous

Насколько я знаю, в компании «Интервэйл» SObjectizer используется в нескольких проектах, связанных с платежными сервисами и с телекомом.

Если где-то еще что-то на SO-5, не в курсе. Пока мне такой информации не поступало.

eao197 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.