<?xml version="1.0" encoding="ISO-8859-1"?><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Future Work</title>
 </head>
 <body bgcolor="#FFFFFF">
  <table border="0" width="100%">
   <tr>
    <td><font size="6"><strong>Future Work</strong></font></td>
    <td align="right"><a href="limitations.html"><img src="image/previous.gif" alt="Previous" border="0" /></a><a href="platforms.html"><img src="image/next.gif" alt="Next" border="0" /></a></td>
   </tr>
  </table>
  <hr size="1" />
  <p>
   The <i>Gobo Eiffel Compiler</i> can be extended in many ways.
   Here is a non-exhaustive list of possible enhancements and future developments.
   
  </p>
  <div>
   <h2>Improve C code generation</h2>
   
   <p>
    Currently <i>gec</i> generates one big C file. Some effort
    should be spent on allowing several smaller C files to be generated, hence
    allowing possible incrementality of the C compilation and not putting
    C compilers too much at stress.
    
   </p>
   
   <p>
    The names of the generated C functions should not depend on type
    and feature ids in order to make it possible to play with DLLs and other
    shared libraries. It will also make the incrementality of C compilation easier
    to implement. The class <font color="#008080"><i><tt>ET_C_GENERATOR</tt></i></font> has been
    written in such a way that it should not be that difficult to change the
    naming convention. You can have a look at the callers of feature
    <font color="#008080"><i><tt>short_names</tt></i></font> as a starting point.
    
   </p>
   
   <p>
    One way to improve C compilation time could be to try to use
    <a href="https://github.com/distcc/distcc">distcc</a>. It seems to
    <a href="http://se.inf.ethz.ch/old/people/leitner/distcc/">work well</a>
    when applied to the C code generated by ISE.
    
   </p>
   
   <p>
    Note that no effort has been made yet to optimize the generated C code.
    
   </p>
   
  </div>
  <div>
   <h2>Garbage Collection</h2>
   
   <p>
    One solution is to plug the
    <a href="http://www.hboehm.info/gc/">Boehm GC</a>
    to the C code generated by <i>gec</i>.
    
   </p>
   
  </div>
  <div>
   <h2>Debugger</h2>
   
   <p>
    Add debugging facilities.
    
   </p>
   
  </div>
  <div>
   <h2>Profiling</h2>
   
   <p>
    Add profiling facilities.
    
   </p>
   
  </div>
  <div>
   <h2>Incrementality</h2>
   
   <p>
    Some effort should be spent on finding ways to make the Eiffel to C compilation
    incremental.
    
   </p>
   
  </div>
  <div>
   <h2>Validation Test Suite</h2>
   
   <p>
    Several kinds of validation test suite are needed. One to test interoperability
    with ISE Eiffel. Another one to test compliance with the <a href="http://www.ecma-international.org/publications/standards/Ecma-367.htm">ECMA
     Eiffel standard</a>. It would also be useful to have a test suite for
    <a href="https://github.com/EiffelSoftware/FreeELKS">FreeELKS</a> kernel
    library.
    
   </p>
   
  </div>
  <div>
   <h2>Intermediate Languages</h2>
   
   <p>
    <i>gec</i> currently generates C code. This is done through
    the class <font color="#008080"><i><tt>ET_C_GENERATOR</tt></i></font>. <i>gec</i>
    could be extended to generate Java Virtual Machine (JVM) code, Microsoft .NET
    code (MSIL), or even native code. We could also have a look at
    <a href="https://en.wikipedia.org/wiki/C--">C--</a>.
    
   </p>
   
  </div>
  <hr size="1" />
  <table border="0" width="100%">
   <tr>
    <td>
     <address><font size="2"><b>Copyright © 2006-2017, Eric Bezault</b><br /><b>mailto:</b><a href="mailto:ericb@gobosoft.com">ericb@gobosoft.com</a><br /><b>http://</b><a href="http://www.gobosoft.com">www.gobosoft.com</a><br /><b>Last Updated: </b>5 Mai 2017</font></address>
    </td>
    <td align="right" valign="top"><a href="http://www.gobosoft.com"><img src="image/home.gif" alt="Home" border="0" /></a><a href="index.html"><img src="image/toc.gif" alt="Toc" border="0" /></a><a href="limitations.html"><img src="image/previous.gif" alt="Previous" border="0" /></a><a href="platforms.html"><img src="image/next.gif" alt="Next" border="0" /></a></td>
   </tr>
  </table>
 </body>
</html>