![]() ![]() The first version of C- was released in April 1998 as a MSRA paper, accompanied by a January 1999 paper on garbage collection. Its most innovative feature is a run-time interface which allows writing of portable garbage collectors, exception handling systems and other run-time features which work with any C- compiler. C- is a tightly-defined simpler alternative to C which supports all of these. ![]() However, C is a poor choice for functional languages: it does not guarantee tail-call optimization, or support accurate garbage collection or efficient exception handling. Since writing a custom code generator is a challenge in itself, and the compiler backends available to researchers at that time were complex and poorly documented, several projects had written compilers which generated C code (for instance, the original Modula-3 compiler). (in C, - and ++ mean "decrement" and "increment," respectively.) The name of the language is an in-joke, indicating that C- is a reduced form of C, in the same way that C++ is basically an expanded form of C. The language's syntax borrows heavily from C while omitting or changing standard C features such as variadic functions, pointer syntax, and aspects of C's type system, because they hamper essential features of C- and ease of code-generation. This is done by delegating low-level code-generation and program optimization to a C- compiler. ![]() Cmm, the fork actively used as the intermediate representation (IR) in the Glasgow Haskell Compiler (GHC) Ĭ- is a "portable assembly language", designed to ease the implementation of compilers that produce high-quality machine code. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |