.so dblcol.tr .so fmt.tr .so font.tr \" Comment this out when formatting for web. .sh An Introduction Here's a slightly correlated set of essays I've written. References are provided in the style of the American Mathematical Society. This document is provided in \fTPDF\fP, \fTHTML\fP, and plain textual formats. The \fTPDF\fP contains actual links at each reference, and a typeface much less exposed than Times New Roman. The \fTHTML\fP is mostly \fTSVG\fP, corresponding so closely to the \fTPDF\fP it's generated from that the source \fTPDF\fP may be nearly re-constructed using the browser's printing features. This conversion has the benefit of suiting the modern web browser. The plain text file is provided for the sake of accessibility, at the cost of legibility. I'd be pleasantly surprised to receive either positive or negative feedback. My contact information is at the very end, past the long bibliography. .sh The Impact of the C Programming Language on the Past 50 Years of Computing The C Programming Language was initially developed between 1969 and 1979. It was further refined when standardized by the American National Standards Institute in 1989. In the twenty years between birth and standardization, C became the dominant programming language, shaping the environments it entered and the programmers who used it. In the time between .c2sc ANSI standardization and now, the majority of computing systems have been designed to leverage C. .pg A programming language is a format for expressing logic. The programming language that a computer natively understands, called an “instruction set,” is composed of minuscule operations. Across all kinds of digital computers, these allow for logical evaluation, performance of arithmetic, management of information, and general hardware control .ref [Intel 23], .ref [Arm 21], .ref [Waterman 19]. .pg These instructions are expressed in binary digits, commonly contracted to “bits” .ref [Mackenzie 80]. Unlike a decimal digit, which may be a whole value between 0 and 9, a bit may be either 0 or 1. In digital computing's infancy, series of these were manually “toggled in” .ref [Post 83], using physical switches and buttons. Save for theories put on paper, such as the works of Ada Lovelace .ref [Menabrea 1842] and Alan Turing .ref [Turing 36], this was the first form of computer programming. .pg As hardware and software both advanced, programmers became able to write programs textually. They would physically interact with a teleprinter, essentially a typewriter which would send key strokes to and print output from a computer. They would digitally interact with software to manage and store teleprinter input, naturally named “text editors.” Then, the stored input from the teleprinter would be passed to a program called an “assembler,” to further interpret the saved input. The textual representations of computer instructions, such as .c2sc “NOT A,” would be encoded as real computer instructions, such as “00100001 01101010” .ref [Nelson 63], .ref [Ritchie 99], .ref [Thompson 71a], .ref [Thompson 71b], .ref [Thompson 71c]. The text which programmers would provide to assemblers came to be called “assembly language.” .ref [IBM 92]. .pg Assembly language directly correlates to a computer's instruction set, meaning that the programmer must textually manage each operation in a program. Doing so is less tedious than flipping switches hundreds of times over, but still tedious .ref [Nather 83], .ref [Post 83]. Computer scientists found that a computer may instead be provided a text which vaguely describes the intended logic of a program. Though the computer has been provided less information, it may have enough to produce a reasonable translation of the abstract program to its own instruction set. As opposed to an assembler, the software which performs this kind of interpretation is called a “compiler” .ref [Aho 14]. .PDF img/360.pdf L \*[column_width] .PDF img/tele.pdf L \*[column_width]+5m .PDF img/701.pdf L \*[column_width] .stc Top: the control panel of an early digital computer, designed to be programmed through the toggling of several switches .ref [Shirriff 19]. Middle: A Teletype-branded teleprinter .ref [Reinhold 14]. Bottom: A punch card, at a time the most economical method of storing program data .ref [Jones 22]. .enc .pg Compiling a program from an abstract — “high-level” — language is comparable to translating expressions from one human language to another: it may be done, loosely .ref [Aho 14]. With this loss in accuracy comes two benefits: programs may be written in less time, and structured to read closer to human language; and programs may be interpreted with similar logical meanings on architecturally different computers. These benefits are so strong that the vast majority of today's software is written in high-level programming languages .ref [TIOBE 23], .ref [Backus 56]. .pg C was among the languages developed to transition from programming in assembly to a high-level language .ref [Backus 56], .ref [Ritchie 93]. It began its development at Bell Laboratories, a subsidiary of .c2sc AT&T, “as a system implementation language for the nascent Unix operating system” .ref [Ritchie 93]. Unix was a set of software to enable a singular computer to run multiple programs concurrently — as opposed to one at a time. Further, it fulfilled the basic infrastructure needed to make hardware accessible in software .ref [Ritchie 74], .ref [Ritchie 84]. .de sl . ft Courier . ps 9 . nf .. .de el . ft R . ps .. .sp 0.5 .TS expand tab(;); l l. T{ .sl .so code/hello.c .el T};T{ .sl .so code/hello.gas .el T} .TE .stc Left: A trivial program written in C for printing “Hello.” to the screen. Written by the author. Right: A program written in Assembly for the same purpose. It assumes a specific version of modern Unix and a .c2sc PC-architecture computer. Adapted from .ref [Sommers 00]. .enc .pg Unix and C were designed around each-other. C was designed to leverage the hardware abstractions provided by Unix, and much of Unix itself came to be written in C .ref [Ritchie 93]. This bond allowed C and Unix to form the first “portable” programming environment. In such an environment, programs written for one set of hardware may run largely or wholly unmodified on another set of hardware .ref [Johnson 78]. Unix and C — and many programs written in C to run on top of Unix — could then be ported to a new machine with relative ease. “[T]hough originally unplanned,” Unix's authors discovered it “to be possible to produce an operating system and set of software that runs on several machines and whose expression in source code is, except for a few modules, identical on each machine” .ref [Ritchie 76]. .pg Despite C and Unix forming a revolutionary product, they were distributed liberally to universities. .c2sc AT&T was not oblivious to C's value, however their hand was forced. C and Unix were to be distributed liberally, or not distributed at all. .sbq .c2sc AT&T held a government-sanctioned monopoly on the .c2sc US telephone system. The terms of .c2sc AT&T’s agreement with the .c2sc US government prevented it from selling software, which meant that it could not sell .c2sc UNIX as a product. Instead, beginning in 1974 with Fifth Edition, and especially with Sixth Edition, .c2sc AT&T licensed .c2sc UNIX for use in universities for a nominal distribution fee. … .c2sc AT&T’s release of .c2sc UNIX into universities greatly contributed to the popularity and use of the operating system, and by 1977, .c2sc UNIX was running at some 500 sites, including 125 universities in the United States and several other countries. .ref [Kerrisk 10] .ebq Due to C and Unix's bonded success, in tandem with an affordable price, C became the preferred programming language in education. .pg This liberty in distribution led to several derivative versions of Unix. At University of California, Berkeley, Unix was modified and re-written over several years. It became considered by its authors as an independent, compatible operating system. By 1983, the system had become a substantial superset of Unix. The “Berkeley Software Distribution” itself became a licensed product, eventually the basis for “[s]everal commercial OSes [operating systems]” .ref [Salus 94a]. .pg Come 1988, independent recreations of Unix had been released, under totally free terms. They were largely compatible with Unix, but contained no actual Unix source code. These could be distributed without restriction. This was in stark contrast to \fTAT&T\fP's selective licensing to universities. Following legal dispute with \fTAT&T\fP, Berkeley Software Distribution itself became free to distribute, spawning the \fTBSD\fP family of operating systems .ref [Salus 94b], .ref [OpenBSD 23], .ref [NetBSD 23], .ref [FreeBSD 23]. As Unix became both feature-rich and free to license, its influence spread further. By necessity, where Unix and its derivatives went, C went too. .pg As C became increasingly popular outside of Bell Labs, “it was clear that C needed formal standardization” .ref [Ritchie 93]. The language informally documented did not wholly match the language in use .ref [Kernighan 78] .ref [Ritchie 75]. As of 1989, C became formally standardized by the American National Standards Institute .ref [ANSI 89], .ref [X3J11 98]. This formal standard became integral to the continued growth of C's popularity. “[T]he incipient use of C in projects subject to commercial and government contract meant that the imprimatur of an official standard was important” .ref [Ritchie 93]. Separately, C's sister project, Unix, became standardized .ref [IEEE 07], .ref [Harbour 01], .ref [Stallman 11]. .pg Thanks in large part to their standardization, Unix and C have been implemented and re-implemented several times. Modern versions of Unix continue to be designed in C .ref [Linux 23], .ref [OpenBSD 23], .ref [NetBSD 23], .ref [FreeBSD 23], .ref [Illumos 23]. On computers which provide services en masse — public access web sites; e-mail servers — these are go-to choices .ref [StatCounter 23a], .ref [Fortune 23]. The small computers that manage home internet connections often use the same or similar infrastructure .ref [Dunn 18], .ref [OpenWRT 23]. In essence, Unix's descendants enable the internet as we know it today, and they themselves are enabled by C. .ks .ff R +lnum +tnum .G1 ticks left off bot off label left "Operating" "System" left 0.1 label bot "Server Market Share (in %)" cury=0 copy "data/osms" thru { line from 0,cury to $2,cury line from $2,cury to $2,cury-1 line from 0,cury-1 to $2,cury-1 "$1 " rjust at 0-0.5,cury-0.5 "$2" ljust at 0+0.5,cury-0.5 cury=cury-1.5 } line from 0,0 to 0,cury+1.5-1 frame invis ht -cury/3 wid 3 .G2 .ff R -lnum -tnum .stc Market share of operating systems for server use .ref [Fortune 23]. “Linux” is a specific derivative of Unix. “\fTUNIX\fP,” as written in the provided data, generally refers to \fTBSD\fP-derived Unix. The distinction is arguably made due to Linux's overwhelming popularity. .enc .ke .pg More generally, C and Unix have become integral to commercial software development. Among today's most affluent software companies, Apple .ref [Nicas 22] has been using C-derived languages since their acquisition of .c2sc NeXTSTEP in 1997 .ref [Singh 06]. .c2sc NeXTSTEP was a \fTBSD\fP-derived operating system. It was designed in a super-set of C named Objective-C. At the time of the acquisition, Apple's Macintosh line of computers were in need of new system software. They proceeded to use \fTN\fPe\fTXTSTEP\fP — implemented in C and borrowing portions of Unix — as the basis for their advancement .ref [Reisinger 16], .ref [Singh 06], .ref [Singh 03], .ref [Edwards 20]. Years after the acquisition, it became the basis for the software behind the iPhone .ref [Apple 23a], .ref [Garling 12]. .pg Before acquiring \fTNeXTSTEP\fP, Apple was near bankruptcy. \fTNeXTSTEP\fP saved them, and they have since flourished. In particular, the 2007 release of the iPhone earned Apple enormous success .ref [Martins 23]. Today, the iPhone itself is now uncontroversially called one of the most revolutionary products of our time .ref [Leswing 19], .ref [Eadicicco 17]. It's not a stretch to say that C was and continues to be integral to that success. Accordingly, Apple has invested heavily in their C-based infrastructure, funding the development of a new set of compiler software .ref [Treat 05], .ref [Apple 12], .ref [Apple 23b]. .pg Microsoft, a company which genuinely competes with Apple for “World's Most Valuable Company” .ref [Klebnikov 21], has similar ties to C. Their premier software product, Windows .ref [Ward 23], has been written in C since 1995 .ref [Microsoft 14]. In the quarter-century since then, Microsoft has maintained a compatible software environment. Aside from other features .ref [Microsoft 23a], this allows years-old programs to run largely or wholly unmodified on Microsoft's latest iterations of Windows .ref [Finck 20], .ref [Microsoft 22]. .pg Individual programs, lesser in scope than operating systems, are often written in C because of its ubiquity. Programmers intending to write accessible, performant software resort to it. Notable examples include Google's Chrome, the most popular web browser .ref [StatCounter 23b]; ffmpeg, an exceedingly popular video processing solution .ref [Melanson 11], .ref [Maki 20], .ref [Larabel 15]; SQLite, a set of software included in a majority of consumer computers .ref [SQLite 22]; and OpenSSH, the networked computer log-in utility bundled with most of today's laptops .ref [Microsoft 23b], .ref [Loder 22]. Programs originally written in languages other than C, but that need portability, may be machine-translated to C. This has been most notably done with TeX .ref [TUG 23], a program for digital document typesetting, popularly used for academic papers .ref [CTAN 23], .ref [Beeton 18]. .pg C's portability is the result of serious effort. Aside from the work of standards committees, C has been wedged into environments far different from Unix. For the sake of porting programs written in C — “a good deal of interesting software” as early as 1976 .ref [Ritchie 76], subsets of Unix would be implemented on other operating systems. .pg As Microsoft's operating systems took hold in the home computer market, the desire to port C programs to them took hold just as firmly. For this purpose, Unix was first grafted on top of \fTMS-DOS\fP beginning in 1989 .ref [Zaretskii 99]. As \fTMS-DOS\fP was replaced by Windows, that work was carried over, resulting in a multitude of projects. Most prominently, Cygwin allows a large portion of standards-compliant Unix programs to run without modification. It maps Unix features to Windows features, and those Unix features which have no analogue are emulated .ref [Cygwin 22]. MinGW is a separate but related project to port modern, publicly-available C compilers to Windows .ref [MinGW 23]. .pg These projects enabled programmers to write programs to run on all three of the popular software platforms — Apple's \fTBSD\fP-based Macintosh, \fTIBM\fP's \fTPC\fP and derivatives running Microsoft's Windows, and the hardware-agnostic Unix servers .ref [Reimer 05]. These projects became integral to the furthering of Windows's software library. Microsoft decided to further the effort for portability of C, by means of the \fTWSL\fP project. While the previous methods require Unix software to be wholly re-compiled for Windows, Microsoft's solution provides a full Unix environment .ref [Microsoft 23c], .ref [Microsoft 23d]. .ff R +tnum +lnum .ff I +tnum +lnum .ks .sp 0.5 .TS expand tab(;); r r r r r r r r r. \fIYear;2023;2018;2013;2008;2003;1998;1993;1988\fP Python;1;4;8;6;11;24;22;\*[numdash] C;2;2;1;2;2;1;1;1 C++;3;3;4;3;3;2;2;4 Java;4;1;2;1;1;18;\*[numdash];\*[numdash] C#;5;5;5;8;9;\*[numdash];\*[numdash];\*[numdash] JavaScript;6;8;9;9;8;21;\*[numdash];\*[numdash] Visual Basic;7;18;\*[numdash];\*[numdash];\*[numdash];\*[numdash];\*[numdash];\*[numdash] \fTPHP\fP;8;7;6;5;6;\*[numdash];\*[numdash];\*[numdash] \fTSQL\fP;9;88;\*[numdash];\*[numdash];7;\*[numdash];\*[numdash];\*[numdash] Assembly;10;13;\*[numdash];\*[numdash];\*[numdash];\*[numdash];\*[numdash];\*[numdash] Ada;24;31;22;20;16;16;7;3 Objective\*[numdash]C;27;12;3;41;48;\*[numdash];\*[numdash];\*[numdash] Lisp;30;29;14;17;15;10;8;2 (Visual) Basic;\*[numdash];\*[numdash];7;4;5;3;3;7 .TE .ff I -tnum -lnum .ff R -tnum -lnum .stc Estimated and averaged programming language popularity over the course of a given year, from 1988 through 2023 .ref [TIOBE 23]. “\fN1\fP” marks the first most popular, “\fN30\fP” marks the 30th most popular. “(Visual) Basic” and “Visual Basic” are intentionally distinct. The former refers to a now split family of languages. The latter refers to a specific language from that split. For the sake of column width, “Assembly Language” has been truncated to “Assembly.” .enc .ke .pg C's influence has permeated the evolution of programming languages. The high-level programming languages which rival C's popularity .ref [TIOBE 23] borrow heavily from its appearance and semantics. Briefly analyzing Figure \fN\n[fg]\fP, it is only these languages which have popularly flourished for the past two decades. C++ is a direct derivative of C. Java resembles C closely, to the point at which valid C is nearly valid Java. Python and C# each take basic syntax from C. JavaScript is intended to be C for the web browser .ref [Miller 22], .ref [Ezick 02]. These are the notable market competitors. Evidently, C shaped the market for 50 years past its inception. .enc .ft Courier .TS center tab(;); c c c c. while;return;break;continue if;else;for; .TE .ft P .stc Key words with similar semantics in C, Python, C++, Java, C#, and JavaScript .ref [Microsoft 23e], .ref [Microsoft 21], .ref [Mozilla 23], .ref [Python 23]. Despite being distinct languages, some of their semantics are similar. .enc .pg C's popularity has warranted continued extension and standardization. Though the 1989 standard remains de-facto, C has been continually standardized by the International Organization for Standardization and the International Electrotechnical Commission .ref [WG14 21]. C has been grown from a singular language to a family of languages. This growth blurs the lines between C and its contemporaries, bringing modern considerations into the old language's design. .pg As opposed to languages distinct from C, newly standardized versions of C have the benefit of its existing software infrastructure. That infrastructure has been honed over half of a century. The authors of languages operating in the same market as C have a lofty goal: to beat 50 years of pre-built software, documentation, and compiler improvement. Particularly, programs written in C are as fast and efficient as high-level programs may be. If there are better ways of generating code than modern C compilers perform, we don't know of them. By comparison, most other languages and their compilers are grossly inefficient .ref [Pereira 17]. .sp 0.5 .ff R +lnum +tnum .in +1i 1.\h'1n'C, Pascal, Go .br 2.\h'1n'Rust, C++, Fortran .br 3.\h'1n'Ada .br 4.\h'1n'Java, Chapel, Lisp, Ocaml .br 5.\h'1n'Swift, Haskell, C# .br 6.\h'1n'Dart, F#, Racket, Hack, \fTPHP\fP .br 7.\h'1n'JavaScript, Ruby, Python .br 8.\h'1n'TypeScript, Erlang .br 9.\h'1n'Lua, JRuby, Perl .in -1i .ff R -lnum -tnum .stc The measured energy, time, and memory efficiency of programming languages, ranked into distinct tiers .ref [Pereira 17]. C is in the top tier, and the first in its class. .enc .pg C is everywhere. It's the basis for software in home computers, cell phones, Wi-Fi routers, and web servers. Those categories arguably span the majority of computing systems people interact with today. Despite C's ubiquity, it is not trivial. The time before C's standardization had no similar language. The time since has produced derivatives, but no replacement. Before the advent of these derivatives, C had become so universal as to be a “lingua franca” among programming languages .ref [Armstrong 14]. Modern and popular competition remains structurally and syntactically similar. .pg The popularity of programming languages derived from C is comparable to the popularity of natural languages derived from Latin. In each case, the derivatives are unique, but similar enough to be structurally and sometimes literally compatible. The gaping hole in that comparison is that, quite unlike Latin, C is very much a living language. No computing system is complete without it. .pg This essay was originally written for an English \fN101\fP class. It was written throughout Fall of 2023, and submitted December 11, around 4 in the morning. It has been published here with small alterations. .sh Modern Typographic Troubles All text subscribes to a style. Handwritten text is often drawn with little design. Most of the text we see today is mechanically drawn, as opposed to manually. This kind of text is referred to as typeset, and the style it adheres to is referred to as a typeface. Digital typesetting has become a common practice. Desirable digital typefaces accessible to self-publishers have become few and far between. Typesetting software packages with relatively high-quality output remain imperfect solutions. .bp .sp -0.5 .sh Bibliography .ff R +lnum .ff I +lnum .ad pl .hy 0 .hydash -/ .\"§#.TS\n;\nr1w(1i) lw(2.75i).#.TE#[]#\fT#\fP .so e101_ref.tr .ex Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter.Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter.Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter.Hello there, people. The Heirloom Documentation Tools package provides troff, nroff, and related utilities to format manual pages and other documents for output on terminals and printers. They are portable and enhanced versions of the utilities released by Sun as part of OpenSolaris, which are a variant of ditroff, which, in turn, descends from the historical Unix troff that generated output for the C/A/T phototypesetter.