Alessandro Margara

Renoir (Reactive Network of Operators in Rust)

Renoir is a distributed data processing platform based on the dataflow paradigm that provides an ergonomic programming interface, similar to that of Apache Flink, but has much better performance characteristics. Renoir converts each job into a dataflow graph of operators and groups them in blocks. Blocks contain a sequence of operors which process the data sequentially without repartitioning it. They are the deployment unit used by the system and can be distributed and executed on multiple systems.

Renoir has been used to develop a solution for the DEBS 2022 Grand Challenge, which received the performance award for the solution delivering the highest throughput and lowest latency.

Renoir is an open source project, available at: Renoir

For further details, a technical paper about the design and implementation of Renoir is available at: The Renoir Dataflow Platform: Efficient Data Processing without Complexity

What is T-Rex?

T-Rex is a general purpose Complex Event Processing (CEP) Middleware designed to support an expressive language for rule definition while offering efficient processing mechanisms.

Users interact with T-Rex by:


Processing rules are expressed using the TESLA language. Each TESLA rules binds the occurrence time and the content of a complex event with the detection of a specific pattern of primitive events.

TESLA includes operators to express:

Further details on TESLA can be found in the following paper: TESLA: a Formally Defined Event Specification Language, G. Cugola, A. Margara. In Proceedings of 4th ACM International Conference On Distributed Event-Based Systems (DEBS 2010). Cambridge, United Kingdom. July 12 - 15, 2010

Further details on T-Rex algorithms and implementation can be found in the following papers:


T-Rex takes advantage of CUDA GPUs, if available, to speedup the processing of events. T-Rex is fully implemented in C++, but client adapters are available for Java clients. The current version of T-Rex only supports a centralized architecture. A new version including support for distributed processing is under development.


The latest version of the T-Rex processing engine, the T-Rex client Java library, and the T-Rex communication server can be downloaded from GitHub: T-Rex


T-Rex is the result of a research project led at Politecnico di Milano, with the help of Gianpaolo Cugola and Daniele Rogora. For any question about T-Rex, please contact me.

PCM (Parallel Content-Based Matching)
What is PCM?

PCM (Parallel Content-Based Matching) is a content-based matching engine explicitly conceived to run efficiently on parallel hardware.

There are two implementations of PCM:

PCM embeds a translator for messages and subscriptions that make it compatible with the SIENA publish/subscribe system, while providing speedups of up to 6x with OpenMP running on a 6 core machine, and up to 14x using Cuda on a GTX 460 GPU.

Further details on PCM can be found in the following papers:


PCM is available here.


PCM is the result of a research project led at Politecnico di Milano, with the help of Gianpaolo Cugola. For any question about PCM, please contact me.

What is iCEP?

iCEP is an inference tool for automated generation of CEP rules starting from historical traces of the domain of analysis. For more information, please refer to the iCEP paper.


iCEP is available here.


iCEP is the result of a research project led at the VU University, in collaboration with Gianpaolo Cugola (Politecnico di Milano) and Giordano Tamburrelli (Universita' della Svizzera Italiana). For any question about iCEP, please contact me.

What is DREAM?

DREAM is a middleware for distributed reactive programming in Java, which offers flexible consistency guarantees for the propagation of updates. For more information, please refer to the following papers:

  • On the Semantics of Distributed Reactive Programming: the Cost of Consistency
    A. Margara, G. Salvaneschi
    IEEE Transactions on Software Engineering (TSE), 2018 (Preprint).
  • We have a DREAM: Distributed Reactive Programming with Consistency Guarantees
    A. Margara and G. Salvaneschi
    In Proceedings of the 8th International Conference on Distributed Event-Based Systems (DEBS '14). Mumbay, India, May 26-29, 2014.
  • Download

    DREAM is available as an open-source software. Check out the DREAM official repository.


    DREAM is the result of a research project led at the VU University, in collaboration with Guido Salvaneschi (TU Darmstadt). For any question about DREAM, please contact me.

    What is ASIA?

    In contrast to traditional group communication systems, publish/subscribe systems focus on scalability and to that end sacrifice strong semantics. Membership is typically one aspect of publish/subscribe systems that is associated with weak semantics because view control mechanisms can easily become a bottleneck with increasing numbers of participants, especially as these join and leave frequently. Anonymity among participants in publish/subscribe communication is viewed as one of the main contributors to scalability next to asynchrony. While some applications may indeed not need information on participating entities, many current and future applications rely on information on their client population. In this project, we are working on lightweight support for gathering aggregation information (e.g., client population) in content-based publish/subscribe systems. However, it does not focus on a specific kind of aggregation. Instead, it generalizes at the infrastructure level: each application can request its own specific type of aggregation information.


    ASIA is based on an international cooperation between TU Darmstadt (Germany), Purdue University (USA), Imperial College (UK), University of Otago (New Zealand) and University of Lugano (Switzerland). For more information, please refer to the ASIA web site.