Актерская модель - Actor model

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

Модель актера возникла в 1973 г. Он был использован как в качестве основы для теоретического понимания по вычислению и в качестве теоретической основы для нескольких практических реализаций в параллельных системах . Связь модели с другой работой обсуждается в модели актора и расчетах процесса .

История

По словам Карла Хьюитта , в отличие от предыдущих моделей вычислений, модель актора была вдохновлена физикой , включая общую теорию относительности и квантовую механику . На него также повлияли языки программирования Lisp , Simula , ранние версии Smalltalk , системы на основе возможностей и коммутация пакетов . Его разработка была «мотивирована перспективой создания высокопараллельных вычислительных машин, состоящих из десятков, сотен или даже тысяч независимых микропроцессоров, каждый со своей собственной локальной памятью и коммуникационным процессором, обменивающихся данными через высокопроизводительную коммуникационную сеть». С тех пор появление массового параллелизма в многоядерных и многоядерных компьютерных архитектурах возродило интерес к модели акторов .

После публикации Хьюитта, Бишопа и Штайгера 1973 года Ирен Грейф в рамках своего докторского исследования разработала операционную семантику для модели акторов . Два года спустя Генри Бейкер и Хьюитт опубликовали набор аксиоматических законов для акторных систем. Другие важные вехи включают в себя диссертацию Уильяма Клингера 1981 года, в которой была представлена денотационная семантика, основанная на областях власти, и диссертация Гул Ага 1985 года, в которой была развита семантическая модель на основе переходов, дополняющая семантическую модель Клингера. Это привело к полному развитию теории моделей акторов .

Основную работу по внедрению программного обеспечения проделали Расс Аткинсон, Джузеппе Аттарди, Генри Бейкер, Джерри Барбер, Питер Бишоп, Питер де Йонг, Кен Кан, Генри Либерман, Карл Мэннинг, Том Рейнхардт, Ричард Штайгер и Дэн Терио в группе семантики передачи сообщений в Массачусетский технологический институт (MIT). Исследовательские группы во главе с Чаком Зейтцем из Калифорнийского технологического института (Калифорнийский технологический институт) и Биллом Далли из Массачусетского технологического института создали компьютерные архитектуры, которые в дальнейшем развили передачу сообщений в модели. См. Реализацию модели актера .

Исследование модели акторов проводилось в Калифорнийском технологическом институте , лаборатории Токоро Киотского университета , Корпорации микроэлектроники и компьютерных технологий (MCC), Лаборатории искусственного интеллекта Массачусетского технологического института , SRI , Стэнфордском университете , Иллинойском университете в Урбана-Шампейн , Пьера и Мари. Curie University (университет Париж 6), университет Пизы , Токийский университет Йонезава Лаборатория, Центр Wiskunde и Informatica (КРИ) и в других местах.

Основные концепции

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

Актер - это вычислительный объект, который в ответ на полученное сообщение может одновременно:

  • отправлять конечное количество сообщений другим участникам;
  • создать конечное число новых участников;
  • обозначить поведение, которое будет использоваться для следующего полученного сообщения.

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

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

Получатели сообщений идентифицируются по адресу, который иногда называют «почтовый адрес». Таким образом, актер может общаться только с теми акторами, адреса которых у него есть. Он может получить их из сообщения, которое он получает, или, если адрес предназначен для актера, который он сам создал.

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

Формальные системы

За прошедшие годы было разработано несколько различных формальных систем, которые позволяют рассуждать о системах в модели акторов. Это включает:

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

Приложения

Модель акторов может использоваться в качестве основы для моделирования, понимания и рассуждений о широком спектре параллельных систем . Например:

  • Электронную почту ( электронную почту ) можно смоделировать как систему субъектов. Учетные записи моделируются как субъекты, а адреса электронной почты - как адреса субъектов .
  • Веб-службы могут быть смоделированы с помощью конечных точек протокола простого доступа к объектам ( SOAP ), смоделированных как адреса субъектов.
  • Объекты с блокировками ( например , как в Java и C # ) могут быть смоделированы как сериализатор при условии, что их реализации таковы, что сообщения могут поступать непрерывно (возможно, сохраняя их во внутренней очереди ). Сериализатор - это важный тип актора, определяемый тем свойством, что он постоянно доступен для поступления новых сообщений; каждое сообщение, отправленное в сериализатор, гарантированно будет доставлено.
  • Нотация тестирования и управления тестированием ( TTCN ), как TTCN-2, так и TTCN-3 , довольно точно следует модели актора. В TTCN субъектом является тестовый компонент: либо параллельный тестовый компонент (PTC), либо основной тестовый компонент (MTC). Компоненты тестирования могут отправлять и получать сообщения удаленным партнерам (компоненты однорангового тестирования или интерфейс тестовой системы), причем последний идентифицируется по его адресу. Каждый тестовый компонент имеет привязанное к нему дерево поведения; тестовые компоненты работают параллельно и могут быть динамически созданы родительскими тестовыми компонентами. Встроенные языковые конструкции позволяют определять действия, которые должны выполняться при получении ожидаемого сообщения из внутренней очереди сообщений, например, отправка сообщения другому одноранговому объекту или создание новых тестовых компонентов.

Семантика передачи сообщений

Модель актора касается семантики передачи сообщений .

Неограниченная полемика о недетерминизме

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

В начале 60-х годов прошлого века прерывания стали использоваться для имитации одновременного выполнения нескольких программ на одном процессоре. Наличие параллелизма с общей памятью породило проблему управления параллелизмом . Первоначально эта проблема задумывалась как проблема взаимного исключения на одном компьютере. Эдсгер Дейкстра разработал семафоры, а позже, между 1971 и 1973 годами, Тони Хоар и Пер Бринч Хансен разработали мониторы для решения проблемы взаимного исключения. Однако ни одно из этих решений не предоставляет конструкцию языка программирования, которая инкапсулирует доступ к общим ресурсам. Эта инкапсуляция была позже выполнена конструкцией сериализатора ([Hewitt and Atkinson 1977, 1979] и [Atkinson 1980]).

Первые модели вычислений ( например , машины Тьюринга , постановки Поста, лямбда-исчисление и т. Д. ) Были основаны на математике и использовали глобальное состояние для представления вычислительного шага (позже обобщенного в [McCarthy and Hayes 1969] и [Dijkstra 1976] см. Упорядочения событий в сравнении с глобальным состоянием ). Каждый вычислительный шаг был от одного глобального состояния вычисления к следующему глобальному состоянию. Подход глобального состояния был продолжен в теории автоматов для конечных автоматов и машин с выталкивающим стеком , включая их недетерминированные версии. Такие недетерминированные автоматы обладают свойством ограниченного недетерминизма ; то есть, если машина всегда останавливается при запуске в своем начальном состоянии, то существует ограничение на количество состояний, в которых она останавливается.

Эдсгер Дейкстра развил недетерминированный подход глобального состояния. Модель Дейкстры вызвала споры относительно неограниченного недетерминизма (также называемого неограниченной неопределенностью ), свойства параллелизма, благодаря которому величина задержки в обслуживании запроса может стать неограниченной в результате арбитража разногласий за общие ресурсы, при этом гарантируя, что запрос со временем будут обслуживаться . Хьюитт утверждал, что модель актера должна обеспечивать гарантию обслуживания. В модели Дейкстры, хотя между выполнением последовательных инструкций на компьютере может быть неограниченное время, (параллельная) программа, начавшаяся в четко определенном состоянии, может завершиться только в ограниченном количестве состояний [Dijkstra 1976]. Следовательно, его модель не могла предоставить гарантию обслуживания. Дейкстра утверждал, что невозможно реализовать неограниченный недетерминизм.

Хьюитт утверждал иное: нет никаких ограничений, которые могут быть наложены на то, сколько времени потребуется вычислительной схеме, называемой арбитром, для урегулирования (см. Метастабильность (электроника) ). Арбитры используются в компьютерах, чтобы иметь дело с обстоятельствами, когда компьютерные часы работают асинхронно в отношении ввода извне, например ввода с клавиатуры, доступа к диску, ввода сети и т. Д. Таким образом, сообщение, отправленное на компьютер, может занять неограниченное время. быть полученным, а компьютер тем временем может пройти неограниченное количество состояний.

Модель акторов отличается неограниченным недетерминизмом, который был зафиксирован в математической модели Уиллом Клингером с использованием теории предметной области . В модели акторов нет глобального состояния.

Прямое общение и асинхронность

Сообщения в модели актора не обязательно буферизуются. Это был резкий разрыв с предыдущими подходами к моделям параллельных вычислений. Отсутствие буферизации вызвало множество недоразумений во время разработки модели акторов и до сих пор остается спорным вопросом. Некоторые исследователи утверждали, что сообщения буферизируются в «эфире» или «среде». Кроме того, сообщения в модели акторов просто отправляются (как пакеты в IP ); синхронное рукопожатие с получателем не требуется.

Создание актера плюс адреса в сообщениях означает переменную топологию

Естественным развитием модели акторов было разрешение адресов в сообщениях. Под влиянием сетей с коммутацией пакетов [1961 и 1964] Хьюитт предложил разработать новую модель параллельных вычислений, в которой связь вообще не имела бы каких-либо обязательных полей: они могли быть пустыми. Конечно, если отправитель сообщения желает, чтобы получатель имел доступ к адресам, которых у получателя еще не было, адрес должен быть отправлен в сообщении.

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

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

По своей сути параллельный

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

Нет требований к порядку поступления сообщений

Хьюитт возражал против добавления требования о том, что сообщения должны прибывать в том порядке, в котором они отправлены субъекту. Если требуется упорядочение выходных сообщений, его можно смоделировать с помощью актора очереди, который предоставляет эту функциональность. Такой субъект очереди будет ставить в очередь поступившие сообщения, чтобы их можно было получить в порядке FIFO . Так что если актер Xпослал сообщение M1для актера Y, а затем Xпослал другое сообщение , M2чтобы Y, не существует никаких требований , что M1приходит на Yперед тем M2.

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

Например, акторам разрешено конвейерно обрабатывать сообщения. Это означает, что в ходе обработки сообщения M1субъект может определить поведение, которое будет использоваться для обработки следующего сообщения, а затем фактически начать обработку другого сообщения M2до того, как оно завершит обработку M1. Тот факт, что субъекту разрешено конвейерно обрабатывать сообщения, не означает, что он должен конвейерно обрабатывать обработку. Конвейерное сообщение сообщения - это инженерный компромисс. Как внешний наблюдатель узнает, была ли конвейерная обработка сообщения субъектом? В определении актера, созданного возможностью конвейерной обработки, нет двусмысленности. Конечно, в некоторых реализациях возможно выполнить оптимизацию конвейера неправильно, и в этом случае может возникнуть непредвиденное поведение.

Местонахождение

Еще одна важная характеристика актерской модели - местность.

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

Также местоположение означает, что нет одновременного изменения в нескольких местах. Этим он отличается от некоторых других моделей параллелизма, например , модели сети Петри, в которой токены одновременно удаляются из нескольких мест и помещаются в другие места.

Составление систем акторов

Идея компоновки систем акторов в более крупные является важным аспектом модульности, которая была развита в докторской диссертации Гул Ага, разработанной позже Гул Ага, Яном Мейсоном, Скоттом Смитом и Кэролайн Талкотт .

Поведение

Ключевым нововведением было введение поведения, заданного как математическая функция, чтобы выразить, что делает субъект, когда он обрабатывает сообщение, включая определение нового поведения для обработки следующего поступающего сообщения. Поведение предоставило механизм математического моделирования совместного использования при параллелизме.

Поведение также освободило модель актора от деталей реализации, например , интерпретатора потока токенов Smalltalk-72. Однако важно понимать, что эффективная реализация систем, описываемых моделью акторов, требует обширной оптимизации. См. Подробности в разделе « Реализация модели актера» .

Моделирование других систем параллелизма

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

Теорема о вычислительном представлении

В модели акторов есть теорема о вычислительном представлении для систем, которые закрыты в том смысле, что они не получают сообщений извне. Математическое обозначение, обозначаемое замкнутой системой , построено на основе начального поведения и функции, приближающей поведение . Они получают все более точные приближения и создают обозначение (значение) для следующего [Hewitt 2008; Clinger 1981]: SprogressionS

Таким образом, Sможно математически охарактеризовать все его возможные поведения (включая те, которые связаны с неограниченным недетерминизмом). Хотя это и не реализация , его можно использовать для доказательства обобщения тезиса Чёрча-Тьюринга-Россера-Клини [Kleene 1943]:

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

Связь с логическим программированием

Одним из ключевых мотивов разработки модели акторов было понимание и решение проблем структуры управления, которые возникли при разработке языка программирования Planner . После того, как модель акторов была первоначально определена, важной задачей стало понимание силы модели по сравнению с тезисом Роберта Ковальски о том, что «вычисления можно отнести к дедукции». Хьюитт утверждал, что тезис Ковальского оказался ложным для параллельных вычислений в модели акторов (см. Неопределенность в параллельных вычислениях ).

Тем не менее, были предприняты попытки распространить логическое программирование на параллельные вычисления. Однако Хьюитт и Ага [1991] утверждали, что полученные системы не были дедуктивными в следующем смысле: вычислительные шаги систем параллельного логического программирования не следуют дедуктивно из предыдущих шагов (см. Неопределенность в параллельных вычислениях ). Недавно логическое программирование было интегрировано в модель акторов таким образом, чтобы сохранить логическую семантику.

Миграция

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

Безопасность

Безопасность субъектов можно защитить следующими способами:

Обобщение адресов актеров

Тонким моментом в модели актера является способность синтезировать адрес актера. В некоторых случаях безопасность может использоваться для предотвращения синтеза адресов (см. Безопасность ). Однако, если адрес актера представляет собой просто битовую строку, очевидно, что он может быть синтезирован, хотя может быть трудно или даже невозможно угадать адрес актера, если битовые строки достаточно длинные. SOAP использует URL-адрес для адреса конечной точки, по которой можно связаться с субъектом. Поскольку URL-адрес представляет собой символьную строку, его можно легко синтезировать, хотя шифрование может сделать практически невозможным угадание.

Синтез адресов акторов обычно моделируется с помощью маппинга. Идея состоит в том, чтобы использовать систему акторов для отображения фактических адресов акторов. Например, на компьютере структура памяти компьютера может быть смоделирована как система акторов, которая выполняет отображение. В случае адресов SOAP он моделирует DNS и остальную часть сопоставления URL-адресов .

В отличие от других моделей параллелизма при передаче сообщений

Первоначальная опубликованная работа Робина Милнера по параллелизму была также примечательна тем, что она не была основана на создании последовательных процессов. Его работа отличалась от модели акторов, потому что она была основана на фиксированном количестве процессов фиксированной топологии, передающих числа и строки с помощью синхронной связи. Первоначальная модель взаимодействующих последовательных процессов (CSP), опубликованная Тони Хоаром, отличалась от модели актора, поскольку она была основана на параллельной композиции фиксированного числа последовательных процессов, соединенных в фиксированной топологии, и взаимодействии с использованием синхронной передачи сообщений на основе имен процессов. (см. Модель акторов и историю расчетов процесса ). Более поздние версии CSP отказались от коммуникации, основанной на именах процессов, в пользу анонимной коммуникации по каналам, подход, который также использовался в работе Милнера по исчислению коммуникационных систем и π-исчислению .

Эти ранние модели Милнера и Хора обладали свойством ограниченного недетерминизма. Современные теоретические CSP ([Hoare 1985] и [Roscoe 2005]) явно обеспечивают неограниченный недетерминизм.

Сети Петри и их расширения (например, цветные сети Петри) похожи на акторов в том, что они основаны на асинхронной передаче сообщений и неограниченном недетерминизме, в то время как они похожи на ранние CSP в том, что они определяют фиксированные топологии элементарных шагов обработки (переходов) и репозиториев сообщений. (места).

Влиять

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

Теория

Модель акторов повлияла на развитие π-исчисления и последующих вычислений процессов . В своей лекции Тьюринга Робин Милнер писал:

Теперь чистое лямбда-исчисление состоит всего из двух типов вещей: термов и переменных. Можем ли мы добиться такой же экономии для расчета процессов? Карл Хьюитт со своей актерской моделью давно ответил на этот вызов; он объявил, что значение, оператор над значениями и процесс должны быть одним и тем же: субъектом.

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

Итак, в духе Хьюитта, наш первый шаг состоит в том, чтобы требовать, чтобы все вещи, обозначаемые терминами или доступные по именам - значения, регистры, операторы, процессы, объекты, - все были одного вида; все они должны быть процессами.

Упражняться

Модель актера оказала большое влияние на коммерческую практику. Например, Twitter использовал актеров для масштабируемости. Кроме того, Microsoft использовала модель акторов при разработке своей библиотеки асинхронных агентов. В разделе «Библиотеки и фреймворки» ниже перечислены многие другие библиотеки акторов.

Решенные проблемы

Согласно Хьюитту [2006], модель акторов решает проблемы в компьютерной и коммуникационной архитектуре, языках параллельного программирования и веб-сервисах, включая следующие:

  • Масштабируемость : проблема увеличения параллелизма как локально, так и нелокально.
  • Прозрачность : преодоление пропасти между локальным и нелокальным параллелизмом. Прозрачность в настоящее время является спорным вопросом. Некоторые исследователи выступают за строгое разделение локального параллелизма с использованием языков параллельного программирования (например, Java и C # ) от нелокального параллелизма с использованием SOAP для веб-служб . Строгое разделение приводит к отсутствию прозрачности, что вызывает проблемы, когда желательно / необходимо переключаться между локальным и нелокальным доступом к веб-службам (см. Распределенные вычисления ).
  • Несогласованность : несогласованность является нормой, потому что все очень большие системы знаний о взаимодействиях с информационными системами человека непоследовательны. Это несоответствие распространяется на документацию и спецификации очень больших систем (например, программное обеспечение Microsoft Windows и т. Д.), Которые внутренне несовместимы.

Многие идеи, представленные в модели акторов , теперь также находят применение в многоагентных системах по тем же причинам [Hewitt 2006b 2007b]. Ключевое отличие состоит в том, что системы агентов (в большинстве определений) накладывают дополнительные ограничения на участников, обычно требуя, чтобы они использовали обязательства и цели.

Программирование с актерами

В ряде различных языков программирования используется модель акторов или ее разновидности. Эти языки включают:

Языки программирования ранних актеров

  • Акт 1, 2 и 3
  • Acttalk
  • Ани
  • Кантор
  • Розетка

Более поздние языки программирования актеров

Актерские библиотеки и фреймворки

Также были реализованы библиотеки или структуры акторов, позволяющие программировать в стиле акторов на языках, в которых нет встроенных акторов. Вот некоторые из этих фреймворков:

Имя Положение дел Последний релиз Лицензия Языки
ReActed Активный 2021-09-05 Apache 2.0 Джава
Acteur Активный 2020-04-16 Apache-2.0 / MIT Ржавчина
Бастион Активный 2020-08-12 Apache-2.0 / MIT Ржавчина
Actix Активный 2020-09-11 Массачусетский технологический институт Ржавчина
Aojet Активный 2016-10-17 Массачусетский технологический институт Быстрый
Актер Активный 2017-03-09 Массачусетский технологический институт Джава
Actor4j Активный 2020-01-31 Apache 2.0 Джава
Актр Активный 2019-04-09 Apache 2.0 Джава
Vert.x Активный 2018-02-13 Apache 2.0 Java, Groovy, Javascript, Ruby, Scala, Kotlin, Ceylon
ActorFx Неактивный 2013-11-13 Apache 2.0 .СЕТЬ
Akka (инструментарий) Активный 2019-05-21 Apache 2.0 Java и Scala
Akka.NET Активный 2020-08-20 Apache 2.0 .СЕТЬ
Remact.Net Неактивный 2016-06-26 Массачусетский технологический институт .NET, Javascript
Ateji PX Неактивный ? ? Джава
czmq Активный 2016-11-10 МПЛ-2 C
F # MailboxProcessor Активный то же, что F # (встроенная основная библиотека) Лицензия Apache F #
Корус Активный 2010-02-04 GPL 3 Джава
Килим Активный 2018-11-09 Массачусетский технологический институт Джава
Актерский фонд (по мотивам Килим) Неактивный 2008-12-28 ? Джава
АктерКит Активный 2011-09-13 BSD Цель-C
Cloud Haskell Активный 2015-06-17 BSD Haskell
CloudI Активный 2021-05-27 Массачусетский технологический институт ATS, C / C ++, Elixir / Erlang / LFE, Go, Haskell, Java, Javascript, OCaml, Perl, PHP, Python, Ruby
Беспорядок Активный 2017-05-12 LGPL 2.1 C, C ++ (cluttermm), Python (pyclutter), Perl (perl-Clutter)
NAct Неактивный 2012-02-28 LGPL 3.0 .СЕТЬ
Nact Активный 2018-06-06 Apache 2.0 JavaScript / ReasonML
Ретланг Неактивный 2011-05-18 Новый BSD .СЕТЬ
JActor Неактивный 2013-01-22 LGPL Джава
Jetlang Активный 2013-05-30 Новый BSD Джава
Haskell-Актер Активный? 2008 г. Новый BSD Haskell
GPars Активный 2014-05-09 Apache 2.0 Groovy
ООСМОС Активный 2019-05-09 GPL 2.0 и коммерческая (двойное лицензирование) C. C ++ дружественный
Панини Активный 2014-05-22 MPL 1.1 Язык программирования сам по себе
ПАРЛИ Активный? 2007-22-07 GPL 2.1 Python
Peernetic Активный 2007-06-29 LGPL 3.0 Джава
Пикос Активный 2020-02-04 Массачусетский технологический институт KRL
PostSharp Активный 2014-09-24 Коммерческий / Freemium .СЕТЬ
Пульсар Активный 2016-07-09 Новый BSD Python
Пульсар Активный 2016-02-18 LGPL / Eclipse Clojure
Pykka Активный 2019-05-07 Apache 2.0 Python
Схема термитов Активный? 2009-05-21 LGPL Схема (реализация Гамбита)
Терон Неактивный 2014-01-18 Массачусетский технологический институт C ++
Театр Активный 2020-03-10 Массачусетский технологический институт Python
Квазар Активный 2018-11-02 LGPL / Eclipse Джава
Libactor Активный? 2009 г. GPL 2.0 C
Актер-CPP Активный 2012-03-10 GPL 2.0 C ++
S4 Неактивный 2012-07-31 Apache 2.0 Джава
C ++ Actor Framework (CAF) Активный 2020-02-08 Лицензия на программное обеспечение Boost 1.0 и 3-пункт BSD C ++ 11
Целлулоид Активный 2018-12-20 Массачусетский технологический институт Рубин
LabVIEW Actor Framework Активный 2012-03-01 Соглашение об уровне обслуживания National Instruments LabVIEW
Библиотека LabVIEW Messenger Активный 2021-05-24 BSD LabVIEW
Орбита Активный 2019-05-28 Новый BSD Джава
Фреймворки QP для встраиваемых систем реального времени Активный 2019-05-25 GPL 2.0 и коммерческая (двойное лицензирование) C и C ++
libprocess Активный 2013-06-19 Apache 2.0 C ++
SObjectizer Активный 2020-05-09 Новый BSD C ++ 11
ротор Активный 2020-10-23 Лицензия MIT C ++ 17
Орлеан Активный 2021-09-03 Лицензия MIT C # /. NET
Скайнет Активный 2020-12-10 Лицензия MIT C / Lua
Reactors.IO Активный 2016-06-14 Лицензия BSD Java / Scala
либагенты Активный 2020-03-08 Лицензия на бесплатное программное обеспечение C ++ 11
Прото. Актер Активный 2021-01-05 Лицензия на бесплатное программное обеспечение Go, C #, Python, JavaScript, Java, Котлин
Функциональная Java Активный 2018-08-18 BSD 3-пункт Джава
Райкер Активный 2019-01-04 Лицензия MIT Ржавчина
Комедия Активный 2019-03-09 EPL 1.0 JavaScript
Vlingo Активный 2020-07-26 Общественная лицензия Mozilla 2.0 Java, Kotlin, скоро .NET
wasmCloud Активный 2021-03-23 Apache 2.0 WebAssembly (Rust, TinyGo, Zig, AssemblyScript)
луч Активный 2020-08-27 Apache 2.0 Python

Смотрите также

использованная литература

дальнейшее чтение

внешние ссылки