Boehm-Demers-Weiser Garbage Collector
<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34056973" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34056973</a><p>DonHopkins 75 days ago | root | parent | prev | next [–]<p>You know what&#x27;s a lot like Ada in a good way is Mesa, which evolved into Ceder, from Xerox PARC. I know people who really loved programming in it. They&#x27;d call it &quot;Industrial Strength Pascal&quot;. It was a successful experiment in code reuse. A strongly typed language with strong separation between interfaces and implementations, which encouraged creating robust, hardened code.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Mesa_(programming_language)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Mesa_(programming_language)</a><p>&gt;Mesa and Cedar had a major influence on the design of other important languages, such as Modula-2 and Java, and was an important vehicle for the development and dissemination of the fundamentals of GUIs, networked environments, and the other advances Xerox contributed to the field of computer science.<p>Demonstration of the Xerox PARC Cedar integrated environment (2019) [video] (youtube.com)<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22375449" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22375449</a><p>Computer History Museum: Eric Bier Demonstrates Cedar<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=z_dt7NG38V4">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=z_dt7NG38V4</a><p>Mark Weiser and others at Xerox PARC&#x27;s ported the Cedar environment to Unix, which resulted in the development of the still-widely-used Boehm–Demers–Weiser conservative garbage collection.<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22378457" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22378457</a><p>I believe that stuff is the port of Cedar to the Sun. Xerox PARC developed &quot;Portable Common Runtime&quot;, which was basically the Cedar operating system runtime, on top of SunOS (1987 era SunOS, not Solaris, so no shared libraries or threads, which PCR had to provide). He demonstrates compiling a &quot;Hello World&quot; Cedar shell command, and (magically behind the scenes) dynamically linking it into the running shell and invoking it.<p>Experiences Creating a Portable Cedar.<p>Russ Atkinson, Alan Demers, Carl Hauser, Christian Jacobi, Peter Kessler, and Mark Weiser.<p>CSL-89-8 June 1989 [P89-00DD6]<p><a href="http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;techReports&#x2F;CSL-89-8_Experiences_Creating_a_Portable_Cedar.pdf" rel="nofollow">http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;techReports&#x2F;CSL-89-8...</a><p>&gt;Abstract: Cedar is the name for both a language and an environment in use in the Computer Science Laboratory at Xerox PARC since 1980. The Cedar language is a superset of Mesa, the major additions being garbage collection and runtime types. Neither the language nor the environment was originally intended to be portable, and for many years ran only on D-machines at PARC and a few other locations in Xerox. We recently re-implemented the language to make it portable across many different architectures. Our strategy was, first, to use machine dependent C code as an intermediate language, second, to create a language-independent layer known as the Portable Common Runtime, and third, to write a relatively large amount of Cedar-specific runtime code in a subset of Cedar itself. By treating C as an intermediate code we are able to achieve reasonably fast compilation, very good eventual machine code, and all with relatively small programmer effort. Because Cedar is a much richer language than C, there were numerous issues to resolve in performing an efficient translation and in providing reasonable debugging. These strategies will be of use to many other porters of high-level languages who may wish to use C as an assembler language without giving up either ease of debugging or high performance. We present a brief description of the Cedar language, our portability strategy for the compiler and runtime, our manner of making connections to other languages and the Unix operating system, and some measures of the performance of our &quot;Portable Cedar&quot;.<p>PCR implemented threads in user space as virtual lightweight processes on SunOS by running several heavy weight Unix processes memory mapping the same main memory. And it also supported garbage collection. Mark Weiser worked on both PCR and the Boehm–Demers–Weiser garbage collector.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Boehm_garbage_collector" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Boehm_garbage_collector</a><p>This is the 1988 &quot;Garbage Collection in an Uncooperative Environment&quot; paper by Hans-Juergen Boehm and Mark Weiser:<p><a href="https:&#x2F;&#x2F;hboehm.info&#x2F;spe_gc_paper&#x2F;preprint.pdf" rel="nofollow">https:&#x2F;&#x2F;hboehm.info&#x2F;spe_gc_paper&#x2F;preprint.pdf</a><p>&gt;Similarly, we treat any data inside the objects as potential pointers, to be followed if they, in turn, point to valid data objects. A similar approach, but restricted to procedure frames, was used in the Xerox Cedar programming environment [19].<p>[19] Rovner, Paul, ‘‘On Adding Garbage Collection and Runtime Types to a Strongly-Typed, Statically Checked, Concurrent Language’’, Report CSL-84-7, Xerox Palo Alto Research Center.<p><a href="http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;techReports&#x2F;CSL-84-7_On_Adding_Garbage_Collection_and_Runtime_Types_to_a_Strongly-Typed_Statically-Checked_Concurrent_Language.pdf" rel="nofollow">http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;techReports&#x2F;CSL-84-7...</a><p>My guess is that the BDW garbage collector had its roots in PCR (pun intended, in fact this entire message was just an elaborate setup ;), but I don&#x27;t know for sure the exact relationship between Cedar&#x27;s garbage collector, PCR&#x27;s garbage collector (which is specifically for Cedar code), and the Boehm–Demers–Weiser garbage collector (which is for general C code). Does anybody know how they influenced each other, shared code, or are otherwise related? Maybe there&#x27;s a circular dependency!<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24450970" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24450970</a><p>Xerox Cedar “Viewers Window Package” (2018) (toastytech.com)<p><a href="http:&#x2F;&#x2F;toastytech.com&#x2F;guis&#x2F;cedar.html" rel="nofollow">http:&#x2F;&#x2F;toastytech.com&#x2F;guis&#x2F;cedar.html</a><p>gumby on Sept 13, 2020 | next [–]<p>This says “developed after the Star“ but imho the Dandelion (marketed as the star) was too slow for this environment and you needed one of the bigger machines (Dolphin or Dorado). Actually it’s kind of amazing to realize that two years later youncould get a small Mac for about a fifth the price that sat on your desk (not rolled next to it on casters) and was much more responsive. Did less, but what it did it did well, and was all that most people needed.<p>In addition to the Smalltalk and Mesa environments mentioned in the post, there was the Interlisp-D environment too, which got much more use outside thanks to being used outside PARC.<p>pjmlp on Sept 13, 2020 | parent | next [–]<p>The Computer History Museum organized a session with Eric Bier, and several other folks demoing the Mesa&#x2F;Cedar environment.<p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;z_dt7NG38V4" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;z_dt7NG38V4</a><p>The only modern environments that seem to have kept alive several of these ideas are Windows&#x2F;.NET&#x2F;COM, the ones designed by Apple&#x2F;NeXT and to certain extent Android (although with a messed up execution).<p>Even Linux could grasp many of these ideas, if D-BUS would be properly taken advantage of and settled on a specific development experience.<p>Somehow it looks like we are still missing so much from Xerox PARC ideas.<p>----<p>The Cedar Programming Environment: A Midterm Report and Examination<p><a href="http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;techReports&#x2F;CSL-83-11_The_Cedar_Programming_Environment_A_Midterm_Report_and_Examination.pdf" rel="nofollow">http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;techReports&#x2F;CSL-83-1...</a><p>C - Cedar&#x2F;Mesa Interoperability<p><a href="http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;cedar&#x2F;C_-_Cedar_Mesa_Interoperability_Aug1992.pdf" rel="nofollow">http:&#x2F;&#x2F;www.bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;parc&#x2F;cedar&#x2F;C_-_Cedar_Mesa...</a><p>Describes Portable Common Runtime (PCR), and the PostScript and Interpress decomposers implemented in Cedar, and includes many other interesting document about Cedar.