refactoring tool that wants to rename 'x'.</li>\r
<li>Clang can serialize its AST out to disk and read it back into another \r
program, which is useful for whole program analysis. GCC does not have\r
- this, but its current PCH mechanism is close. However, GCC's current \r
- PCH support is architecturally only able to read the dump back into \r
- the exact same executable as the one that produced it.</li>\r
+ this. GCC's PCH mechanism (which is just a dump of the compiler \r
+ memory image) is related, but is architecturally only \r
+ able to read the dump back into the exact same executable as the one \r
+ that produced it (it is not a structured format).</li>\r
<li>Clang is <a href="features.html#performance">much faster and uses far\r
less memory</a> than GCC.</li>\r
<li>Clang aims to provide extremely clear and concise diagnostics (error and\r
<li>Clang inherits a number of features from its use of LLVM as a backend,\r
including support for a bytecode representation for intermediate code,\r
pluggable optimizers, link-time optimization support, Just-In-Time\r
- compilation, etc.</li>\r
+ compilation, ability to link in multiple code generators, etc.</li>\r
</ul>\r
\r
<!--=====================================================================-->\r
\r
<ul>\r
<li>The Elsa community is extremely small and major development work seems\r
- to have ceased in 2005, though it continues to be used by other projects\r
+ to have ceased in 2005, though it continues to be used by other small \r
+ projects\r
(e.g. Oink). Clang has a vibrant community including developers that\r
are paid to work on it full time. In practice this means that you can\r
file bugs against Clang and they will often be fixed for you. If you\r
use Elsa, you are (mostly) on your own for bug fixes and feature\r
enhancements.</li>\r
<li>Elsa is not built as a stack of reusable libraries like clang is. It is\r
- very difficult to use part of elsa without the whole front-end. For\r
+ very difficult to use part of Elsa without the whole front-end. For\r
example, you cannot use Elsa to parse C/ObjC code without building an\r
AST. You can do this in Clang and it is much faster than building an\r
AST.</li>\r
difficult to accurately map from a source location in the AST back to\r
its original position before preprocessing. Like GCC, it does not keep\r
track of macro expansions.</li>\r
- <li>Elsa is slower and uses more memory than GCC, which requires far more\r
- space and time than clang.</li>\r
+ <li>Elsa is even slower and uses more memory than GCC, which itself requires \r
+ far more space and time than clang.</li>\r
<li>Elsa only does partial semantic analysis. It is intended to work on\r
code that is already validated by GCC, so it does not do many semantic\r
checks required by the languages it implements.</li>\r
these shortcomings by loosely integrating a preprocessor. This allows it\r
to map from a source location in the AST to the original position before\r
preprocessing, providing it better support for static analysis and\r
- refactoring. For more details, please see the Pork page.</p>\r
+ refactoring. Note that Pork is in stasis now too.</p>\r
\r
\r
<!--=====================================================================-->\r