<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2400%3A4050%3A2122%3A3800%3A6D20%3A50A9%3AABFB%3AD768</id>
	<title>Vero - Wikipedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2400%3A4050%3A2122%3A3800%3A6D20%3A50A9%3AABFB%3AD768"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php/Special:Contributions/2400:4050:2122:3800:6D20:50A9:ABFB:D768"/>
	<updated>2026-08-14T18:55:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Cfront&amp;diff=53401</id>
		<title>Cfront</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Cfront&amp;diff=53401"/>
		<updated>2024-12-27T03:39:13Z</updated>

		<summary type="html">&lt;p&gt;2400:4050:2122:3800:6D20:50A9:ABFB:D768: cppfront shares a naming scheme but not much else with Cfront&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Original compiler for C++}}&lt;br /&gt;
&#039;&#039;&#039;Cfront&#039;&#039;&#039; was the original [[compiler]] for [[C++]] (then known as &amp;quot;[[C (programming language)|C]] with Classes&amp;quot;) from around 1983, which converted C++ to C; developed by [[Bjarne Stroustrup]] at AT&amp;amp;T Bell Labs. The [[preprocessor]] did not understand all of the [[programming language|language]] and much of the [[source code|code]] was written via [[Source-to-source compiler|translations]]. Cfront had a complete [[parser]], built [[symbol table]]s, and built a [[tree data structure|tree]] for each [[class (computer science)|class]], [[function (programming)|function]], etc. Cfront was based on CPre, a C compiler started in 1979.&lt;br /&gt;
&lt;br /&gt;
As Cfront was written in C++, it was a challenge to [[bootstrapping (compilers)|bootstrap]] on a machine without a C++ compiler/translator.  Along with the Cfront C++ sources, a special &amp;quot;half-preprocessed&amp;quot; version of the C code resulting from compiling Cfront with itself was also provided. This C code was to be compiled with the native C compiler, and the resulting executable could then be used to compile the Cfront C++ sources.&lt;br /&gt;
&lt;br /&gt;
Most of the porting effort in getting Cfront running on a new machine was related to standard I/O. Cfront&#039;s C++ streams were closely tied in with the C library&#039;s buffered I/O streams, but there was little  interaction with the rest of the C environment. The compiler could be ported to most [[System V]] derivatives without many changes, but [[BSD]]-based systems usually had many more variations in their C libraries and associated stdio structures.&lt;br /&gt;
&lt;br /&gt;
Cfront defined the language until circa 1990, and many of the more obscure corner cases in C++ were related to its C++-to-C translation approach. A few remnants of Cfront&#039;s translation method are still found in today&#039;s C++ compilers; [[name mangling]] was originated by Cfront, as the relatively primitive [[Linker (computing)|linkers]] at the time did not support type information in symbols, and some template instantiation models are derived from Cfront&#039;s early efforts. C++ (and Cfront) was directly responsible for many improvements in [[Unix]] linkers and  [[object file]] [[file format|format]]s, as it was the first widely used language which required link-time type checking, [[weak symbol]]s, and other similar features.&lt;br /&gt;
&lt;br /&gt;
Cfront 4.0 was abandoned in 1993 after a failed attempt to add [[exception handling|exception]] support.&amp;lt;ref&amp;gt;[[Scott Meyers]], [http://www.artima.com/cppsource/top_cpp_software.html The Most Important C++ Software...Ever], 2006&amp;lt;/ref&amp;gt; The C++ language had grown beyond its capabilities; however a compiler with similar approach became available later, namely [[Comeau C/C++]].&lt;br /&gt;
&lt;br /&gt;
Analogous to the way cfront can process C++ source code into something that can be compiled by previously-available C compilers, &#039;&#039;&#039;cppfront&#039;&#039;&#039; processes source code written in new and experimental C++ &#039;syntax 2&#039; into something that can be compiled by previously-available &#039;syntax 1&#039; C++ compilers.&amp;lt;ref&amp;gt;&lt;br /&gt;
[https://www.google.com/books/edition/Professional_C++/lSabEAAAQBAJ &amp;quot;Professional C++ Philosophy and Principles&amp;quot;].&lt;br /&gt;
2022.&lt;br /&gt;
p. 373.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
Paul Krill.&lt;br /&gt;
[https://www.infoworld.com/article/3674213/cppfront-project-aims-to-modernize-c.html &amp;quot;Cppfront project aims to modernize C++&amp;quot;].&lt;br /&gt;
InfoWorld.&lt;br /&gt;
&amp;lt;/ref&amp;gt;  &#039;&#039;&#039;cppfront&#039;&#039;&#039; is different in scope in that it doesn&#039;t perform many validity checks on the code, instead relying on the C++ compiler for any checks that would require non-local understanding of the code such as establishing correct use of [[Symbol table|symbols]].  Cfront on the other hand was a complete compiler that just happened to target the C language instead of an [[Assembly language|assembler]].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
;Notes&lt;br /&gt;
* {{cite web | url=http://stroustrup.com/hopl-almost-final.pdf | title=Evolving a language in and for the real world: C++ 1991-2006 | author=Bjarne Stroustrup | archive-url=https://web.archive.org/web/20071120015600/http://www.research.att.com/~bs/hopl-almost-final.pdf | archive-date=2007-11-20 }}&lt;br /&gt;
* {{cite web | url=http://stroustrup.com/bs_faq.html#bootstrapping | title=Bjarne Stroustrup&#039;s FAQ | author=Bjarne Stroustrup }}&lt;br /&gt;
* {{cite web | url=http://stroustrup.com/dne.html | title=The Design and Evolution of C++ | author=Bjarne Stroustrup }}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.softwarepreservation.org/projects/c_plus_plus/index.html#cfront Cfront Releases] at [http://www.softwarepreservation.org/projects/c_plus_plus C++ Historical Sources Archive]&lt;br /&gt;
* [https://github.com/seyko2/cfront-3 cfront v3], the cfront re-port for the 4th edition of [[Plan 9 from Bell Labs]]&lt;br /&gt;
* [https://github.com/farisawan-2000/cfront-3 Cfront 3.0.3], &amp;quot;AT&amp;amp;T/Bell Labs C++ to C translator from 1994, modified to build on modern hardware&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:C++ compilers]]&lt;br /&gt;
[[Category:Unix programming tools]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Cfront]]&lt;/div&gt;</summary>
		<author><name>2400:4050:2122:3800:6D20:50A9:ABFB:D768</name></author>
	</entry>
</feed>