<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    <title>Project-Team:RMOD</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Overall Objectives - Constructs for modular and isolating programming languages"/>
    <meta name="dc.title" content="Overall Objectives - Constructs for modular and isolating programming languages"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2015-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="RMOD"/>
    <!-- Piwik -->
    <script type="text/javascript" src="/rapportsactivite/piwik.js"></script>
    <noscript><p><img src="//piwik.inria.fr/piwik.php?idsite=49" style="border:0;" alt="" /></p></noscript>
    <!-- End Piwik Code -->
  </head>
  <body>
    <div class="tdmdiv">
      <div class="logo">
        <a href="http://www.inria.fr">
          <img style="align:bottom; border:none" src="../static/img/icons/logo_INRIA-coul.jpg" alt="Inria"/>
        </a>
      </div>
      <div class="TdmEntry">
        <div class="tdmentete">
          <a href="uid0.html">Project-Team Rmod</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">Overall Objectives<ul><li><a href="./uid3.html">Introduction</a></li><li><a href="./uid4.html">Reengineering and remodularization</a></li><li class="tdmActPage"><a href="./uid5.html">Constructs for modular and isolating programming languages</a></li></ul></div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid8.html&#10;&#9;&#9;  ">Software Reengineering</a></li><li><a href="uid19.html&#10;&#9;&#9;  ">Language Constructs for Modular Design</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid33.html&#10;&#9;&#9;  ">Programming Languages and Tools</a></li><li><a href="uid34.html&#10;&#9;&#9;  ">Software Reengineering</a></li></ul></div>
      <div class="TdmEntry">
        <a href="./uid36.html">Highlights of the Year</a>
      </div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid46.html&#10;&#9;&#9;  ">Moose</a></li><li><a href="uid51.html&#10;&#9;&#9;  ">Pharo</a></li><li><a href="uid56.html&#10;&#9;&#9;  ">Pillar</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid60.html&#10;&#9;&#9;  ">Tools for understanding evolution</a></li><li><a href="uid61.html&#10;&#9;&#9;  ">Software Quality: Taming Software Evolution</a></li><li><a href="uid62.html&#10;&#9;&#9;  ">Software Quality: History and Changes</a></li><li><a href="uid63.html&#10;&#9;&#9;  ">Dynamic Languages: Debugging</a></li><li><a href="uid64.html&#10;&#9;&#9;  ">Reconciling Dynamic Languages and Isolation</a></li><li><a href="uid65.html&#10;&#9;&#9;  ">Tailoring Applications and boostrapping</a></li><li><a href="uid66.html&#10;&#9;&#9;  ">Dynamic Languages: Virtual Machines</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid68.html&#10;&#9;&#9;  ">SafePython FUI</a></li><li><a href="uid69.html&#10;&#9;&#9;  ">Sponsoring LAM</a></li><li><a href="uid70.html&#10;&#9;&#9;  ">Worldline CIFRE</a></li><li><a href="uid71.html&#10;&#9;&#9;  ">Pharo Consortium</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid73.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid74.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid78.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid91.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid120.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid171.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid215.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentmajor" href="bibliography.html">Major publications</a>
          </li>
          <li>
            <a id="tdmbibentyear" href="bibliography.html#year">Publications of the year</a>
          </li>
          <li>
            <a id="tdmbibentfoot" href="bibliography.html#References">References in notes</a>
          </li>
        </ul>
      </div>
    </div>
    <div id="main">
      <div class="mainentete">
        <div id="head_agauche">
          <small><a href="http://www.inria.fr">
	    
	    Inria
	  </a> | <a href="../index.html">
	    
	    Raweb 
	    2015</a> | <a href="http://www.inria.fr/en/teams/rmod">Presentation of the Project-Team RMOD</a> | <a href="http://rmod.lille.inria.fr">RMOD Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="rmod.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="rmod.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-rmod-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../rmod/rmod.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-rmod-epub.png"/>
                </a>
              </td>
            </tr>
            <tr>
              <td/>
              <td>PDF
</td>
              <td>e-Pub
</td>
            </tr>
          </table>
        </div>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid4.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid8.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
      <div id="textepage">
        <!--DEBUT2 du corps du module-->
        <h2>Section: 
      Overall Objectives</h2>
        <h3 class="titre3">Constructs for modular and isolating programming languages</h3>
        <p>Dynamically-typed programming languages such as JavaScript are
getting new attention as illustrated by the large investment of
Google in the development of the Chrome V8 JavaScript engine and the
development of a new dynamic language DART. This new trend is
correlated to the increased adoption of dynamic programming
languages for web-application development, as illustrated by Ruby on
Rails, PHP and JavaScript. With web applications, users expect
applications to be always available and getting updated on the fly.
This continuous evolution of application is a real challenge
<a href="./bibliography.html#rmod-2015-bid0">[67]</a> . Hot software evolution often requires
<i>reflective</i> behavior and features. For instance in CLOS and
Smalltalk each class modification automatically migrates existing
instances on the fly.</p>
        <p>At the same time, there is a need for <i>software isolation</i> <i>i.e.,</i>,
applications should reliably run co-located with other applications
in the same virtual machine with neither confidential information
leaks nor vulnerabilities. Indeed, often for economical reasons, web
servers run multiple applications on the same virtual machine. Users
need confined applications. It is important that (1) an application
does not access information of other applications running on the
same virtual machine and (2) an application authorized to manipulate
data cannot pass such authorization or information to other parts of
the application that should not get access to it.</p>
        <p>Static analysis tools have always been confronted to reflection
<a href="./bibliography.html#rmod-2015-bid1">[64]</a> . Without a full treatment of reflection,
static analysis tools are both incomplete and unsound. Incomplete
because some parts of the program may not be included in the
application call graph, and unsound because the static analysis does
not take into account reflective features <a href="./bibliography.html#rmod-2015-bid2">[73]</a> . In
reflective languages such as F-Script, Ruby, Python, Lua,
JavaScript, Smalltalk and Java (to a certain extent), it is possible
to nearly change any aspect of an application: change objects,
change classes dynamically, migrate instances, and even load
untrusted code.</p>
        <p>Reflection and isolation concerns are a priori antagonistic, pulling
language design in two opposite directions. Isolation, on the one
hand, pulls towards more static elements and types (<i>e.g.,</i>, ownership
types). Reflection, on the other hand, pulls towards fully dynamic
behavior. This tension is what makes this a real challenge: As
experts in reflective programming, dynamic languages and modular
systems, we believe that by working on this important tension we can
make a breakthrough and propose innovative solutions in resolving or
mitigating this tension. With this endeavor, we believe that we are
working on a key challenge that can have an impact on future
programming languages. The language construct challenge tackled by
RMoD is formulated as follows:</p>
        <blockquote>
          <p class="bold">
            <i>What are the language modularity constructs to support
isolation?</i>
          </p>
        </blockquote>
        <p>In parallel we are continuing our research effort on
traits (Traits are groups of methods that can be composed
orthogonally to simple inheritance. Contrary to mixin, the class
has the control of the composition and conflict management.) by
assessing trait scalability and reuse on a large case study and
developing a pure trait-based language. In addition, we dedicate
efforts to remodularizing a meta-level architecture in the context
of the design of an isolating dynamic language. Indeed at the
extreme, modules and structural control of reflective features are
the first steps towards flexible, dynamic, yet isolating, languages.
As a result, we expect to demonstrate that having adequate
composable units and scoping units will help the evolution and
recomposition of an application.</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid4.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid8.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
    </div>
  </body>
</html>
