Parallelism, concurrency, and distribution
|
Concurrency magagement is at the heart of diffuse
programming. Since the execution platforms are highly heterogeneous,
many different concurrency principles and models may involved.
Asynchronous concurrency is the basis of shared-memory process
handling within multiprocessor or multicore computers, of direct or
fifo-based message passing in distributed networks, and of fifo- or
interrupt-based event handling in web-based human-machine interaction
or sensor handling. Synchronous or quasi-synchronous concurrency is
the basis of signal processing, of real-time control, and of
safety-critical information acquisition and display. Interfacing
existing devices based on these different concurrency principles
within HOP or other diffuse programming languages will require better
understanding of the underlying concurrency models and of the way they
can nicely cooperate, a currently ill-resolved problem.
Web and functional programming
|
We are studying new paradigms for programming Web applications
that rely on multi-tier functional programming [SGL06]. This research has been initiated in the Mimosa team,
the predecessor of the Indes team, where we have created the new
Web programming environment named Hop. It relies on a single formalism
for programming the server-side and the client-side of the
applications as well as for configuring the execution engine.
Hop is a functional language based on the Scheme
programming language. That is, it is a strict functional language,
fully polymorphic, supporting side effects, and dynamically
type-checked. Hop is implemented as an extension of the Bigloo
compiler that we develop [Ser00]. In the
past, we have extensively studied static analyses (type systems and
inference, abstract interpretations, as well as classical compiler
optimizations) to improve the efficiency of compilation in both space
and time.
Security of diffuse programs
|
The main goal of our security research is to provide scalable
and rigorous language-based techniques that can be integrated into
multi-tier compilers to enforce the security of diffuse programs.
Research on language-based security has been carried on before in both
the Mimosa [BC02] and Everest [BRR07] teams. In particular previous research has
focused on controlling information flow to ensure confidentiality.
Typical language-based solutions to these problems are founded on static
analysis, logics, provable cryptography, and compilers that generate correct
code by construction [FR08].
Relying on the multi-tier programming language Hop that tames the
complexity of writing and analysing secure diffuse applications,
we are studying language-based solutions to prominent web security
problems such as code injection and cross-site scripting, to name a few.