Hi,<br>here is my proposal:<br><br>Synopsys<br>    The main purpose of this project is implement a clang/llvm based distcc implementation.<br>    Distcc means distributed compiler. It can be used as a replacement of gcc.<br>
    Clang distcc will support ditributed (over network) compilation to any architecture <br>    supported by llvm. The llvm/clang distcc main advantage over original gcc based distcc is<br>    performace (less memory, less compile time) and customization.<br>
    All these benefit comes from llvm and clang.<br>    The new discc will be a compiler driver (or frontend) build from clang and llvm libraries.<br>    The driver will have two usage mode: gcc option mode and clang option mode.<br>
    So it can be used as a drop in replacement of gcc, and it will handle all distribution and cache task.<br>    There will be also an admin daemon, what will support configuration and distributes incoming<br>    requests to nodes. In each node will run a distcc deamon, and will handle incoming tasks.<br>
    This will do the compilation work.<br>    The clang distcc will support languages via clang. So currently C and Objective C will be supported.<br><br>Functionality details<br>    Usage:<br>        + setup network:<br>
            - start the admin deamon, in a node<br>            - start distcc deamons in each node<br>            - register nodes in admin deamon<br>            <br>        + setup local:<br>            - configure distcc, (setup admin node address)<br>
                This will generate a config file.<br>    <br>        + use: ex: make CC=distcc<br>    <br>Implemenation details<br>    The development will be done incrementally, from the simplest solution to more complex.<br>
    The simplest solution is when all source parsing task is done locally and the built AST<br>    is distributed to Node for optimization and code generation and it sends the result back when its done.<br>    An advanced solution is when a file sharing protocol is used to share local source files (for including)<br>
    and then parsing is done in Node side and file including is done via the file sharing protocol.<br>    A more advanced solution is when we caching built ASTs in a central database to prevent<br>    parsing and building each time. This is useful in header files case.<br>
    So there will be these standalone programs:<br>        + distcc, supports gcc options<br>        + distcc, supports clang options<br>        + distcc daemon for Nodes (network is composed from Nodes, what will do the compilation work)<br>
        + distcc admin daemon (stores information from the distcc Node network)<br><br>    All necessary software components are available in llvm/clang sources, but network handling.<br>    So there will be a thin network layer implemented for unix and windows platforms.<br>
    The new distcc driver will be placed in clang/Driver directory.<br>    <br>    In caching the cached AST identification can be done with a MD3 sum of the source file including the included<br>    files MD3 sum and the options used in parsing (defines).<br>
    <br>Development methodology<br>    The work will be done via svn. I'll need a clang branch for my work. But it is not required a standalone svn<br>    repository will work too.<br>    I use ubuntu linux (gutsy gibbon). I'll send a weekly report of project.<br>
    I'll write user and developer documentation (html or pdf).<br><br>Project Schedule<br>    Before the mid time gsoc evaluation the simplest method will be implemented. The file sharing protocol and<br>    caching will be done in second part of soc. But it can be figured out in depth during the first part, when <br>
    the simples solution will ready.<br><br>Bio<br>    I'm a 23 years old student, studying at the Budapest University of Technology and Economics. I've started programming 7 years<br>    ago, and I've been using the C language for 6 years, and the C++ language for 5 years. I've been using opensource software for 7 years.<br>
    Compiler programs are one of my passions. I like efficient and clean solutions. I like nice and clean and well documeted API's,<br>    like Qt, Ogre3D, llvm, clang. I have stable knowledge of OOP and software engineering.<br>
    I like much reusable and clean, easy to understand code.<br>    I'm familiar with the following programming languages:<br>        - C (6 years)<br>        - C++ (5 years)<br>        - python (3 years)<br>        - java (4 years)<br>
        - SML (1 year)<br>        - Prolog (1 year)<br>        - lua, squirrel<br>        - haskell (actual passion)<br>    I'm tracking llvm and clang development since last gsoc, beacuse I've recognised llvm in gsoc projects list.<br>
    I have an svn copy of llvm and clang since 2007 october. I always compile it. I've readen all docs avalable from llvm and clang.<br>    I also know the source code structure and its functionality.<br><br>